--- ddd-3.3.12/ddd/SourceView.C	2010-02-11 14:48:21.000000000 +0100
+++ ddd-3.3.12/ddd/SourceView.C	2010-02-16 00:51:20.000000000 +0100
@@ -7626,42 +7626,31 @@ string SourceView::Gdb64MMXWorkaround(st
 		switch(mmregs[i])
 		{
 		case 1:
-        	i = 2;
-			for(j = 0;j < 16;j++)
+			for(i = 14;i >= 0;i -= 2)
 			{
-				if(i == j)
-				{
+				transx += transtr[i];
+				transx += transtr[i+1];
+				if(i != 0)
 					transx += ",0x";
-					i += 2;
-				}
-				transx += transtr[j];
 			}
 			transx += ")";
 			break;
 		case 2:
-			i = 4;
-			for(j = 0;j < 16;j++)
+			for(i = 12;i >= 0;i -= 4)
 			{
-				if(i == j)
-				{
+				for(j = i;j < i+4;j++)
+					transx += transtr[j];
+				if(i != 0)
 					transx += ",0x";
-					i += 4;
-				}
-				transx += transtr[j];
 			}
 			transx += ")";
 			break;
 		case 3:
-			i = 8;
-			for(j = 0;j < 16;j++)
-			{
-				if(i == j)
-				{
-					transx += ",0x";
-					i += 8;
-				}
+			for(j = 8;j < 16;j++)
+				transx += transtr[j];
+			transx += ",0x";
+			for(j = 0;j < 8;j++)
 				transx += transtr[j];
-			}
 			transx += ")";
 			break;
 		case 4:
