Index: /trunk/include/VBox/dis.h
===================================================================
--- /trunk/include/VBox/dis.h	(revision 8148)
+++ /trunk/include/VBox/dis.h	(revision 8149)
@@ -124,37 +124,38 @@
  * @{
  */
-#define USE_BASE                        RT_BIT(0)
-#define USE_INDEX                       RT_BIT(1)
-#define USE_SCALE                       RT_BIT(2)
-#define USE_REG_GEN8                    RT_BIT(3)
-#define USE_REG_GEN16                   RT_BIT(4)
-#define USE_REG_GEN32                   RT_BIT(5)
-#define USE_REG_FP                      RT_BIT(6)
-#define USE_REG_MMX                     RT_BIT(7)
-#define USE_REG_XMM                     RT_BIT(8)
-#define USE_REG_CR                      RT_BIT(9)
-#define USE_REG_DBG                     RT_BIT(10)
-#define USE_REG_SEG                     RT_BIT(11)
-#define USE_REG_TEST                    RT_BIT(12)
-#define USE_DISPLACEMENT8               RT_BIT(13)
-#define USE_DISPLACEMENT16              RT_BIT(14)
-#define USE_DISPLACEMENT32              RT_BIT(15)
-#define USE_IMMEDIATE8                  RT_BIT(16)
-#define USE_IMMEDIATE8_REL              RT_BIT(17)
-#define USE_IMMEDIATE16                 RT_BIT(18)
-#define USE_IMMEDIATE16_REL             RT_BIT(19)
-#define USE_IMMEDIATE32                 RT_BIT(20)
-#define USE_IMMEDIATE32_REL             RT_BIT(21)
-#define USE_IMMEDIATE64                 RT_BIT(22)
-#define USE_IMMEDIATE_ADDR_0_32         RT_BIT(23)
-#define USE_IMMEDIATE_ADDR_16_32        RT_BIT(24)
-#define USE_IMMEDIATE_ADDR_0_16         RT_BIT(25)
-#define USE_IMMEDIATE_ADDR_16_16        RT_BIT(26)
+#define USE_BASE                        RT_BIT_64(0)
+#define USE_INDEX                       RT_BIT_64(1)
+#define USE_SCALE                       RT_BIT_64(2)
+#define USE_REG_GEN8                    RT_BIT_64(3)
+#define USE_REG_GEN16                   RT_BIT_64(4)
+#define USE_REG_GEN32                   RT_BIT_64(5)
+#define USE_REG_GEN64                   RT_BIT_64(6)
+#define USE_REG_FP                      RT_BIT_64(7)
+#define USE_REG_MMX                     RT_BIT_64(8)
+#define USE_REG_XMM                     RT_BIT_64(9)
+#define USE_REG_CR                      RT_BIT_64(10)
+#define USE_REG_DBG                     RT_BIT_64(11)
+#define USE_REG_SEG                     RT_BIT_64(12)
+#define USE_REG_TEST                    RT_BIT_64(13)
+#define USE_DISPLACEMENT8               RT_BIT_64(14)
+#define USE_DISPLACEMENT16              RT_BIT_64(15)
+#define USE_DISPLACEMENT32              RT_BIT_64(16)
+#define USE_IMMEDIATE8                  RT_BIT_64(17)
+#define USE_IMMEDIATE8_REL              RT_BIT_64(18)
+#define USE_IMMEDIATE16                 RT_BIT_64(19)
+#define USE_IMMEDIATE16_REL             RT_BIT_64(20)
+#define USE_IMMEDIATE32                 RT_BIT_64(21)
+#define USE_IMMEDIATE32_REL             RT_BIT_64(22)
+#define USE_IMMEDIATE64                 RT_BIT_64(23)
+#define USE_IMMEDIATE_ADDR_0_32         RT_BIT_64(24)
+#define USE_IMMEDIATE_ADDR_16_32        RT_BIT_64(25)
+#define USE_IMMEDIATE_ADDR_0_16         RT_BIT_64(26)
+#define USE_IMMEDIATE_ADDR_16_16        RT_BIT_64(27)
 /** DS:ESI */
-#define USE_POINTER_DS_BASED            RT_BIT(27)
+#define USE_POINTER_DS_BASED            RT_BIT_64(28)
 /** ES:EDI */
-#define USE_POINTER_ES_BASED            RT_BIT(28)
-#define USE_IMMEDIATE16_SX8             RT_BIT(29)
-#define USE_IMMEDIATE32_SX8             RT_BIT(30)
+#define USE_POINTER_ES_BASED            RT_BIT_64(29)
+#define USE_IMMEDIATE16_SX8             RT_BIT_64(30)
+#define USE_IMMEDIATE32_SX8             RT_BIT_64(31)
 
 #define USE_IMMEDIATE                   (USE_IMMEDIATE8|USE_IMMEDIATE16|USE_IMMEDIATE32|USE_IMMEDIATE64|USE_IMMEDIATE8_REL|USE_IMMEDIATE16_REL|USE_IMMEDIATE32_REL|USE_IMMEDIATE_ADDR_0_32|USE_IMMEDIATE_ADDR_16_32|USE_IMMEDIATE_ADDR_0_16|USE_IMMEDIATE_ADDR_16_16|USE_IMMEDIATE16_SX8|USE_IMMEDIATE32_SX8)
@@ -291,6 +292,6 @@
 {
     uint32_t        type;
-    uint32_t        flags;
     uint32_t        size;
+    uint64_t        flags;
 
     union
@@ -331,7 +332,7 @@
     int32_t         disp8, disp16, disp32;
 
-    uint32_t        flags;
-
     uint32_t        size;
+
+    uint64_t        flags;
 
     union
@@ -340,4 +341,5 @@
         uint32_t    reg_gen16;
         uint32_t    reg_gen32;
+        uint64_t    reg_gen64;
         /** ST(0) - ST(7) */
         uint32_t    reg_fp;
@@ -351,5 +353,5 @@
         uint32_t    reg_test;
         /** CR0-CR4 */
-        uint32_t    reg_ctrl;
+        uint64_t    reg_ctrl;
         /** DR0-DR7 */
         uint32_t    reg_dbg;
@@ -568,5 +570,5 @@
  */
 DISDECL(int) DISQueryParamVal(PCPUMCTXCORE pCtx, PDISCPUSTATE pCpu, POP_PARAMETER pParam, POP_PARAMVAL pParamVal, PARAM_TYPE parmtype);
-DISDECL(int) DISQueryParamRegPtr(PCPUMCTXCORE pCtx, PDISCPUSTATE pCpu, POP_PARAMETER pParam, uint32_t **ppReg, size_t *pcbSize);
+DISDECL(int) DISQueryParamRegPtr(PCPUMCTXCORE pCtx, PDISCPUSTATE pCpu, POP_PARAMETER pParam, void **ppReg, size_t *pcbSize);
 
 DISDECL(int) DISFetchReg8(PCPUMCTXCORE pCtx, unsigned reg8, uint8_t *pVal);
Index: /trunk/src/VBox/Disassembler/DisasmCore.cpp
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmCore.cpp	(revision 8148)
+++ /trunk/src/VBox/Disassembler/DisasmCore.cpp	(revision 8149)
@@ -265,5 +265,5 @@
         {
             pCpu->lastprefix = opcode;
-            switch(opcode)
+            switch (opcode)
             {
             case OP_INVALID:
@@ -287,5 +287,5 @@
             case OP_ADRSIZE:
                 pCpu->prefix |= PREFIX_ADDRSIZE;
-                if(pCpu->mode == CPUMODE_16BIT)
+                if (pCpu->mode == CPUMODE_16BIT)
                      pCpu->addrmode = CPUMODE_32BIT;
                 else pCpu->addrmode = CPUMODE_16BIT;
@@ -296,5 +296,5 @@
             case OP_OPSIZE:
                 pCpu->prefix |= PREFIX_OPSIZE;
-                if(pCpu->mode == CPUMODE_16BIT)
+                if (pCpu->mode == CPUMODE_16BIT)
                      pCpu->opmode = CPUMODE_32BIT;
                 else pCpu->opmode = CPUMODE_16BIT;
@@ -378,13 +378,18 @@
     pCpu->param3.param = pOp->param3;
 
-    if(pOp->idxParse1 != IDX_ParseNop) {
+    if (pOp->idxParse1 != IDX_ParseNop) 
+    {
         size += pCpu->pfnDisasmFnTable[pOp->idxParse1](lpszCodeBlock, pOp, &pCpu->param1, pCpu);
         if (fFiltered == false) pCpu->param1.size = DISGetParamSize(pCpu, &pCpu->param1);
     }
-    if(pOp->idxParse2 != IDX_ParseNop) {
+
+    if (pOp->idxParse2 != IDX_ParseNop) 
+    {
         size += pCpu->pfnDisasmFnTable[pOp->idxParse2](lpszCodeBlock+size, pOp, &pCpu->param2, pCpu);
         if (fFiltered == false) pCpu->param2.size = DISGetParamSize(pCpu, &pCpu->param2);
     }
-    if(pOp->idxParse3 != IDX_ParseNop) {
+
+    if (pOp->idxParse3 != IDX_ParseNop) 
+    {
         size += pCpu->pfnDisasmFnTable[pOp->idxParse3](lpszCodeBlock+size, pOp, &pCpu->param3, pCpu);
         if (fFiltered == false) pCpu->param3.size = DISGetParamSize(pCpu, &pCpu->param3);
@@ -406,5 +411,5 @@
 
     index = pCpu->opcode - 0xD8;
-    if(pCpu->ModRM <= 0xBF)
+    if (pCpu->ModRM <= 0xBF)
     {
         fpop            = &(g_paMapX86_FP_Low[index])[MODRM_REG(pCpu->ModRM)];
@@ -430,15 +435,12 @@
 
         // Little hack to make sure the ModRM byte is included in the returned size
-        if(fpop->idxParse1 != IDX_ParseModRM && fpop->idxParse2 != IDX_ParseModRM)
-        {
+        if (fpop->idxParse1 != IDX_ParseModRM && fpop->idxParse2 != IDX_ParseModRM)
             size = sizeof(uint8_t); //ModRM byte
-        }
-
-        if(fpop->idxParse1 != IDX_ParseNop) {
+
+        if (fpop->idxParse1 != IDX_ParseNop)
             size += pCpu->pfnDisasmFnTable[fpop->idxParse1](lpszCodeBlock+size, (PCOPCODE)fpop, pParam, pCpu);
-        }
-        if(fpop->idxParse2 != IDX_ParseNop) {
+
+        if (fpop->idxParse2 != IDX_ParseNop)
             size += pCpu->pfnDisasmFnTable[fpop->idxParse2](lpszCodeBlock+size, (PCOPCODE)fpop, pParam, pCpu);
-        }
     }
     else
@@ -490,10 +492,10 @@
     index = SIB_INDEX(pCpu->SIB);
 
-    if(szSIBIndexReg[index])
+    if (szSIBIndexReg[index])
     {
          pParam->flags |= USE_INDEX;
          pParam->index.reg_gen = index;
 
-         if(scale != 0)
+         if (scale != 0)
          {
              pParam->flags |= USE_SCALE;
@@ -501,5 +503,5 @@
          }
 
-         if(base == 5 && MODRM_MOD(pCpu->ModRM) == 0)
+         if (base == 5 && MODRM_MOD(pCpu->ModRM) == 0)
              disasmAddStringF(szTemp, sizeof(szTemp), "%s%s", szSIBIndexReg[index], szSIBScale[scale]);
          else
@@ -508,9 +510,9 @@
     else
     {
-         if(base != 5 || MODRM_MOD(pCpu->ModRM) != 0)
+         if (base != 5 || MODRM_MOD(pCpu->ModRM) != 0)
              disasmAddStringF(szTemp, sizeof(szTemp), "%s", szSIBBaseReg[base]);
     }
 
-    if(base == 5 && MODRM_MOD(pCpu->ModRM) == 0)
+    if (base == 5 && MODRM_MOD(pCpu->ModRM) == 0)
     {
         // [scaled index] + disp32
@@ -540,5 +542,5 @@
 
     base = SIB_BASE(pCpu->SIB);
-    if(base == 5 && MODRM_MOD(pCpu->ModRM) == 0)
+    if (base == 5 && MODRM_MOD(pCpu->ModRM) == 0)
     {//additional 32 bits displacement
         pCpu->disp = DISReadDWord(pCpu, lpszCodeBlock);
@@ -557,5 +559,5 @@
 
     base = SIB_BASE(pCpu->SIB);
-    if(base == 5 && MODRM_MOD(pCpu->ModRM) == 0)
+    if (base == 5 && MODRM_MOD(pCpu->ModRM) == 0)
     {//additional 32 bits displacement
         size += sizeof(int32_t);
@@ -575,5 +577,5 @@
     int vtype = OP_PARM_VTYPE(pParam->param);
 
-    switch(vtype)
+    switch (vtype)
     {
     case OP_PARM_G: //general purpose register
@@ -584,5 +586,5 @@
         if (IS_OP_PARM_RARE(vtype))
         {
-            switch(vtype)
+            switch (vtype)
             {
             case OP_PARM_C: //control register
@@ -636,16 +638,16 @@
     //TODO: bound
 
-    if(pCpu->addrmode == CPUMODE_32BIT)
+    if (pCpu->addrmode == CPUMODE_32BIT)
     {//32 bits addressing mode
-        switch(mod)
+        switch (mod)
         {
         case 0: //effective address
             disasmGetPtrString(pCpu, pOp, pParam);
             disasmAddChar(pParam->szParam, '[');
-            if(rm == 4) {//SIB byte follows ModRM
+            if (rm == 4) {//SIB byte follows ModRM
                 UseSIB(lpszCodeBlock, pOp, pParam, pCpu);
             }
             else
-            if(rm == 5) {//32 bits displacement
+            if (rm == 5) {//32 bits displacement
                 pParam->flags |= USE_DISPLACEMENT32;
                 pParam->disp32 = pCpu->disp;
@@ -662,5 +664,5 @@
             disasmGetPtrString(pCpu, pOp, pParam);
             disasmAddChar(pParam->szParam, '[');
-            if(rm == 4) {//SIB byte follows ModRM
+            if (rm == 4) {//SIB byte follows ModRM
                 UseSIB(lpszCodeBlock, pOp, pParam, pCpu);
             }
@@ -673,7 +675,7 @@
             pParam->flags |= USE_DISPLACEMENT8;
 
-            if(pParam->disp8 != 0)
+            if (pParam->disp8 != 0)
             {
-                if(pParam->disp8 > 0)
+                if (pParam->disp8 > 0)
                     disasmAddChar(pParam->szParam, '+');
                 disasmPrintDisp8(pParam);
@@ -685,5 +687,5 @@
             disasmGetPtrString(pCpu, pOp, pParam);
             disasmAddChar(pParam->szParam, '[');
-            if(rm == 4) {//SIB byte follows ModRM
+            if (rm == 4) {//SIB byte follows ModRM
                 UseSIB(lpszCodeBlock, pOp, pParam, pCpu);
             }
@@ -696,5 +698,5 @@
             pParam->flags |= USE_DISPLACEMENT32;
 
-            if(pParam->disp32 != 0)
+            if (pParam->disp32 != 0)
             {
                 disasmAddChar(pParam->szParam, '+');
@@ -711,10 +713,10 @@
     else
     {//16 bits addressing mode
-        switch(mod)
+        switch (mod)
         {
         case 0: //effective address
             disasmGetPtrString(pCpu, pOp, pParam);
             disasmAddChar(pParam->szParam, '[');
-            if(rm == 6)
+            if (rm == 6)
             {//16 bits displacement
                 pParam->disp16 = pCpu->disp;
@@ -737,7 +739,7 @@
             pParam->flags |= USE_BASE | USE_DISPLACEMENT8;
 
-            if(pParam->disp8 != 0)
+            if (pParam->disp8 != 0)
             {
-                if(pParam->disp8 > 0)
+                if (pParam->disp8 > 0)
                     disasmAddChar(pParam->szParam, '+');
                 disasmPrintDisp8(pParam);
@@ -753,5 +755,5 @@
             pParam->flags |= USE_BASE | USE_DISPLACEMENT16;
 
-            if(pParam->disp16 != 0)
+            if (pParam->disp16 != 0)
             {
                 disasmAddChar(pParam->szParam, '+');
@@ -779,5 +781,5 @@
     mod = MODRM_MOD(pCpu->ModRM);
 
-    if(!pSibInc)
+    if (!pSibInc)
     {
         pSibInc = &sibinc;
@@ -786,7 +788,7 @@
     *pSibInc = 0;
 
-    if(pCpu->addrmode == CPUMODE_32BIT)
+    if (pCpu->addrmode == CPUMODE_32BIT)
     {//32 bits addressing mode
-        if(mod != 3 && rm == 4)
+        if (mod != 3 && rm == 4)
         {//SIB byte follows ModRM
             *pSibInc = ParseSIB(lpszCodeBlock, pOp, pParam, pCpu);
@@ -795,8 +797,8 @@
         }
 
-        switch(mod)
+        switch (mod)
         {
         case 0: //effective address
-            if(rm == 5) {//32 bits displacement
+            if (rm == 5) {//32 bits displacement
                 pCpu->disp = DISReadDWord(pCpu, lpszCodeBlock);
                 size += sizeof(int32_t);
@@ -821,8 +823,8 @@
     else
     {//16 bits addressing mode
-        switch(mod)
+        switch (mod)
         {
         case 0: //effective address
-            if(rm == 6) {
+            if (rm == 6) {
                 pCpu->disp = DISReadWord(pCpu, lpszCodeBlock);
                 size += sizeof(uint16_t);
@@ -857,5 +859,5 @@
     mod = MODRM_MOD(pCpu->ModRM);
 
-    if(!pSibInc)
+    if (!pSibInc)
     {
         pSibInc = &sibinc;
@@ -864,7 +866,7 @@
     *pSibInc = 0;
 
-    if(pCpu->addrmode == CPUMODE_32BIT)
+    if (pCpu->addrmode == CPUMODE_32BIT)
     {//32 bits addressing mode
-        if(mod != 3 && rm == 4)
+        if (mod != 3 && rm == 4)
         {//SIB byte follows ModRM
             *pSibInc = ParseSIB_SizeOnly(lpszCodeBlock, pOp, pParam, pCpu);
@@ -873,8 +875,8 @@
         }
 
-        switch(mod)
+        switch (mod)
         {
         case 0: //effective address
-            if(rm == 5) {//32 bits displacement
+            if (rm == 5) {//32 bits displacement
                 size += sizeof(int32_t);
             }
@@ -896,8 +898,8 @@
     else
     {//16 bits addressing mode
-        switch(mod)
+        switch (mod)
         {
         case 0: //effective address
-            if(rm == 6) {
+            if (rm == 6) {
                 size += sizeof(uint16_t);
             }
@@ -986,5 +988,5 @@
 unsigned ParseImmByteSX(RTUINTPTR lpszCodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu)
 {
-    if(pCpu->opmode == CPUMODE_32BIT)
+    if (pCpu->opmode == CPUMODE_32BIT)
     {
         pParam->parval = (uint32_t)(int8_t)DISReadByte(pCpu, lpszCodeBlock);
@@ -1059,5 +1061,5 @@
 unsigned ParseImmV(RTUINTPTR lpszCodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu)
 {
-    if(pCpu->opmode == CPUMODE_32BIT)
+    if (pCpu->opmode == CPUMODE_32BIT)
     {
         pParam->parval = DISReadDWord(pCpu, lpszCodeBlock);
@@ -1080,5 +1082,5 @@
 unsigned ParseImmV_SizeOnly(RTUINTPTR lpszCodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu)
 {
-    if(pCpu->opmode == CPUMODE_32BIT)
+    if (pCpu->opmode == CPUMODE_32BIT)
     {
         return sizeof(uint32_t);
@@ -1112,5 +1114,5 @@
 unsigned ParseImmVRel(RTUINTPTR lpszCodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu)
 {
-    if(pCpu->opmode == CPUMODE_32BIT)
+    if (pCpu->opmode == CPUMODE_32BIT)
     {
         pParam->parval = DISReadDWord(pCpu, lpszCodeBlock);
@@ -1134,5 +1136,5 @@
 unsigned ParseImmVRel_SizeOnly(RTUINTPTR lpszCodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu)
 {
-    if(pCpu->opmode == CPUMODE_32BIT)
+    if (pCpu->opmode == CPUMODE_32BIT)
     {
         return sizeof(int32_t);
@@ -1148,7 +1150,7 @@
 {
     disasmGetPtrString(pCpu, pOp, pParam);
-    if(pCpu->addrmode == CPUMODE_32BIT)
-    {
-        if(OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p)
+    if (pCpu->addrmode == CPUMODE_32BIT)
+    {
+        if (OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p)
         {// far 16:32 pointer
             pParam->parval = DISReadDWord(pCpu, lpszCodeBlock);
@@ -1174,5 +1176,5 @@
     else
     {
-        if(OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p)
+        if (OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p)
         {// far 16:16 pointer
             pParam->parval = DISReadDWord(pCpu, lpszCodeBlock);
@@ -1200,7 +1202,7 @@
 unsigned ParseImmAddr_SizeOnly(RTUINTPTR lpszCodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu)
 {
-    if(pCpu->addrmode == CPUMODE_32BIT)
-    {
-        if(OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p)
+    if (pCpu->addrmode == CPUMODE_32BIT)
+    {
+        if (OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p)
         {// far 16:32 pointer
             return sizeof(uint32_t) + sizeof(uint16_t);
@@ -1213,5 +1215,5 @@
     else
     {
-        if(OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p)
+        if (OP_PARM_VSUBTYPE(pParam->param) == OP_PARM_p)
         {// far 16:16 pointer
             return sizeof(uint32_t);
@@ -1231,5 +1233,5 @@
      */
 
-    if(pParam->param == OP_PARM_NONE)
+    if (pParam->param == OP_PARM_NONE)
     {
         /* No parameter at all. */
@@ -1237,9 +1239,9 @@
     }
 
-    if(pParam->param < OP_PARM_REG_SEG_START)
+    if (pParam->param < OP_PARM_REG_SEG_START)
     {
         /* 32-bit EAX..EDI registers. */
 
-        if(pCpu->opmode == CPUMODE_32BIT)
+        if (pCpu->opmode == CPUMODE_32BIT)
         {
             /* Use 32-bit registers. */
@@ -1258,5 +1260,5 @@
     }
     else
-    if(pParam->param < OP_PARM_REG_GEN16_START)
+    if (pParam->param < OP_PARM_REG_GEN16_START)
     {
         /* Segment ES..GS registers. */
@@ -1266,5 +1268,5 @@
     }
     else
-    if(pParam->param < OP_PARM_REG_GEN8_START)
+    if (pParam->param < OP_PARM_REG_GEN8_START)
     {
         /* 16-bit AX..DI registers. */
@@ -1274,5 +1276,5 @@
     }
     else
-    if(pParam->param < OP_PARM_REG_FP_START)
+    if (pParam->param < OP_PARM_REG_FP_START)
     {
         /* 8-bit AL..DL, AH..DH registers. */
@@ -1282,5 +1284,5 @@
     }
     else
-    if(pParam->param <= OP_PARM_REGFP_7)
+    if (pParam->param <= OP_PARM_REGFP_7)
     {
         /* FPU registers. */
@@ -1301,5 +1303,5 @@
 
     pParam->flags |= USE_POINTER_DS_BASED;
-    if(pCpu->addrmode == CPUMODE_32BIT)
+    if (pCpu->addrmode == CPUMODE_32BIT)
     {
         pParam->base.reg_gen32 = USE_REG_ESI;
@@ -1320,5 +1322,5 @@
 
     pParam->flags |= USE_POINTER_DS_BASED;
-    if(pCpu->addrmode == CPUMODE_32BIT)
+    if (pCpu->addrmode == CPUMODE_32BIT)
     {
         pParam->base.reg_gen32 = USE_REG_ESI;
@@ -1340,5 +1342,5 @@
 
     pParam->flags |= USE_POINTER_ES_BASED;
-    if(pCpu->addrmode == CPUMODE_32BIT)
+    if (pCpu->addrmode == CPUMODE_32BIT)
     {
         pParam->base.reg_gen32 = USE_REG_EDI;
@@ -1359,5 +1361,5 @@
 
     pParam->flags |= USE_POINTER_ES_BASED;
-    if(pCpu->addrmode == CPUMODE_32BIT)
+    if (pCpu->addrmode == CPUMODE_32BIT)
     {
         pParam->base.reg_gen32 = USE_REG_EDI;
@@ -1386,5 +1388,5 @@
     if (pCpu->lastprefix)
     {
-        switch(pCpu->lastprefix)
+        switch (pCpu->lastprefix)
         {
         case OP_OPSIZE: /* 0x66 */
@@ -1456,5 +1458,5 @@
     pOp = (PCOPCODE)&g_aMapX86_Group1[idx+reg];
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1472,5 +1474,5 @@
     unsigned size = 0, modrm, reg;
 
-    switch(pCpu->opcode)
+    switch (pCpu->opcode)
     {
     case 0xC0:
@@ -1497,5 +1499,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1519,5 +1521,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1540,5 +1542,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1561,5 +1563,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1594,5 +1596,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
 #ifdef DEBUG_Sander /* bird, 2005-06-28: Alex is getting this during full installation of win2ksp4. */
@@ -1619,5 +1621,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1652,5 +1654,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1673,5 +1675,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1694,5 +1696,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1715,5 +1717,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1733,5 +1735,5 @@
     reg   = MODRM_REG(modrm);
 
-    if(pCpu->prefix & PREFIX_OPSIZE)
+    if (pCpu->prefix & PREFIX_OPSIZE)
     {
         reg += 8;   //2nd table
@@ -1741,5 +1743,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1758,5 +1760,5 @@
     modrm = DISReadByte(pCpu, lpszCodeBlock);
     reg   = MODRM_REG(modrm);
-    if(pCpu->prefix & PREFIX_OPSIZE)
+    if (pCpu->prefix & PREFIX_OPSIZE)
     {
         reg += 8;   //2nd table
@@ -1766,5 +1768,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1783,5 +1785,5 @@
     modrm = DISReadByte(pCpu, lpszCodeBlock);
     reg   = MODRM_REG(modrm);
-    if(pCpu->prefix & PREFIX_OPSIZE)
+    if (pCpu->prefix & PREFIX_OPSIZE)
     {
         reg += 8;   //2nd table
@@ -1791,5 +1793,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1817,5 +1819,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1838,5 +1840,5 @@
 
     //little hack to make sure the ModRM byte is included in the returned size
-    if(pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
+    if (pOp->idxParse1 != IDX_ParseModRM && pOp->idxParse2 != IDX_ParseModRM)
     {
         size = sizeof(uint8_t); //ModRM byte
@@ -1865,10 +1867,10 @@
     }
     else
-    if(subtype == OP_PARM_v || subtype == OP_PARM_NONE)
+    if (subtype == OP_PARM_v || subtype == OP_PARM_NONE)
     {
         subtype = (pCpu->opmode == CPUMODE_32BIT) ? OP_PARM_d : OP_PARM_w;
     }
 
-    switch(subtype)
+    switch (subtype)
     {
     case OP_PARM_b:
@@ -1910,5 +1912,5 @@
     pParam->flags |= USE_REG_GEN16;
     pParam->base.reg_gen16 = BaseModRMReg16[idx];
-    if(idx < 4)
+    if (idx < 4)
     {
         pParam->flags |= USE_INDEX;
@@ -1925,5 +1927,5 @@
 #endif
 #ifdef IN_RING3
-    if(idx >= (int)ELEMENTS(szModRMSegReg))
+    if (idx >= (int)ELEMENTS(szModRMSegReg))
     {
         Log(("disasmModRMSReg %d failed!!\n", idx));
@@ -1967,10 +1969,10 @@
     int subtype = OP_PARM_VSUBTYPE(pParam->param);
 
-    if(subtype == OP_PARM_v)
+    if (subtype == OP_PARM_v)
     {
         subtype = (pCpu->opmode == CPUMODE_32BIT) ? OP_PARM_d : OP_PARM_w;
     }
 
-    switch(subtype)
+    switch (subtype)
     {
     case OP_PARM_a: //two words or dwords depending on operand size (bound only)
@@ -2015,5 +2017,5 @@
 uint8_t DISReadByte(PDISCPUSTATE pCpu, RTUINTPTR pAddress)
 {
-    if(pCpu->pfnReadBytes)
+    if (pCpu->pfnReadBytes)
     {
          uint8_t temp = 0;
@@ -2021,5 +2023,5 @@
 
          rc = pCpu->pfnReadBytes(pAddress, &temp, sizeof(temp), pCpu);
-         if(VBOX_FAILURE(rc))
+         if (VBOX_FAILURE(rc))
          {
              Log(("DISReadByte failed!!\n"));
@@ -2039,5 +2041,5 @@
 uint16_t DISReadWord(PDISCPUSTATE pCpu, RTUINTPTR pAddress)
 {
-    if(pCpu->pfnReadBytes)
+    if (pCpu->pfnReadBytes)
     {
          uint16_t temp = 0;
@@ -2045,5 +2047,5 @@
 
          rc = pCpu->pfnReadBytes(pAddress, (uint8_t*)&temp, sizeof(temp), pCpu);
-         if(VBOX_FAILURE(rc))
+         if (VBOX_FAILURE(rc))
          {
              Log(("DISReadWord failed!!\n"));
@@ -2063,5 +2065,5 @@
 uint32_t DISReadDWord(PDISCPUSTATE pCpu, RTUINTPTR pAddress)
 {
-    if(pCpu->pfnReadBytes)
+    if (pCpu->pfnReadBytes)
     {
          uint32_t temp = 0;
@@ -2069,5 +2071,5 @@
 
          rc = pCpu->pfnReadBytes(pAddress, (uint8_t*)&temp, sizeof(temp), pCpu);
-         if(VBOX_FAILURE(rc))
+         if (VBOX_FAILURE(rc))
          {
              Log(("DISReadDWord failed!!\n"));
@@ -2087,5 +2089,5 @@
 uint64_t DISReadQWord(PDISCPUSTATE pCpu, RTUINTPTR pAddress)
 {
-    if(pCpu->pfnReadBytes)
+    if (pCpu->pfnReadBytes)
     {
          uint64_t temp = 0;
@@ -2093,5 +2095,5 @@
 
          rc = pCpu->pfnReadBytes(pAddress, (uint8_t*)&temp, sizeof(temp), pCpu);
-         if(VBOX_FAILURE(rc))
+         if (VBOX_FAILURE(rc))
          {
              Log(("DISReadQWord %x failed!!\n", pAddress));
Index: /trunk/src/VBox/VMM/VMMAll/EMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/EMAll.cpp	(revision 8148)
+++ /trunk/src/VBox/VMM/VMMAll/EMAll.cpp	(revision 8149)
@@ -1413,5 +1413,6 @@
         return VERR_EM_INTERPRETER;
 
-    rc = DISQueryParamRegPtr(pRegFrame, pCpu, &pCpu->param2, &pParamReg2, &cbSizeParamReg2);
+    rc = DISQueryParamRegPtr(pRegFrame, pCpu, &pCpu->param2, (void **)&pParamReg2, &cbSizeParamReg2);
+    Assert(cbSizeParamReg2 <= 4);
     if(VBOX_FAILURE(rc))
         return VERR_EM_INTERPRETER;
