Submitting a gcc4.0.2 patch for winex

Matej Urbas <[email protected]> Mon, 19 Dec 2005 23:23:16 +0100
Newsgroups gmane.comp.emulators.winex.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------090702090006000408010401
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi

I was having problems compiling winex with gcc 4.0.2, so I've decided to 
take the hard way and fix them to a point where it would compile.

I have attached a patch file containing all the necessary changes to 
winex' source in order to successfully compile it with gcc 4.0.2.

Mostly, the patches convert strings like '(type*)something =' into 
'*((type**)&something) ='. This was the first thing that stopped gcc 
from complaining. There are some other problems too, most notably the 
problem of a forward declaration of AVoption in 
./dlls/quartz/ffmpeg/libavcodec/common.h.old. The forwardly declared 
structure is used as the base type of an array in common.h. Gcc would 
complain that using incomplete types in arrays is not allowed. So I had 
to move the definition of AVoption from avcodec.h into common.h (I find 
it reasonable too, since that array is extern anyhow).

I've compiled winex with such a configuration:
export CFLAGS="-march=athlonxp -mfpmath=sse -O2"
export CXXFLAGS=$CFLAGS
./configure --disable-debug --disable-trace --enable-opengl 
--enable-pthreads --disable-remote-gdb --with-x

I think the configuration is a little overdone, but at least it 
compiles. I've been able to run System Shock 2 with it, but the 3D 
graphics were totally obscure. The walls clipped one over the other - it 
was impossible to play the game... but at least it runned (and with a 
high FPS too).

Here is a list of the files I've changed:
./dlls/commdlg/filedlg95.c.old
./dlls/ddraw/dsurface/dib.c.old
./dlls/dplayx/dplay.c.old
./dlls/kernel/thunk.c.old
./dlls/msvideo/msrle32/msrle32.c.old
./dlls/ole32/ifs.c.old
./dlls/ole32/proxy.c.old
./dlls/ole32/storage.c.old
./dlls/oleaut32/oaidl_p.c.old
./dlls/quartz/ffmpeg/libavcodec/common.h.old
./dlls/quartz/ffmpeg/libavcodec/avcodec.h.old
./dlls/quartz/ffmpeg/libavcodec/huffyuv.c.old
./dlls/quartz/ffmpeg/libavformat/mpeg.c.old
./dlls/rpcrt4/cproxy.c.old
./dlls/shell32/iconcache.c.old
./dlls/x11drv/executebuffer.c.old
./graphics/x11drv/dib.c.old
./loader/ne/convert.c.old
./loader/ne/module.c.old
./loader/ne/segment.c.old
./miscemu/preloader.c.old
./msdos/int21.c.old
./msdos/int2f.c.old
./objects/enhmetafile.c.old
./tools/wrc/newstruc.c.old
./windows/winproc.c.old
Changed 27 files

Hope it helps somehow - it certainly helped me to compile with gcc 4.0.2.

Bye

matej

--------------090702090006000408010401
Content-Type: text/x-patch;
 name="winex-gcc4.0.2.patch"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline;
 filename="winex-gcc4.0.2.patch"

Submitted By: Matej Urbas <matej.urbas at gmail dot com>
Date:         2005-12-19
Description:  This patch modifies several files in the current (19. dec 2005)
              version of the winex cvs repository at cvs.transgaming.org.
              It resolves (or at least tries to resolve) all those annoying
              'invalid lvalue' problems (and some other compile time errors I've
              encountered during this patch endeavour) so winex would hopefully
              compile with gcc 4.0.2.

diff -Naur ./dlls/quartz/ffmpeg/libavcodec/avcodec.h.old ./dlls/quartz/ffmpeg/libavcodec/avcodec.h
--- ./dlls/quartz/ffmpeg/libavcodec/avcodec.h.old	2003-06-09 03:54:54.000000000 +0200
+++ ./dlls/quartz/ffmpeg/libavcodec/avcodec.h	2005-12-19 01:17:27.000000000 +0100
@@ -1125,42 +1125,6 @@
     int global_quality;
 } AVCodecContext;
 
-
-/**
- * AVOption.
- */
-typedef struct AVOption {
-    /** options' name */
-    const char *name; /* if name is NULL, it indicates a link to next */
-    /** short English text help or const struct AVOption* subpointer */
-    const char *help; //	const struct AVOption* sub;
-    /** offset to context structure where the parsed value should be stored */
-    int offset;
-    /** options' type */
-    int type;
-#define FF_OPT_TYPE_BOOL 1      ///< boolean - true,1,on  (or simply presence)
-#define FF_OPT_TYPE_DOUBLE 2    ///< double
-#define FF_OPT_TYPE_INT 3       ///< integer
-#define FF_OPT_TYPE_STRING 4    ///< string (finished with \0)
-#define FF_OPT_TYPE_MASK 0x1f	///< mask for types - upper bits are various flags
-//#define FF_OPT_TYPE_EXPERT 0x20 // flag for expert option
-#define FF_OPT_TYPE_FLAG (FF_OPT_TYPE_BOOL | 0x40)
-#define FF_OPT_TYPE_RCOVERRIDE (FF_OPT_TYPE_STRING | 0x80)
-    /** min value  (min == max   ->  no limits) */
-    double min;
-    /** maximum value for double/int */
-    double max;
-    /** default boo [0,1]l/double/int value */
-    double defval;
-    /**
-     * default string value (with optional semicolon delimited extra option-list
-     * i.e.   option1;option2;option3
-     * defval might select other then first argument as default
-     */
-    const char *defstr;
-#define FF_OPT_MAX_DEPTH 10
-} AVOption;
-
 /**
  * Parse option(s) and sets fields in passed structure
  * @param strct	structure where the parsed results will be written

diff -Naur ./dlls/quartz/ffmpeg/libavcodec/common.h.old ./dlls/quartz/ffmpeg/libavcodec/common.h
--- ./dlls/quartz/ffmpeg/libavcodec/common.h.old	2003-06-09 04:02:44.000000000 +0200
+++ ./dlls/quartz/ffmpeg/libavcodec/common.h	2005-12-19 01:17:38.000000000 +0100
@@ -60,7 +60,41 @@
 #define AVOPTION_SUB(ptr) { .name = NULL, .help = (const char*)ptr }
 #define AVOPTION_END() AVOPTION_SUB(NULL)
 
-struct AVOption;
+/**
+ * AVOption.
+ */
+typedef struct AVOption {
+    /** options' name */
+    const char *name; /* if name is NULL, it indicates a link to next */
+    /** short English text help or const struct AVOption* subpointer */
+    const char *help; //	const struct AVOption* sub;
+    /** offset to context structure where the parsed value should be stored */
+    int offset;
+    /** options' type */
+    int type;
+#define FF_OPT_TYPE_BOOL 1      ///< boolean - true,1,on  (or simply presence)
+#define FF_OPT_TYPE_DOUBLE 2    ///< double
+#define FF_OPT_TYPE_INT 3       ///< integer
+#define FF_OPT_TYPE_STRING 4    ///< string (finished with \0)
+#define FF_OPT_TYPE_MASK 0x1f	///< mask for types - upper bits are various flags
+//#define FF_OPT_TYPE_EXPERT 0x20 // flag for expert option
+#define FF_OPT_TYPE_FLAG (FF_OPT_TYPE_BOOL | 0x40)
+#define FF_OPT_TYPE_RCOVERRIDE (FF_OPT_TYPE_STRING | 0x80)
+    /** min value  (min == max   ->  no limits) */
+    double min;
+    /** maximum value for double/int */
+    double max;
+    /** default boo [0,1]l/double/int value */
+    double defval;
+    /**
+     * default string value (with optional semicolon delimited extra option-list
+     * i.e.   option1;option2;option3
+     * defval might select other then first argument as default
+     */
+    const char *defstr;
+#define FF_OPT_MAX_DEPTH 10
+} AVOption;
+
 #ifdef HAVE_MMX
 extern const struct AVOption avoptions_common[3 + 5];
 #else

diff -Naur ./loader/ne/convert.c.old ./loader/ne/convert.c
--- ./loader/ne/convert.c.old	2005-12-18 20:51:52.000000000 +0100
+++ ./loader/ne/convert.c	2005-12-18 21:04:11.000000000 +0100
@@ -24,64 +24,64 @@
     WORD nbItems, data, dialogEx;
     DWORD style;
 
-    style = *((DWORD *)dialog16)++ = *((DWORD *)p)++;
+    style = *(*((DWORD **)&dialog16))++ = *(*((DWORD **)&p))++;
     dialogEx = (style == 0xffff0001);  /* DIALOGEX resource */
     if (dialogEx)
     {
-        *((DWORD *)dialog16)++ = *((DWORD *)p)++; /* helpID */
-        *((DWORD *)dialog16)++ = *((DWORD *)p)++; /* exStyle */
-        style = *((DWORD *)dialog16)++ = *((DWORD *)p)++; /* style */
+        *(*((DWORD **)&dialog16))++ = *(*((DWORD **)&p))++; /* helpID */
+        *(*((DWORD **)&dialog16))++ = *(*((DWORD **)&p))++; /* exStyle */
+        style = *(*((DWORD **)&dialog16))++ = *(*((DWORD **)&p))++; /* style */
     }
     else
-        ((DWORD *)p)++; /* exStyle ignored in 16-bit standard dialog */
+        (*((DWORD **)&p))++; /* exStyle ignored in 16-bit standard dialog */
 
-    nbItems = *((BYTE *)dialog16)++ = (BYTE)*((WORD *)p)++;
-    *((WORD *)dialog16)++ = *((WORD *)p)++; /* x */
-    *((WORD *)dialog16)++ = *((WORD *)p)++; /* y */
-    *((WORD *)dialog16)++ = *((WORD *)p)++; /* cx */
-    *((WORD *)dialog16)++ = *((WORD *)p)++; /* cy */
+    nbItems = *(*((BYTE **)&dialog16))++ = (BYTE)*(*((WORD **)&p))++;
+    *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* x */
+    *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* y */
+    *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* cx */
+    *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* cy */
 
     /* Transfer menu name */
-    switch (*((WORD *)p))
+    switch (*(*((WORD **)&p)))
     {
-    case 0x0000:  ((WORD *)p)++; *((BYTE *)dialog16)++ = 0; break;
-    case 0xffff:  ((WORD *)p)++; *((BYTE *)dialog16)++ = 0xff;
-                  *((WORD *)dialog16)++ = *((WORD *)p)++; break;
+    case 0x0000:  (*((WORD **)&p))++; *(*((BYTE **)&dialog16))++ = 0; break;
+    case 0xffff:  (*((WORD **)&p))++; *(*((BYTE **)&dialog16))++ = 0xff;
+                  *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; break;
     default:      WideCharToMultiByte( CP_ACP, 0, (LPWSTR)p, -1, (LPSTR)dialog16, 0x7fffffff, NULL,NULL );
-                  ((LPSTR)dialog16) += strlen( (LPSTR)dialog16 ) + 1;
-                  ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+                  (*((LPSTR*)&dialog16)) += strlen( (LPSTR)dialog16 ) + 1;
+                  (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
                   break;
     }
 
     /* Transfer class name */
-    switch (*((WORD *)p))
+    switch (*(*((WORD **)&p)))
     {
-    case 0x0000:  ((WORD *)p)++; *((BYTE *)dialog16)++ = 0; break;
-    case 0xffff:  ((WORD *)p)++; *((BYTE *)dialog16)++ = 0xff;
-                  *((WORD *)dialog16)++ = *((WORD *)p)++; break;
+    case 0x0000:  (*((WORD **)&p))++; *(*((BYTE **)&dialog16))++ = 0; break;
+    case 0xffff:  (*((WORD **)&p))++; *(*((BYTE **)&dialog16))++ = 0xff;
+                  *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; break;
     default:      WideCharToMultiByte( CP_ACP, 0, (LPWSTR)p, -1, (LPSTR)dialog16, 0x7fffffff, NULL,NULL );
-                  ((LPSTR)dialog16) += strlen( (LPSTR)dialog16 ) + 1;
-                  ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+                  (*((LPSTR*)&dialog16)) += strlen( (LPSTR)dialog16 ) + 1;
+                  (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
                   break;
     }
 
     /* Transfer window caption */
     WideCharToMultiByte( CP_ACP, 0, (LPWSTR)p, -1, (LPSTR)dialog16, 0x7fffffff, NULL,NULL );
-    ((LPSTR)dialog16) += strlen( (LPSTR)dialog16 ) + 1;
-    ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+    (*((LPSTR*)&dialog16)) += strlen( (LPSTR)dialog16 ) + 1;
+    (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
 
     /* Transfer font info */
     if (style & DS_SETFONT)
     {
-        *((WORD *)dialog16)++ = *((WORD *)p)++;  /* pointSize */
+        *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++;  /* pointSize */
         if (dialogEx)
         {
-            *((WORD *)dialog16)++ = *((WORD *)p)++; /* weight */
-            *((WORD *)dialog16)++ = *((WORD *)p)++; /* italic */
+            *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* weight */
+            *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* italic */
         }
         WideCharToMultiByte( CP_ACP, 0, (LPWSTR)p, -1, (LPSTR)dialog16, 0x7fffffff, NULL,NULL );  /* faceName */
-        ((LPSTR)dialog16) += strlen( (LPSTR)dialog16 ) + 1;
-        ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+        (*((LPSTR*)&dialog16)) += strlen( (LPSTR)dialog16 ) + 1;
+        (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
     }
 
     /* Transfer dialog items */
@@ -92,65 +92,65 @@
 
         if (dialogEx)
         {
-            *((DWORD *)dialog16)++ = *((DWORD *)p)++; /* helpID */
-            *((DWORD *)dialog16)++ = *((DWORD *)p)++; /* exStyle */
-            *((DWORD *)dialog16)++ = *((DWORD *)p)++; /* style */
+            *(*((DWORD **)&dialog16))++ = *(*((DWORD **)&p))++; /* helpID */
+            *(*((DWORD **)&dialog16))++ = *(*((DWORD **)&p))++; /* exStyle */
+            *(*((DWORD **)&dialog16))++ = *(*((DWORD **)&p))++; /* style */
         }
         else
         {
-            style = *((DWORD *)p)++; /* save style */
-            ((DWORD *)p)++;          /* ignore exStyle */
+            style = *(*((DWORD **)&p))++; /* save style */
+            (*((DWORD **)&p))++;          /* ignore exStyle */
         }
 
-        *((WORD *)dialog16)++ = *((WORD *)p)++; /* x */
-        *((WORD *)dialog16)++ = *((WORD *)p)++; /* y */
-        *((WORD *)dialog16)++ = *((WORD *)p)++; /* cx */
-        *((WORD *)dialog16)++ = *((WORD *)p)++; /* cy */
+        *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* x */
+        *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* y */
+        *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* cx */
+        *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* cy */
 
         if (dialogEx)
-            *((DWORD *)dialog16)++ = *((DWORD *)p)++; /* ID */
+            *(*((DWORD **)&dialog16))++ = *(*((DWORD **)&p))++; /* ID */
         else
         {
-            *((WORD *)dialog16)++ = *((WORD *)p)++; /* ID */
-            *((DWORD *)dialog16)++ = style;  /* style from above */
+            *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; /* ID */
+            *(*((DWORD **)&dialog16))++ = style;  /* style from above */
         }
 
         /* Transfer class name */
-        switch (*((WORD *)p))
+        switch (*(*((WORD **)&p)))
         {
-        case 0x0000:  ((WORD *)p)++; *((BYTE *)dialog16)++ = 0; break;
-        case 0xffff:  ((WORD *)p)++;
-                      *((BYTE *)dialog16)++ = (BYTE)*((WORD *)p)++; break;
+        case 0x0000:  (*((WORD **)&p))++; *(*((BYTE **)&dialog16))++ = 0; break;
+        case 0xffff:  (*((WORD **)&p))++;
+                      *(*((BYTE **)&dialog16))++ = (BYTE)*(*((WORD **)&p))++; break;
         default:      WideCharToMultiByte( CP_ACP, 0, (LPWSTR)p, -1, (LPSTR)dialog16, 0x7fffffff, NULL,NULL );
-                      ((LPSTR)dialog16) += strlen( (LPSTR)dialog16 ) + 1;
-                      ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+                      (*((LPSTR*)&dialog16)) += strlen( (LPSTR)dialog16 ) + 1;
+                      (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
                       break;
         }
 
         /* Transfer window name */
-        switch (*((WORD *)p))
+        switch (*(*((WORD **)&p)))
         {
-        case 0x0000:  ((WORD *)p)++; *((BYTE *)dialog16)++ = 0; break;
-        case 0xffff:  ((WORD *)p)++; *((BYTE *)dialog16)++ = 0xff;
-                      *((WORD *)dialog16)++ = *((WORD *)p)++; break;
+        case 0x0000:  (*((WORD **)&p))++; *(*((BYTE **)&dialog16))++ = 0; break;
+        case 0xffff:  (*((WORD **)&p))++; *(*((BYTE **)&dialog16))++ = 0xff;
+                      *(*((WORD **)&dialog16))++ = *(*((WORD **)&p))++; break;
         default:      WideCharToMultiByte( CP_ACP, 0, (LPWSTR)p, -1, (LPSTR)dialog16, 0x7fffffff, NULL,NULL );
-                      ((LPSTR)dialog16) += strlen( (LPSTR)dialog16 ) + 1;
-                      ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+                      (*((LPSTR*)&dialog16)) += strlen( (LPSTR)dialog16 ) + 1;
+                      (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
                       break;
         }
 
         /* Transfer data */
-        data = *((WORD *)p)++;
+        data = *(*((WORD **)&p))++;
         if (dialogEx)
-            *((WORD *)dialog16)++ = data;
+            *(*((WORD **)&dialog16))++ = data;
         else
-            *((BYTE *)dialog16)++ = (BYTE)data;
+            *(*((BYTE **)&dialog16))++ = (BYTE)data;
 
         if (data)
         {
             memcpy( dialog16, p, data );
-            (LPSTR)dialog16 += data;
-            (LPSTR)p += data;
+            *((LPSTR*)&dialog16) += data;
+            *((LPSTR*)&p) += data;
         }
 
         /* Next item */
@@ -167,52 +167,52 @@
     WORD nbItems, data, dialogEx;
     DWORD style;
 
-    style = *((DWORD *)p)++;
+    style = *(*((DWORD **)&p))++;
     dialogEx = (style == 0xffff0001);  /* DIALOGEX resource */
     if (dialogEx)
     {
-        ((DWORD *)p)++; /* helpID */
-        ((DWORD *)p)++; /* exStyle */
-        style = *((DWORD *)p)++; /* style */
+        (*((DWORD **)&p))++; /* helpID */
+        (*((DWORD **)&p))++; /* exStyle */
+        style = *(*((DWORD **)&p))++; /* style */
     }
     else
-        ((DWORD *)p)++; /* exStyle */
+        (*((DWORD **)&p))++; /* exStyle */
 
-    nbItems = *((WORD *)p)++;
-    ((WORD *)p)++; /* x */
-    ((WORD *)p)++; /* y */
-    ((WORD *)p)++; /* cx */
-    ((WORD *)p)++; /* cy */
+    nbItems = *(*((WORD **)&p))++;
+    (*((WORD **)&p))++; /* x */
+    (*((WORD **)&p))++; /* y */
+    (*((WORD **)&p))++; /* cx */
+    (*((WORD **)&p))++; /* cy */
 
     /* Skip menu name */
-    switch (*((WORD *)p))
+    switch (*(*((WORD **)&p)))
     {
-    case 0x0000:  ((WORD *)p)++; break;
-    case 0xffff:  ((WORD *)p) += 2; break;
-    default:      ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1; break;
+    case 0x0000:  (*((WORD **)&p))++; break;
+    case 0xffff:  (*((WORD **)&p)) += 2; break;
+    default:      (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1; break;
     }
 
     /* Skip class name */
-    switch (*((WORD *)p))
+    switch (*(*((WORD **)&p)))
     {
-    case 0x0000:  ((WORD *)p)++; break;
-    case 0xffff:  ((WORD *)p) += 2; break;
-    default:      ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1; break;
+    case 0x0000:  (*((WORD **)&p))++; break;
+    case 0xffff:  (*((WORD **)&p)) += 2; break;
+    default:      (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1; break;
     }
 
     /* Skip window caption */
-    ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+    (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
 
     /* Skip font info */
     if (style & DS_SETFONT)
     {
-        ((WORD *)p)++;  /* pointSize */
+        (*((WORD **)&p))++;  /* pointSize */
         if (dialogEx)
         {
-            ((WORD *)p)++; /* weight */
-            ((WORD *)p)++; /* italic */
+            (*((WORD **)&p))++; /* weight */
+            (*((WORD **)&p))++; /* italic */
         }
-        ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;  /* faceName */
+        (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;  /* faceName */
     }
 
     /* Skip dialog items */
@@ -223,45 +223,45 @@
 
         if (dialogEx)
         {
-            ((DWORD *)p)++; /* helpID */
-            ((DWORD *)p)++; /* exStyle */
-            ((DWORD *)p)++; /* style */
+            (*((DWORD **)&p))++; /* helpID */
+            (*((DWORD **)&p))++; /* exStyle */
+            (*((DWORD **)&p))++; /* style */
         }
         else
         {
-            ((DWORD *)p)++; /* style */
-            ((DWORD *)p)++; /* exStyle */
+            (*((DWORD **)&p))++; /* style */
+            (*((DWORD **)&p))++; /* exStyle */
         }
 
-        ((WORD *)p)++; /* x */
-        ((WORD *)p)++; /* y */
-        ((WORD *)p)++; /* cx */
-        ((WORD *)p)++; /* cy */
+        (*((WORD **)&p))++; /* x */
+        (*((WORD **)&p))++; /* y */
+        (*((WORD **)&p))++; /* cx */
+        (*((WORD **)&p))++; /* cy */
 
         if (dialogEx)
-            ((DWORD *)p)++; /* ID */
+            (*((DWORD **)&p))++; /* ID */
         else
-            ((WORD *)p)++; /* ID */
+            (*((WORD **)&p))++; /* ID */
 
         /* Skip class name */
-        switch (*((WORD *)p))
+        switch (*(*((WORD **)&p)))
         {
-        case 0x0000:  ((WORD *)p)++; break;
-        case 0xffff:  ((WORD *)p) += 2; break;
-        default:      ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1; break;
+        case 0x0000:  (*((WORD **)&p))++; break;
+        case 0xffff:  (*((WORD **)&p)) += 2; break;
+        default:      (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1; break;
         }
 
         /* Skip window name */
-        switch (*((WORD *)p))
+        switch (*(*((WORD **)&p)))
         {
-        case 0x0000:  ((WORD *)p)++; break;
-        case 0xffff:  ((WORD *)p) += 2; break;
-        default:      ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1; break;
+        case 0x0000:  (*((WORD **)&p))++; break;
+        case 0xffff:  (*((WORD **)&p)) += 2; break;
+        default:      (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1; break;
         }
 
         /* Skip data */
-        data = *((WORD *)p)++;
-        (LPSTR)p += data;
+        data = *(*((WORD **)&p))++;
+        *((LPSTR*)&p) += data;
 
         /* Next item */
         nbItems--;
@@ -278,41 +278,41 @@
     LPVOID p = menu32;
     WORD version, headersize, flags, level = 1;
 
-    version = *((WORD *)menu16)++ = *((WORD *)p)++;
-    headersize = *((WORD *)menu16)++ = *((WORD *)p)++;
+    version = *(*((WORD **)&menu16))++ = *(*((WORD **)&p))++;
+    headersize = *(*((WORD **)&menu16))++ = *(*((WORD **)&p))++;
     if ( headersize )
     {
         memcpy( menu16, p, headersize );
-        ((LPSTR)menu16) += headersize;
-        ((LPSTR)p) += headersize;
+        (*((LPSTR*)&menu16)) += headersize;
+        (*((LPSTR*)&p)) += headersize;
     }
 
     while ( level )
         if ( version == 0 )  /* standard */
         {
-            flags = *((WORD *)menu16)++ = *((WORD *)p)++;
+            flags = *(*((WORD **)&menu16))++ = *(*((WORD **)&p))++;
             if ( !(flags & MF_POPUP) )
-                *((WORD *)menu16)++ = *((WORD *)p)++;  /* ID */
+                *(*((WORD **)&menu16))++ = *(*((WORD **)&p))++;  /* ID */
             else
                 level++;
 
             WideCharToMultiByte( CP_ACP, 0, (LPWSTR)p, -1, (LPSTR)menu16, 0x7fffffff, NULL,NULL );
-            ((LPSTR)menu16) += strlen( (LPSTR)menu16 ) + 1;
-            ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+            (*((LPSTR*)&menu16)) += strlen( (LPSTR)menu16 ) + 1;
+            (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
 
             if ( flags & MF_END )
                 level--;
         }
         else  /* extended */
         {
-            *((DWORD *)menu16)++ = *((DWORD *)p)++;  /* fType */
-            *((DWORD *)menu16)++ = *((DWORD *)p)++;  /* fState */
-            *((WORD *)menu16)++ = (WORD)*((DWORD *)p)++; /* ID */
-            flags = *((BYTE *)menu16)++ = (BYTE)*((WORD *)p)++;
+            *(*((DWORD **)&menu16))++ = *(*((DWORD **)&p))++;  /* fType */
+            *(*((DWORD **)&menu16))++ = *(*((DWORD **)&p))++;  /* fState */
+            *(*((WORD **)&menu16))++ = (WORD)*(*((DWORD **)&p))++; /* ID */
+            flags = *(*((BYTE **)&menu16))++ = (BYTE)*(*((WORD **)&p))++;
 
             WideCharToMultiByte( CP_ACP, 0, (LPWSTR)p, -1, (LPSTR)menu16, 0x7fffffff, NULL,NULL );
-            ((LPSTR)menu16) += strlen( (LPSTR)menu16 ) + 1;
-            ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+            (*((LPSTR*)&menu16)) += strlen( (LPSTR)menu16 ) + 1;
+            (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
 
             /* align on DWORD boundary (32-bit only) */
             p = (LPVOID)((((int)p) + 3) & ~3);
@@ -320,7 +320,7 @@
             /* If popup, transfer helpid */
             if ( flags & 1)
             {
-                *((DWORD *)menu16)++ = *((DWORD *)p)++;
+                *(*((DWORD **)&menu16))++ = *(*((DWORD **)&p))++;
                 level++;
             }
 
@@ -337,32 +337,32 @@
     LPVOID p = menu32;
     WORD version, headersize, flags, level = 1;
 
-    version = *((WORD *)p)++;
-    headersize = *((WORD *)p)++;
-    ((LPSTR)p) += headersize;
+    version = *(*((WORD **)&p))++;
+    headersize = *(*((WORD **)&p))++;
+    (*((LPSTR*)&p)) += headersize;
 
     while ( level )
         if ( version == 0 )  /* standard */
         {
-            flags = *((WORD *)p)++;
+            flags = *(*((WORD **)&p))++;
             if ( !(flags & MF_POPUP) )
-                ((WORD *)p)++;  /* ID */
+                (*((WORD **)&p))++;  /* ID */
             else
                 level++;
 
-            ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+            (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
 
             if ( flags & MF_END )
                 level--;
         }
         else  /* extended */
         {
-            ((DWORD *)p)++; /* fType */
-            ((DWORD *)p)++; /* fState */
-            ((DWORD *)p)++; /* ID */
-            flags = *((WORD *)p)++;
+            (*((DWORD **)&p))++; /* fType */
+            (*((DWORD **)&p))++; /* fState */
+            (*((DWORD **)&p))++; /* ID */
+            flags = *(*((WORD **)&p))++;
 
-            ((LPWSTR)p) += strlenW( (LPWSTR)p ) + 1;
+            (*((LPWSTR*)&p)) += strlenW( (LPWSTR)p ) + 1;
 
             /* align on DWORD boundary (32-bit only) */
             p = (LPVOID)((((int)p) + 3) & ~3);
@@ -370,7 +370,7 @@
             /* If popup, skip helpid */
             if ( flags & 1)
             {
-                ((DWORD *)p)++;
+                (*((DWORD **)&p))++;
                 level++;
             }
 
@@ -391,14 +391,14 @@
     do
     {
         /* Copy type */
-        type = *((BYTE *)acc16)++ = *((BYTE *)acc32)++;
+        type = *(*((BYTE **)&acc16))++ = *(*((BYTE **)&acc32))++;
         /* Skip padding */
-        ((BYTE *)acc32)++;
+        (*((BYTE **)&acc32))++;
         /* Copy event and IDval */
-        *((WORD *)acc16)++ = *((WORD *)acc32)++;
-        *((WORD *)acc16)++ = *((WORD *)acc32)++;
+        *(*((WORD **)&acc16))++ = *(*((WORD **)&acc32))++;
+        *(*((WORD **)&acc16))++ = *(*((WORD **)&acc32))++;
         /* Skip padding */
-        ((WORD *)acc32)++;
+        (*((WORD **)&acc32))++;
 
     } while ( !( type & 0x80 ) );
 }

diff -Naur ./dlls/rpcrt4/cproxy.c.old ./dlls/rpcrt4/cproxy.c
--- ./dlls/rpcrt4/cproxy.c.old	2003-12-17 21:51:17.000000000 +0100
+++ ./dlls/rpcrt4/cproxy.c	2005-12-18 22:34:03.000000000 +0100
@@ -1,7 +1,7 @@
 /*
  * COM proxy implementation
  *
- * Copyright 2001 Ove Kåven, TransGaming Technologies
+ * Copyright 2001 Ove K ven, TransGaming Technologies
  *
  * TODO: Handle non-i386 architectures
  *       Get rid of #if 0'ed code.
@@ -107,7 +107,7 @@
 
   /* I can't find any other way to detect stubless proxies than this hack */
   if (!IsEqualGUID(vtbl->header.piid, riid)) {
-    stubless = *((const void **)vtbl)++;
+    stubless = *(*((const void ***)&vtbl))++;
     TRACE("stubless=%p\n", stubless);
   }
 

diff -Naur ./graphics/x11drv/dib.c.old ./graphics/x11drv/dib.c
--- ./graphics/x11drv/dib.c.old	2005-01-21 23:05:40.000000000 +0100
+++ ./graphics/x11drv/dib.c	2005-12-18 22:28:19.000000000 +0100
@@ -1606,7 +1606,7 @@
         for (x=0; x<oddwidth; x++) {
             DWORD srcval;
             srcval=*srcpixel++;
-            *((WORD*)dstbyte)++=srcval;                 /* h, g */
+            *(*((WORD**)&dstbyte))++=srcval;                 /* h, g */
             *dstbyte++=srcval >> 16;                    /* l */
         }
         srcbits += srclinebytes;
@@ -1657,7 +1657,7 @@
         for (x=0; x<oddwidth; x++) {
             DWORD srcval;
             srcval=*srcpixel++;
-            *((WORD*)dstbyte)++=((srcval >> 16) & 0x00ff) | /* h */
+            *(*((WORD**)&dstbyte))++=((srcval >> 16) & 0x00ff) | /* h */
                                 (srcval         & 0xff00);  /* g */
             *dstbyte++=srcval;                              /* l */
         }

diff -Naur ./dlls/ddraw/dsurface/dib.c.old ./dlls/ddraw/dsurface/dib.c
--- ./dlls/ddraw/dsurface/dib.c.old	2004-02-18 23:27:36.000000000 +0100
+++ ./dlls/ddraw/dsurface/dib.c	2005-12-18 22:23:19.000000000 +0100
@@ -376,8 +376,8 @@
       tmp = s[x]; \
       if (tmp < keylow || tmp > keyhigh) d[x] = tmp; \
     } \
-    (LPBYTE)s += spitch; \
-    (LPBYTE)d += dpitch; \
+    *((LPBYTE*)&s) += spitch; \
+    *((LPBYTE*)&d) += dpitch; \
   } \
 }
 
@@ -960,8 +960,8 @@
 	    tmp = s[x]; \
 	    if (tmp < keylow || tmp > keyhigh) d[x] = tmp; \
 	} \
-	(LPBYTE)s += sdesc.u1.lPitch; \
-	(LPBYTE)d += ddesc.u1.lPitch; \
+	*((LPBYTE*)&s) += sdesc.u1.lPitch; \
+	*((LPBYTE*)&d) += ddesc.u1.lPitch; \
     } \
     break; \
 }

diff -Naur ./dlls/dplayx/dplay.c.old ./dlls/dplayx/dplay.c
--- ./dlls/dplayx/dplay.c.old	2005-02-23 23:50:19.000000000 +0100
+++ ./dlls/dplayx/dplay.c	2005-12-18 22:59:01.000000000 +0100
@@ -4922,7 +4922,7 @@
 # define XCAST(fun)     (void*)
 #endif
 
-static ICOM_VTABLE(IDirectPlay2) directPlay2WVT =
+ICOM_VTABLE(IDirectPlay2) directPlay2WVT =
 {
   ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
   XCAST(QueryInterface)DP_QueryInterface,
@@ -4968,7 +4968,7 @@
 # define XCAST(fun)     (void*)
 #endif
 
-static ICOM_VTABLE(IDirectPlay2) directPlay2AVT =
+ICOM_VTABLE(IDirectPlay2) directPlay2AVT =
 {
   ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
   XCAST(QueryInterface)DP_QueryInterface,
@@ -5015,7 +5015,7 @@
 # define XCAST(fun)     (void*)
 #endif
 
-static ICOM_VTABLE(IDirectPlay3) directPlay3AVT =
+ICOM_VTABLE(IDirectPlay3) directPlay3AVT =
 {
   ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
   XCAST(QueryInterface)DP_QueryInterface,
@@ -5076,7 +5076,7 @@
 #else
 # define XCAST(fun)     (void*)
 #endif
-static ICOM_VTABLE(IDirectPlay3) directPlay3WVT =
+ICOM_VTABLE(IDirectPlay3) directPlay3WVT =
 {
   ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
   XCAST(QueryInterface)DP_QueryInterface,
@@ -5137,7 +5137,7 @@
 #else
 # define XCAST(fun)     (void*)
 #endif
-static ICOM_VTABLE(IDirectPlay4) directPlay4WVT =
+ICOM_VTABLE(IDirectPlay4) directPlay4WVT =
 {
   ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
   XCAST(QueryInterface)DP_QueryInterface,
@@ -5206,7 +5206,7 @@
 #else
 # define XCAST(fun)     (void*)
 #endif
-static ICOM_VTABLE(IDirectPlay4) directPlay4AVT =
+ICOM_VTABLE(IDirectPlay4) directPlay4AVT =
 {
   ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
   XCAST(QueryInterface)DP_QueryInterface,

diff -Naur ./objects/enhmetafile.c.old ./objects/enhmetafile.c
--- ./objects/enhmetafile.c.old	2004-02-18 23:27:50.000000000 +0100
+++ ./objects/enhmetafile.c	2005-12-18 21:52:28.000000000 +0100
@@ -1842,7 +1842,7 @@
           bOpenGL */
      }
 
-     (char*)lpbBuffer += ((METAHEADER*)lpbBuffer)->mtHeaderSize * 2; /* Point past the header - FIXME: metafile quirk? */
+     *((char**)&lpbBuffer) += ((METAHEADER*)lpbBuffer)->mtHeaderSize * 2; /* Point past the header - FIXME: metafile quirk? */
 
      /* 2. Enum over individual records and convert them to the new type of records */
      while( !bFoundEOF )
@@ -2149,7 +2149,7 @@
        }
 
        /* Move to the next record */
-       (char*)lpbBuffer += ((LPMETARECORD)lpbBuffer)->rdSize * 2; /* FIXME: Seem to be doing this in metafile.c */
+       *((char**)&lpbBuffer) += ((LPMETARECORD)lpbBuffer)->rdSize * 2; /* FIXME: Seem to be doing this in metafile.c */
 
 #undef ReAllocAndAdjustPointers
      }

diff -Naur ./dlls/x11drv/executebuffer.c.old ./dlls/x11drv/executebuffer.c
--- ./dlls/x11drv/executebuffer.c.old	2005-03-14 18:17:29.000000000 +0100
+++ ./dlls/x11drv/executebuffer.c	2005-12-18 22:25:25.000000000 +0100
@@ -1028,7 +1028,7 @@
     {
 	DWORD tmp = *in++;
 	*out++ = (tmp & 0xFF00FF00) | (rot16(tmp) & 0x00FF00FF);
-	*((float*)out)++
+	*(*((float**)&out))++
 #ifdef COMPUTE_FOG_COORDINATE
 	  = RGBA_GETALPHA(tmp) / 255.0
 #endif

diff -Naur ./dlls/commdlg/filedlg95.c.old ./dlls/commdlg/filedlg95.c
--- ./dlls/commdlg/filedlg95.c.old	2005-03-14 18:13:13.000000000 +0100
+++ ./dlls/commdlg/filedlg95.c	2005-12-18 22:48:55.000000000 +0100
@@ -427,7 +427,7 @@
     len = WideCharToMultiByte( CP_ACP, 0, ofn->lpstrFilter, n, NULL, 0, NULL, NULL );
     y = (LPSTR)MemAlloc(len);
     WideCharToMultiByte( CP_ACP, 0, ofn->lpstrFilter, n, y, len, NULL, NULL );
-    (LPSTR)ofn->lpstrFilter = y;
+    *((LPSTR*)&ofn->lpstrFilter) = y;
   }
 
   /* convert lpstrCustomFilter */
@@ -446,7 +446,7 @@
     len = WideCharToMultiByte( CP_ACP, 0, ofn->lpstrCustomFilter, n, NULL, 0, NULL, NULL );
     y = (LPSTR)MemAlloc(len);
     WideCharToMultiByte( CP_ACP, 0, ofn->lpstrCustomFilter, n, y, len, NULL, NULL );
-    (LPSTR)ofn->lpstrCustomFilter = y;
+    *((LPSTR*)&ofn->lpstrCustomFilter) = y;
   }
 
   /* convert string arguments, save others */

diff -Naur ./dlls/quartz/ffmpeg/libavcodec/huffyuv.c.old ./dlls/quartz/ffmpeg/libavcodec/huffyuv.c
--- ./dlls/quartz/ffmpeg/libavcodec/huffyuv.c.old	2003-06-09 03:55:23.000000000 +0200
+++ ./dlls/quartz/ffmpeg/libavcodec/huffyuv.c	2005-12-19 00:28:44.000000000 +0100
@@ -26,9 +26,9 @@
  * huffyuv codec for libavcodec.
  */
 
-#include "common.h"
 #include "avcodec.h"
 #include "dsputil.h"
+#include "common.h"
 
 #ifndef INT64_MAX
 #define INT64_MAX 9223372036854775807LL

diff -Naur ./dlls/shell32/iconcache.c.old ./dlls/shell32/iconcache.c
--- ./dlls/shell32/iconcache.c.old	2004-11-15 16:40:27.000000000 +0100
+++ ./dlls/shell32/iconcache.c	2005-12-18 22:45:30.000000000 +0100
@@ -41,7 +41,7 @@
 	DWORD dwAccessTime;
 } SIC_ENTRY, * LPSIC_ENTRY;
 
-static HDPA		sic_hdpa = 0;
+HDPA		sic_hdpa = 0;
 static CRITICAL_SECTION SHELL32_SicCS;
 
 void create_iconcache_cs(void)

diff -Naur ./dlls/ole32/ifs.c.old ./dlls/ole32/ifs.c
--- ./dlls/ole32/ifs.c.old	2004-04-01 14:09:26.000000000 +0200
+++ ./dlls/ole32/ifs.c	2005-12-18 22:36:57.000000000 +0100
@@ -311,7 +311,7 @@
 	}
 }
 
-static ICOM_VTABLE(IMalloc) VT_IMalloc32 =
+ICOM_VTABLE(IMalloc) VT_IMalloc32 =
 {
 	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
 	IMalloc_fnQueryInterface,
@@ -471,7 +471,7 @@
         TRACE("leaks: %lu\n", Malloc32.SpyedAllocationsLeft);
 }
 
-static ICOM_VTABLE(IMallocSpy) VT_IMallocSpy =
+ICOM_VTABLE(IMallocSpy) VT_IMallocSpy =
 {
 	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
 	IMallocSpy_fnQueryInterface,

diff -Naur ./msdos/int21.c.old ./msdos/int21.c
--- ./msdos/int21.c.old	2005-03-14 18:15:43.000000000 +0100
+++ ./msdos/int21.c	2005-12-18 21:16:22.000000000 +0100
@@ -840,12 +840,12 @@
 
     if (*fcb == 0xff) { /* place extended FCB header before pResult if called with extended FCB */
 	*(BYTE *)pResult = 0xff;
-	(BYTE *)pResult +=6; /* leave reserved field behind */
-	*(BYTE *)pResult = entry.dwFileAttributes;
-	((BYTE *)pResult)++;
+	*((BYTE **)&pResult) +=6; /* leave reserved field behind */
+	**((BYTE **)&pResult) = entry.dwFileAttributes;
+	(*((BYTE **)&pResult))++;
     }
-    *(BYTE *)pResult = DOS_GET_DRIVE( pFCB->drive ); /* DOS_DIRENTRY_LAYOUT after current drive number */
-    ((BYTE *)pResult)++;
+    **((BYTE **)&pResult) = DOS_GET_DRIVE( pFCB->drive ); /* DOS_DIRENTRY_LAYOUT after current drive number */
+    (*((BYTE **)&pResult))++;
     pResult->fileattr = entry.dwFileAttributes;
     pResult->cluster  = 0;  /* what else? */
     pResult->filesize = entry.nFileSizeLow;

diff -Naur ./msdos/int2f.c.old ./msdos/int2f.c
--- ./msdos/int2f.c.old	2005-03-07 22:21:59.000000000 +0100
+++ ./msdos/int2f.c	2005-12-18 21:42:07.000000000 +0100
@@ -203,7 +203,7 @@
         }
         break;
     case 0xb7:  /* append */
-        LOBYTE(context->Eax) = 0; /* not installed */
+        *( (unsigned char *)&context->Eax ) = 0; /* not installed */
         break;
     case 0xb8:  /* network */
         switch (LOBYTE(context->Eax))

diff -Naur ./loader/ne/module.c.old ./loader/ne/module.c
--- ./loader/ne/module.c.old	2005-12-18 21:06:35.000000000 +0100
+++ ./loader/ne/module.c	2005-12-18 21:08:10.000000000 +0100
@@ -680,7 +680,7 @@
                     bundle->first = bundle->last =
                         oldbundle->last + nr_entries;
                     bundle->next = 0;
-                    (BYTE *)entry += sizeof(ET_BUNDLE);
+                    *((BYTE **)&entry) += sizeof(ET_BUNDLE);
                 }
             }
         }

diff -Naur ./dlls/quartz/ffmpeg/libavformat/mpeg.c.old ./dlls/quartz/ffmpeg/libavformat/mpeg.c
--- ./dlls/quartz/ffmpeg/libavformat/mpeg.c.old	2003-05-03 02:20:17.000000000 +0200
+++ ./dlls/quartz/ffmpeg/libavformat/mpeg.c	2005-12-19 01:19:19.000000000 +0100
@@ -648,7 +648,7 @@
     return 0;
 }
 
-static AVOutputFormat mpeg1system_mux = {
+AVOutputFormat mpeg1system_mux = {
     "mpeg",
     "MPEG1 System format",
     "video/mpeg",
@@ -661,7 +661,7 @@
     mpeg_mux_end,
 };
 
-static AVOutputFormat mpeg1vcd_mux = {
+AVOutputFormat mpeg1vcd_mux = {
     "vcd",
     "MPEG1 System format (VCD)",
     "video/mpeg",
@@ -674,7 +674,7 @@
     mpeg_mux_end,
 };
 
-static AVOutputFormat mpeg2vob_mux = {
+AVOutputFormat mpeg2vob_mux = {
     "vob",
     "MPEG2 PS format (VOB)",
     "video/mpeg",

diff -Naur ./dlls/msvideo/msrle32/msrle32.c.old ./dlls/msvideo/msrle32/msrle32.c
--- ./dlls/msvideo/msrle32/msrle32.c.old	2003-12-17 19:51:59.000000000 +0100
+++ ./dlls/msvideo/msrle32/msrle32.c	2005-12-19 00:07:13.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 Michael Günnewig
+ * Copyright 2002 Michael Gnnewig
  *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -554,7 +554,7 @@
 
       /* add EOL -- end of line */
       lpbiOut->biSizeImage += 2;
-      *((LPWORD)lpOut)++ = 0;
+      *(*((LPWORD*)&lpOut))++ = 0;
     }
   } else {
     /* delta-frame -- compute delta between last and this internal frame */
@@ -612,7 +612,7 @@
 	    }
 	    /* add EOL -- end of line */
 	    lpbiOut->biSizeImage += 2;
-	    *((LPWORD)lpOut)++ = 0;
+	    *(*((LPWORD*)&lpOut))++ = 0;
 	  }
 
 	  /* FIXME: if (jumpy == 0 && could encode all) then jump too expensive */
@@ -650,7 +650,7 @@
 
 	/* add EOL -- end of line */
 	lpbiOut->biSizeImage += 2;
-	*((LPWORD)lpOut)++ = 0;
+	*(*((LPWORD*)&lpOut))++ = 0;
       }
     }
   }
@@ -693,7 +693,7 @@
 
       /* add EOL -- end of line */
       lpbiOut->biSizeImage += 2;
-      *((LPWORD)lpOut)++ = 0;
+      *(*((LPWORD*)&lpOut))++ = 0;
     }
   } else {
     /* delta-frame -- compute delta between last and this internal frame */
@@ -737,7 +737,7 @@
 
 	    /* add EOL -- end of line */
 	    lpbiOut->biSizeImage += 2;
-	    *((LPWORD)lpOut)++ = 0;
+	    *(*((LPWORD*)&lpOut))++ = 0;
 	  }
 
 	  /* FIXME: if (jumpy == 0 && could encode all) then jump too expensive */

diff -Naur ./tools/wrc/newstruc.c.old ./tools/wrc/newstruc.c
--- ./tools/wrc/newstruc.c.old	2005-12-18 19:50:43.000000000 +0100
+++ ./tools/wrc/newstruc.c	2005-12-18 20:39:20.000000000 +0100
@@ -737,7 +737,7 @@
 
 		/* FIXME: This relies in sizeof(DWORD) == sizeof(pointer_type) */
 		if((DWORD)rtp & 1)
-			((char *)rtp)++;
+			(*((char**)&rtp))++;
 	}
 }
 
@@ -848,7 +848,7 @@
 
 			/* FIXME: This relies in sizeof(DWORD) == sizeof(pointer_type) */
 			if((DWORD)rtp & 1)
-				((char *)rtp)++;
+				(*((char**)&rtp))++;
 		}
 
 		/* We must end correctly here */

diff -Naur ./dlls/oleaut32/oaidl_p.c.old ./dlls/oleaut32/oaidl_p.c
--- ./dlls/oleaut32/oaidl_p.c.old	2005-12-18 23:29:52.000000000 +0100
+++ ./dlls/oleaut32/oaidl_p.c	2005-12-18 23:44:07.000000000 +0100
@@ -102,9 +102,9 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] );
 
-            *pctinfo = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+            *pctinfo = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -143,7 +143,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( UINT __RPC_FAR * )pctinfo = 0;
+    *(( UINT __RPC_FAR ** )&pctinfo )= 0;
     RpcTryFinally
         {
         pctinfo = &_M0;
@@ -155,9 +155,9 @@
 
         _StubMsg.BufferLength = 4U + 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = *pctinfo;
+        *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = *pctinfo;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -210,9 +210,9 @@
 
             _StubMsg.BufferLength = 4U + 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = iTInfo;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = iTInfo;
 
-            *(( LCID __RPC_FAR * )_StubMsg.Buffer)++ = lcid;
+            *(*(( LCID __RPC_FAR ** )&_StubMsg.Buffer))++ = lcid;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -225,7 +225,7 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -266,15 +266,15 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( ITypeInfo __RPC_FAR *__RPC_FAR * )ppTInfo = 0;
+    *(( ITypeInfo __RPC_FAR *__RPC_FAR ** )&ppTInfo) = 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[6] );
 
-        iTInfo = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        iTInfo = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        lcid = *(( LCID __RPC_FAR * )_StubMsg.Buffer)++;
+        lcid = *(*(( LCID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         ppTInfo = &_M1;
         _M1 = 0;
@@ -301,7 +301,7 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[6] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -382,9 +382,9 @@
                                         (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[54] );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = cNames;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = cNames;
 
-            *(( LCID __RPC_FAR * )_StubMsg.Buffer)++ = lcid;
+            *(*(( LCID __RPC_FAR ** )&_StubMsg.Buffer))++ = lcid;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -396,7 +396,7 @@
                                           (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[88],
                                           (unsigned char)0 );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -457,9 +457,9 @@
                                       (unsigned char)0 );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        cNames = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        cNames = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        lcid = *(( LCID __RPC_FAR * )_StubMsg.Buffer)++;
+        lcid = *(*(( LCID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         rgDispId = NdrAllocate(&_StubMsg,cNames * 4);
 
@@ -490,7 +490,7 @@
                                     (unsigned char __RPC_FAR *)rgDispId,
                                     (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[88] );
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -611,22 +611,22 @@
                                        (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1184] );
 
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( DISPID __RPC_FAR * )_StubMsg.Buffer)++ = dispIdMember;
+            *(*(( DISPID __RPC_FAR ** )&_StubMsg.Buffer))++ = dispIdMember;
 
             NdrSimpleStructMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                      (unsigned char __RPC_FAR *)riid,
                                      (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38] );
 
-            *(( LCID __RPC_FAR * )_StubMsg.Buffer)++ = lcid;
+            *(*(( LCID __RPC_FAR ** )&_StubMsg.Buffer))++ = lcid;
 
-            *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = dwFlags;
+            *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = dwFlags;
 
             NdrComplexStructMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                       (unsigned char __RPC_FAR *)pDispParams,
                                       (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1080] );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = cVarRef;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = cVarRef;
 
             _StubMsg.MaxCount = cVarRef;
 
@@ -656,7 +656,7 @@
                                         (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *pArgErr = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+            *pArgErr = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             NdrComplexArrayUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                        (unsigned char __RPC_FAR * __RPC_FAR *)&rgVarRef,
@@ -664,7 +664,7 @@
                                        (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -735,16 +735,16 @@
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[34] );
 
-        dispIdMember = *(( DISPID __RPC_FAR * )_StubMsg.Buffer)++;
+        dispIdMember = *(*(( DISPID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         NdrSimpleStructUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                    (unsigned char __RPC_FAR * __RPC_FAR *)&riid,
                                    (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38],
                                    (unsigned char)0 );
 
-        lcid = *(( LCID __RPC_FAR * )_StubMsg.Buffer)++;
+        lcid = *(*(( LCID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        dwFlags = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+        dwFlags = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         NdrComplexStructUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                     (unsigned char __RPC_FAR * __RPC_FAR *)&pDispParams,
@@ -752,7 +752,7 @@
                                     (unsigned char)0 );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        cVarRef = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        cVarRef = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         NdrConformantArrayUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                       (unsigned char __RPC_FAR * __RPC_FAR *)&rgVarRefIdx,
@@ -818,7 +818,7 @@
                                   (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1138] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = *pArgErr;
+        *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = *pArgErr;
 
         _StubMsg.MaxCount = cVarRef;
 
@@ -827,7 +827,7 @@
                                  (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1184] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -943,7 +943,7 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++ = celt;
+            *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++ = celt;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -956,9 +956,9 @@
                                        (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *pCeltFetched = *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++;
+            *pCeltFetched = *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -1007,14 +1007,14 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( VARIANT __RPC_FAR * )rgVar = 0;
-    ( ULONG __RPC_FAR * )pCeltFetched = 0;
+    *(( VARIANT __RPC_FAR ** )&rgVar )= 0;
+    *(( ULONG __RPC_FAR ** )&pCeltFetched )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[72] );
 
-        celt = *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++;
+        celt = *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         rgVar = NdrAllocate(&_StubMsg,celt * 16);
         pCeltFetched = &_M11;
@@ -1051,9 +1051,9 @@
                                  (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1206] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++ = *pCeltFetched;
+        *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++ = *pCeltFetched;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -1101,14 +1101,14 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++ = celt;
+            *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++ = celt;
 
             NdrProxySendReceive(This, &_StubMsg);
 
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[84] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -1147,7 +1147,7 @@
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[84] );
 
-        celt = *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++;
+        celt = *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++;
 
 
         *_pdwStubPhase = STUB_CALL_SERVER;
@@ -1157,7 +1157,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -1201,7 +1201,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[88] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -1244,7 +1244,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -1306,7 +1306,7 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -1345,7 +1345,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( IEnumVARIANT __RPC_FAR *__RPC_FAR * )ppEnum = 0;
+    *(( IEnumVARIANT __RPC_FAR *__RPC_FAR ** )&ppEnum) = 0;
     RpcTryFinally
         {
         ppEnum = &_M12;
@@ -1369,7 +1369,7 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1224] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -1528,9 +1528,9 @@
                                          (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1248] );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++ = lHashVal;
+            *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++ = lHashVal;
 
-            *(( WORD __RPC_FAR * )_StubMsg.Buffer)++ = wFlags;
+            *(*(( WORD __RPC_FAR ** )&_StubMsg.Buffer))++ = wFlags;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -1568,7 +1568,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -1640,13 +1640,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPOLESTR  )szName = 0;
-    ( ITypeInfo __RPC_FAR *__RPC_FAR * )ppTInfo = 0;
-    ( DESCKIND __RPC_FAR * )pDescKind = 0;
-    ( LPFUNCDESC __RPC_FAR * )ppFuncDesc = 0;
-    ( LPVARDESC __RPC_FAR * )ppVarDesc = 0;
-    ( ITypeComp __RPC_FAR *__RPC_FAR * )ppTypeComp = 0;
-    ( CLEANLOCALSTORAGE __RPC_FAR * )pDummy = 0;
+    *(( LPOLESTR *)&szName) = 0;
+    *(( ITypeInfo __RPC_FAR *__RPC_FAR ** )&ppTInfo )= 0;
+    *(( DESCKIND __RPC_FAR ** )&pDescKind )= 0;
+    *(( LPFUNCDESC __RPC_FAR ** )&ppFuncDesc )= 0;
+    *(( LPVARDESC __RPC_FAR ** )&ppVarDesc )= 0;
+    *(( ITypeComp __RPC_FAR *__RPC_FAR ** )&ppTypeComp )= 0;
+    *(( CLEANLOCALSTORAGE __RPC_FAR ** )&pDummy )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
@@ -1658,9 +1658,9 @@
                                        (unsigned char)0 );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        lHashVal = *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++;
+        lHashVal = *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        wFlags = *(( WORD __RPC_FAR * )_StubMsg.Buffer)++;
+        wFlags = *(*(( WORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         ppTInfo = &_M15;
         _M15 = 0;
@@ -1739,7 +1739,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1568] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -1825,7 +1825,7 @@
                                          (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1248] );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++ = lHashVal;
+            *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++ = lHashVal;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -1838,7 +1838,7 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -1879,8 +1879,8 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPOLESTR  )szName = 0;
-    ( ITypeInfo __RPC_FAR *__RPC_FAR * )ppTInfo = 0;
+    *(( LPOLESTR  *)&szName) = 0;
+    *(( ITypeInfo __RPC_FAR *__RPC_FAR ** )&ppTInfo )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
@@ -1892,7 +1892,7 @@
                                        (unsigned char)0 );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        lHashVal = *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++;
+        lHashVal = *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         ppTInfo = &_M23;
         _M23 = 0;
@@ -1921,7 +1921,7 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[6] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -2038,7 +2038,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -2083,8 +2083,8 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPTYPEATTR __RPC_FAR * )ppTypeAttr = 0;
-    ( CLEANLOCALSTORAGE __RPC_FAR * )pDummy = 0;
+    *(( LPTYPEATTR __RPC_FAR ** )&ppTypeAttr )= 0;
+    *(( CLEANLOCALSTORAGE __RPC_FAR ** )&pDummy )= 0;
     RpcTryFinally
         {
         ppTypeAttr = &_M24;
@@ -2122,7 +2122,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1644] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -2192,7 +2192,7 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -2231,7 +2231,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( ITypeComp __RPC_FAR *__RPC_FAR * )ppTComp = 0;
+    *(( ITypeComp __RPC_FAR *__RPC_FAR ** )&ppTComp )= 0;
     RpcTryFinally
         {
         ppTComp = &_M26;
@@ -2255,7 +2255,7 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1540] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -2320,7 +2320,7 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -2338,7 +2338,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -2384,14 +2384,14 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPFUNCDESC __RPC_FAR * )ppFuncDesc = 0;
-    ( CLEANLOCALSTORAGE __RPC_FAR * )pDummy = 0;
+    *(( LPFUNCDESC __RPC_FAR ** )&ppFuncDesc )= 0;
+    *(( CLEANLOCALSTORAGE __RPC_FAR ** )&pDummy )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[158] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         ppFuncDesc = &_M27;
         _M27 = 0;
@@ -2429,7 +2429,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1660] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -2498,7 +2498,7 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -2516,7 +2516,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -2562,14 +2562,14 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPVARDESC __RPC_FAR * )ppVarDesc = 0;
-    ( CLEANLOCALSTORAGE __RPC_FAR * )pDummy = 0;
+    *(( LPVARDESC __RPC_FAR ** )&ppVarDesc )= 0;
+    *(( CLEANLOCALSTORAGE __RPC_FAR ** )&pDummy )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[170] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         ppVarDesc = &_M29;
         _M29 = 0;
@@ -2607,7 +2607,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1676] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -2673,9 +2673,9 @@
 
             _StubMsg.BufferLength = 4U + 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++ = memid;
+            *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++ = memid;
 
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = cMaxNames;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = cMaxNames;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -2688,9 +2688,9 @@
                                        (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *pcNames = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+            *pcNames = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -2740,16 +2740,16 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( BSTR __RPC_FAR * )rgBstrNames = 0;
-    ( UINT __RPC_FAR * )pcNames = 0;
+    *(( BSTR __RPC_FAR ** )&rgBstrNames )= 0;
+    *(( UINT __RPC_FAR ** )&pcNames )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[182] );
 
-        memid = *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++;
+        memid = *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        cMaxNames = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        cMaxNames = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         rgBstrNames = NdrAllocate(&_StubMsg,cMaxNames * 4);
         pcNames = &_M34;
@@ -2787,9 +2787,9 @@
                                  (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1690] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = *pcNames;
+        *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = *pcNames;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -2842,16 +2842,16 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrProxySendReceive(This, &_StubMsg);
 
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[196] );
 
-            *pRefType = *(( HREFTYPE __RPC_FAR * )_StubMsg.Buffer)++;
+            *pRefType = *(*(( HREFTYPE __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -2891,13 +2891,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( HREFTYPE __RPC_FAR * )pRefType = 0;
+    *(( HREFTYPE __RPC_FAR ** )&pRefType )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[196] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pRefType = &_M35;
 
@@ -2911,9 +2911,9 @@
 
         _StubMsg.BufferLength = 4U + 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HREFTYPE __RPC_FAR * )_StubMsg.Buffer)++ = *pRefType;
+        *(*(( HREFTYPE __RPC_FAR ** )&_StubMsg.Buffer))++ = *pRefType;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -2958,16 +2958,16 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrProxySendReceive(This, &_StubMsg);
 
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[196] );
 
-            *pImplTypeFlags = *(( INT __RPC_FAR * )_StubMsg.Buffer)++;
+            *pImplTypeFlags = *(*(( INT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -3007,13 +3007,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( INT __RPC_FAR * )pImplTypeFlags = 0;
+    *(( INT __RPC_FAR ** )&pImplTypeFlags )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[196] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pImplTypeFlags = &_M36;
 
@@ -3027,9 +3027,9 @@
 
         _StubMsg.BufferLength = 4U + 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( INT __RPC_FAR * )_StubMsg.Buffer)++ = *pImplTypeFlags;
+        *(*(( INT __RPC_FAR ** )&_StubMsg.Buffer))++ = *pImplTypeFlags;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -3073,7 +3073,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[88] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -3118,7 +3118,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -3162,7 +3162,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[88] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -3207,7 +3207,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -3289,9 +3289,9 @@
 
             _StubMsg.BufferLength = 4U + 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++ = memid;
+            *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++ = memid;
 
-            *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = refPtrFlags;
+            *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = refPtrFlags;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -3309,7 +3309,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *pdwHelpContext = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+            *pdwHelpContext = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             NdrUserMarshalUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                       (unsigned char __RPC_FAR * __RPC_FAR *)&pBstrHelpFile,
@@ -3317,7 +3317,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -3376,18 +3376,18 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( BSTR __RPC_FAR * )pBstrName = 0;
-    ( BSTR __RPC_FAR * )pBstrDocString = 0;
-    ( DWORD __RPC_FAR * )pdwHelpContext = 0;
-    ( BSTR __RPC_FAR * )pBstrHelpFile = 0;
+    *(( BSTR __RPC_FAR ** )&pBstrName )= 0;
+    *(( BSTR __RPC_FAR ** )&pBstrDocString )= 0;
+    *(( DWORD __RPC_FAR ** )&pdwHelpContext )= 0;
+    *(( BSTR __RPC_FAR ** )&pBstrHelpFile )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[204] );
 
-        memid = *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++;
+        memid = *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        refPtrFlags = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+        refPtrFlags = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pBstrName = &_M37;
         MIDL_memset(
@@ -3445,14 +3445,14 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = *pdwHelpContext;
+        *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = *pdwHelpContext;
 
         NdrUserMarshalMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                 (unsigned char __RPC_FAR *)pBstrHelpFile,
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -3535,13 +3535,13 @@
 
             _StubMsg.BufferLength = 4U + 4U + 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++ = memid;
+            *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++ = memid;
 
             NdrSimpleTypeMarshall(
                          ( PMIDL_STUB_MESSAGE  )&_StubMsg,
                          ( unsigned char __RPC_FAR * )&invKind,
                          14);
-            *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = refPtrFlags;
+            *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = refPtrFlags;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -3559,10 +3559,10 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 1) & ~ 0x1);
-            *pwOrdinal = *(( WORD __RPC_FAR * )_StubMsg.Buffer)++;
+            *pwOrdinal = *(*(( WORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -3616,21 +3616,21 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( BSTR __RPC_FAR * )pBstrDllName = 0;
-    ( BSTR __RPC_FAR * )pBstrName = 0;
-    ( WORD __RPC_FAR * )pwOrdinal = 0;
+    *(( BSTR __RPC_FAR ** )&pBstrDllName )= 0;
+    *(( BSTR __RPC_FAR ** )&pBstrName )= 0;
+    *(( WORD __RPC_FAR ** )&pwOrdinal )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[226] );
 
-        memid = *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++;
+        memid = *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         NdrSimpleTypeUnmarshall(
                            ( PMIDL_STUB_MESSAGE  )&_StubMsg,
                            ( unsigned char __RPC_FAR * )&invKind,
                            14);
-        refPtrFlags = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+        refPtrFlags = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pBstrDllName = &_M41;
         MIDL_memset(
@@ -3679,10 +3679,10 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 1) & ~ 0x1);
-        *(( WORD __RPC_FAR * )_StubMsg.Buffer)++ = *pwOrdinal;
+        *(*(( WORD __RPC_FAR ** )&_StubMsg.Buffer))++ = *pwOrdinal;
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -3742,7 +3742,7 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( HREFTYPE __RPC_FAR * )_StubMsg.Buffer)++ = hRefType;
+            *(*(( HREFTYPE __RPC_FAR ** )&_StubMsg.Buffer))++ = hRefType;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -3755,7 +3755,7 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -3795,13 +3795,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( ITypeInfo __RPC_FAR *__RPC_FAR * )ppTInfo = 0;
+    *(( ITypeInfo __RPC_FAR *__RPC_FAR ** )&ppTInfo )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[246] );
 
-        hRefType = *(( HREFTYPE __RPC_FAR * )_StubMsg.Buffer)++;
+        hRefType = *(*(( HREFTYPE __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         ppTInfo = &_M44;
         _M44 = 0;
@@ -3827,7 +3827,7 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[6] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -3875,7 +3875,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[88] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -3920,7 +3920,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -3995,7 +3995,7 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -4078,7 +4078,7 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1716] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -4136,7 +4136,7 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++ = memid;
+            *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++ = memid;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -4149,7 +4149,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -4189,13 +4189,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( BSTR __RPC_FAR * )pBstrMops = 0;
+    *(( BSTR __RPC_FAR ** )&pBstrMops )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[264] );
 
-        memid = *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++;
+        memid = *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pBstrMops = &_M46;
         MIDL_memset(
@@ -4224,7 +4224,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -4295,9 +4295,9 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *pIndex = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+            *pIndex = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -4342,8 +4342,8 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( ITypeLib __RPC_FAR *__RPC_FAR * )ppTLib = 0;
-    ( UINT __RPC_FAR * )pIndex = 0;
+    *(( ITypeLib __RPC_FAR *__RPC_FAR ** )&ppTLib )= 0;
+    *(( UINT __RPC_FAR ** )&pIndex )= 0;
     RpcTryFinally
         {
         ppTLib = &_M47;
@@ -4373,9 +4373,9 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1726] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = *pIndex;
+        *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = *pIndex;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -4423,7 +4423,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[88] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -4468,7 +4468,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -4512,7 +4512,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[88] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -4557,7 +4557,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -4601,7 +4601,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[88] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -4646,7 +4646,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -4771,7 +4771,7 @@
                                   (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1250],
                                   (unsigned char)0 );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -4810,7 +4810,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( TYPEKIND __RPC_FAR * )pTypeKind = 0;
+    *(( TYPEKIND __RPC_FAR ** )&pTypeKind )= 0;
     RpcTryFinally
         {
         pTypeKind = &_M49;
@@ -4826,7 +4826,7 @@
                             (unsigned char __RPC_FAR *)pTypeKind,
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1250] );
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -4875,9 +4875,9 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] );
 
-            *pTypeFlags = *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++;
+            *pTypeFlags = *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -4916,7 +4916,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( ULONG __RPC_FAR * )pTypeFlags = 0;
+    *(( ULONG __RPC_FAR ** )&pTypeFlags )= 0;
     RpcTryFinally
         {
         pTypeFlags = &_M50;
@@ -4928,9 +4928,9 @@
 
         _StubMsg.BufferLength = 4U + 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++ = *pTypeFlags;
+        *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++ = *pTypeFlags;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -4976,7 +4976,7 @@
 
             _StubMsg.BufferLength = 4U + 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++ = memid;
+            *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++ = memid;
 
             NdrSimpleTypeMarshall(
                          ( PMIDL_STUB_MESSAGE  )&_StubMsg,
@@ -4987,9 +4987,9 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[288] );
 
-            *pFuncIndex = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+            *pFuncIndex = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -5030,13 +5030,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( UINT __RPC_FAR * )pFuncIndex = 0;
+    *(( UINT __RPC_FAR ** )&pFuncIndex )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[288] );
 
-        memid = *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++;
+        memid = *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         NdrSimpleTypeUnmarshall(
                            ( PMIDL_STUB_MESSAGE  )&_StubMsg,
@@ -5055,9 +5055,9 @@
 
         _StubMsg.BufferLength = 4U + 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = *pFuncIndex;
+        *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = *pFuncIndex;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -5102,16 +5102,16 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++ = memid;
+            *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++ = memid;
 
             NdrProxySendReceive(This, &_StubMsg);
 
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[196] );
 
-            *pVarIndex = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+            *pVarIndex = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -5151,13 +5151,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( UINT __RPC_FAR * )pVarIndex = 0;
+    *(( UINT __RPC_FAR ** )&pVarIndex )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[196] );
 
-        memid = *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++;
+        memid = *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pVarIndex = &_M52;
 
@@ -5171,9 +5171,9 @@
 
         _StubMsg.BufferLength = 4U + 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = *pVarIndex;
+        *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = *pVarIndex;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -5248,7 +5248,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -5326,7 +5326,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1110] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -5391,7 +5391,7 @@
                                        (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38] );
 
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrSimpleStructMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                      (unsigned char __RPC_FAR *)guid,
@@ -5408,7 +5408,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -5455,7 +5455,7 @@
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[308] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         NdrSimpleStructUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                    (unsigned char __RPC_FAR * __RPC_FAR *)&guid,
@@ -5490,7 +5490,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1110] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -5556,9 +5556,9 @@
                                        (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38] );
 
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = indexFunc;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = indexFunc;
 
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = indexParam;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = indexParam;
 
             NdrSimpleStructMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                      (unsigned char __RPC_FAR *)guid,
@@ -5575,7 +5575,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -5623,9 +5623,9 @@
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[320] );
 
-        indexFunc = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        indexFunc = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        indexParam = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        indexParam = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         NdrSimpleStructUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                    (unsigned char __RPC_FAR * __RPC_FAR *)&guid,
@@ -5661,7 +5661,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1110] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -5726,7 +5726,7 @@
                                        (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38] );
 
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrSimpleStructMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                      (unsigned char __RPC_FAR *)guid,
@@ -5743,7 +5743,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -5790,7 +5790,7 @@
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[308] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         NdrSimpleStructUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                    (unsigned char __RPC_FAR * __RPC_FAR *)&guid,
@@ -5825,7 +5825,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1110] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -5890,7 +5890,7 @@
                                        (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38] );
 
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrSimpleStructMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                      (unsigned char __RPC_FAR *)guid,
@@ -5907,7 +5907,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -5954,7 +5954,7 @@
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[308] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         NdrSimpleStructUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                    (unsigned char __RPC_FAR * __RPC_FAR *)&guid,
@@ -5989,7 +5989,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1110] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -6064,11 +6064,11 @@
 
             _StubMsg.BufferLength = 4U + 4U + 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++ = memid;
+            *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++ = memid;
 
-            *(( LCID __RPC_FAR * )_StubMsg.Buffer)++ = lcid;
+            *(*(( LCID __RPC_FAR ** )&_StubMsg.Buffer))++ = lcid;
 
-            *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = refPtrFlags;
+            *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = refPtrFlags;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -6081,7 +6081,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *pdwHelpStringContext = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+            *pdwHelpStringContext = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             NdrUserMarshalUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                       (unsigned char __RPC_FAR * __RPC_FAR *)&pbstrHelpStringDll,
@@ -6089,7 +6089,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -6143,19 +6143,19 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( BSTR __RPC_FAR * )pbstrHelpString = 0;
-    ( DWORD __RPC_FAR * )pdwHelpStringContext = 0;
-    ( BSTR __RPC_FAR * )pbstrHelpStringDll = 0;
+    *(( BSTR __RPC_FAR ** )&pbstrHelpString )= 0;
+    *(( DWORD __RPC_FAR ** )&pdwHelpStringContext )= 0;
+    *(( BSTR __RPC_FAR ** )&pbstrHelpStringDll )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[334] );
 
-        memid = *(( MEMBERID __RPC_FAR * )_StubMsg.Buffer)++;
+        memid = *(*(( MEMBERID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        lcid = *(( LCID __RPC_FAR * )_StubMsg.Buffer)++;
+        lcid = *(*(( LCID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        refPtrFlags = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+        refPtrFlags = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pbstrHelpString = &_M58;
         MIDL_memset(
@@ -6200,14 +6200,14 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = *pdwHelpStringContext;
+        *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = *pdwHelpStringContext;
 
         NdrUserMarshalMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                 (unsigned char __RPC_FAR *)pbstrHelpStringDll,
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -6277,7 +6277,7 @@
                                         (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -6316,7 +6316,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( CUSTDATA __RPC_FAR * )pCustData = 0;
+    *(( CUSTDATA __RPC_FAR ** )&pCustData )= 0;
     RpcTryFinally
         {
         pCustData = &_pCustDataM;
@@ -6340,7 +6340,7 @@
                                   (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1788] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -6396,7 +6396,7 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -6409,7 +6409,7 @@
                                         (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -6449,13 +6449,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( CUSTDATA __RPC_FAR * )pCustData = 0;
+    *(( CUSTDATA __RPC_FAR ** )&pCustData )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[360] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pCustData = &_pCustDataM;
         pCustData -> prgCustData = 0;
@@ -6481,7 +6481,7 @@
                                   (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1788] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -6538,9 +6538,9 @@
 
             _StubMsg.BufferLength = 4U + 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = indexFunc;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = indexFunc;
 
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = indexParam;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = indexParam;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -6553,7 +6553,7 @@
                                         (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -6594,15 +6594,15 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( CUSTDATA __RPC_FAR * )pCustData = 0;
+    *(( CUSTDATA __RPC_FAR ** )&pCustData )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[368] );
 
-        indexFunc = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        indexFunc = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        indexParam = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        indexParam = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pCustData = &_pCustDataM;
         pCustData -> prgCustData = 0;
@@ -6629,7 +6629,7 @@
                                   (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1788] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -6685,7 +6685,7 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -6698,7 +6698,7 @@
                                         (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -6738,13 +6738,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( CUSTDATA __RPC_FAR * )pCustData = 0;
+    *(( CUSTDATA __RPC_FAR ** )&pCustData )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[360] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pCustData = &_pCustDataM;
         pCustData -> prgCustData = 0;
@@ -6770,7 +6770,7 @@
                                   (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1788] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -6826,7 +6826,7 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -6839,7 +6839,7 @@
                                         (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -6879,13 +6879,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( CUSTDATA __RPC_FAR * )pCustData = 0;
+    *(( CUSTDATA __RPC_FAR ** )&pCustData )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[360] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pCustData = &_pCustDataM;
         pCustData -> prgCustData = 0;
@@ -6911,7 +6911,7 @@
                                   (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1788] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -7065,9 +7065,9 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] );
 
-            *pcTInfo = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+            *pcTInfo = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -7106,7 +7106,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( UINT __RPC_FAR * )pcTInfo = 0;
+    *(( UINT __RPC_FAR ** )&pcTInfo )= 0;
     RpcTryFinally
         {
         pcTInfo = &_M61;
@@ -7120,9 +7120,9 @@
 
         _StubMsg.BufferLength = 4U + 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = *pcTInfo;
+        *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = *pcTInfo;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -7174,7 +7174,7 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -7187,7 +7187,7 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -7227,13 +7227,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( ITypeInfo __RPC_FAR *__RPC_FAR * )ppTInfo = 0;
+    *(( ITypeInfo __RPC_FAR *__RPC_FAR ** )&ppTInfo )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[246] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         ppTInfo = &_M62;
         _M62 = 0;
@@ -7259,7 +7259,7 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[6] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -7308,7 +7308,7 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( UINT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -7320,7 +7320,7 @@
                                   (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1250],
                                   (unsigned char)0 );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -7360,13 +7360,13 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( TYPEKIND __RPC_FAR * )pTKind = 0;
+    *(( TYPEKIND __RPC_FAR ** )&pTKind )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[378] );
 
-        index = *(( UINT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( UINT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pTKind = &_M63;
 
@@ -7384,7 +7384,7 @@
                             (unsigned char __RPC_FAR *)pTKind,
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1250] );
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -7459,7 +7459,7 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -7534,7 +7534,7 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[6] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -7614,7 +7614,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -7659,8 +7659,8 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPTLIBATTR __RPC_FAR * )ppTLibAttr = 0;
-    ( CLEANLOCALSTORAGE __RPC_FAR * )pDummy = 0;
+    *(( LPTLIBATTR __RPC_FAR ** )&ppTLibAttr )= 0;
+    *(( CLEANLOCALSTORAGE __RPC_FAR ** )&pDummy )= 0;
     RpcTryFinally
         {
         ppTLibAttr = &_M65;
@@ -7698,7 +7698,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1838] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -7768,7 +7768,7 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -7807,7 +7807,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( ITypeComp __RPC_FAR *__RPC_FAR * )ppTComp = 0;
+    *(( ITypeComp __RPC_FAR *__RPC_FAR ** )&ppTComp )= 0;
     RpcTryFinally
         {
         ppTComp = &_M67;
@@ -7831,7 +7831,7 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1540] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -7917,9 +7917,9 @@
 
             _StubMsg.BufferLength = 4U + 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( INT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( INT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
-            *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = refPtrFlags;
+            *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = refPtrFlags;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -7937,7 +7937,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *pdwHelpContext = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+            *pdwHelpContext = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             NdrUserMarshalUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                       (unsigned char __RPC_FAR * __RPC_FAR *)&pBstrHelpFile,
@@ -7945,7 +7945,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -8004,18 +8004,18 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( BSTR __RPC_FAR * )pBstrName = 0;
-    ( BSTR __RPC_FAR * )pBstrDocString = 0;
-    ( DWORD __RPC_FAR * )pdwHelpContext = 0;
-    ( BSTR __RPC_FAR * )pBstrHelpFile = 0;
+    *(( BSTR __RPC_FAR ** )&pBstrName )= 0;
+    *(( BSTR __RPC_FAR ** )&pBstrDocString )= 0;
+    *(( DWORD __RPC_FAR ** )&pdwHelpContext )= 0;
+    *(( BSTR __RPC_FAR ** )&pBstrHelpFile )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[204] );
 
-        index = *(( INT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( INT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        refPtrFlags = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+        refPtrFlags = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pBstrName = &_M68;
         MIDL_memset(
@@ -8073,14 +8073,14 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = *pdwHelpContext;
+        *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = *pdwHelpContext;
 
         NdrUserMarshalMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                 (unsigned char __RPC_FAR *)pBstrHelpFile,
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -8163,14 +8163,14 @@
                                          (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1248] );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++ = lHashVal;
+            *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++ = lHashVal;
 
             NdrProxySendReceive(This, &_StubMsg);
 
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[406] );
 
-            *pfName = *(( BOOL __RPC_FAR * )_StubMsg.Buffer)++;
+            *pfName = *(*(( BOOL __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             NdrUserMarshalUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                       (unsigned char __RPC_FAR * __RPC_FAR *)&pBstrLibName,
@@ -8178,7 +8178,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -8225,9 +8225,9 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPOLESTR  )szNameBuf = 0;
-    ( BOOL __RPC_FAR * )pfName = 0;
-    ( BSTR __RPC_FAR * )pBstrLibName = 0;
+    *(( LPOLESTR *)&szNameBuf) = 0;
+    *(( BOOL __RPC_FAR ** )&pfName )= 0;
+    *(( BSTR __RPC_FAR ** )&pBstrLibName )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
@@ -8239,7 +8239,7 @@
                                        (unsigned char)0 );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        lHashVal = *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++;
+        lHashVal = *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pfName = &_M74;
         pBstrLibName = &_M75;
@@ -8268,14 +8268,14 @@
         _StubMsg.BufferLength += 16;
 
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( BOOL __RPC_FAR * )_StubMsg.Buffer)++ = *pfName;
+        *(*(( BOOL __RPC_FAR ** )&_StubMsg.Buffer))++ = *pfName;
 
         NdrUserMarshalMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                 (unsigned char __RPC_FAR *)pBstrLibName,
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -8367,9 +8367,9 @@
                                          (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1248] );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++ = lHashVal;
+            *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++ = lHashVal;
 
-            *(( USHORT __RPC_FAR * )_StubMsg.Buffer)++ = *pcFound;
+            *(*(( USHORT __RPC_FAR ** )&_StubMsg.Buffer))++ = *pcFound;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -8386,7 +8386,7 @@
                                                  (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1874],
                                                  (unsigned char)0 );
 
-            *pcFound = *(( USHORT __RPC_FAR * )_StubMsg.Buffer)++;
+            *pcFound = *(*(( USHORT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             NdrUserMarshalUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                       (unsigned char __RPC_FAR * __RPC_FAR *)&pBstrLibName,
@@ -8394,7 +8394,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -8458,11 +8458,11 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPOLESTR  )szNameBuf = 0;
-    ( ITypeInfo __RPC_FAR *__RPC_FAR * )ppTInfo = 0;
-    ( MEMBERID __RPC_FAR * )rgMemId = 0;
-    ( USHORT __RPC_FAR * )pcFound = 0;
-    ( BSTR __RPC_FAR * )pBstrLibName = 0;
+    *(( LPOLESTR *)&szNameBuf) = 0;
+    *(( ITypeInfo __RPC_FAR *__RPC_FAR ** )&ppTInfo )= 0;
+    *(( MEMBERID __RPC_FAR ** )&rgMemId )= 0;
+    *(( USHORT __RPC_FAR ** )&pcFound )= 0;
+    *(( BSTR __RPC_FAR ** )&pBstrLibName )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
@@ -8474,7 +8474,7 @@
                                        (unsigned char)0 );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        lHashVal = *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++;
+        lHashVal = *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pcFound = ( USHORT __RPC_FAR * )_StubMsg.Buffer;
         _StubMsg.Buffer += sizeof( USHORT  );
@@ -8541,14 +8541,14 @@
                                            (unsigned char __RPC_FAR *)rgMemId,
                                            (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1874] );
 
-        *(( USHORT __RPC_FAR * )_StubMsg.Buffer)++ = *pcFound;
+        *(*(( USHORT __RPC_FAR ** )&_StubMsg.Buffer))++ = *pcFound;
 
         NdrUserMarshalMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                 (unsigned char __RPC_FAR *)pBstrLibName,
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -8612,7 +8612,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[88] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -8657,7 +8657,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -8785,7 +8785,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -8863,7 +8863,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1110] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -8921,11 +8921,11 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[446] );
 
-            *pcUniqueNames = *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++;
+            *pcUniqueNames = *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            *pcchUniqueNames = *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++;
+            *pcchUniqueNames = *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -8970,8 +8970,8 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( ULONG __RPC_FAR * )pcUniqueNames = 0;
-    ( ULONG __RPC_FAR * )pcchUniqueNames = 0;
+    *(( ULONG __RPC_FAR ** )&pcUniqueNames )= 0;
+    *(( ULONG __RPC_FAR ** )&pcchUniqueNames )= 0;
     RpcTryFinally
         {
         pcUniqueNames = &_M86;
@@ -8989,11 +8989,11 @@
 
         _StubMsg.BufferLength = 4U + 4U + 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++ = *pcUniqueNames;
+        *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++ = *pcUniqueNames;
 
-        *(( ULONG __RPC_FAR * )_StubMsg.Buffer)++ = *pcchUniqueNames;
+        *(*(( ULONG __RPC_FAR ** )&_StubMsg.Buffer))++ = *pcchUniqueNames;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -9064,11 +9064,11 @@
 
             _StubMsg.BufferLength = 4U + 4U + 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( INT __RPC_FAR * )_StubMsg.Buffer)++ = index;
+            *(*(( INT __RPC_FAR ** )&_StubMsg.Buffer))++ = index;
 
-            *(( LCID __RPC_FAR * )_StubMsg.Buffer)++ = lcid;
+            *(*(( LCID __RPC_FAR ** )&_StubMsg.Buffer))++ = lcid;
 
-            *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = refPtrFlags;
+            *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = refPtrFlags;
 
             NdrProxySendReceive(This, &_StubMsg);
 
@@ -9081,7 +9081,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            *pdwHelpStringContext = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+            *pdwHelpStringContext = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             NdrUserMarshalUnmarshall( (PMIDL_STUB_MESSAGE) &_StubMsg,
                                       (unsigned char __RPC_FAR * __RPC_FAR *)&pbstrHelpStringDll,
@@ -9089,7 +9089,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -9143,19 +9143,19 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( BSTR __RPC_FAR * )pbstrHelpString = 0;
-    ( DWORD __RPC_FAR * )pdwHelpStringContext = 0;
-    ( BSTR __RPC_FAR * )pbstrHelpStringDll = 0;
+    *(( BSTR __RPC_FAR ** )&pbstrHelpString )= 0;
+    *(( DWORD __RPC_FAR ** )&pdwHelpStringContext )= 0;
+    *(( BSTR __RPC_FAR ** )&pbstrHelpStringDll )= 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[334] );
 
-        index = *(( INT __RPC_FAR * )_StubMsg.Buffer)++;
+        index = *(*(( INT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        lcid = *(( LCID __RPC_FAR * )_StubMsg.Buffer)++;
+        lcid = *(*(( LCID __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-        refPtrFlags = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+        refPtrFlags = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
         pbstrHelpString = &_M88;
         MIDL_memset(
@@ -9200,14 +9200,14 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = *pdwHelpStringContext;
+        *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = *pdwHelpStringContext;
 
         NdrUserMarshalMarshall( (PMIDL_STUB_MESSAGE)& _StubMsg,
                                 (unsigned char __RPC_FAR *)pbstrHelpStringDll,
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -9277,7 +9277,7 @@
                                         (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -9316,7 +9316,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( CUSTDATA __RPC_FAR * )pCustData = 0;
+    *(( CUSTDATA __RPC_FAR ** )&pCustData )= 0;
     RpcTryFinally
         {
         pCustData = &_pCustDataM;
@@ -9340,7 +9340,7 @@
                                   (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1788] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -9470,7 +9470,7 @@
                                        (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38],
                                        (unsigned char)0 );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -9509,7 +9509,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( GUID __RPC_FAR * )pGUID = 0;
+    *(( GUID __RPC_FAR ** )&pGUID )= 0;
     RpcTryFinally
         {
         pGUID = &_pGUIDM;
@@ -9531,7 +9531,7 @@
                                  (unsigned char __RPC_FAR *)pGUID,
                                  (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[38] );
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -9593,7 +9593,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -9632,7 +9632,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( BSTR __RPC_FAR * )pBstrSource = 0;
+    *(( BSTR __RPC_FAR ** )&pBstrSource )= 0;
     RpcTryFinally
         {
         pBstrSource = &_M91;
@@ -9659,7 +9659,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -9725,7 +9725,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -9764,7 +9764,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( BSTR __RPC_FAR * )pBstrDescription = 0;
+    *(( BSTR __RPC_FAR ** )&pBstrDescription )= 0;
     RpcTryFinally
         {
         pBstrDescription = &_M92;
@@ -9791,7 +9791,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -9857,7 +9857,7 @@
                                       (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -9896,7 +9896,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( BSTR __RPC_FAR * )pBstrHelpFile = 0;
+    *(( BSTR __RPC_FAR ** )&pBstrHelpFile )= 0;
     RpcTryFinally
         {
         pBstrHelpFile = &_M93;
@@ -9923,7 +9923,7 @@
                                 (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1128] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -9976,9 +9976,9 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] );
 
-            *pdwHelpContext = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+            *pdwHelpContext = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -10017,7 +10017,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( DWORD __RPC_FAR * )pdwHelpContext = 0;
+    *(( DWORD __RPC_FAR ** )&pdwHelpContext )= 0;
     RpcTryFinally
         {
         pdwHelpContext = &_M94;
@@ -10029,9 +10029,9 @@
 
         _StubMsg.BufferLength = 4U + 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = *pdwHelpContext;
+        *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = *pdwHelpContext;
 
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -10131,7 +10131,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[468] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -10184,7 +10184,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -10241,7 +10241,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[474] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -10275,7 +10275,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPOLESTR  )szSource = 0;
+    *(( LPOLESTR *)&szSource) = 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
@@ -10296,7 +10296,7 @@
         _StubMsg.BufferLength += 16;
 
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -10353,7 +10353,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[474] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -10387,7 +10387,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPOLESTR  )szDescription = 0;
+    *(( LPOLESTR  *)&szDescription) = 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
@@ -10408,7 +10408,7 @@
         _StubMsg.BufferLength += 16;
 
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -10465,7 +10465,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[474] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -10499,7 +10499,7 @@
                      &_StubMsg,
                      &Object_StubDesc,
                      _pRpcChannelBuffer);
-    ( LPOLESTR  )szHelpFile = 0;
+    *(( LPOLESTR  *)&szHelpFile) = 0;
     RpcTryFinally
         {
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
@@ -10520,7 +10520,7 @@
         _StubMsg.BufferLength += 16;
 
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -10560,14 +10560,14 @@
 
             _StubMsg.BufferLength = 4U;
             NdrProxyGetBuffer(This, &_StubMsg);
-            *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++ = dwHelpContext;
+            *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++ = dwHelpContext;
 
             NdrProxySendReceive(This, &_StubMsg);
 
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[84] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -10606,7 +10606,7 @@
         if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
             NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[84] );
 
-        dwHelpContext = *(( DWORD __RPC_FAR * )_StubMsg.Buffer)++;
+        dwHelpContext = *(*(( DWORD __RPC_FAR ** )&_StubMsg.Buffer))++;
 
 
         *_pdwStubPhase = STUB_CALL_SERVER;
@@ -10616,7 +10616,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -10716,7 +10716,7 @@
             if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
                 NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[468] );
 
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -10769,7 +10769,7 @@
 
         _StubMsg.BufferLength = 4U;
         NdrStubGetBuffer(This, _pRpcChannelBuffer, &_StubMsg);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -10888,7 +10888,7 @@
                                   (unsigned char)0 );
 
             _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-            _RetVal = *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++;
+            _RetVal = *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++;
 
             }
         RpcFinally
@@ -10977,7 +10977,7 @@
                             (PFORMAT_STRING) &__MIDL_TypeFormatString.Format[1896] );
 
         _StubMsg.Buffer = (unsigned char __RPC_FAR *)(((long)_StubMsg.Buffer + 3) & ~ 0x3);
-        *(( HRESULT __RPC_FAR * )_StubMsg.Buffer)++ = _RetVal;
+        *(*(( HRESULT __RPC_FAR ** )&_StubMsg.Buffer))++ = _RetVal;
 
         }
     RpcFinally
@@ -11001,7 +11001,7 @@
 
 extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[3];
 
-static const MIDL_STUB_DESC Object_StubDesc =
+const MIDL_STUB_DESC Object_StubDesc =
     {
     0,
     NdrOleAllocate,
@@ -11077,7 +11077,7 @@
 /* Object interface: ICreateTypeLib2, ver. 0.0,
    GUID={0x0002040F,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
 
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[3] =
+const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[3] =
         {
 
             {
@@ -11114,7 +11114,7 @@
 #endif
 
 
-static const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString =
+const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString =
     {
         0,
         {
@@ -11949,7 +11949,7 @@
         }
     };
 
-static const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString =
+const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString =
     {
         0,
         {

diff -Naur ./miscemu/preloader.c.old ./miscemu/preloader.c
--- ./miscemu/preloader.c.old	2005-12-18 20:03:04.000000000 +0100
+++ ./miscemu/preloader.c	2005-12-18 20:10:06.000000000 +0100
@@ -1011,8 +1011,8 @@
     {
         for (i = 0; preload_info[i].size; i++)
         {
-            if ((char *)av->a_un.a_ptr >= (char *)preload_info[i].addr &&
-                (char *)av->a_un.a_ptr < (char *)preload_info[i].addr + preload_info[i].size)
+            if ((char *)av->a_un.a_val >= (char *)preload_info[i].addr &&
+                (char *)av->a_un.a_val < (char *)preload_info[i].addr + preload_info[i].size)
                 return 1;
         }
     }

diff -Naur ./dlls/ole32/proxy.c.old ./dlls/ole32/proxy.c
--- ./dlls/ole32/proxy.c.old	2005-03-14 18:17:03.000000000 +0100
+++ ./dlls/ole32/proxy.c	2005-12-18 22:40:01.000000000 +0100
@@ -1,7 +1,7 @@
 /*
  * Proxy/Stub implementation
  *
- * Copyright 2001 Ove Kåven, TransGaming Technologies
+ * Copyright 2001 Ove K�en, TransGaming Technologies
  *
  */
 
@@ -42,17 +42,17 @@
 static HRESULT COM_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv);
 
 /* the standard marshaller returns a special GUID */
-static const CLSID CLSID_StdMarshal = {
+const CLSID CLSID_StdMarshal = {
   0x1B, 0, 0, {0xC0, 0, 0, 0, 0, 0, 0, 0x46}
 };
 
 /* CLSID for ole32's builtin marshalers
  * (referenced by winedefault.reg) */
-static const CLSID CLSID_PSFactoryBuffer = {
+const CLSID CLSID_PSFactoryBuffer = {
   0x320, 0, 0, {0xC0, 0, 0, 0, 0, 0, 0, 0x46}
 };
 
-static const IID IID_IRemUnknown = {
+const IID IID_IRemUnknown = {
   0x131, 0, 0, {0xC0, 0, 0, 0, 0, 0, 0, 0x46}
 };
 

diff -Naur ./loader/ne/segment.c.old ./loader/ne/segment.c
--- ./loader/ne/segment.c.old	2005-12-18 21:10:44.000000000 +0100
+++ ./loader/ne/segment.c	2005-12-18 21:11:32.000000000 +0100
@@ -179,8 +179,8 @@
 
       ReadFile(hf, buff, size, &res, NULL);
       while(curr < buff + size) {
-	unsigned int rept = *((short*) curr)++;
-	unsigned int len = *((short*) curr)++;
+	unsigned int rept = *(*((short**) &curr))++;
+	unsigned int len = *(*((short**) &curr))++;
 	for(; rept > 0; rept--) {
 	  char* bytes = curr;
 	  unsigned int byte;

diff -Naur ./dlls/ole32/storage.c.old ./dlls/ole32/storage.c
--- ./dlls/ole32/storage.c.old	2005-03-14 18:13:55.000000000 +0100
+++ ./dlls/ole32/storage.c	2005-12-18 22:43:19.000000000 +0100
@@ -801,7 +801,7 @@
 				cc=SMALLSIZE-(This->offset.s.LowPart&(SMALLSIZE-1));
 			memcpy((LPBYTE)pv,block+(This->offset.s.LowPart&(SMALLSIZE-1)),cc);
 			This->offset.s.LowPart+=cc;
-			(LPBYTE)pv+=cc;
+			*((LPBYTE*)&pv)+=cc;
 			*bytesread+=cc;
 			cb-=cc;
 			blocknr = STORAGE_get_next_small_blocknr(This->hf,blocknr);
@@ -821,7 +821,7 @@
 				cc=BIGSIZE-(This->offset.s.LowPart&(BIGSIZE-1));
 			memcpy((LPBYTE)pv,block+(This->offset.s.LowPart&(BIGSIZE-1)),cc);
 			This->offset.s.LowPart+=cc;
-			(LPBYTE)pv+=cc;
+			*((LPBYTE*)&pv)+=cc;
 			*bytesread+=cc;
 			cb-=cc;
 			blocknr=STORAGE_get_next_big_blocknr(This->hf,blocknr);
@@ -1055,7 +1055,7 @@
 				return E_FAIL;
 			cb			-= cc;
 			curoffset		+= cc;
-			(LPBYTE)pv		+= cc;
+			*((LPBYTE*)&pv)		+= cc;
 			This->offset.s.LowPart	+= cc;
 			*byteswritten		+= cc;
 			blocknr = STORAGE_get_next_small_blocknr(hf,blocknr);
@@ -1083,7 +1083,7 @@
 				return E_FAIL;
 			cb			-= cc;
 			curoffset		+= cc;
-			(LPBYTE)pv		+= cc;
+			*((LPBYTE*)&pv)		+= cc;
 			This->offset.s.LowPart	+= cc;
 			*byteswritten		+= cc;
 			blocknr = STORAGE_get_next_big_blocknr(hf,blocknr);

diff -Naur ./dlls/kernel/thunk.c.old ./dlls/kernel/thunk.c
--- ./dlls/kernel/thunk.c.old	2005-03-07 22:09:47.000000000 +0100
+++ ./dlls/kernel/thunk.c	2005-12-18 21:48:54.000000000 +0100
@@ -1334,18 +1334,18 @@
      *   call __FLATCS:__wine_call_from_16_thunk
      */
 
-    *x++ = 0xB8; *((WORD *)x)++ = ds;
+    *x++ = 0xB8; *(*((WORD **)&x))++ = ds;
     *x++ = 0x8E; *x++ = 0xC0;
     *x++ = 0x66; *x++ = 0x0F; *x++ = 0xB7; *x++ = 0xC9;
     *x++ = 0x67; *x++ = 0x66; *x++ = 0x26; *x++ = 0x8B;
-                 *x++ = 0x91; *((DWORD *)x)++ = context->Edx;
+                 *x++ = 0x91; *(*((DWORD **)&x))++ = context->Edx;
 
     *x++ = 0x55;
     *x++ = 0x66; *x++ = 0x52;
     *x++ = 0x52;
     *x++ = 0x66; *x++ = 0x52;
-    *x++ = 0x66; *x++ = 0x9A; *((DWORD *)x)++ = (DWORD)__wine_call_from_16_thunk;
-                              *((WORD *)x)++ = cs;
+    *x++ = 0x66; *x++ = 0x9A; *(*((DWORD **)&x))++ = (DWORD)__wine_call_from_16_thunk;
+                              *(*((WORD **)&x))++ = cs;
 
     /* Jump to the stub code just created */
     context->Eip = LOWORD(context->Eax);
@@ -1394,15 +1394,15 @@
          */
 
         *x++ = 0x66; *x++ = 0x33; *x++ = 0xC0;
-        *x++ = 0x66; *x++ = 0xBA; *((DWORD *)x)++ = (DWORD)td;
-        *x++ = 0x9A; *((DWORD *)x)++ = procAddress;
+        *x++ = 0x66; *x++ = 0xBA; *(*((DWORD **)&x))++ = (DWORD)td;
+        *x++ = 0x9A; *(*((DWORD **)&x))++ = procAddress;
 
         *x++ = 0x55;
         *x++ = 0x66; *x++ = 0x52;
         *x++ = 0x52;
         *x++ = 0x66; *x++ = 0x52;
-        *x++ = 0x66; *x++ = 0x9A; *((DWORD *)x)++ = (DWORD)__wine_call_from_16_thunk;
-                                  *((WORD *)x)++ = cs;
+        *x++ = 0x66; *x++ = 0x9A; *(*((DWORD **)&x))++ = (DWORD)__wine_call_from_16_thunk;
+                                  *(*((WORD **)&x))++ = cs;
 
         /* Jump to the stub code just created */
         context->Eip = LOWORD(context->Eax);

diff -Naur ./windows/winproc.c.old ./windows/winproc.c
--- ./windows/winproc.c.old	2005-12-18 22:16:49.000000000 +0100
+++ ./windows/winproc.c	2005-12-18 22:00:54.000000000 +0100
@@ -1844,7 +1844,7 @@
             *pwparam16 = (WPARAM16)min( wParam32, 0x7f80 ); /* Must be < 64K */
             if (!(items = HeapAlloc( GetProcessHeap(), 0,
                                      *pwparam16 * sizeof(INT16) + sizeof(LPARAM)))) return -1;
-            *((LPARAM *)items)++ = *plparam;  /* Store the previous lParam */
+            *(*((LPARAM **)&items))++ = *plparam;  /* Store the previous lParam */
             *plparam = MapLS( items );
         }
 	*pmsg16 = LB_GETSELITEMS16;
@@ -1987,7 +1987,7 @@
             LPSTR str;
             *pwparam16 = (WPARAM16)min( wParam32, 0xff80 ); /* Must be < 64K */
             if (!(str = HeapAlloc( GetProcessHeap(), 0, *pwparam16 + sizeof(LPARAM)))) return -1;
-            *((LPARAM *)str)++ = *plparam;  /* Store the previous lParam */
+            *(*((LPARAM **)&str))++ = *plparam;  /* Store the previous lParam */
             *plparam = MapLS( str );
         }
         return 1;


--------------090702090006000408010401--