Index: /trunk/src/VBox/Disassembler/DisasmCore.cpp
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmCore.cpp	(revision 53031)
+++ /trunk/src/VBox/Disassembler/DisasmCore.cpp	(revision 53032)
@@ -2000,5 +2000,26 @@
 
     case OP_REPNE:   /* 0xF2 */
-        if (g_apThreeByteMapX86_F20F38[pDis->bOpCode >> 4])
+        if ((pDis->fPrefix & DISPREFIX_OPSIZE) && g_apThreeByteMapX86_66F20F38[pDis->bOpCode >> 4])
+        {
+        /* 0x66F2 */
+            pOpcode = g_apThreeByteMapX86_66F20F38[pDis->bOpCode >> 4];
+            pOpcode = &pOpcode[pDis->bOpCode & 0xf];
+
+            if (pOpcode->uOpcode != OP_INVALID)
+            {
+                /* Table entry is valid, so use the extension table. */
+
+                /* Cancel prefix changes. */
+                pDis->fPrefix &= ~DISPREFIX_REPNE;
+                pDis->fPrefix &= ~DISPREFIX_OPSIZE;
+                if (pDis->uCpuMode == DISCPUMODE_64BIT)
+                {
+                    pDis->uOpMode = (pDis->fRexPrefix & DISPREFIX_REX_FLAGS_W ? DISCPUMODE_64BIT : DISCPUMODE_32BIT);
+                }
+                else
+                    pDis->uOpMode  = pDis->uCpuMode;
+            }
+        }
+        else if (g_apThreeByteMapX86_F20F38[pDis->bOpCode >> 4])
         {
             pOpcode = g_apThreeByteMapX86_F20F38[pDis->bOpCode >> 4];
Index: /trunk/src/VBox/Disassembler/DisasmInternal.h
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmInternal.h	(revision 53031)
+++ /trunk/src/VBox/Disassembler/DisasmInternal.h	(revision 53032)
@@ -110,4 +110,7 @@
 /** Three byte opcode map with prefix 0x66 (0xF 0x3A) */
 extern PCDISOPCODE const g_apThreeByteMapX86_660F3A[16];
+
+/** Three byte opcode map with prefixes 0x66 0xF2 (0xF 0x38) */
+extern PCDISOPCODE const g_apThreeByteMapX86_66F20F38[16];
 /** @} */
 
Index: /trunk/src/VBox/Disassembler/DisasmTables.cpp
===================================================================
--- /trunk/src/VBox/Disassembler/DisasmTables.cpp	(revision 53031)
+++ /trunk/src/VBox/Disassembler/DisasmTables.cpp	(revision 53032)
@@ -1297,5 +1297,5 @@
     OP("movbe %Gy,%My",          IDX_ParseModRM,     IDX_UseModRM,   0,          OP_MOVBEGM,     OP_PARM_Gy,          OP_PARM_My,     OP_PARM_NONE,   DISOPTYPE_HARMLESS),
     OP("movbe %My,%Gy",          IDX_ParseModRM,     IDX_UseModRM,   0,          OP_MOVBEMG,     OP_PARM_My,          OP_PARM_Gy,     OP_PARM_NONE,   DISOPTYPE_HARMLESS),
-    INVALID_OPCODE,    
+    INVALID_OPCODE,
     INVALID_OPCODE,
     INVALID_OPCODE,
@@ -1558,4 +1558,41 @@
     /* f */
     &g_aThreeByteMapX86_F20F38_F[0],
+};
+
+/** Three byte opcode map with prefixes 0x66 0xF2 (0xF 0x38) */
+PCDISOPCODE const g_apThreeByteMapX86_66F20F38[16] =
+{
+    /* 0 */
+    NULL,
+    /* 1 */
+    NULL,
+    /* 2 */
+    NULL,
+    /* 3 */
+    NULL,
+    /* 4 */
+    NULL,
+    /* 5 */
+    NULL,
+    /* 6 */
+    NULL,
+    /* 7 */
+    NULL,
+    /* 8 */
+    NULL,
+    /* 9 */
+    NULL,
+    /* a */
+    NULL,
+    /* b */
+    NULL,
+    /* c */
+    NULL,
+    /* d */
+    NULL,
+    /* e */
+    NULL,
+    /* f */
+    &g_aThreeByteMapX86_66F20F38_F[0],
 };
 
Index: /trunk/src/VBox/Disassembler/testcase/tstDisasm-1A.asm
===================================================================
--- /trunk/src/VBox/Disassembler/testcase/tstDisasm-1A.asm	(revision 53031)
+++ /trunk/src/VBox/Disassembler/testcase/tstDisasm-1A.asm	(revision 53032)
@@ -170,8 +170,8 @@
 
         crc32       eax, bl
-        ;crc32       eax, bx
+        crc32       eax, bx
         crc32       eax, ebx
         crc32       eax, byte [edi]
-        ;crc32       eax, word [edi]
+        crc32       eax, word [edi]
         crc32       eax, dword [edi]
 
@@ -282,8 +282,8 @@
 
         crc32       eax, bl
-        ;crc32       eax, bx
+        crc32       eax, bx
         crc32       eax, ebx
         crc32       eax, byte [edi]
-        ;crc32       eax, word [edi]
+        crc32       eax, word [edi]
         crc32       eax, dword [edi]
 
