diff --git a/avidemux/ADM_coreImage/src/ADM_interlaceUtil.cpp b/avidemux/ADM_coreImage/src/ADM_interlaceUtil.cpp
index 33b2a7f..99f0664 100644
--- a/avidemux/ADM_coreImage/src/ADM_interlaceUtil.cpp
+++ b/avidemux/ADM_coreImage/src/ADM_interlaceUtil.cpp
@@ -30,19 +30,8 @@ Skip factor=2
  ***************************************************************************/
 
 #include "ADM_default.h"
-
-//#include "ADM_editor/ADM_edit.hxx"
 #include "ADM_videoFilter.h"
 
-//#define MMX_TRACE
-#warning remove mmxmacro and debug asm
-//#define ASM_ILACING
-
-
-#include "ADM_mmxMacros.h"
-
-
-
 
 #define SKIP_FACTOR 2   // 2^SKIPFACTOR=SKIP_LINEAR+1
 #define SKIP_LINEAR   3
@@ -62,7 +51,7 @@ Skip factor=2
 */
 
 #if defined(ADM_CPU_X86) && defined(ASM_ILACING)
-
+#warning REWRITE IN PLAIN ASM
 static uint32_t      ADMVideo_interlaceCount_MMX( uint8_t *src ,uint32_t w, uint32_t h);
 static uint8_t * FUNNY_MANGLE(_l_p)  =NULL;
 static uint8_t * FUNNY_MANGLE(_l_c) =NULL;
diff --git a/avidemux/ADM_coreImage/src/ADM_vidFieldASM.cpp b/avidemux/ADM_coreImage/src/ADM_vidFieldASM.cpp
index 61d11d4..479731c 100644
--- a/avidemux/ADM_coreImage/src/ADM_vidFieldASM.cpp
+++ b/avidemux/ADM_coreImage/src/ADM_vidFieldASM.cpp
@@ -20,15 +20,13 @@
  ***************************************************************************/
 
 #include "ADM_default.h"
-
 #include "ADM_videoFilter.h"
-
 #include"ADM_vidField.h"
 
 #ifdef ADM_CPU_X86
 //	#define DEBUG_DEINT 1
 //	#define MMX_TRACE 1
-	#include "ADM_mmxMacros.h"
+//	#include "ADM_mmxMacros.h"
 
  void myDeintASM(void);
 
@@ -36,25 +34,27 @@
  static uint8_t * FUNNY_MANGLE(_l_p) , * FUNNY_MANGLE(_l_c) ,* FUNNY_MANGLE(_l_n);
  static uint8_t * FUNNY_MANGLE(_l_e) , * FUNNY_MANGLE(_l_e2);
 #define EXPAND(x) (x)+((x)<<16)+((x)<<32) +((x)<<48)
-static mmx_t _mmTHRESH1;
-static mmx_t _mmTHRESH2;
+static uint64_t  __attribute__((used)) __attribute__ ((__aligned__ (8)))  FUNNY_MANGLE(_mmTHRESH1) ;
+static uint64_t  __attribute__((used)) __attribute__ ((__aligned__ (8)))  FUNNY_MANGLE(_mmTHRESH2) ;
 
-#define COMPUTE_MMX \
-punpcklbw_r2r(mm5,mm0);  /*c  expand 4 bytes -> 4 word */ \
-punpcklbw_r2r(mm5,mm1);  /*p*/ \
-punpcklbw_r2r(mm5,mm2); /* n*/ \
-movq_r2r(mm0,mm3);		/* mm3 also c*/ \
-psubw_r2r(mm1,mm0) ; /* mm0=mm0-mm1 =  c-p*/ \
-psubw_r2r(mm2,mm3) ; /* mm3=mm3-mm2 =  c-n*/ \
-psraw_i2r(1,mm0); /* to protect from overflow*/ \
-psraw_i2r(1,mm3);\
-pmullw_r2r(mm0,mm3); /* mm3=(c-p)*(c-n) / 4;*/ \
-movq_r2r(mm3,mm0) ; /* mm0 also c-p*c-n */ \
-pcmpgtw_r2r(mm4,mm3); /* keep only > size*/ \
-pcmpgtw_r2r(mm6,mm0); /* keep only > size*/ \
-packsswb_r2r(mm5,mm0); \
-packsswb_r2r(mm5,mm3);
 
+#define COMPUTE_MMX \
+__asm__ __volatile__(\
+"punpcklbw %%mm5,%%mm0\n\t" \
+"punpcklbw %%mm5,%%mm1\n\t" \
+"punpcklbw %%mm5,%%mm2\n\t" \
+"movq      %%mm0,%%mm3\n\t" \
+"psubw     %%mm1,%%mm0\n\t" \
+"psubw     %%mm2,%%mm3\n\t" \
+"psraw     $1,%%mm0\n\t" \
+"psraw     $1,%%mm3\n\t" \
+"pmullw    %%mm0,%%mm3\n\t" \
+"movq      %%mm3,%%mm0\n\t" \
+"pcmpgtw   %%mm4,%%mm3\n\t" \
+"pcmpgtw   %%mm6,%%mm0\n\t" \
+"packsswb  %%mm5,%%mm0\n\t" \
+"packsswb  %%mm5,%%mm3\n\t" \
+::)
 #endif
 
 void ADMVideoFields::hasMotion_C(uint8_t *p,uint8_t *c,
@@ -90,8 +90,8 @@ void ADMVideoFields::hasMotion_MMX(uint8_t *p,uint8_t *c,
 {
 
 
-			 	_mmTHRESH1.uq=EXPAND((uint64_t ) ((_param->motion_trigger*_param->motion_trigger)>>2) );
-				_mmTHRESH2.uq=EXPAND((uint64_t ) ((_param->blend_trigger*_param->blend_trigger)>>2) );
+            _mmTHRESH1=EXPAND((uint64_t ) ((_param->motion_trigger*_param->motion_trigger)>>2) );
+            _mmTHRESH2=EXPAND((uint64_t ) ((_param->blend_trigger*_param->blend_trigger)>>2) );
 
 			_l_h=_info.height-2;
 			_l_w=_info.width>>2;
@@ -102,10 +102,11 @@ void ADMVideoFields::hasMotion_MMX(uint8_t *p,uint8_t *c,
 			_l_e=e;
 			_l_e2=e2;
 //			printf("\n MMX \n");
-
-			pxor_r2r(mm5,mm5);
-			movq_m2r(_mmTHRESH1,mm4);
-			movq_m2r(_mmTHRESH2,mm6);
+             __asm__ __volatile__ (
+			"pxor %%mm5,%%mm5\n\t"
+			"movq "Mangle(_mmTHRESH1)",%%mm4\n\t"
+            "movq "Mangle(_mmTHRESH2)",%%mm6\n\t"
+            ::);
 			myDeintASM();
 }
 #if !defined(DEBUG_DEINT)
@@ -149,7 +150,7 @@ void myDeintASM(void)
                             :
                             : "eax", "ecx","edx","esi"
                             );
-	   emms();
+            __asm__ __volatile__ ("emms");
 
 }
 #else