merge master->local-branch-testing2
Signed-off-by: Austin Yuan <shengquan.yuan@intel.com>
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fc9b033
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,29 @@
+*~
+*.o
+*.lo
+*.la
+*.orig
+*.rej
+*.loT
+*.bin
+.deps
+.libs
+install-sh
+libtool
+ltmain.sh
+missing
+Makefile
+Makefile.in
+config.h
+config.h.in
+stamp-h1
+aclocal.m4
+autom4te.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+fw/msvdx_bin
+fw/msvdx_fw.bin
diff --git a/Makefile.am b/Makefile.am
index 5470b69..07385e6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,9 +21,21 @@
 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 AUTOMAKE_OPTIONS = foreign
-SUBDIRS = src dummy_drv_video test
+
+SUBDIRS = src test
+if BUILD_DUMMY_DRIVER
+SUBDIRS += dummy_drv_video
+endif
+if BUILD_I965_DRIVER
+SUBDIRS += i965_drv_video
+endif
+
+pcfiles = libva.pc
+pcfiles += libva-x11.pc
 
 pkgconfigdir = @pkgconfigdir@
-pkgconfig_DATA = libva.pc
+pkgconfig_DATA = $(pcfiles)
 
-EXTRA_DIST = libva.pc.in
+EXTRA_DIST = libva.pc.in libva-x11.pc.in
+
+CLEANFILES = $(pcfiles)
diff --git a/configure.ac b/configure.ac
index 8f7ec59..c3aba90 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,12 +20,63 @@
 # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
+# libva package version number, (as distinct from shared library version)
+m4_define([libva_major_version], [0])
+m4_define([libva_minor_version], [31])
+m4_define([libva_micro_version], [0])
+
+m4_define([libva_version],
+          [libva_major_version.libva_minor_version.libva_micro_version])
+
+# if the library source code has changed, increment revision
+m4_define([libva_lt_revision], [0])
+# if any interface was added/removed/changed, then inc current, reset revision
+m4_define([libva_lt_current], [1])
+# if any interface was added since last public release, then increment age
+# if any interface was removed since last public release, then set age to 0
+m4_define([libva_lt_age], [0])
+
 AC_PREREQ(2.57)
-AC_INIT([libva], 0.30.4, [waldo.bastian@intel.com], libva)
+AC_INIT([libva], [libva_version], [waldo.bastian@intel.com], libva)
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([dist-bzip2])
 
-AM_CONFIG_HEADER([src/config.h])
+AM_CONFIG_HEADER([config.h])
+
+LIBVA_MAJOR_VERSION=libva_major_version
+LIBVA_MINOR_VERSION=libva_minor_version
+LIBVA_MICRO_VERSION=libva_micro_version
+LIBVA_VERSION=libva_version
+AC_SUBST(LIBVA_MAJOR_VERSION)
+AC_SUBST(LIBVA_MINOR_VERSION)
+AC_SUBST(LIBVA_MICRO_VERSION)
+AC_SUBST(LIBVA_VERSION)
+
+LIBVA_LT_CURRENT=libva_lt_current
+LIBVA_LT_REV=libva_lt_revision
+LIBVA_LT_AGE=libva_lt_age
+LIBVA_LT_VERSION="$LIBVA_LT_CURRENT:$LIBVA_LT_REV:$LIBVA_LT_AGE"
+LIBVA_LT_LDFLAGS="-version-info $LIBVA_LT_VERSION"
+AC_SUBST(LIBVA_LT_VERSION)
+AC_SUBST(LIBVA_LT_LDFLAGS)
+
+AC_ARG_ENABLE(dummy-driver,
+              [AC_HELP_STRING([--enable-dummy-driver],
+                              [build dummy video driver])],
+              [], [enable_dummy_driver=yes])
+AM_CONDITIONAL(BUILD_DUMMY_DRIVER, test x$enable_dummy_driver = xyes)
+
+AC_ARG_ENABLE(i965-driver,
+              [AC_HELP_STRING([--enable-i965-driver],
+                              [build i965 video driver])],
+              [], [enable_i965_driver=no])
+
+AC_ARG_WITH(drivers-path,
+	    [AC_HELP_STRING([--with-drivers-path=[[path]]], [drivers path])],,
+	    [with_drivers_path="$libdir/dri"])
+
+LIBVA_DRIVERS_PATH="$with_drivers_path"
+AC_SUBST(LIBVA_DRIVERS_PATH)
 
 AC_DISABLE_STATIC
 AC_PROG_LIBTOOL
@@ -36,22 +87,46 @@
 
 PKG_CHECK_MODULES([X11], [x11])
 PKG_CHECK_MODULES([XEXT],[xext])
+PKG_CHECK_MODULES([XFIXES], [xfixes])
 PKG_CHECK_MODULES([DRM], [libdrm])
-PKG_CHECK_MODULES(LIBDRM_DEPS, [libdrm])
+
+PKG_CHECK_MODULES(GEN4ASM, [intel-gen4asm >= 1.0], [gen4asm=yes], [gen4asm=no])
+AM_CONDITIONAL(HAVE_GEN4ASM, test x$gen4asm = xyes)
+
+# Check for libdrm >= 2.4 (needed for i965_drv_video.so)
+if test x$enable_i965_driver = xyes && ! $PKG_CONFIG --atleast-version=2.4 libdrm; then
+    AC_MSG_WARN([libdrm < 2.4 found, disabling build of i965 video driver])
+    enable_i965_driver=no
+fi
+AM_CONDITIONAL(BUILD_I965_DRIVER, test x$enable_i965_driver = xyes)
 
 # We only need the headers, we don't link against the DRM libraries
-LIBVA_CFLAGS="$LIBDRM_DEPS_CFLAGS"
+LIBVA_CFLAGS="$DRM_CFLAGS"
 AC_SUBST(LIBVA_CFLAGS)
 AC_SUBST(LIBVA_LIBS)
 
 pkgconfigdir=${libdir}/pkgconfig
 AC_SUBST(pkgconfigdir)
 
+LIBVA_DISPLAY=x11
+libvacorelib=libva.la
+libvabackendlib=libva-$LIBVA_DISPLAY.la
+AC_SUBST([libvacorelib])
+AC_SUBST([libvabackendlib])
+
 AC_OUTPUT([
 	Makefile
 	src/Makefile
-	src/X11/Makefile
+	src/va_version.h
+	src/x11/Makefile
 	dummy_drv_video/Makefile
+	i965_drv_video/Makefile
+	i965_drv_video/shaders/Makefile
+	i965_drv_video/shaders/mpeg2/Makefile
+	i965_drv_video/shaders/mpeg2/vld/Makefile
+	i965_drv_video/shaders/render/Makefile
 	test/Makefile
 	libva.pc
+	libva-x11.pc
 ])
+
diff --git a/dummy_drv_video/Makefile.am b/dummy_drv_video/Makefile.am
index f782c71..4e75a7b 100644
--- a/dummy_drv_video/Makefile.am
+++ b/dummy_drv_video/Makefile.am
@@ -21,9 +21,10 @@
 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 dummy_drv_video_la_LTLIBRARIES = dummy_drv_video.la
-dummy_drv_video_ladir = /usr/lib/dri
+dummy_drv_video_ladir = @LIBVA_DRIVERS_PATH@
 dummy_drv_video_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,--no-undefined
-dummy_drv_video_la_LIBADD = ../src/libva.la
+dummy_drv_video_la_LIBADD = $(top_srcdir)/src/$(libvabackendlib)
+dummy_drv_video_la_DEPENDENCIES = $(top_srcdir)/src/$(libvabackendlib)
 
 AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/../../include/external/ -I$(top_srcdir)/../../include/kmd -DIN_LIBVA
 dummy_drv_video_la_SOURCES = dummy_drv_video.c object_heap.c
diff --git a/dummy_drv_video/dummy_drv_video.c b/dummy_drv_video/dummy_drv_video.c
index 20ee3ae..f617018 100644
--- a/dummy_drv_video/dummy_drv_video.c
+++ b/dummy_drv_video/dummy_drv_video.c
@@ -502,25 +502,8 @@
     return VA_STATUS_SUCCESS;
 }
 
-VAStatus dummy_PutImage(
-	VADriverContextP ctx,
-	VASurfaceID surface,
-	VAImageID image,
-	int src_x,
-	int src_y,
-	unsigned int width,
-	unsigned int height,
-	int dest_x,
-	int dest_y 
-)
-{
-    INIT_DRIVER_DATA
-    
-    /* TODO */
-    return VA_STATUS_SUCCESS;
-}
 
-VAStatus dummy_PutImage2(
+VAStatus dummy_PutImage(
 	VADriverContextP ctx,
 	VASurfaceID surface,
 	VAImageID image,
@@ -631,31 +614,8 @@
     return VA_STATUS_SUCCESS;
 }
 
-VAStatus dummy_AssociateSubpicture(
-	VADriverContextP ctx,
-	VASubpictureID subpicture,
-	VASurfaceID *target_surfaces,
-	int num_surfaces,
-	short src_x, /* upper left offset in subpicture */
-	short src_y,
-	short dest_x, /* upper left offset in surface */
-	short dest_y,
-	unsigned short width,
-	unsigned short height,
-	/*
-	 * whether to enable chroma-keying or global-alpha
-	 * see VA_SUBPICTURE_XXX values
-	 */
-	unsigned int flags
-)
-{
-    INIT_DRIVER_DATA
-    
-    /* TODO */
-    return VA_STATUS_SUCCESS;
-}
 
-VAStatus dummy_AssociateSubpicture2(
+VAStatus dummy_AssociateSubpicture(
 	VADriverContextP ctx,
 	VASubpictureID subpicture,
 	VASurfaceID *target_surfaces,
@@ -1045,24 +1005,16 @@
 
 VAStatus dummy_SyncSurface(
 		VADriverContextP ctx,
-		VAContextID context,
 		VASurfaceID render_target
 	)
 {
     INIT_DRIVER_DATA
     VAStatus vaStatus = VA_STATUS_SUCCESS;
-    object_context_p obj_context;
     object_surface_p obj_surface;
 
-    obj_context = CONTEXT(context);
-    ASSERT(obj_context);
-
     obj_surface = SURFACE(render_target);
     ASSERT(obj_surface);
 
-    /* Assume that this shouldn't be called before vaEndPicture() */
-    ASSERT( obj_context->current_render_target != obj_surface->base.id );
-
     return vaStatus;
 }
 
@@ -1211,15 +1163,15 @@
     return VA_STATUS_SUCCESS;
 }
 
-VAStatus __vaDriverInit_0_29(  VADriverContextP ctx )
+VAStatus __vaDriverInit_0_31(  VADriverContextP ctx )
 {
     object_base_p obj;
     int result;
     struct dummy_driver_data *driver_data;
     int i;
 
-    ctx->version_major = 0;
-    ctx->version_minor = 29;
+    ctx->version_major = VA_MAJOR_VERSION;
+    ctx->version_minor = VA_MINOR_VERSION;
     ctx->max_profiles = DUMMY_MAX_PROFILES;
     ctx->max_entrypoints = DUMMY_MAX_ENTRYPOINTS;
     ctx->max_attributes = DUMMY_MAX_CONFIG_ATTRIBUTES;
@@ -1258,7 +1210,6 @@
     ctx->vtable.vaSetImagePalette = dummy_SetImagePalette;
     ctx->vtable.vaGetImage = dummy_GetImage;
     ctx->vtable.vaPutImage = dummy_PutImage;
-    ctx->vtable.vaPutImage2 = dummy_PutImage2;
     ctx->vtable.vaQuerySubpictureFormats = dummy_QuerySubpictureFormats;
     ctx->vtable.vaCreateSubpicture = dummy_CreateSubpicture;
     ctx->vtable.vaDestroySubpicture = dummy_DestroySubpicture;
@@ -1266,7 +1217,6 @@
     ctx->vtable.vaSetSubpictureChromakey = dummy_SetSubpictureChromakey;
     ctx->vtable.vaSetSubpictureGlobalAlpha = dummy_SetSubpictureGlobalAlpha;
     ctx->vtable.vaAssociateSubpicture = dummy_AssociateSubpicture;
-    ctx->vtable.vaAssociateSubpicture2 = dummy_AssociateSubpicture2;
     ctx->vtable.vaDeassociateSubpicture = dummy_DeassociateSubpicture;
     ctx->vtable.vaQueryDisplayAttributes = dummy_QueryDisplayAttributes;
     ctx->vtable.vaGetDisplayAttributes = dummy_GetDisplayAttributes;
diff --git a/i965_drv_video/Makefile.am b/i965_drv_video/Makefile.am
new file mode 100644
index 0000000..42dd515
--- /dev/null
+++ b/i965_drv_video/Makefile.am
@@ -0,0 +1,52 @@
+# Copyright (c) 2007 Intel Corporation. All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sub license, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+# 
+# The above copyright notice and this permission notice (including the
+# next paragraph) shall be included in all copies or substantial portions
+# of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+# IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+SUBDIRS = shaders
+
+AM_CFLAGS = -Wall -I$(top_srcdir)/src -I$(top_srcdir)/src/x11 @DRM_CFLAGS@ -DIN_LIBVA
+
+i965_drv_video_la_LTLIBRARIES = i965_drv_video.la
+i965_drv_video_ladir = @LIBVA_DRIVERS_PATH@
+i965_drv_video_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,--no-undefined @DRM_LIBS@ -ldrm_intel
+i965_drv_video_la_LIBADD = ../src/libva-x11.la -lpthread
+
+i965_drv_video_la_SOURCES =	\
+	object_heap.c		\
+	intel_batchbuffer.c	\
+	intel_memman.c		\
+	intel_driver.c		\
+	i965_media.c		\
+	i965_media_mpeg2.c	\
+	i965_render.c		\
+	i965_drv_video.c
+
+noinst_HEADERS =                \
+	object_heap.h           \
+	intel_batchbuffer.h     \
+	intel_memman.h          \
+	intel_driver.h          \
+	i965_media.h            \
+	i965_media_mpeg2.h      \
+	i965_render.h           \
+	i965_drv_video.h        \
+	i965_defines.h          \
+	i965_structs.h
diff --git a/i965_drv_video/i965_defines.h b/i965_drv_video/i965_defines.h
new file mode 100644
index 0000000..e4e5b2d
--- /dev/null
+++ b/i965_drv_video/i965_defines.h
@@ -0,0 +1,326 @@
+#ifndef _I965_DEFINES_H_
+#define _I965_DEFINES_H_
+
+#define CMD(pipeline,op,sub_op)		((3 << 29) | \
+                                           	((pipeline) << 27) | \
+                                           	((op) << 24) | \
+                                           	((sub_op) << 16))
+
+#define CMD_URB_FENCE                           CMD(0, 0, 0)
+#define CMD_CS_URB_STATE                        CMD(0, 0, 1)
+#define CMD_CONSTANT_BUFFER                     CMD(0, 0, 2)
+#define CMD_STATE_PREFETCH                      CMD(0, 0, 3)
+
+#define CMD_STATE_BASE_ADDRESS                  CMD(0, 1, 1)
+#define CMD_STATE_SIP                           CMD(0, 1, 2)
+#define CMD_PIPELINE_SELECT                     CMD(1, 1, 4)
+#define CMD_SAMPLER_PALETTE_LOAD                CMD(3, 3, 2)
+
+#define CMD_MEDIA_STATE_POINTERS                CMD(2, 0, 0)
+#define CMD_MEDIA_OBJECT                        CMD(2, 1, 0)
+#define CMD_MEDIA_OBJECT_EX                     CMD(2, 1, 1)
+
+#define CMD_PIPELINED_POINTERS                  CMD(3, 0, 0)
+#define CMD_BINDING_TABLE_POINTERS              CMD(3, 0, 1)
+#define CMD_VERTEX_BUFFERS                      CMD(3, 0, 8)
+#define CMD_VERTEX_ELEMENTS                     CMD(3, 0, 9)
+#define CMD_DRAWING_RECTANGLE                   CMD(3, 1, 0)
+#define CMD_CONSTANT_COLOR                      CMD(3, 1, 1)
+#define CMD_3DPRIMITIVE                         CMD(3, 3, 0)
+
+#define BASE_ADDRESS_MODIFY             (1 << 0)
+
+#define PIPELINE_SELECT_3D              0
+#define PIPELINE_SELECT_MEDIA           1
+
+
+#define UF0_CS_REALLOC                  (1 << 13)
+#define UF0_VFE_REALLOC                 (1 << 12)
+#define UF0_SF_REALLOC                  (1 << 11)
+#define UF0_CLIP_REALLOC                (1 << 10)
+#define UF0_GS_REALLOC                  (1 << 9)
+#define UF0_VS_REALLOC                  (1 << 8)
+#define UF1_CLIP_FENCE_SHIFT            20
+#define UF1_GS_FENCE_SHIFT              10
+#define UF1_VS_FENCE_SHIFT              0
+#define UF2_CS_FENCE_SHIFT              20
+#define UF2_VFE_FENCE_SHIFT             10
+#define UF2_SF_FENCE_SHIFT              0
+
+#define VFE_GENERIC_MODE        0x0
+#define VFE_VLD_MODE            0x1
+#define VFE_IS_MODE             0x2
+#define VFE_AVC_MC_MODE         0x4
+#define VFE_AVC_IT_MODE         0x7
+
+#define FLOATING_POINT_IEEE_754        0
+#define FLOATING_POINT_NON_IEEE_754    1
+
+
+#define I965_SURFACE_1D      0
+#define I965_SURFACE_2D      1
+#define I965_SURFACE_3D      2
+#define I965_SURFACE_CUBE    3
+#define I965_SURFACE_BUFFER  4
+#define I965_SURFACE_NULL    7
+
+#define I965_SURFACEFORMAT_R32G32B32A32_FLOAT             0x000 
+#define I965_SURFACEFORMAT_R32G32B32A32_SINT              0x001 
+#define I965_SURFACEFORMAT_R32G32B32A32_UINT              0x002 
+#define I965_SURFACEFORMAT_R32G32B32A32_UNORM             0x003 
+#define I965_SURFACEFORMAT_R32G32B32A32_SNORM             0x004 
+#define I965_SURFACEFORMAT_R64G64_FLOAT                   0x005 
+#define I965_SURFACEFORMAT_R32G32B32X32_FLOAT             0x006 
+#define I965_SURFACEFORMAT_R32G32B32A32_SSCALED           0x007
+#define I965_SURFACEFORMAT_R32G32B32A32_USCALED           0x008
+#define I965_SURFACEFORMAT_R32G32B32_FLOAT                0x040 
+#define I965_SURFACEFORMAT_R32G32B32_SINT                 0x041 
+#define I965_SURFACEFORMAT_R32G32B32_UINT                 0x042 
+#define I965_SURFACEFORMAT_R32G32B32_UNORM                0x043 
+#define I965_SURFACEFORMAT_R32G32B32_SNORM                0x044 
+#define I965_SURFACEFORMAT_R32G32B32_SSCALED              0x045 
+#define I965_SURFACEFORMAT_R32G32B32_USCALED              0x046 
+#define I965_SURFACEFORMAT_R16G16B16A16_UNORM             0x080 
+#define I965_SURFACEFORMAT_R16G16B16A16_SNORM             0x081 
+#define I965_SURFACEFORMAT_R16G16B16A16_SINT              0x082 
+#define I965_SURFACEFORMAT_R16G16B16A16_UINT              0x083 
+#define I965_SURFACEFORMAT_R16G16B16A16_FLOAT             0x084 
+#define I965_SURFACEFORMAT_R32G32_FLOAT                   0x085 
+#define I965_SURFACEFORMAT_R32G32_SINT                    0x086 
+#define I965_SURFACEFORMAT_R32G32_UINT                    0x087 
+#define I965_SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS       0x088 
+#define I965_SURFACEFORMAT_X32_TYPELESS_G8X24_UINT        0x089 
+#define I965_SURFACEFORMAT_L32A32_FLOAT                   0x08A 
+#define I965_SURFACEFORMAT_R32G32_UNORM                   0x08B 
+#define I965_SURFACEFORMAT_R32G32_SNORM                   0x08C 
+#define I965_SURFACEFORMAT_R64_FLOAT                      0x08D 
+#define I965_SURFACEFORMAT_R16G16B16X16_UNORM             0x08E 
+#define I965_SURFACEFORMAT_R16G16B16X16_FLOAT             0x08F 
+#define I965_SURFACEFORMAT_A32X32_FLOAT                   0x090 
+#define I965_SURFACEFORMAT_L32X32_FLOAT                   0x091 
+#define I965_SURFACEFORMAT_I32X32_FLOAT                   0x092 
+#define I965_SURFACEFORMAT_R16G16B16A16_SSCALED           0x093
+#define I965_SURFACEFORMAT_R16G16B16A16_USCALED           0x094
+#define I965_SURFACEFORMAT_R32G32_SSCALED                 0x095
+#define I965_SURFACEFORMAT_R32G32_USCALED                 0x096
+#define I965_SURFACEFORMAT_B8G8R8A8_UNORM                 0x0C0 
+#define I965_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB            0x0C1 
+#define I965_SURFACEFORMAT_R10G10B10A2_UNORM              0x0C2 
+#define I965_SURFACEFORMAT_R10G10B10A2_UNORM_SRGB         0x0C3 
+#define I965_SURFACEFORMAT_R10G10B10A2_UINT               0x0C4 
+#define I965_SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM       0x0C5 
+#define I965_SURFACEFORMAT_R8G8B8A8_UNORM                 0x0C7 
+#define I965_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB            0x0C8 
+#define I965_SURFACEFORMAT_R8G8B8A8_SNORM                 0x0C9 
+#define I965_SURFACEFORMAT_R8G8B8A8_SINT                  0x0CA 
+#define I965_SURFACEFORMAT_R8G8B8A8_UINT                  0x0CB 
+#define I965_SURFACEFORMAT_R16G16_UNORM                   0x0CC 
+#define I965_SURFACEFORMAT_R16G16_SNORM                   0x0CD 
+#define I965_SURFACEFORMAT_R16G16_SINT                    0x0CE 
+#define I965_SURFACEFORMAT_R16G16_UINT                    0x0CF 
+#define I965_SURFACEFORMAT_R16G16_FLOAT                   0x0D0 
+#define I965_SURFACEFORMAT_B10G10R10A2_UNORM              0x0D1 
+#define I965_SURFACEFORMAT_B10G10R10A2_UNORM_SRGB         0x0D2 
+#define I965_SURFACEFORMAT_R11G11B10_FLOAT                0x0D3 
+#define I965_SURFACEFORMAT_R32_SINT                       0x0D6 
+#define I965_SURFACEFORMAT_R32_UINT                       0x0D7 
+#define I965_SURFACEFORMAT_R32_FLOAT                      0x0D8 
+#define I965_SURFACEFORMAT_R24_UNORM_X8_TYPELESS          0x0D9 
+#define I965_SURFACEFORMAT_X24_TYPELESS_G8_UINT           0x0DA 
+#define I965_SURFACEFORMAT_L16A16_UNORM                   0x0DF 
+#define I965_SURFACEFORMAT_I24X8_UNORM                    0x0E0 
+#define I965_SURFACEFORMAT_L24X8_UNORM                    0x0E1 
+#define I965_SURFACEFORMAT_A24X8_UNORM                    0x0E2 
+#define I965_SURFACEFORMAT_I32_FLOAT                      0x0E3 
+#define I965_SURFACEFORMAT_L32_FLOAT                      0x0E4 
+#define I965_SURFACEFORMAT_A32_FLOAT                      0x0E5 
+#define I965_SURFACEFORMAT_B8G8R8X8_UNORM                 0x0E9 
+#define I965_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB            0x0EA 
+#define I965_SURFACEFORMAT_R8G8B8X8_UNORM                 0x0EB 
+#define I965_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB            0x0EC 
+#define I965_SURFACEFORMAT_R9G9B9E5_SHAREDEXP             0x0ED 
+#define I965_SURFACEFORMAT_B10G10R10X2_UNORM              0x0EE 
+#define I965_SURFACEFORMAT_L16A16_FLOAT                   0x0F0 
+#define I965_SURFACEFORMAT_R32_UNORM                      0x0F1 
+#define I965_SURFACEFORMAT_R32_SNORM                      0x0F2 
+#define I965_SURFACEFORMAT_R10G10B10X2_USCALED            0x0F3
+#define I965_SURFACEFORMAT_R8G8B8A8_SSCALED               0x0F4
+#define I965_SURFACEFORMAT_R8G8B8A8_USCALED               0x0F5
+#define I965_SURFACEFORMAT_R16G16_SSCALED                 0x0F6
+#define I965_SURFACEFORMAT_R16G16_USCALED                 0x0F7
+#define I965_SURFACEFORMAT_R32_SSCALED                    0x0F8
+#define I965_SURFACEFORMAT_R32_USCALED                    0x0F9
+#define I965_SURFACEFORMAT_B5G6R5_UNORM                   0x100 
+#define I965_SURFACEFORMAT_B5G6R5_UNORM_SRGB              0x101 
+#define I965_SURFACEFORMAT_B5G5R5A1_UNORM                 0x102 
+#define I965_SURFACEFORMAT_B5G5R5A1_UNORM_SRGB            0x103 
+#define I965_SURFACEFORMAT_B4G4R4A4_UNORM                 0x104 
+#define I965_SURFACEFORMAT_B4G4R4A4_UNORM_SRGB            0x105 
+#define I965_SURFACEFORMAT_R8G8_UNORM                     0x106 
+#define I965_SURFACEFORMAT_R8G8_SNORM                     0x107 
+#define I965_SURFACEFORMAT_R8G8_SINT                      0x108 
+#define I965_SURFACEFORMAT_R8G8_UINT                      0x109 
+#define I965_SURFACEFORMAT_R16_UNORM                      0x10A 
+#define I965_SURFACEFORMAT_R16_SNORM                      0x10B 
+#define I965_SURFACEFORMAT_R16_SINT                       0x10C 
+#define I965_SURFACEFORMAT_R16_UINT                       0x10D 
+#define I965_SURFACEFORMAT_R16_FLOAT                      0x10E 
+#define I965_SURFACEFORMAT_I16_UNORM                      0x111 
+#define I965_SURFACEFORMAT_L16_UNORM                      0x112 
+#define I965_SURFACEFORMAT_A16_UNORM                      0x113 
+#define I965_SURFACEFORMAT_L8A8_UNORM                     0x114 
+#define I965_SURFACEFORMAT_I16_FLOAT                      0x115
+#define I965_SURFACEFORMAT_L16_FLOAT                      0x116
+#define I965_SURFACEFORMAT_A16_FLOAT                      0x117 
+#define I965_SURFACEFORMAT_R5G5_SNORM_B6_UNORM            0x119 
+#define I965_SURFACEFORMAT_B5G5R5X1_UNORM                 0x11A 
+#define I965_SURFACEFORMAT_B5G5R5X1_UNORM_SRGB            0x11B
+#define I965_SURFACEFORMAT_R8G8_SSCALED                   0x11C
+#define I965_SURFACEFORMAT_R8G8_USCALED                   0x11D
+#define I965_SURFACEFORMAT_R16_SSCALED                    0x11E
+#define I965_SURFACEFORMAT_R16_USCALED                    0x11F
+#define I965_SURFACEFORMAT_R8_UNORM                       0x140 
+#define I965_SURFACEFORMAT_R8_SNORM                       0x141 
+#define I965_SURFACEFORMAT_R8_SINT                        0x142 
+#define I965_SURFACEFORMAT_R8_UINT                        0x143 
+#define I965_SURFACEFORMAT_A8_UNORM                       0x144 
+#define I965_SURFACEFORMAT_I8_UNORM                       0x145 
+#define I965_SURFACEFORMAT_L8_UNORM                       0x146 
+#define I965_SURFACEFORMAT_P4A4_UNORM                     0x147 
+#define I965_SURFACEFORMAT_A4P4_UNORM                     0x148
+#define I965_SURFACEFORMAT_R8_SSCALED                     0x149
+#define I965_SURFACEFORMAT_R8_USCALED                     0x14A
+#define I965_SURFACEFORMAT_R1_UINT                        0x181 
+#define I965_SURFACEFORMAT_YCRCB_NORMAL                   0x182 
+#define I965_SURFACEFORMAT_YCRCB_SWAPUVY                  0x183 
+#define I965_SURFACEFORMAT_BC1_UNORM                      0x186 
+#define I965_SURFACEFORMAT_BC2_UNORM                      0x187 
+#define I965_SURFACEFORMAT_BC3_UNORM                      0x188 
+#define I965_SURFACEFORMAT_BC4_UNORM                      0x189 
+#define I965_SURFACEFORMAT_BC5_UNORM                      0x18A 
+#define I965_SURFACEFORMAT_BC1_UNORM_SRGB                 0x18B 
+#define I965_SURFACEFORMAT_BC2_UNORM_SRGB                 0x18C 
+#define I965_SURFACEFORMAT_BC3_UNORM_SRGB                 0x18D 
+#define I965_SURFACEFORMAT_MONO8                          0x18E 
+#define I965_SURFACEFORMAT_YCRCB_SWAPUV                   0x18F 
+#define I965_SURFACEFORMAT_YCRCB_SWAPY                    0x190 
+#define I965_SURFACEFORMAT_DXT1_RGB                       0x191 
+#define I965_SURFACEFORMAT_FXT1                           0x192 
+#define I965_SURFACEFORMAT_R8G8B8_UNORM                   0x193 
+#define I965_SURFACEFORMAT_R8G8B8_SNORM                   0x194 
+#define I965_SURFACEFORMAT_R8G8B8_SSCALED                 0x195 
+#define I965_SURFACEFORMAT_R8G8B8_USCALED                 0x196 
+#define I965_SURFACEFORMAT_R64G64B64A64_FLOAT             0x197 
+#define I965_SURFACEFORMAT_R64G64B64_FLOAT                0x198 
+#define I965_SURFACEFORMAT_BC4_SNORM                      0x199 
+#define I965_SURFACEFORMAT_BC5_SNORM                      0x19A 
+#define I965_SURFACEFORMAT_R16G16B16_UNORM                0x19C 
+#define I965_SURFACEFORMAT_R16G16B16_SNORM                0x19D 
+#define I965_SURFACEFORMAT_R16G16B16_SSCALED              0x19E 
+#define I965_SURFACEFORMAT_R16G16B16_USCALED              0x19F
+
+#define I965_CULLMODE_BOTH      0
+#define I965_CULLMODE_NONE      1
+#define I965_CULLMODE_FRONT     2
+#define I965_CULLMODE_BACK      3
+
+#define I965_MAPFILTER_NEAREST        0x0 
+#define I965_MAPFILTER_LINEAR         0x1 
+#define I965_MAPFILTER_ANISOTROPIC    0x2
+
+#define I965_MIPFILTER_NONE        0   
+#define I965_MIPFILTER_NEAREST     1   
+#define I965_MIPFILTER_LINEAR      3
+
+#define I965_TEXCOORDMODE_WRAP            0
+#define I965_TEXCOORDMODE_MIRROR          1
+#define I965_TEXCOORDMODE_CLAMP           2
+#define I965_TEXCOORDMODE_CUBE            3
+#define I965_TEXCOORDMODE_CLAMP_BORDER    4
+#define I965_TEXCOORDMODE_MIRROR_ONCE     5
+
+#define I965_BLENDFACTOR_ONE                 0x1
+#define I965_BLENDFACTOR_SRC_COLOR           0x2
+#define I965_BLENDFACTOR_SRC_ALPHA           0x3
+#define I965_BLENDFACTOR_DST_ALPHA           0x4
+#define I965_BLENDFACTOR_DST_COLOR           0x5
+#define I965_BLENDFACTOR_SRC_ALPHA_SATURATE  0x6
+#define I965_BLENDFACTOR_CONST_COLOR         0x7
+#define I965_BLENDFACTOR_CONST_ALPHA         0x8
+#define I965_BLENDFACTOR_SRC1_COLOR          0x9
+#define I965_BLENDFACTOR_SRC1_ALPHA          0x0A
+#define I965_BLENDFACTOR_ZERO                0x11
+#define I965_BLENDFACTOR_INV_SRC_COLOR       0x12
+#define I965_BLENDFACTOR_INV_SRC_ALPHA       0x13
+#define I965_BLENDFACTOR_INV_DST_ALPHA       0x14
+#define I965_BLENDFACTOR_INV_DST_COLOR       0x15
+#define I965_BLENDFACTOR_INV_CONST_COLOR     0x17
+#define I965_BLENDFACTOR_INV_CONST_ALPHA     0x18
+#define I965_BLENDFACTOR_INV_SRC1_COLOR      0x19
+#define I965_BLENDFACTOR_INV_SRC1_ALPHA      0x1A
+
+#define I965_BLENDFUNCTION_ADD               0
+#define I965_BLENDFUNCTION_SUBTRACT          1
+#define I965_BLENDFUNCTION_REVERSE_SUBTRACT  2
+#define I965_BLENDFUNCTION_MIN               3
+#define I965_BLENDFUNCTION_MAX               4
+
+#define I965_SURFACERETURNFORMAT_FLOAT32  0
+#define I965_SURFACERETURNFORMAT_S1       1
+
+#define I965_VFCOMPONENT_NOSTORE      0
+#define I965_VFCOMPONENT_STORE_SRC    1
+#define I965_VFCOMPONENT_STORE_0      2
+#define I965_VFCOMPONENT_STORE_1_FLT  3
+#define I965_VFCOMPONENT_STORE_1_INT  4
+#define I965_VFCOMPONENT_STORE_VID    5
+#define I965_VFCOMPONENT_STORE_IID    6
+#define I965_VFCOMPONENT_STORE_PID    7
+
+#define VE0_VERTEX_BUFFER_INDEX_SHIFT	27
+#define VE0_VALID			(1 << 26)
+#define VE0_FORMAT_SHIFT		16
+#define VE0_OFFSET_SHIFT		0
+#define VE1_VFCOMPONENT_0_SHIFT		28
+#define VE1_VFCOMPONENT_1_SHIFT		24
+#define VE1_VFCOMPONENT_2_SHIFT		20
+#define VE1_VFCOMPONENT_3_SHIFT		16
+#define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT	0
+
+#define VB0_BUFFER_INDEX_SHIFT          27
+#define VB0_VERTEXDATA                  (0 << 26)
+#define VB0_INSTANCEDATA                (1 << 26)
+#define VB0_BUFFER_PITCH_SHIFT          0
+
+#define _3DPRIMITIVE_VERTEX_SEQUENTIAL  (0 << 15)
+#define _3DPRIMITIVE_VERTEX_RANDOM      (1 << 15)
+#define _3DPRIMITIVE_TOPOLOGY_SHIFT     10
+
+#define _3DPRIM_POINTLIST         0x01
+#define _3DPRIM_LINELIST          0x02
+#define _3DPRIM_LINESTRIP         0x03
+#define _3DPRIM_TRILIST           0x04
+#define _3DPRIM_TRISTRIP          0x05
+#define _3DPRIM_TRIFAN            0x06
+#define _3DPRIM_QUADLIST          0x07
+#define _3DPRIM_QUADSTRIP         0x08
+#define _3DPRIM_LINELIST_ADJ      0x09
+#define _3DPRIM_LINESTRIP_ADJ     0x0A
+#define _3DPRIM_TRILIST_ADJ       0x0B
+#define _3DPRIM_TRISTRIP_ADJ      0x0C
+#define _3DPRIM_TRISTRIP_REVERSE  0x0D
+#define _3DPRIM_POLYGON           0x0E
+#define _3DPRIM_RECTLIST          0x0F
+#define _3DPRIM_LINELOOP          0x10
+#define _3DPRIM_POINTLIST_BF      0x11
+#define _3DPRIM_LINESTRIP_CONT    0x12
+#define _3DPRIM_LINESTRIP_BF      0x13
+#define _3DPRIM_LINESTRIP_CONT_BF 0x14
+#define _3DPRIM_TRIFAN_NOSTIPPLE  0x15
+
+#define I965_TILEWALK_XMAJOR                 0
+#define I965_TILEWALK_YMAJOR                 1
+
+#define URB_SIZE(intel)         (IS_IGDNG(intel->device_id) ? 1024 : \
+                                 IS_G4X(intel->device_id) ? 384 : 256)
+#endif /* _I965_DEFINES_H_ */
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
new file mode 100644
index 0000000..d26942d
--- /dev/null
+++ b/i965_drv_video/i965_drv_video.c
@@ -0,0 +1,1409 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Xiang Haihao <haihao.xiang@intel.com>
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *
+ */
+
+#include <string.h>
+#include <assert.h>
+
+#include "va_backend.h"
+#include "va_dricommon.h"
+
+#include "intel_driver.h"
+#include "intel_memman.h"
+#include "intel_batchbuffer.h"
+
+#include "i965_media.h"
+#include "i965_drv_video.h"
+
+#define CONFIG_ID_OFFSET                0x01000000
+#define CONTEXT_ID_OFFSET               0x02000000
+#define SURFACE_ID_OFFSET               0x04000000
+#define BUFFER_ID_OFFSET                0x08000000
+#define IMAGE_ID_OFFSET                 0x0a000000
+#define SUBPIC_ID_OFFSET                0x10000000
+
+VAStatus 
+i965_QueryConfigProfiles(VADriverContextP ctx,
+                         VAProfile *profile_list,       /* out */
+                         int *num_profiles)             /* out */
+{
+    int i = 0;
+
+    profile_list[i++] = VAProfileMPEG2Simple;
+    profile_list[i++] = VAProfileMPEG2Main;
+
+    /* If the assert fails then I965_MAX_PROFILES needs to be bigger */
+    assert(i <= I965_MAX_PROFILES);
+    *num_profiles = i;
+
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_QueryConfigEntrypoints(VADriverContextP ctx,
+                            VAProfile profile,
+                            VAEntrypoint *entrypoint_list,      /* out */
+                            int *num_entrypoints)               /* out */
+{
+    VAStatus vaStatus = VA_STATUS_SUCCESS;
+
+    switch (profile) {
+    case VAProfileMPEG2Simple:
+    case VAProfileMPEG2Main:
+        *num_entrypoints = 1;
+        entrypoint_list[0] = VAEntrypointVLD;
+        break;
+
+    default:
+        vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
+        *num_entrypoints = 0;
+        break;
+    }
+
+    /* If the assert fails then I965_MAX_ENTRYPOINTS needs to be bigger */
+    assert(*num_entrypoints <= I965_MAX_ENTRYPOINTS);
+
+    return vaStatus;
+}
+
+VAStatus 
+i965_GetConfigAttributes(VADriverContextP ctx,
+                         VAProfile profile,
+                         VAEntrypoint entrypoint,
+                         VAConfigAttrib *attrib_list,  /* in/out */
+                         int num_attribs)
+{
+    int i;
+
+    /* Other attributes don't seem to be defined */
+    /* What to do if we don't know the attribute? */
+    for (i = 0; i < num_attribs; i++) {
+        switch (attrib_list[i].type) {
+        case VAConfigAttribRTFormat:
+            attrib_list[i].value = VA_RT_FORMAT_YUV420;
+            break;
+
+        default:
+            /* Do nothing */
+            attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
+            break;
+        }
+    }
+
+    return VA_STATUS_SUCCESS;
+}
+
+static void 
+i965_destroy_config(struct object_heap *heap, struct object_base *obj)
+{
+    object_heap_free(heap, obj);
+}
+
+static VAStatus 
+i965_update_attribute(struct object_config *obj_config, VAConfigAttrib *attrib)
+{
+    int i;
+
+    /* Check existing attrbiutes */
+    for (i = 0; obj_config->num_attribs < i; i++) {
+        if (obj_config->attrib_list[i].type == attrib->type) {
+            /* Update existing attribute */
+            obj_config->attrib_list[i].value = attrib->value;
+            return VA_STATUS_SUCCESS;
+        }
+    }
+
+    if (obj_config->num_attribs < I965_MAX_CONFIG_ATTRIBUTES) {
+        i = obj_config->num_attribs;
+        obj_config->attrib_list[i].type = attrib->type;
+        obj_config->attrib_list[i].value = attrib->value;
+        obj_config->num_attribs++;
+        return VA_STATUS_SUCCESS;
+    }
+
+    return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
+}
+
+VAStatus 
+i965_CreateConfig(VADriverContextP ctx,
+                  VAProfile profile,
+                  VAEntrypoint entrypoint,
+                  VAConfigAttrib *attrib_list,
+                  int num_attribs,
+                  VAConfigID *config_id)		/* out */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_config *obj_config;
+    int configID;
+    int i;
+    VAStatus vaStatus;
+
+    /* Validate profile & entrypoint */
+    switch (profile) {
+    case VAProfileMPEG2Simple:
+    case VAProfileMPEG2Main:
+        if (VAEntrypointVLD == entrypoint) {
+            vaStatus = VA_STATUS_SUCCESS;
+        } else {
+            vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
+        }
+        break;
+
+    default:
+        vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
+        break;
+    }
+
+    if (VA_STATUS_SUCCESS != vaStatus) {
+        return vaStatus;
+    }
+
+    configID = NEW_CONFIG_ID();
+    obj_config = CONFIG(configID);
+
+    if (NULL == obj_config) {
+        vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
+        return vaStatus;
+    }
+
+    obj_config->profile = profile;
+    obj_config->entrypoint = entrypoint;
+    obj_config->attrib_list[0].type = VAConfigAttribRTFormat;
+    obj_config->attrib_list[0].value = VA_RT_FORMAT_YUV420;
+    obj_config->num_attribs = 1;
+
+    for(i = 0; i < num_attribs; i++) {
+        vaStatus = i965_update_attribute(obj_config, &(attrib_list[i]));
+
+        if (VA_STATUS_SUCCESS != vaStatus) {
+            break;
+        }
+    }
+
+    /* Error recovery */
+    if (VA_STATUS_SUCCESS != vaStatus) {
+        i965_destroy_config(&i965->config_heap, (struct object_base *)obj_config);
+    } else {
+        *config_id = configID;
+    }
+
+    return vaStatus;
+}
+
+VAStatus 
+i965_DestroyConfig(VADriverContextP ctx, VAConfigID config_id)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_config *obj_config = CONFIG(config_id);
+    VAStatus vaStatus;
+
+    if (NULL == obj_config) {
+        vaStatus = VA_STATUS_ERROR_INVALID_CONFIG;
+        return vaStatus;
+    }
+
+    i965_destroy_config(&i965->config_heap, (struct object_base *)obj_config);
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus i965_QueryConfigAttributes(VADriverContextP ctx,
+                                    VAConfigID config_id,
+                                    VAProfile *profile,                 /* out */
+                                    VAEntrypoint *entrypoint,           /* out */
+                                    VAConfigAttrib *attrib_list,        /* out */
+                                    int *num_attribs)                   /* out */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_config *obj_config = CONFIG(config_id);
+    VAStatus vaStatus = VA_STATUS_SUCCESS;
+    int i;
+
+    assert(obj_config);
+    *profile = obj_config->profile;
+    *entrypoint = obj_config->entrypoint;
+    *num_attribs = obj_config->num_attribs;
+
+    for(i = 0; i < obj_config->num_attribs; i++) {
+        attrib_list[i] = obj_config->attrib_list[i];
+    }
+
+    return vaStatus;
+}
+
+static void 
+i965_destroy_surface(struct object_heap *heap, struct object_base *obj)
+{
+    struct object_surface *obj_surface = (struct object_surface *)obj;
+
+    dri_bo_unreference(obj_surface->bo);
+    obj_surface->bo = NULL;
+    object_heap_free(heap, obj);
+}
+
+VAStatus 
+i965_CreateSurfaces(VADriverContextP ctx,
+                    int width,
+                    int height,
+                    int format,
+                    int num_surfaces,
+                    VASurfaceID *surfaces)      /* out */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    int i;
+    VAStatus vaStatus = VA_STATUS_SUCCESS;
+
+    /* We only support one format */
+    if (VA_RT_FORMAT_YUV420 != format) {
+        return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
+    }
+
+    for (i = 0; i < num_surfaces; i++) {
+        int surfaceID = NEW_SURFACE_ID();
+        struct object_surface *obj_surface = SURFACE(surfaceID);
+
+        if (NULL == obj_surface) {
+            vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
+            break;
+        }
+
+        surfaces[i] = surfaceID;
+        obj_surface->status = VASurfaceReady;
+        obj_surface->width = width;
+        obj_surface->height = height;
+        obj_surface->size = SIZE_YUV420(width, height);
+        obj_surface->bo = dri_bo_alloc(i965->intel.bufmgr,
+                                       "vaapi surface",
+                                       obj_surface->size,
+                                       64);
+
+        assert(obj_surface->bo);
+        if (NULL == obj_surface->bo) {
+            vaStatus = VA_STATUS_ERROR_UNKNOWN;
+            break;
+        }
+    }
+
+    /* Error recovery */
+    if (VA_STATUS_SUCCESS != vaStatus) {
+        /* surfaces[i-1] was the last successful allocation */
+        for (; i--; ) {
+            struct object_surface *obj_surface = SURFACE(surfaces[i]);
+
+            surfaces[i] = VA_INVALID_SURFACE;
+            assert(obj_surface);
+            i965_destroy_surface(&i965->surface_heap, (struct object_base *)obj_surface);
+        }
+    }
+
+    return vaStatus;
+}
+
+VAStatus 
+i965_DestroySurfaces(VADriverContextP ctx,
+                     VASurfaceID *surface_list,
+                     int num_surfaces)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    int i;
+
+    for (i = num_surfaces; i--; ) {
+        struct object_surface *obj_surface = SURFACE(surface_list[i]);
+
+        assert(obj_surface);
+        i965_destroy_surface(&i965->surface_heap, (struct object_base *)obj_surface);
+    }
+
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_QueryImageFormats(VADriverContextP ctx,
+                       VAImageFormat *format_list,      /* out */
+                       int *num_formats)                /* out */
+{
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_PutImage(VADriverContextP ctx,
+               VASurfaceID surface,
+               VAImageID image,
+               int src_x,
+               int src_y,
+               unsigned int src_width,
+               unsigned int src_height,
+               int dest_x,
+               int dest_y,
+               unsigned int dest_width,
+               unsigned int dest_height)
+{
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_QuerySubpictureFormats(VADriverContextP ctx,
+                            VAImageFormat *format_list,         /* out */
+                            unsigned int *flags,                /* out */
+                            unsigned int *num_formats)          /* out */
+{
+    /*support 2 subpicture formats*/
+    *num_formats = 2;
+    format_list[0].fourcc=FOURCC_IA44;
+    format_list[0].byte_order=VA_LSB_FIRST;
+    format_list[1].fourcc=FOURCC_AI44;
+    format_list[1].byte_order=VA_LSB_FIRST;
+    return VA_STATUS_SUCCESS;
+}
+
+static void 
+i965_destroy_subpic(struct object_heap *heap, struct object_base *obj)
+{
+//    struct object_subpic *obj_subpic = (struct object_subpic *)obj;
+
+    object_heap_free(heap, obj);
+}
+
+VAStatus 
+i965_CreateSubpicture(VADriverContextP ctx,
+                      VAImageID image,
+                      VASubpictureID *subpicture)         /* out */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    VAStatus vaStatus = VA_STATUS_SUCCESS;
+    VASubpictureID subpicID = NEW_SUBPIC_ID()
+	
+    struct object_subpic *obj_subpic = SUBPIC(subpicID);
+    struct object_image *obj_image = IMAGE(image);
+    
+    if (NULL == obj_subpic) {
+        vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
+    }
+    if (NULL == obj_image) {
+        vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
+    }
+    *subpicture = subpicID;
+    obj_subpic->image = image;
+    obj_subpic->width = obj_image->width;
+    obj_subpic->height = obj_image->height;
+    obj_subpic->bo = obj_image->bo;
+	
+    return vaStatus;
+}
+
+VAStatus 
+i965_DestroySubpicture(VADriverContextP ctx,
+                       VASubpictureID subpicture)
+{
+	
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_subpic *obj_subpic = SUBPIC(subpicture);
+    i965_destroy_subpic(&i965->subpic_heap, (struct object_base *)obj_subpic);
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_SetSubpictureImage(VADriverContextP ctx,
+                        VASubpictureID subpicture,
+                        VAImageID image)
+{
+    return VA_STATUS_SUCCESS;
+}
+
+/*
+ * pointer to an array holding the palette data.  The size of the array is
+ * num_palette_entries * entry_bytes in size.  The order of the components
+ * in the palette is described by the component_order in VASubpicture struct
+ */
+VAStatus 
+i965_SetSubpicturePalette(VADriverContextP ctx,
+                          VASubpictureID subpicture,
+                          unsigned char *palette)
+{
+    /*set palette in shader,so the following code is unused*/
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    VAStatus vaStatus = VA_STATUS_SUCCESS;
+    struct object_subpic *obj_subpic = SUBPIC(subpicture);
+    if (NULL == obj_subpic) {
+        vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
+    }
+    memcpy(obj_subpic->palette, palette, 3*16);	
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_SetSubpictureChromakey(VADriverContextP ctx,
+                            VASubpictureID subpicture,
+                            unsigned int chromakey_min,
+                            unsigned int chromakey_max,
+                            unsigned int chromakey_mask)
+{
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_SetSubpictureGlobalAlpha(VADriverContextP ctx,
+                              VASubpictureID subpicture,
+                              float global_alpha)
+{
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_AssociateSubpicture(VADriverContextP ctx,
+                         VASubpictureID subpicture,
+                         VASurfaceID *target_surfaces,
+                         int num_surfaces,
+                         short src_x, /* upper left offset in subpicture */
+                         short src_y,
+                         unsigned short src_width,
+                         unsigned short src_height,
+                         short dest_x, /* upper left offset in surface */
+                         short dest_y,
+                         unsigned short dest_width,
+                         unsigned short dest_height,
+                         unsigned short width,
+                         unsigned short height,
+                         /*
+                          * whether to enable chroma-keying or global-alpha
+                          * see VA_SUBPICTURE_XXX values
+                          */
+                         unsigned int flags)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    VAStatus vaStatus = VA_STATUS_SUCCESS;
+    /*only ipicture*/
+	
+    struct object_surface *obj_surface = SURFACE(*target_surfaces);
+    struct object_subpic *obj_subpic = SUBPIC(subpicture);
+
+    if (NULL == obj_surface) {
+        vaStatus = VA_STATUS_ERROR_INVALID_CONFIG;
+        return vaStatus;
+    }
+  
+    obj_subpic->dstx = dest_x;
+    obj_subpic->dsty = dest_y;
+
+    obj_surface->subpic = subpicture;
+
+    return VA_STATUS_SUCCESS;
+}
+
+
+VAStatus 
+i965_DeassociateSubpicture(VADriverContextP ctx,
+                           VASubpictureID subpicture,
+                           VASurfaceID *target_surfaces,
+                           int num_surfaces)
+{
+    return VA_STATUS_SUCCESS;
+}
+
+static void
+i965_reference_buffer_store(struct buffer_store **ptr, 
+                            struct buffer_store *buffer_store)
+{
+    assert(*ptr == NULL);
+
+    if (buffer_store) {
+        buffer_store->ref_count++;
+        *ptr = buffer_store;
+    }
+}
+
+static void 
+i965_release_buffer_store(struct buffer_store **ptr)
+{
+    struct buffer_store *buffer_store = *ptr;
+
+    if (buffer_store == NULL)
+        return;
+
+    assert(buffer_store->bo || buffer_store->buffer);
+    assert(!(buffer_store->bo && buffer_store->buffer));
+    buffer_store->ref_count--;
+    
+    if (buffer_store->ref_count == 0) {
+        dri_bo_unreference(buffer_store->bo);
+        free(buffer_store->buffer);
+        buffer_store->bo = NULL;
+        buffer_store->buffer = NULL;
+        free(buffer_store);
+    }
+
+    *ptr = NULL;
+}
+
+static void 
+i965_destroy_context(struct object_heap *heap, struct object_base *obj)
+{
+    struct object_context *obj_context = (struct object_context *)obj;
+
+    i965_release_buffer_store(&obj_context->decode_state.pic_param);
+    i965_release_buffer_store(&obj_context->decode_state.slice_param);
+    i965_release_buffer_store(&obj_context->decode_state.iq_matrix);
+    i965_release_buffer_store(&obj_context->decode_state.bit_plane);
+    i965_release_buffer_store(&obj_context->decode_state.slice_data);
+    free(obj_context->render_targets);
+    object_heap_free(heap, obj);
+}
+
+VAStatus 
+i965_CreateContext(VADriverContextP ctx,
+                   VAConfigID config_id,
+                   int picture_width,
+                   int picture_height,
+                   int flag,
+                   VASurfaceID *render_targets,
+                   int num_render_targets,
+                   VAContextID *context)                /* out */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_config *obj_config = CONFIG(config_id);
+    struct object_context *obj_context = NULL;
+    VAStatus vaStatus = VA_STATUS_SUCCESS;
+    int contextID;
+    int i;
+
+    if (NULL == obj_config) {
+        vaStatus = VA_STATUS_ERROR_INVALID_CONFIG;
+        return vaStatus;
+    }
+
+    /* Validate flag */
+    /* Validate picture dimensions */
+    contextID = NEW_CONTEXT_ID();
+    obj_context = CONTEXT(contextID);
+
+    if (NULL == obj_context) {
+        vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
+        return vaStatus;
+    }
+
+    obj_context->context_id = contextID;
+    *context = contextID;
+    memset(&obj_context->decode_state, 0, sizeof(obj_context->decode_state));
+    obj_context->decode_state.current_render_target = -1;
+    obj_context->config_id = config_id;
+    obj_context->picture_width = picture_width;
+    obj_context->picture_height = picture_height;
+    obj_context->num_render_targets = num_render_targets;
+    obj_context->render_targets = 
+        (VASurfaceID *)calloc(num_render_targets, sizeof(VASurfaceID));
+
+    for(i = 0; i < num_render_targets; i++) {
+        if (NULL == SURFACE(render_targets[i])) {
+            vaStatus = VA_STATUS_ERROR_INVALID_SURFACE;
+            break;
+        }
+
+        obj_context->render_targets[i] = render_targets[i];
+    }
+
+    obj_context->flags = flag;
+
+    /* Error recovery */
+    if (VA_STATUS_SUCCESS != vaStatus) {
+        i965_destroy_context(&i965->context_heap, (struct object_base *)obj_context);
+    }
+
+    return vaStatus;
+}
+
+VAStatus 
+i965_DestroyContext(VADriverContextP ctx, VAContextID context)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_context *obj_context = CONTEXT(context);
+
+    assert(obj_context);
+    i965_destroy_context(&i965->context_heap, (struct object_base *)obj_context);
+
+    return VA_STATUS_SUCCESS;
+}
+
+static void 
+i965_destroy_buffer(struct object_heap *heap, struct object_base *obj)
+{
+    struct object_buffer *obj_buffer = (struct object_buffer *)obj;
+
+    assert(obj_buffer->buffer_store);
+    i965_release_buffer_store(&obj_buffer->buffer_store);
+    object_heap_free(heap, obj);
+}
+
+VAStatus 
+i965_CreateBuffer(VADriverContextP ctx,
+                  VAContextID context,          /* in */
+                  VABufferType type,            /* in */
+                  unsigned int size,            /* in */
+                  unsigned int num_elements,    /* in */
+                  void *data,                   /* in */
+                  VABufferID *buf_id)           /* out */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_buffer *obj_buffer = NULL;
+    struct buffer_store *buffer_store = NULL;
+    int bufferID;
+
+    /* Validate type */
+    switch (type) {
+    case VAPictureParameterBufferType:
+    case VAIQMatrixBufferType:
+    case VABitPlaneBufferType:
+    case VASliceGroupMapBufferType:
+    case VASliceParameterBufferType:
+    case VASliceDataBufferType:
+    case VAMacroblockParameterBufferType:
+    case VAResidualDataBufferType:
+    case VADeblockingParameterBufferType:
+    case VAImageBufferType:
+        /* Ok */
+        break;
+
+    default:
+        return VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
+    }
+
+    bufferID = NEW_BUFFER_ID();
+    obj_buffer = BUFFER(bufferID);
+
+    if (NULL == obj_buffer) {
+        return VA_STATUS_ERROR_ALLOCATION_FAILED;
+    }
+
+    obj_buffer->max_num_elements = num_elements;
+    obj_buffer->num_elements = num_elements;
+    obj_buffer->size_element = size;
+    obj_buffer->type = type;
+    obj_buffer->buffer_store = NULL;
+    buffer_store = calloc(1, sizeof(struct buffer_store));
+    assert(buffer_store);
+    buffer_store->ref_count = 1;
+
+    if (type == VASliceDataBufferType || type == VAImageBufferType) {
+        buffer_store->bo = dri_bo_alloc(i965->intel.bufmgr, 
+                                      "Buffer", 
+                                      size * num_elements, 64);
+        assert(buffer_store->bo);
+
+        if (data)
+            dri_bo_subdata(buffer_store->bo, 0, size * num_elements, data);
+    } else {
+        buffer_store->buffer = malloc(size * num_elements);
+        assert(buffer_store->buffer);
+
+        if (data)
+            memcpy(buffer_store->buffer, data, size * num_elements);
+    }
+
+    i965_reference_buffer_store(&obj_buffer->buffer_store, buffer_store);
+    i965_release_buffer_store(&buffer_store);
+    *buf_id = bufferID;
+
+    return VA_STATUS_SUCCESS;
+}
+
+
+VAStatus 
+i965_BufferSetNumElements(VADriverContextP ctx,
+                          VABufferID buf_id,           /* in */
+                          unsigned int num_elements)   /* in */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_buffer *obj_buffer = BUFFER(buf_id);
+    VAStatus vaStatus = VA_STATUS_SUCCESS;
+
+    assert(obj_buffer);
+
+    if ((num_elements < 0) || 
+        (num_elements > obj_buffer->max_num_elements)) {
+        vaStatus = VA_STATUS_ERROR_UNKNOWN;
+    } else {
+        obj_buffer->num_elements = num_elements;
+    }
+
+    return vaStatus;
+}
+
+VAStatus 
+i965_MapBuffer(VADriverContextP ctx,
+               VABufferID buf_id,       /* in */
+               void **pbuf)             /* out */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_buffer *obj_buffer = BUFFER(buf_id);
+    VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
+
+    assert(obj_buffer && obj_buffer->buffer_store);
+    assert(obj_buffer->buffer_store->bo || obj_buffer->buffer_store->buffer);
+    assert(!(obj_buffer->buffer_store->bo && obj_buffer->buffer_store->buffer));
+
+    if (NULL != obj_buffer->buffer_store->bo) {
+        dri_bo_map(obj_buffer->buffer_store->bo, 1);
+        assert(obj_buffer->buffer_store->bo->virtual);
+        *pbuf = obj_buffer->buffer_store->bo->virtual;
+        vaStatus = VA_STATUS_SUCCESS;
+    } else if (NULL != obj_buffer->buffer_store->buffer) {
+        *pbuf = obj_buffer->buffer_store->buffer;
+        vaStatus = VA_STATUS_SUCCESS;
+    }
+
+    return vaStatus;
+}
+
+VAStatus 
+i965_UnmapBuffer(VADriverContextP ctx, VABufferID buf_id)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_buffer *obj_buffer = BUFFER(buf_id);
+    VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
+
+    assert(obj_buffer && obj_buffer->buffer_store);
+    assert(obj_buffer->buffer_store->bo || obj_buffer->buffer_store->buffer);
+    assert(!(obj_buffer->buffer_store->bo && obj_buffer->buffer_store->buffer));
+
+    if (NULL != obj_buffer->buffer_store->bo) {
+        dri_bo_unmap(obj_buffer->buffer_store->bo);
+        vaStatus = VA_STATUS_SUCCESS;
+    } else if (NULL != obj_buffer->buffer_store->buffer) {
+        /* Do nothing */
+        vaStatus = VA_STATUS_SUCCESS;
+    }
+
+    return vaStatus;    
+}
+
+VAStatus 
+i965_DestroyBuffer(VADriverContextP ctx, VABufferID buffer_id)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_buffer *obj_buffer = BUFFER(buffer_id);
+
+    assert(obj_buffer);
+    i965_destroy_buffer(&i965->buffer_heap, (struct object_base *)obj_buffer);
+
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_BeginPicture(VADriverContextP ctx,
+                  VAContextID context,
+                  VASurfaceID render_target)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx); 
+    struct object_context *obj_context = CONTEXT(context);
+    struct object_surface *obj_surface = SURFACE(render_target);
+    struct object_config *obj_config;
+    VAContextID config;
+    VAStatus vaStatus;
+
+    assert(obj_context);
+    assert(obj_surface);
+
+    config = obj_context->config_id;
+    obj_config = CONFIG(config);
+    assert(obj_config);
+
+    switch (obj_config->profile) {
+    case VAProfileMPEG2Simple:
+    case VAProfileMPEG2Main:
+        vaStatus = VA_STATUS_SUCCESS;
+        break;
+
+    default:
+        assert(0);
+        vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
+        break;
+    }
+
+    obj_context->decode_state.current_render_target = render_target;
+
+    return vaStatus;
+}
+
+static VAStatus
+i965_render_picture_parameter_buffer(VADriverContextP ctx,
+                                     struct object_context *obj_context,
+                                     struct object_buffer *obj_buffer)
+{
+    assert(obj_buffer->buffer_store->bo == NULL);
+    assert(obj_buffer->buffer_store->buffer);
+    i965_release_buffer_store(&obj_context->decode_state.pic_param);
+    i965_reference_buffer_store(&obj_context->decode_state.pic_param,
+                                obj_buffer->buffer_store);
+
+    return VA_STATUS_SUCCESS;
+}
+
+static VAStatus
+i965_render_iq_matrix_buffer(VADriverContextP ctx,
+                             struct object_context *obj_context,
+                             struct object_buffer *obj_buffer)
+{
+    assert(obj_buffer->buffer_store->bo == NULL);
+    assert(obj_buffer->buffer_store->buffer);
+    i965_release_buffer_store(&obj_context->decode_state.iq_matrix);
+    i965_reference_buffer_store(&obj_context->decode_state.iq_matrix,
+                                obj_buffer->buffer_store);
+
+    return VA_STATUS_SUCCESS;
+}
+
+static VAStatus
+i965_render_bit_plane_buffer(VADriverContextP ctx,
+                             struct object_context *obj_context,
+                             struct object_buffer *obj_buffer)
+{
+    assert(obj_buffer->buffer_store->bo == NULL);
+    assert(obj_buffer->buffer_store->buffer);
+    i965_release_buffer_store(&obj_context->decode_state.bit_plane);
+    i965_reference_buffer_store(&obj_context->decode_state.bit_plane,
+                                 obj_buffer->buffer_store);
+    
+    return VA_STATUS_SUCCESS;
+}
+
+static VAStatus
+i965_render_slice_parameter_buffer(VADriverContextP ctx,
+                                   struct object_context *obj_context,
+                                   struct object_buffer *obj_buffer)
+{
+    assert(obj_buffer->buffer_store->bo == NULL);
+    assert(obj_buffer->buffer_store->buffer);
+    i965_release_buffer_store(&obj_context->decode_state.slice_param);
+    i965_reference_buffer_store(&obj_context->decode_state.slice_param,
+                                obj_buffer->buffer_store);
+    obj_context->decode_state.num_slices = obj_buffer->num_elements;    
+    
+    return VA_STATUS_SUCCESS;
+}
+
+static VAStatus
+i965_render_slice_data_buffer(VADriverContextP ctx,
+                              struct object_context *obj_context,
+                              struct object_buffer *obj_buffer)
+{
+    assert(obj_buffer->buffer_store->buffer == NULL);
+    assert(obj_buffer->buffer_store->bo);
+    i965_release_buffer_store(&obj_context->decode_state.slice_data);
+    i965_reference_buffer_store(&obj_context->decode_state.slice_data,
+                                obj_buffer->buffer_store);
+    
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_RenderPicture(VADriverContextP ctx,
+                   VAContextID context,
+                   VABufferID *buffers,
+                   int num_buffers)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_context *obj_context;
+    int i;
+    VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
+
+    obj_context = CONTEXT(context);
+    assert(obj_context);
+
+    for (i = 0; i < num_buffers; i++) {
+        struct object_buffer *obj_buffer = BUFFER(buffers[i]);
+        assert(obj_buffer);
+
+        switch (obj_buffer->type) {
+        case VAPictureParameterBufferType:
+            vaStatus = i965_render_picture_parameter_buffer(ctx, obj_context, obj_buffer);
+            break;
+            
+        case VAIQMatrixBufferType:
+            vaStatus = i965_render_iq_matrix_buffer(ctx, obj_context, obj_buffer);
+            break;
+
+        case VABitPlaneBufferType:
+            vaStatus = i965_render_bit_plane_buffer(ctx, obj_context, obj_buffer);
+            break;
+
+        case VASliceParameterBufferType:
+            vaStatus = i965_render_slice_parameter_buffer(ctx, obj_context, obj_buffer);
+            break;
+
+        case VASliceDataBufferType:
+            vaStatus = i965_render_slice_data_buffer(ctx, obj_context, obj_buffer);
+            break;
+
+        default:
+            break;
+        }
+    }
+
+    return vaStatus;
+}
+
+VAStatus 
+i965_EndPicture(VADriverContextP ctx, VAContextID context)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx); 
+    struct object_context *obj_context = CONTEXT(context);
+    struct object_config *obj_config;
+    VAContextID config;
+
+    assert(obj_context);
+    assert(obj_context->decode_state.pic_param);
+    assert(obj_context->decode_state.slice_param);
+    assert(obj_context->decode_state.slice_data);
+
+    config = obj_context->config_id;
+    obj_config = CONFIG(config);
+    assert(obj_config);
+    i965_media_decode_picture(ctx, obj_config->profile, &obj_context->decode_state);
+    obj_context->decode_state.current_render_target = -1;
+    obj_context->decode_state.num_slices = 0;
+    i965_release_buffer_store(&obj_context->decode_state.pic_param);
+    i965_release_buffer_store(&obj_context->decode_state.slice_param);
+    i965_release_buffer_store(&obj_context->decode_state.iq_matrix);
+    i965_release_buffer_store(&obj_context->decode_state.bit_plane);
+    i965_release_buffer_store(&obj_context->decode_state.slice_data);
+
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_SyncSurface(VADriverContextP ctx,
+                 VASurfaceID render_target)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx); 
+    struct object_surface *obj_surface = SURFACE(render_target);
+
+    assert(obj_surface);
+
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_QuerySurfaceStatus(VADriverContextP ctx,
+                        VASurfaceID render_target,
+                        VASurfaceStatus *status)        /* out */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx); 
+    struct object_surface *obj_surface = SURFACE(render_target);
+
+    assert(obj_surface);
+    *status = obj_surface->status;
+
+    return VA_STATUS_SUCCESS;
+}
+
+
+/* 
+ * Query display attributes 
+ * The caller must provide a "attr_list" array that can hold at
+ * least vaMaxNumDisplayAttributes() entries. The actual number of attributes
+ * returned in "attr_list" is returned in "num_attributes".
+ */
+VAStatus 
+i965_QueryDisplayAttributes(VADriverContextP ctx,
+                            VADisplayAttribute *attr_list,	/* out */
+                            int *num_attributes)		/* out */
+{
+    /* TODO */
+    return VA_STATUS_ERROR_UNKNOWN;
+}
+
+/* 
+ * Get display attributes 
+ * This function returns the current attribute values in "attr_list".
+ * Only attributes returned with VA_DISPLAY_ATTRIB_GETTABLE set in the "flags" field
+ * from vaQueryDisplayAttributes() can have their values retrieved.  
+ */
+VAStatus 
+i965_GetDisplayAttributes(VADriverContextP ctx,
+                          VADisplayAttribute *attr_list,	/* in/out */
+                          int num_attributes)
+{
+    /* TODO */
+    return VA_STATUS_ERROR_UNKNOWN;
+}
+
+/* 
+ * Set display attributes 
+ * Only attributes returned with VA_DISPLAY_ATTRIB_SETTABLE set in the "flags" field
+ * from vaQueryDisplayAttributes() can be set.  If the attribute is not settable or 
+ * the value is out of range, the function returns VA_STATUS_ERROR_ATTR_NOT_SUPPORTED
+ */
+VAStatus 
+i965_SetDisplayAttributes(VADriverContextP ctx,
+                          VADisplayAttribute *attr_list,
+                          int num_attributes)
+{
+    /* TODO */
+    return VA_STATUS_ERROR_UNKNOWN;
+}
+
+VAStatus 
+i965_DbgCopySurfaceToBuffer(VADriverContextP ctx,
+                            VASurfaceID surface,
+                            void **buffer,              /* out */
+                            unsigned int *stride)       /* out */
+{
+    /* TODO */
+    return VA_STATUS_ERROR_UNKNOWN;
+}
+
+static VAStatus 
+i965_Init(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx); 
+
+    if (intel_driver_init(ctx) == False)
+        return VA_STATUS_ERROR_UNKNOWN;
+
+    if (!IS_G4X(i965->intel.device_id) &&
+        !IS_IGDNG(i965->intel.device_id))
+        return VA_STATUS_ERROR_UNKNOWN;
+
+    if (i965_media_init(ctx) == False)
+        return VA_STATUS_ERROR_UNKNOWN;
+
+    if (i965_render_init(ctx) == False)
+        return VA_STATUS_ERROR_UNKNOWN;
+
+    return VA_STATUS_SUCCESS;
+}
+
+static void
+i965_destroy_heap(struct object_heap *heap, 
+                  void (*func)(struct object_heap *heap, struct object_base *object))
+{
+    struct object_base *object;
+    object_heap_iterator iter;    
+
+    object = object_heap_first(heap, &iter);
+
+    while (object) {
+        if (func)
+            func(heap, object);
+
+        object = object_heap_next(heap, &iter);
+    }
+
+    object_heap_destroy(heap);
+}
+
+
+
+VAStatus 
+i965_CreateImage(VADriverContextP ctx,
+                 VAImageFormat *format,
+                 int width,
+                 int height,
+                 VAImage *image)        /* out */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    VAStatus va_status;
+    /*we will receive the actual subpicture size from the player,now we assume it is 720*32*/
+    char subpic_buf[width*height];
+    int subpic_size = 720*32;
+    unsigned int img_buf_id;
+
+    image->image_id = NEW_IMAGE_ID();
+    struct object_image *obj_image = IMAGE(image->image_id);
+
+    /*assume we got IA44 in format[0]*/
+    image->format = *format;
+	
+    /*create empty buffer*/
+    va_status = i965_CreateBuffer(ctx, 0, VAImageBufferType, 
+	    subpic_size, 1, subpic_buf, &img_buf_id);				
+    assert( VA_STATUS_SUCCESS == va_status );
+    struct object_buffer *obj_buf = BUFFER(img_buf_id);
+
+    image->buf = img_buf_id;
+    image->width = width;
+    image->height = height;
+	
+    obj_image->width = width;
+    obj_image->height = height;
+    obj_image->size = subpic_size;
+    obj_image->bo = obj_buf->buffer_store->bo;
+	
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus i965_DeriveImage(VADriverContextP ctx,
+                          VASurfaceID surface,
+                          VAImage *image)        /* out */
+{
+    return VA_STATUS_SUCCESS;
+}
+
+static void 
+i965_destroy_image(struct object_heap *heap, struct object_base *obj)
+{
+    object_heap_free(heap, obj);
+}
+
+
+VAStatus 
+i965_DestroyImage(VADriverContextP ctx, VAImageID image)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct object_image *obj_image = IMAGE(image); 
+
+    i965_DestroyBuffer(ctx, image);				
+	
+    i965_destroy_image(&i965->image_heap, (struct object_base *)obj_image);
+	
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_SetImagePalette(VADriverContextP ctx,
+                     VAImageID image,
+                     unsigned char *palette)
+{
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_GetImage(VADriverContextP ctx,
+              VASurfaceID surface,
+              int x,   /* coordinates of the upper left source pixel */
+              int y,
+              unsigned int width,      /* width and height of the region */
+              unsigned int height,
+              VAImageID image)
+{
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_PutSurface(VADriverContextP ctx,
+                VASurfaceID surface,
+                Drawable draw, /* X Drawable */
+                short srcx,
+                short srcy,
+                unsigned short srcw,
+                unsigned short srch,
+                short destx,
+                short desty,
+                unsigned short destw,
+                unsigned short desth,
+                VARectangle *cliprects, /* client supplied clip list */
+                unsigned int number_cliprects, /* number of clip rects in the clip list */
+                unsigned int flags) /* de-interlacing flags */
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx); 
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+    struct i965_render_state *render_state = &i965->render_state;
+    struct dri_drawable *dri_drawable;
+    union dri_buffer *buffer;
+    struct intel_region *dest_region;
+    struct object_surface *obj_surface; 
+	int ret;
+    uint32_t name;
+    Bool new_region = False;
+    /* Currently don't support DRI1 */
+    if (dri_state->driConnectedFlag != VA_DRI2)
+        return VA_STATUS_ERROR_UNKNOWN;
+
+    dri_drawable = dri_get_drawable(ctx, draw);
+    assert(dri_drawable);
+
+    buffer = dri_get_rendering_buffer(ctx, dri_drawable);
+    assert(buffer);
+    
+    dest_region = render_state->draw_region;
+
+    if (dest_region) {
+        assert(dest_region->bo);
+        dri_bo_flink(dest_region->bo, &name);
+        
+        if (buffer->dri2.name != name) {
+            new_region = True;
+            dri_bo_unreference(dest_region->bo);
+        }
+    } else {
+        dest_region = (struct intel_region *)calloc(1, sizeof(*dest_region));
+        assert(dest_region);
+        render_state->draw_region = dest_region;
+        new_region = True;
+    }
+
+    if (new_region) {
+        dest_region->x = dri_drawable->x;
+        dest_region->y = dri_drawable->y;
+        dest_region->width = dri_drawable->width;
+        dest_region->height = dri_drawable->height;
+        dest_region->cpp = buffer->dri2.cpp;
+        dest_region->pitch = buffer->dri2.pitch;
+
+        dest_region->bo = intel_bo_gem_create_from_name(i965->intel.bufmgr, "rendering buffer", buffer->dri2.name);
+        assert(dest_region->bo);
+
+        ret = dri_bo_get_tiling(dest_region->bo, &(dest_region->tiling), &(dest_region->swizzle));
+        assert(ret == 0);
+    }
+
+    i965_render_put_surface(ctx, surface,
+                            srcx, srcy, srcw, srch,
+                            destx, desty, destw, desth);
+    obj_surface = SURFACE(surface);
+    if(obj_surface->subpic != 0) {	
+	i965_render_put_subpic(ctx, surface,
+                           srcx, srcy, srcw, srch,
+                           destx, desty, destw, desth);
+    } 
+    dri_swap_buffer(ctx, dri_drawable);
+
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+i965_Terminate(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+
+    if (i965_render_terminate(ctx) == False)
+	return VA_STATUS_ERROR_UNKNOWN;
+
+    if (i965_media_terminate(ctx) == False)
+	return VA_STATUS_ERROR_UNKNOWN;
+
+    if (intel_driver_terminate(ctx) == False)
+	return VA_STATUS_ERROR_UNKNOWN;
+
+    i965_destroy_heap(&i965->buffer_heap, i965_destroy_buffer);
+    i965_destroy_heap(&i965->image_heap, i965_destroy_image);
+    i965_destroy_heap(&i965->subpic_heap, i965_destroy_subpic);
+    i965_destroy_heap(&i965->surface_heap, i965_destroy_surface);
+    i965_destroy_heap(&i965->context_heap, i965_destroy_context);
+    i965_destroy_heap(&i965->config_heap, i965_destroy_config);
+
+    free(ctx->pDriverData);
+    ctx->pDriverData = NULL;
+
+    return VA_STATUS_SUCCESS;
+}
+
+VAStatus 
+__vaDriverInit_0_31(  VADriverContextP ctx )
+{
+    struct i965_driver_data *i965;
+    int result;
+
+    ctx->version_major = 0;
+    ctx->version_minor = 29;
+    ctx->max_profiles = I965_MAX_PROFILES;
+    ctx->max_entrypoints = I965_MAX_ENTRYPOINTS;
+    ctx->max_attributes = I965_MAX_CONFIG_ATTRIBUTES;
+    ctx->max_image_formats = I965_MAX_IMAGE_FORMATS;
+    ctx->max_subpic_formats = I965_MAX_SUBPIC_FORMATS;
+    ctx->max_display_attributes = I965_MAX_DISPLAY_ATTRIBUTES;
+    ctx->str_vendor = I965_STR_VENDOR;
+
+    ctx->vtable.vaTerminate = i965_Terminate;
+    ctx->vtable.vaQueryConfigEntrypoints = i965_QueryConfigEntrypoints;
+    ctx->vtable.vaQueryConfigProfiles = i965_QueryConfigProfiles;
+    ctx->vtable.vaQueryConfigEntrypoints = i965_QueryConfigEntrypoints;
+    ctx->vtable.vaQueryConfigAttributes = i965_QueryConfigAttributes;
+    ctx->vtable.vaCreateConfig = i965_CreateConfig;
+    ctx->vtable.vaDestroyConfig = i965_DestroyConfig;
+    ctx->vtable.vaGetConfigAttributes = i965_GetConfigAttributes;
+    ctx->vtable.vaCreateSurfaces = i965_CreateSurfaces;
+    ctx->vtable.vaDestroySurfaces = i965_DestroySurfaces;
+    ctx->vtable.vaCreateContext = i965_CreateContext;
+    ctx->vtable.vaDestroyContext = i965_DestroyContext;
+    ctx->vtable.vaCreateBuffer = i965_CreateBuffer;
+    ctx->vtable.vaBufferSetNumElements = i965_BufferSetNumElements;
+    ctx->vtable.vaMapBuffer = i965_MapBuffer;
+    ctx->vtable.vaUnmapBuffer = i965_UnmapBuffer;
+    ctx->vtable.vaDestroyBuffer = i965_DestroyBuffer;
+    ctx->vtable.vaBeginPicture = i965_BeginPicture;
+    ctx->vtable.vaRenderPicture = i965_RenderPicture;
+    ctx->vtable.vaEndPicture = i965_EndPicture;
+    ctx->vtable.vaSyncSurface = i965_SyncSurface;
+    ctx->vtable.vaQuerySurfaceStatus = i965_QuerySurfaceStatus;
+    ctx->vtable.vaPutSurface = i965_PutSurface;
+    ctx->vtable.vaQueryImageFormats = i965_QueryImageFormats;
+    ctx->vtable.vaCreateImage = i965_CreateImage;
+    ctx->vtable.vaDeriveImage = i965_DeriveImage;
+    ctx->vtable.vaDestroyImage = i965_DestroyImage;
+    ctx->vtable.vaSetImagePalette = i965_SetImagePalette;
+    ctx->vtable.vaGetImage = i965_GetImage;
+    ctx->vtable.vaPutImage = i965_PutImage;
+    ctx->vtable.vaQuerySubpictureFormats = i965_QuerySubpictureFormats;
+    ctx->vtable.vaCreateSubpicture = i965_CreateSubpicture;
+    ctx->vtable.vaDestroySubpicture = i965_DestroySubpicture;
+    ctx->vtable.vaSetSubpictureImage = i965_SetSubpictureImage;
+    //ctx->vtable.vaSetSubpicturePalette = i965_SetSubpicturePalette;
+    ctx->vtable.vaSetSubpictureChromakey = i965_SetSubpictureChromakey;
+    ctx->vtable.vaSetSubpictureGlobalAlpha = i965_SetSubpictureGlobalAlpha;
+    ctx->vtable.vaAssociateSubpicture = i965_AssociateSubpicture;
+    ctx->vtable.vaDeassociateSubpicture = i965_DeassociateSubpicture;
+    ctx->vtable.vaQueryDisplayAttributes = i965_QueryDisplayAttributes;
+    ctx->vtable.vaGetDisplayAttributes = i965_GetDisplayAttributes;
+    ctx->vtable.vaSetDisplayAttributes = i965_SetDisplayAttributes;
+//    ctx->vtable.vaDbgCopySurfaceToBuffer = i965_DbgCopySurfaceToBuffer;
+
+    i965 = (struct i965_driver_data *)calloc(1, sizeof(*i965));
+    assert(i965);
+    ctx->pDriverData = (void *)i965;
+
+    result = object_heap_init(&i965->config_heap, 
+                              sizeof(struct object_config), 
+                              CONFIG_ID_OFFSET);
+    assert(result == 0);
+
+    result = object_heap_init(&i965->context_heap, 
+                              sizeof(struct object_context), 
+                              CONTEXT_ID_OFFSET);
+    assert(result == 0);
+
+    result = object_heap_init(&i965->surface_heap, 
+                              sizeof(struct object_surface), 
+                              SURFACE_ID_OFFSET);
+    assert(result == 0);
+
+    result = object_heap_init(&i965->buffer_heap, 
+                              sizeof(struct object_buffer), 
+                              BUFFER_ID_OFFSET);
+    assert(result == 0);
+
+    result = object_heap_init(&i965->image_heap, 
+                              sizeof(struct object_image), 
+                              IMAGE_ID_OFFSET);
+    assert(result == 0);
+	
+    result = object_heap_init(&i965->subpic_heap, 
+                              sizeof(struct object_subpic), 
+                              SUBPIC_ID_OFFSET);
+    assert(result == 0);
+
+    return i965_Init(ctx);
+}
diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h
new file mode 100644
index 0000000..1771b0d
--- /dev/null
+++ b/i965_drv_video/i965_drv_video.h
@@ -0,0 +1,170 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Xiang Haihao <haihao.xiang@intel.com>
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *
+ */
+
+#ifndef _I965_DRV_VIDEO_H_
+#define _I965_DRV_VIDEO_H_
+
+#include "va.h"
+#include "object_heap.h"
+
+#include "intel_driver.h"
+
+#include "i965_media.h"
+#include "i965_render.h"
+
+#define I965_MAX_PROFILES                       11
+#define I965_MAX_ENTRYPOINTS                    5
+#define I965_MAX_CONFIG_ATTRIBUTES              10
+#define I965_MAX_IMAGE_FORMATS                  10
+#define I965_MAX_SUBPIC_FORMATS                 4
+#define I965_MAX_DISPLAY_ATTRIBUTES             4
+#define I965_STR_VENDOR                         "i965 Driver 0.1"
+
+struct buffer_store
+{
+    unsigned char *buffer;
+    dri_bo *bo;
+    int ref_count;
+};
+    
+struct object_config 
+{
+    struct object_base base;
+    VAProfile profile;
+    VAEntrypoint entrypoint;
+    VAConfigAttrib attrib_list[I965_MAX_CONFIG_ATTRIBUTES];
+    int num_attribs;
+};
+
+struct decode_state
+{
+    struct buffer_store *pic_param;
+    struct buffer_store *slice_param;
+    struct buffer_store *iq_matrix;
+    struct buffer_store *bit_plane;
+    struct buffer_store *slice_data;
+    VASurfaceID current_render_target;
+    int num_slices;
+};
+
+struct object_context 
+{
+    struct object_base base;
+    VAContextID context_id;
+    VAConfigID config_id;
+    VASurfaceID *render_targets;
+    int num_render_targets;
+    int picture_width;
+    int picture_height;
+    int flags;
+    struct decode_state decode_state;
+};
+
+struct object_surface 
+{
+    struct object_base base;
+    VASurfaceStatus status;
+    VASubpictureID subpic;
+	int width;
+    int height;
+    int size;
+    dri_bo *bo;
+};
+
+struct object_buffer 
+{
+    struct object_base base;
+    struct buffer_store *buffer_store;
+    int max_num_elements;
+    int num_elements;
+    int size_element;
+    VABufferType type;
+};
+struct object_image 
+{
+    struct object_base base;
+    int width;
+    int height;
+    int size;
+    dri_bo *bo;
+};
+struct object_subpic 
+{
+    struct object_base base;
+    VAImageID image;
+	int dstx;
+	int dsty;
+	int width;
+	int height;
+	unsigned char palette[3][16];
+	dri_bo *bo;
+};
+
+
+
+struct i965_driver_data 
+{
+    struct intel_driver_data intel;
+    struct object_heap config_heap;
+    struct object_heap context_heap;
+    struct object_heap surface_heap;
+    struct object_heap buffer_heap;
+    struct object_heap image_heap;
+    struct object_heap subpic_heap;
+    struct i965_media_state media_state;
+    struct i965_render_state render_state;
+};
+
+#define NEW_CONFIG_ID() object_heap_allocate(&i965->config_heap);
+#define NEW_CONTEXT_ID() object_heap_allocate(&i965->context_heap);
+#define NEW_SURFACE_ID() object_heap_allocate(&i965->surface_heap);
+#define NEW_BUFFER_ID() object_heap_allocate(&i965->buffer_heap);
+#define NEW_IMAGE_ID() object_heap_allocate(&i965->image_heap);
+#define NEW_SUBPIC_ID() object_heap_allocate(&i965->subpic_heap);
+
+#define CONFIG(id) ((struct object_config *)object_heap_lookup(&i965->config_heap, id))
+#define CONTEXT(id) ((struct object_context *)object_heap_lookup(&i965->context_heap, id))
+#define SURFACE(id) ((struct object_surface *)object_heap_lookup(&i965->surface_heap, id))
+#define BUFFER(id) ((struct object_buffer *)object_heap_lookup(&i965->buffer_heap, id))
+#define IMAGE(id) ((struct object_image *)object_heap_lookup(&i965->image_heap, id))
+#define SUBPIC(id) ((struct object_subpic *)object_heap_lookup(&i965->subpic_heap, id))
+
+#define FOURCC_IA44 0x34344149
+#define FOURCC_AI44 0x34344941
+
+#define STRIDE(w)               (((w) + 0xf) & ~0xf)
+#define SIZE_YUV420(w, h)       (h * (STRIDE(w) + STRIDE(w >> 1)))
+
+static INLINE struct i965_driver_data *
+i965_driver_data(VADriverContextP ctx)
+{
+    return (struct i965_driver_data *)(ctx->pDriverData);
+}
+
+#endif /* _I965_DRV_VIDEO_H_ */
diff --git a/i965_drv_video/i965_media.c b/i965_drv_video/i965_media.c
new file mode 100644
index 0000000..f7d5846
--- /dev/null
+++ b/i965_drv_video/i965_media.c
@@ -0,0 +1,283 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Xiang Haihao <haihao.xiang@intel.com>
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+#include "va_backend.h"
+
+#include "intel_batchbuffer.h"
+#include "intel_driver.h"
+
+#include "i965_defines.h"
+#include "i965_media_mpeg2.h"
+#include "i965_media.h"
+#include "i965_drv_video.h"
+
+static void
+i965_media_pipeline_select(VADriverContextP ctx)
+{
+    BEGIN_BATCH(ctx, 1);
+    OUT_BATCH(ctx, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
+    ADVANCE_BATCH(ctx);
+}
+
+static void
+i965_media_urb_layout(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+    unsigned int vfe_fence, cs_fence;
+
+    vfe_fence = media_state->urb.cs_start;
+    cs_fence = URB_SIZE((&i965->intel));
+
+    BEGIN_BATCH(ctx, 3);
+    OUT_BATCH(ctx, CMD_URB_FENCE | UF0_VFE_REALLOC | UF0_CS_REALLOC | 1);
+    OUT_BATCH(ctx, 0);
+    OUT_BATCH(ctx, 
+              (vfe_fence << UF2_VFE_FENCE_SHIFT) |      /* VFE_SIZE */
+              (cs_fence << UF2_CS_FENCE_SHIFT));        /* CS_SIZE */
+    ADVANCE_BATCH(ctx);
+}
+
+static void
+i965_media_state_base_address(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx); 
+
+    if (IS_IGDNG(i965->intel.device_id)) {
+        BEGIN_BATCH(ctx, 8);
+        OUT_BATCH(ctx, CMD_STATE_BASE_ADDRESS | 6);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        ADVANCE_BATCH(ctx);
+    } else {
+        BEGIN_BATCH(ctx, 6);
+        OUT_BATCH(ctx, CMD_STATE_BASE_ADDRESS | 4);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        ADVANCE_BATCH(ctx);
+    }
+}
+
+static void
+i965_media_state_pointers(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+
+    BEGIN_BATCH(ctx, 3);
+    OUT_BATCH(ctx, CMD_MEDIA_STATE_POINTERS | 1);
+
+    if (media_state->extended_state.enabled)
+        OUT_RELOC(ctx, media_state->extended_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
+    else
+        OUT_BATCH(ctx, 0);
+
+    OUT_RELOC(ctx, media_state->vfe_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
+    ADVANCE_BATCH(ctx);
+}
+
+static void 
+i965_media_cs_urb_layout(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+
+    BEGIN_BATCH(ctx, 2);
+    OUT_BATCH(ctx, CMD_CS_URB_STATE | 0);
+    OUT_BATCH(ctx,
+              ((media_state->urb.size_cs_entry - 1) << 4) |     /* URB Entry Allocation Size */
+              (media_state->urb.num_cs_entries << 0));          /* Number of URB Entries */
+    ADVANCE_BATCH(ctx);
+}
+
+static void 
+i965_media_pipeline_state(VADriverContextP ctx)
+{
+    i965_media_state_base_address(ctx);
+    i965_media_state_pointers(ctx);
+    i965_media_cs_urb_layout(ctx);
+}
+
+static void
+i965_media_constant_buffer(VADriverContextP ctx, struct decode_state *decode_state)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+
+    BEGIN_BATCH(ctx, 2);
+    OUT_BATCH(ctx, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
+    OUT_RELOC(ctx, media_state->curbe.bo,
+              I915_GEM_DOMAIN_INSTRUCTION, 0,
+              media_state->urb.size_cs_entry - 1);
+    ADVANCE_BATCH(ctx);    
+}
+
+static void
+i965_media_pipeline_setup(VADriverContextP ctx, struct decode_state *decode_state)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+
+    intel_batchbuffer_start_atomic(ctx, 0x1000);
+    intel_batchbuffer_emit_mi_flush(ctx);                       /* step 1 */
+    i965_media_pipeline_select(ctx);                            /* step 2 */
+    i965_media_urb_layout(ctx);                                 /* step 3 */
+    i965_media_pipeline_state(ctx);                             /* step 4 */
+    i965_media_constant_buffer(ctx, decode_state);              /* step 5 */
+    assert(media_state->media_objects);
+    media_state->media_objects(ctx, decode_state);              /* step 6 */
+    intel_batchbuffer_end_atomic(ctx);
+}
+
+static void 
+i965_media_decode_init(VADriverContextP ctx, VAProfile profile)
+{
+    int i;
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+    dri_bo *bo;
+
+    /* constant buffer */
+    dri_bo_unreference(media_state->curbe.bo);
+    bo = dri_bo_alloc(i965->intel.bufmgr,
+                      "constant buffer",
+                      4096, 64);
+    assert(bo);
+    media_state->curbe.bo = bo;
+
+    /* surface state */
+    for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
+        dri_bo_unreference(media_state->surface_state[i].bo);
+        media_state->surface_state[i].bo = NULL;
+    }
+
+    /* binding table */
+    dri_bo_unreference(media_state->binding_table.bo);
+    bo = dri_bo_alloc(i965->intel.bufmgr, 
+                      "binding table",
+                      MAX_MEDIA_SURFACES * sizeof(unsigned int), 32);
+    assert(bo);
+    media_state->binding_table.bo = bo;
+
+    /* interface descriptor remapping table */
+    dri_bo_unreference(media_state->idrt.bo);
+    bo = dri_bo_alloc(i965->intel.bufmgr, 
+                      "interface discriptor", 
+                      MAX_INTERFACE_DESC * sizeof(struct i965_interface_descriptor), 16);
+    assert(bo);
+    media_state->idrt.bo = bo;
+
+    /* vfe state */
+    dri_bo_unreference(media_state->vfe_state.bo);
+    bo = dri_bo_alloc(i965->intel.bufmgr, 
+                      "vfe state", 
+                      sizeof(struct i965_vfe_state), 32);
+    assert(bo);
+    media_state->vfe_state.bo = bo;
+
+    /* extended state */
+    media_state->extended_state.enabled = 0;
+
+    switch (profile) {
+    case VAProfileMPEG2Simple:
+    case VAProfileMPEG2Main:
+        i965_media_mpeg2_decode_init(ctx);
+        break;
+
+    default:
+        assert(0);
+        break;
+    }
+}
+
+void 
+i965_media_decode_picture(VADriverContextP ctx, 
+                          VAProfile profile, 
+                          struct decode_state *decode_state)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+
+    i965_media_decode_init(ctx, profile);
+    assert(media_state->states_setup);
+    media_state->states_setup(ctx, decode_state);
+    i965_media_pipeline_setup(ctx, decode_state);
+    intel_batchbuffer_flush(ctx);
+}
+
+Bool 
+i965_media_init(VADriverContextP ctx)
+{
+    i965_media_mpeg2_init(ctx);
+    return True;
+}
+
+Bool 
+i965_media_terminate(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+    int i;
+
+    for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
+        dri_bo_unreference(media_state->surface_state[i].bo);
+        media_state->surface_state[i].bo = NULL;
+    }
+    
+    dri_bo_unreference(media_state->extended_state.bo);
+    media_state->extended_state.bo = NULL;
+
+    dri_bo_unreference(media_state->vfe_state.bo);
+    media_state->vfe_state.bo = NULL;
+
+    dri_bo_unreference(media_state->idrt.bo);
+    media_state->idrt.bo = NULL;
+
+    dri_bo_unreference(media_state->binding_table.bo);
+    media_state->binding_table.bo = NULL;
+
+    dri_bo_unreference(media_state->curbe.bo);
+    media_state->curbe.bo = NULL;
+
+    i965_media_mpeg2_ternimate(ctx);
+    return True;
+}
+
diff --git a/i965_drv_video/i965_media.h b/i965_drv_video/i965_media.h
new file mode 100644
index 0000000..e207f4e
--- /dev/null
+++ b/i965_drv_video/i965_media.h
@@ -0,0 +1,105 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Xiang Haihao <haihao.xiang@intel.com>
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *
+ */
+
+#ifndef _I965_MEDIA_H_
+#define _I965_MEDIA_H_
+
+#include <xf86drm.h>
+#include <drm.h>
+#include <i915_drm.h>
+#include <intel_bufmgr.h>
+
+#include "i965_structs.h"
+
+#define MAX_INTERFACE_DESC      16
+#define MAX_MEDIA_SURFACES      32
+
+#define MPEG_TOP_FIELD		1
+#define MPEG_BOTTOM_FIELD	2
+#define MPEG_FRAME		3
+
+struct decode_state;
+
+struct media_kernel 
+{
+    char *name;
+    int interface;
+    unsigned int (*bin)[4];
+    int size;
+    dri_bo *bo;
+};
+
+struct i965_media_state 
+{
+    struct {
+        dri_bo *bo;
+    } surface_state[MAX_MEDIA_SURFACES];
+
+    struct {
+        dri_bo *bo;
+    } binding_table;
+
+    struct {
+        dri_bo *bo;
+    } idrt;  /* interface descriptor remap table */
+
+    struct {
+        dri_bo *bo;
+        int enabled;
+    } extended_state;
+
+    struct {
+        dri_bo *bo;
+    } vfe_state;
+
+    struct {
+        dri_bo *bo;
+    } curbe;
+
+    struct {
+        unsigned int vfe_start;
+        unsigned int cs_start;
+
+        unsigned int num_vfe_entries;
+        unsigned int num_cs_entries;
+
+        unsigned int size_vfe_entry;
+        unsigned int size_cs_entry;
+    } urb;
+
+    void (*states_setup)(VADriverContextP ctx, struct decode_state *decode_state);
+    void (*media_objects)(VADriverContextP ctx, struct decode_state *decode_state);
+};
+
+Bool i965_media_init(VADriverContextP ctx);
+Bool i965_media_terminate(VADriverContextP ctx);
+void i965_media_decode_picture(VADriverContextP ctx, 
+                               VAProfile profile, 
+                               struct decode_state *decode_state);
+#endif /* _I965_MEDIA_H_ */
diff --git a/i965_drv_video/i965_media_mpeg2.c b/i965_drv_video/i965_media_mpeg2.c
new file mode 100644
index 0000000..17b4679
--- /dev/null
+++ b/i965_drv_video/i965_media_mpeg2.c
@@ -0,0 +1,957 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Xiang Haihao <haihao.xiang@intel.com>
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+#include "va_backend.h"
+
+#include "intel_batchbuffer.h"
+#include "intel_driver.h"
+
+#include "i965_defines.h"
+#include "i965_media.h"
+#include "i965_media_mpeg2.h"
+#include "i965_drv_video.h"
+
+#define SURFACE_TARGET	    0
+#define SURFACE_FORWARD	    1
+#define SURFACE_BACKWARD    2
+#define SURFACE_BIDIRECT    3
+
+enum interface {
+    FRAME_INTRA = 0,
+    FRAME_FRAME_PRED_FORWARD,
+    FRAME_FRAME_PRED_BACKWARD,
+    FRAME_FRAME_PRED_BIDIRECT,
+    FRAME_FIELD_PRED_FORWARD,
+    FRAME_FIELD_PRED_BACKWARD,
+    FRAME_FIELD_PRED_BIDIRECT,
+    LIB_INTERFACE,
+    FIELD_INTRA,
+    FIELD_FORWARD,
+    FIELD_FORWARD_16X8,
+    FIELD_BACKWARD,
+    FIELD_BACKWARD_16X8,
+    FIELD_BIDIRECT,
+    FIELD_BIDIRECT_16X8
+};
+
+/* idct table */
+#define C0 23170
+#define C1 22725
+#define C2 21407
+#define C3 19266
+#define C4 16383
+#define C5 12873
+#define C6 8867
+#define C7 4520
+const uint32_t idct_table[] = {
+    C4, C1, C2, C3, C4, C5, C6, C7,             //g5
+    C4, C1, C2, C3, C4, C5, C6, C7,
+    C4, C3, C6,-C7,-C4,-C1,-C2,-C5,
+    C4, C3, C6,-C7,-C4,-C1,-C2,-C5,
+    C4, C5,-C6,-C1,-C4, C7, C2, C3,
+    C4, C5,-C6,-C1,-C4, C7, C2, C3,
+    C4, C7,-C2,-C5, C4, C3,-C6,-C1,
+    C4, C7,-C2,-C5, C4, C3,-C6,-C1,
+    C4,-C7,-C2, C5, C4,-C3,-C6, C1,
+    C4,-C7,-C2, C5, C4,-C3,-C6, C1,
+    C4,-C5,-C6, C1,-C4,-C7, C2,-C3,
+    C4,-C5,-C6, C1,-C4,-C7, C2,-C3,
+    C4,-C3, C6, C7,-C4, C1,-C2, C5,
+    C4,-C3, C6, C7,-C4, C1,-C2, C5,
+    C4,-C1, C2,-C3, C4,-C5, C6,-C7,
+    C4,-C1, C2,-C3, C4,-C5, C6,-C7              //g20
+};
+#undef C0
+#undef C1
+#undef C2
+#undef C3
+#undef C4
+#undef C5
+#undef C6
+#undef C7
+
+const uint32_t zigzag_direct[64] = {
+    0,   1,  8, 16,  9,  2,  3, 10,
+    17, 24, 32, 25, 18, 11,  4,  5,
+    12, 19, 26, 33, 40, 48, 41, 34,
+    27, 20, 13,  6,  7, 14, 21, 28,
+    35, 42, 49, 56, 57, 50, 43, 36,
+    29, 22, 15, 23, 30, 37, 44, 51,
+    58, 59, 52, 45, 38, 31, 39, 46,
+    53, 60, 61, 54, 47, 55, 62, 63
+};
+
+static uint32_t frame_intra_kernel[][4] = {
+   #include "shaders/mpeg2/vld/frame_intra.g4b"
+};
+static uint32_t frame_frame_pred_forward_kernel[][4] = {
+   #include "shaders/mpeg2/vld/frame_frame_pred_forward.g4b"
+};
+static uint32_t frame_frame_pred_backward_kernel[][4] = {
+   #include "shaders/mpeg2/vld/frame_frame_pred_backward.g4b"
+};
+static uint32_t frame_frame_pred_bidirect_kernel[][4] = {
+   #include "shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b"
+};
+static uint32_t frame_field_pred_forward_kernel[][4] = {
+   #include "shaders/mpeg2/vld/frame_field_pred_forward.g4b"
+};
+static uint32_t frame_field_pred_backward_kernel[][4] = {
+   #include "shaders/mpeg2/vld/frame_field_pred_backward.g4b"
+};
+static uint32_t frame_field_pred_bidirect_kernel[][4] = {
+   #include "shaders/mpeg2/vld/frame_field_pred_bidirect.g4b"
+};
+static uint32_t lib_kernel[][4] = {
+   #include "shaders/mpeg2/vld/lib.g4b"
+};
+/*field picture*/
+static uint32_t field_intra_kernel[][4] = {
+   #include "shaders/mpeg2/vld/field_intra.g4b"
+};
+static uint32_t field_forward_kernel[][4] = {
+   #include "shaders/mpeg2/vld/field_forward.g4b"
+};
+static uint32_t field_forward_16x8_kernel[][4] = {
+   #include "shaders/mpeg2/vld/field_forward_16x8.g4b"
+};
+static uint32_t field_backward_kernel[][4] = {
+   #include "shaders/mpeg2/vld/field_backward.g4b"
+};
+static uint32_t field_backward_16x8_kernel[][4] = {
+   #include "shaders/mpeg2/vld/field_backward_16x8.g4b"
+};
+static uint32_t field_bidirect_kernel[][4] = {
+   #include "shaders/mpeg2/vld/field_bidirect.g4b"
+};
+static uint32_t field_bidirect_16x8_kernel[][4] = {
+   #include "shaders/mpeg2/vld/field_bidirect_16x8.g4b"
+};
+
+static struct media_kernel  mpeg2_vld_kernels_gen4[] = {
+    {
+        "FRAME_INTRA",
+        FRAME_INTRA,
+        frame_intra_kernel, 
+        sizeof(frame_intra_kernel),
+        NULL
+    },
+
+    {
+        "FRAME_FRAME_PRED_FORWARD",
+    	FRAME_FRAME_PRED_FORWARD,
+        frame_frame_pred_forward_kernel, 
+        sizeof(frame_frame_pred_forward_kernel),
+        NULL
+    },
+
+    {
+        "FRAME_FRAME_PRED_BACKWARD",
+        FRAME_FRAME_PRED_BACKWARD,
+        frame_frame_pred_backward_kernel, 
+        sizeof(frame_frame_pred_backward_kernel),
+        NULL
+    },
+
+    {   
+        "FRAME_FRAME_PRED_BIDIRECT",
+        FRAME_FRAME_PRED_BIDIRECT,
+        frame_frame_pred_bidirect_kernel, 
+        sizeof(frame_frame_pred_bidirect_kernel),
+        NULL
+    },
+
+    {
+        "FRAME_FIELD_PRED_FORWARD",
+        FRAME_FIELD_PRED_FORWARD,
+        frame_field_pred_forward_kernel, 
+        sizeof(frame_field_pred_forward_kernel),
+        NULL
+    },
+
+    {
+        "FRAME_FIELD_PRED_BACKWARD",
+        FRAME_FIELD_PRED_BACKWARD,
+        frame_field_pred_backward_kernel, 
+        sizeof(frame_field_pred_backward_kernel),
+        NULL
+    },
+
+    {
+        "FRAME_FIELD_PRED_BIDIRECT",
+        FRAME_FIELD_PRED_BIDIRECT,
+        frame_field_pred_bidirect_kernel, 
+        sizeof(frame_field_pred_bidirect_kernel),
+        NULL
+    },
+    
+    {   
+        "LIB",
+        LIB_INTERFACE,
+        lib_kernel, 
+        sizeof(lib_kernel),
+        NULL
+    },
+
+    {
+        "FIELD_INTRA",
+        FIELD_INTRA,
+        field_intra_kernel, 
+        sizeof(field_intra_kernel),
+        NULL
+    },
+
+    {
+        "FIELD_FORWARD",
+        FIELD_FORWARD,
+        field_forward_kernel, 
+        sizeof(field_forward_kernel),
+        NULL
+    },
+
+    {
+        "FIELD_FORWARD_16X8",
+        FIELD_FORWARD_16X8,
+        field_forward_16x8_kernel, 
+        sizeof(field_forward_16x8_kernel),
+        NULL
+    },
+
+    {
+        "FIELD_BACKWARD",
+        FIELD_BACKWARD,
+        field_backward_kernel, 
+        sizeof(field_backward_kernel),
+        NULL
+    },
+
+    {
+        "FIELD_BACKWARD_16X8",
+        FIELD_BACKWARD_16X8,
+        field_backward_16x8_kernel, 
+        sizeof(field_backward_16x8_kernel),
+        NULL
+    },
+
+    {
+        "FIELD_BIDIRECT",
+        FIELD_BIDIRECT,
+        field_bidirect_kernel, 
+        sizeof(field_bidirect_kernel),
+        NULL
+    },
+
+    {
+        "FIELD_BIDIRECT_16X8",
+        FIELD_BIDIRECT_16X8,
+        field_bidirect_16x8_kernel, 
+        sizeof(field_bidirect_16x8_kernel),
+        NULL
+    }
+};
+
+/* On IGDNG */
+static uint32_t frame_intra_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/frame_intra.g4b.gen5"
+};
+static uint32_t frame_frame_pred_forward_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5"
+};
+static uint32_t frame_frame_pred_backward_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5"
+};
+static uint32_t frame_frame_pred_bidirect_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5"
+};
+static uint32_t frame_field_pred_forward_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5"
+};
+static uint32_t frame_field_pred_backward_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5"
+};
+static uint32_t frame_field_pred_bidirect_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen5"
+};
+static uint32_t lib_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/lib.g4b.gen5"
+};
+/*field picture*/
+static uint32_t field_intra_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/field_intra.g4b.gen5"
+};
+static uint32_t field_forward_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/field_forward.g4b.gen5"
+};
+static uint32_t field_forward_16x8_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/field_forward_16x8.g4b.gen5"
+};
+static uint32_t field_backward_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/field_backward.g4b.gen5"
+};
+static uint32_t field_backward_16x8_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/field_backward_16x8.g4b.gen5"
+};
+static uint32_t field_bidirect_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/field_bidirect.g4b.gen5"
+};
+static uint32_t field_bidirect_16x8_kernel_gen5[][4] = {
+   #include "shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen5"
+};
+
+static struct media_kernel  mpeg2_vld_kernels_gen5[] = {
+    {
+        "FRAME_INTRA",
+        FRAME_INTRA,
+        frame_intra_kernel_gen5, 
+        sizeof(frame_intra_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FRAME_FRAME_PRED_FORWARD",
+    	FRAME_FRAME_PRED_FORWARD,
+        frame_frame_pred_forward_kernel_gen5, 
+        sizeof(frame_frame_pred_forward_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FRAME_FRAME_PRED_BACKWARD",
+        FRAME_FRAME_PRED_BACKWARD,
+        frame_frame_pred_backward_kernel_gen5, 
+        sizeof(frame_frame_pred_backward_kernel_gen5),
+        NULL
+    },
+
+    {   
+        "FRAME_FRAME_PRED_BIDIRECT",
+        FRAME_FRAME_PRED_BIDIRECT,
+        frame_frame_pred_bidirect_kernel_gen5, 
+        sizeof(frame_frame_pred_bidirect_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FRAME_FIELD_PRED_FORWARD",
+        FRAME_FIELD_PRED_FORWARD,
+        frame_field_pred_forward_kernel_gen5, 
+        sizeof(frame_field_pred_forward_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FRAME_FIELD_PRED_BACKWARD",
+        FRAME_FIELD_PRED_BACKWARD,
+        frame_field_pred_backward_kernel_gen5, 
+        sizeof(frame_field_pred_backward_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FRAME_FIELD_PRED_BIDIRECT",
+        FRAME_FIELD_PRED_BIDIRECT,
+        frame_field_pred_bidirect_kernel_gen5, 
+        sizeof(frame_field_pred_bidirect_kernel_gen5),
+        NULL
+    },
+    
+    {   
+        "LIB",
+        LIB_INTERFACE,
+        lib_kernel_gen5, 
+        sizeof(lib_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FIELD_INTRA",
+        FIELD_INTRA,
+        field_intra_kernel_gen5, 
+        sizeof(field_intra_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FIELD_FORWARD",
+        FIELD_FORWARD,
+        field_forward_kernel_gen5, 
+        sizeof(field_forward_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FIELD_FORWARD_16X8",
+        FIELD_FORWARD_16X8,
+        field_forward_16x8_kernel_gen5, 
+        sizeof(field_forward_16x8_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FIELD_BACKWARD",
+        FIELD_BACKWARD,
+        field_backward_kernel_gen5, 
+        sizeof(field_backward_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FIELD_BACKWARD_16X8",
+        FIELD_BACKWARD_16X8,
+        field_backward_16x8_kernel_gen5, 
+        sizeof(field_backward_16x8_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FIELD_BIDIRECT",
+        FIELD_BIDIRECT,
+        field_bidirect_kernel_gen5, 
+        sizeof(field_bidirect_kernel_gen5),
+        NULL
+    },
+
+    {
+        "FIELD_BIDIRECT_16X8",
+        FIELD_BIDIRECT_16X8,
+        field_bidirect_16x8_kernel_gen5, 
+        sizeof(field_bidirect_16x8_kernel_gen5),
+        NULL
+    }
+};
+
+static struct media_kernel  *mpeg2_vld_kernels = NULL;
+
+#define NUM_MPEG2_VLD_KERNELS (sizeof(mpeg2_vld_kernels_gen4)/sizeof(mpeg2_vld_kernels_gen4[0]))
+
+static void
+i965_media_mpeg2_surface_state(VADriverContextP ctx, 
+                               int index,
+                               struct object_surface *obj_surface,
+                               unsigned long offset, 
+                               int w, int h,
+                               Bool is_dst,
+			       int vert_line_stride,
+			       int vert_line_stride_ofs)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);  
+    struct i965_media_state *media_state = &i965->media_state;
+    struct i965_surface_state *ss;
+    dri_bo *bo;
+    uint32_t write_domain, read_domain;
+
+    bo = dri_bo_alloc(i965->intel.bufmgr, 
+                      "surface state", 
+                      sizeof(struct i965_surface_state), 32);
+    assert(bo);
+    dri_bo_map(bo, 1);
+    assert(bo->virtual);
+    ss = bo->virtual;
+    memset(ss, 0, sizeof(*ss));
+    ss->ss0.surface_type = I965_SURFACE_2D;
+    ss->ss0.surface_format = I965_SURFACEFORMAT_R8_SINT;
+    ss->ss0.vert_line_stride = vert_line_stride;
+    ss->ss0.vert_line_stride_ofs = vert_line_stride_ofs;
+    ss->ss1.base_addr = obj_surface->bo->offset + offset;
+    ss->ss2.width = w - 1;
+    ss->ss2.height = h - 1;
+    ss->ss3.pitch = w - 1;
+
+    if (is_dst) {
+        write_domain = I915_GEM_DOMAIN_RENDER;
+        read_domain = I915_GEM_DOMAIN_RENDER;
+    } else {
+        write_domain = 0;
+        read_domain = I915_GEM_DOMAIN_SAMPLER;
+    }
+
+    dri_bo_emit_reloc(bo,
+                      read_domain, write_domain,
+                      offset,
+                      offsetof(struct i965_surface_state, ss1),
+                      obj_surface->bo);
+    dri_bo_unmap(bo);
+
+    assert(index < MAX_MEDIA_SURFACES);
+//    assert(media_state->surface_state[index].bo == NULL);
+    media_state->surface_state[index].bo = bo;
+}
+
+static void
+i965_media_mpeg2_surface_setup(VADriverContextP ctx, 
+                               int base_index,
+                               struct object_surface *obj_surface, 
+                               Bool is_dst, 
+			       int picture_structure,
+			       int surface)
+{
+    int w = obj_surface->width;
+    int h = obj_surface->height;
+
+    if (picture_structure == MPEG_FRAME) {
+	i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
+					0, w, h, 
+					is_dst, 0, 0);
+	i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
+					w * h, w / 2, h / 2, 
+					is_dst, 0, 0);
+	i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
+					w * h + w * h / 4, w / 2, h / 2, 
+					is_dst, 0, 0);
+    } else {
+	if (surface == SURFACE_TARGET) {
+	    i965_media_mpeg2_surface_state(ctx, 3, obj_surface,
+					    0, w, h, 
+					    False, 0, 0);
+	    i965_media_mpeg2_surface_state(ctx, 10, obj_surface,
+					    w * h, w / 2, h / 2, 
+					    False, 0, 0);
+	    i965_media_mpeg2_surface_state(ctx, 11, obj_surface,
+					    w * h + w * h / 4, w / 2, h / 2, 
+					    False, 0, 0);
+	    if (picture_structure == MPEG_TOP_FIELD) {
+		i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
+						0, w, h, 
+						True, 1, 0);
+		i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
+						w * h, w / 2, h / 2, 
+						True, 1, 0);
+		i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
+						w * h + w * h / 4, w / 2, h / 2, 
+						True, 1, 0);
+	    } else {
+		assert(picture_structure == MPEG_BOTTOM_FIELD);
+		i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
+						0, w, h, 
+						True, 1, 1);
+		i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
+						w * h, w / 2, h / 2, 
+						True, 1, 1);
+		i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
+						w * h + w * h / 4, w / 2, h / 2, 
+						True, 1, 1);
+	    }
+	} else {
+	    i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
+					    0, w, h, 
+					    is_dst, 0, 0);
+	    i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
+					    w * h, w / 2, h / 2, 
+					    is_dst, 0, 0);
+	    i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
+					    w * h + w * h / 4, w / 2, h / 2, 
+					    is_dst, 0, 0);
+	}
+    }
+}
+
+void 
+i965_media_mpeg2_surfaces_setup(VADriverContextP ctx, 
+                                struct decode_state *decode_state)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);  
+    struct object_surface *obj_surface;
+    VAPictureParameterBufferMPEG2 *param;
+
+    assert(decode_state->pic_param && decode_state->pic_param->buffer);
+    param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
+
+    obj_surface = SURFACE(decode_state->current_render_target);
+    assert(obj_surface);
+    i965_media_mpeg2_surface_setup(ctx, 0, obj_surface, True,
+		param->picture_coding_extension.bits.picture_structure, SURFACE_TARGET);
+
+    obj_surface = SURFACE(param->forward_reference_picture);
+    if (!obj_surface) {
+//        assert(param->picture_coding_type == 1); /* I-picture */
+    } else {
+        i965_media_mpeg2_surface_setup(ctx, 4, obj_surface, False,
+			param->picture_coding_extension.bits.picture_structure, SURFACE_FORWARD);
+        obj_surface = SURFACE(param->backward_reference_picture);
+        if (!obj_surface) {
+            assert(param->picture_coding_type == 2); /* P-picture */
+
+            obj_surface = SURFACE(param->forward_reference_picture);
+            i965_media_mpeg2_surface_setup(ctx, 7, obj_surface, False,
+				param->picture_coding_extension.bits.picture_structure, SURFACE_BACKWARD);            
+        } else {
+            assert(param->picture_coding_type == 3); /* B-picture */
+            i965_media_mpeg2_surface_setup(ctx, 7, obj_surface, False,
+				param->picture_coding_extension.bits.picture_structure, SURFACE_BIDIRECT);
+        }
+    }
+}
+
+static void
+i965_media_mpeg2_binding_table(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+    int i;
+    unsigned int *binding_table;
+    dri_bo *bo = media_state->binding_table.bo;
+
+    dri_bo_map(bo, 1);
+    assert(bo->virtual);
+    binding_table = bo->virtual;
+    memset(binding_table, 0, bo->size);
+
+    for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
+        if (media_state->surface_state[i].bo) {
+            binding_table[i] = media_state->surface_state[i].bo->offset;
+            dri_bo_emit_reloc(bo,
+                              I915_GEM_DOMAIN_INSTRUCTION, 0,
+                              0,
+                              i * sizeof(*binding_table),
+                              media_state->surface_state[i].bo);
+        }
+    }
+
+    dri_bo_unmap(media_state->binding_table.bo);
+}
+
+static void
+i965_media_mpeg2_vfe_state(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+    struct i965_vfe_state *vfe_state;
+    dri_bo *bo;
+
+    bo = media_state->vfe_state.bo;
+    dri_bo_map(bo, 1);
+    assert(bo->virtual);
+    vfe_state = bo->virtual;
+    memset(vfe_state, 0, sizeof(*vfe_state));
+    vfe_state->vfe0.extend_vfe_state_present = 1;
+    vfe_state->vfe1.vfe_mode = VFE_VLD_MODE;
+    vfe_state->vfe1.num_urb_entries = media_state->urb.num_vfe_entries;
+    vfe_state->vfe1.children_present = 0;
+    vfe_state->vfe1.urb_entry_alloc_size = media_state->urb.size_vfe_entry - 1;
+    vfe_state->vfe1.max_threads = media_state->urb.num_vfe_entries - 1;
+    vfe_state->vfe2.interface_descriptor_base = 
+        media_state->idrt.bo->offset >> 4; /* reloc */
+    dri_bo_emit_reloc(bo,
+                      I915_GEM_DOMAIN_INSTRUCTION, 0,
+                      0,
+                      offsetof(struct i965_vfe_state, vfe2),
+                      media_state->idrt.bo);
+    dri_bo_unmap(bo);
+}
+
+static void 
+i965_media_mpeg2_interface_descriptor_remap_table(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+    struct i965_interface_descriptor *desc;
+    int i;
+    dri_bo *bo;
+
+    bo = media_state->idrt.bo;
+    dri_bo_map(bo, 1);
+    assert(bo->virtual);
+    desc = bo->virtual;
+
+    for (i = 0; i < NUM_MPEG2_VLD_KERNELS; i++) {
+        memset(desc, 0, sizeof(*desc));
+        desc->desc0.grf_reg_blocks = 15;
+        desc->desc0.kernel_start_pointer = mpeg2_vld_kernels[i].bo->offset >> 6; /* reloc */
+        desc->desc1.const_urb_entry_read_offset = 0;
+        desc->desc1.const_urb_entry_read_len = 30;
+        desc->desc3.binding_table_entry_count = 0;
+        desc->desc3.binding_table_pointer = 
+            media_state->binding_table.bo->offset >> 5; /*reloc */
+
+        dri_bo_emit_reloc(bo,
+                          I915_GEM_DOMAIN_INSTRUCTION, 0,
+                          desc->desc0.grf_reg_blocks,
+                          i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc0),
+                          mpeg2_vld_kernels[i].bo);
+
+        dri_bo_emit_reloc(bo,
+                          I915_GEM_DOMAIN_INSTRUCTION, 0,
+                          desc->desc3.binding_table_entry_count,
+                          i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc3),
+                          media_state->binding_table.bo);
+        desc++;
+    }
+
+    dri_bo_unmap(bo);
+}
+
+void
+i965_media_mpeg2_vld_state(VADriverContextP ctx, struct decode_state *decode_state)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+    struct i965_vld_state *vld_state;
+    VAPictureParameterBufferMPEG2 *param;
+
+    assert(decode_state->pic_param && decode_state->pic_param->buffer);
+    param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
+
+    assert(media_state->extended_state.bo);
+    dri_bo_map(media_state->extended_state.bo, 1);
+    assert(media_state->extended_state.bo->virtual);
+    vld_state = media_state->extended_state.bo->virtual;
+    memset(vld_state, 0, sizeof(*vld_state));
+
+    vld_state->vld0.f_code_0_0 = ((param->f_code >> 12) & 0xf);
+    vld_state->vld0.f_code_0_1 = ((param->f_code >> 8) & 0xf);
+    vld_state->vld0.f_code_1_0 = ((param->f_code >> 4) & 0xf);
+    vld_state->vld0.f_code_1_1 = (param->f_code & 0xf);
+    vld_state->vld0.intra_dc_precision = param->picture_coding_extension.bits.intra_dc_precision;
+    vld_state->vld0.picture_structure = param->picture_coding_extension.bits.picture_structure;
+    vld_state->vld0.top_field_first = param->picture_coding_extension.bits.top_field_first;
+    vld_state->vld0.frame_predict_frame_dct = param->picture_coding_extension.bits.frame_pred_frame_dct;
+    vld_state->vld0.concealment_motion_vector = param->picture_coding_extension.bits.concealment_motion_vectors;
+    vld_state->vld0.quantizer_scale_type = param->picture_coding_extension.bits.q_scale_type;
+    vld_state->vld0.intra_vlc_format = param->picture_coding_extension.bits.intra_vlc_format;
+    vld_state->vld0.scan_order = param->picture_coding_extension.bits.alternate_scan;
+
+    vld_state->vld1.picture_coding_type = param->picture_coding_type;
+
+    if (vld_state->vld0.picture_structure == MPEG_FRAME) {
+	/*frame picture*/ 
+	vld_state->desc_remap_table0.index_0 = FRAME_INTRA;
+	vld_state->desc_remap_table0.index_1 = FRAME_FRAME_PRED_FORWARD;
+	vld_state->desc_remap_table0.index_2 = FRAME_FIELD_PRED_FORWARD;
+	vld_state->desc_remap_table0.index_3 = FRAME_FIELD_PRED_BIDIRECT; /* dual prime */
+	vld_state->desc_remap_table0.index_4 = FRAME_FRAME_PRED_BACKWARD;
+	vld_state->desc_remap_table0.index_5 = FRAME_FIELD_PRED_BACKWARD;
+	vld_state->desc_remap_table0.index_6 = FRAME_FRAME_PRED_BIDIRECT;
+	vld_state->desc_remap_table0.index_7 = FRAME_FIELD_PRED_BIDIRECT;
+
+	vld_state->desc_remap_table1.index_8 = FRAME_INTRA;
+	vld_state->desc_remap_table1.index_9 = FRAME_FRAME_PRED_FORWARD;
+	vld_state->desc_remap_table1.index_10 = FRAME_FIELD_PRED_FORWARD;
+	vld_state->desc_remap_table1.index_11 = FRAME_FIELD_PRED_BIDIRECT;
+	vld_state->desc_remap_table1.index_12 = FRAME_FRAME_PRED_BACKWARD;
+	vld_state->desc_remap_table1.index_13 = FRAME_FIELD_PRED_BACKWARD;
+	vld_state->desc_remap_table1.index_14 = FRAME_FRAME_PRED_BIDIRECT;
+	vld_state->desc_remap_table1.index_15 = FRAME_FIELD_PRED_BIDIRECT;
+    } else {
+	/*field picture*/
+	vld_state->desc_remap_table0.index_0 = FIELD_INTRA;
+	vld_state->desc_remap_table0.index_1 = FIELD_FORWARD;
+	vld_state->desc_remap_table0.index_2 = FIELD_FORWARD_16X8;
+	vld_state->desc_remap_table0.index_3 = FIELD_BIDIRECT; /* dual prime */
+	vld_state->desc_remap_table0.index_4 = FIELD_BACKWARD;
+	vld_state->desc_remap_table0.index_5 = FIELD_BACKWARD_16X8;
+	vld_state->desc_remap_table0.index_6 = FIELD_BIDIRECT;
+	vld_state->desc_remap_table0.index_7 = FIELD_BIDIRECT_16X8;
+    }
+
+    dri_bo_unmap(media_state->extended_state.bo);
+}
+
+static void
+i965_media_mpeg2_upload_constants(VADriverContextP ctx, struct decode_state *decode_state)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+    int i, j;
+    unsigned char *constant_buffer;
+    unsigned char *qmx;
+    unsigned int *lib_reloc;
+    int lib_reloc_offset = 0;
+
+    dri_bo_map(media_state->curbe.bo, 1);
+    assert(media_state->curbe.bo->virtual);
+    constant_buffer = media_state->curbe.bo->virtual;
+
+    /* iq_matrix */
+    if (decode_state->iq_matrix && decode_state->iq_matrix->buffer) {
+        VAIQMatrixBufferMPEG2 *iq_matrix = (VAIQMatrixBufferMPEG2 *)decode_state->iq_matrix->buffer;
+
+        /* Upload quantisation matrix in row-major order. The mplayer vaapi
+         * patch passes quantisation matrix in zig-zag order to va library.
+         * Do we need a flag in VAIQMatrixBufferMPEG2 to specify the order
+         * of the quantisation matrix?
+         */
+        qmx = constant_buffer;
+        if (iq_matrix->load_intra_quantiser_matrix) {
+            for (i = 0; i < 64; i++) {
+                j = zigzag_direct[i];
+                qmx[j] = iq_matrix->intra_quantiser_matrix[i];
+            }
+        }
+
+        qmx = constant_buffer + 64;
+        if (iq_matrix->load_non_intra_quantiser_matrix) {
+            for (i = 0; i < 64; i++) {
+                j = zigzag_direct[i];
+                qmx[j] = iq_matrix->non_intra_quantiser_matrix[i];
+            }
+        }
+
+        /* no chroma quantisation matrices for 4:2:0 data */
+    }
+
+    /* idct table */
+    memcpy(constant_buffer + 128, idct_table, sizeof(idct_table));
+
+    /* idct lib reloc */
+    lib_reloc_offset = 128 + sizeof(idct_table);
+    lib_reloc = (unsigned int *)(constant_buffer + lib_reloc_offset);
+    for (i = 0; i < 8; i++) {
+        lib_reloc[i] = mpeg2_vld_kernels[LIB_INTERFACE].bo->offset;
+        dri_bo_emit_reloc(media_state->curbe.bo,
+                          I915_GEM_DOMAIN_INSTRUCTION, 0,
+                          0,
+                          lib_reloc_offset + i * sizeof(unsigned int),
+                          mpeg2_vld_kernels[LIB_INTERFACE].bo);
+    }
+
+    dri_bo_unmap(media_state->curbe.bo);
+}
+
+static void
+i965_media_mpeg2_states_setup(VADriverContextP ctx, struct decode_state *decode_state)
+{
+    i965_media_mpeg2_surfaces_setup(ctx, decode_state);
+    i965_media_mpeg2_binding_table(ctx);
+    i965_media_mpeg2_interface_descriptor_remap_table(ctx);
+    i965_media_mpeg2_vld_state(ctx, decode_state);
+    i965_media_mpeg2_vfe_state(ctx);
+    i965_media_mpeg2_upload_constants(ctx, decode_state);
+}
+
+static void
+i965_media_mpeg2_objects(VADriverContextP ctx, struct decode_state *decode_state)
+{
+    int i;
+    VASliceParameterBufferMPEG2 *slice_param;
+
+    assert(decode_state->slice_param && decode_state->slice_param->buffer);
+    slice_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_param->buffer;
+
+    for (i = 0; i < decode_state->num_slices; i++) {
+        assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
+
+        BEGIN_BATCH(ctx, 6);
+        OUT_BATCH(ctx, CMD_MEDIA_OBJECT | 4);
+        OUT_BATCH(ctx, 0);
+        OUT_BATCH(ctx, slice_param->slice_data_size - (slice_param->macroblock_offset >> 3));
+        OUT_RELOC(ctx, decode_state->slice_data->bo, 
+                  I915_GEM_DOMAIN_SAMPLER, 0, 
+                  slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3));
+        OUT_BATCH(ctx, 
+                  ((0 << 24) |     
+                   (slice_param->slice_vertical_position << 16) |
+                   (127 << 8) | 
+                   (slice_param->macroblock_offset & 0x7)));
+        OUT_BATCH(ctx, slice_param->quantiser_scale_code << 24);
+        ADVANCE_BATCH(ctx);          
+        slice_param++;
+    }
+}
+
+void 
+i965_media_mpeg2_decode_init(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_media_state *media_state = &i965->media_state;
+    dri_bo *bo;
+
+    media_state->extended_state.enabled = 1;
+    dri_bo_unreference(media_state->extended_state.bo);
+    bo = dri_bo_alloc(i965->intel.bufmgr, 
+                      "vld state", 
+                      sizeof(struct i965_vld_state), 32);
+    assert(bo);
+    media_state->extended_state.bo = bo;
+
+    /* URB */
+    media_state->urb.num_vfe_entries = 28;
+    media_state->urb.size_vfe_entry = 13;
+
+    media_state->urb.num_cs_entries = 1;
+    media_state->urb.size_cs_entry = 16;
+
+    media_state->urb.vfe_start = 0;
+    media_state->urb.cs_start = media_state->urb.vfe_start + 
+        media_state->urb.num_vfe_entries * media_state->urb.size_vfe_entry;
+    assert(media_state->urb.cs_start + 
+           media_state->urb.num_cs_entries * media_state->urb.size_cs_entry <= URB_SIZE((&i965->intel)));
+
+    /* hook functions */
+    media_state->states_setup = i965_media_mpeg2_states_setup;
+    media_state->media_objects = i965_media_mpeg2_objects;
+
+}
+
+Bool 
+i965_media_mpeg2_init(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    int i;
+
+    /* kernel */
+    assert(NUM_MPEG2_VLD_KERNELS == (sizeof(mpeg2_vld_kernels_gen5) / 
+                                     sizeof(mpeg2_vld_kernels_gen5[0])));
+    assert(NUM_MPEG2_VLD_KERNELS <= MAX_INTERFACE_DESC);
+
+    if (IS_IGDNG(i965->intel.device_id))
+        mpeg2_vld_kernels = mpeg2_vld_kernels_gen5;
+    else
+        mpeg2_vld_kernels = mpeg2_vld_kernels_gen4;
+
+    for (i = 0; i < NUM_MPEG2_VLD_KERNELS; i++) {
+        struct media_kernel *kernel = &mpeg2_vld_kernels[i];
+        kernel->bo = dri_bo_alloc(i965->intel.bufmgr, 
+                                  kernel->name, 
+                                  kernel->size, 64);
+        assert(kernel->bo);
+        dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
+    }
+
+    return True;
+}
+
+Bool 
+i965_media_mpeg2_ternimate(VADriverContextP ctx)
+{
+    int i;
+
+    for (i = 0; i < NUM_MPEG2_VLD_KERNELS; i++) {
+        struct media_kernel *kernel = &mpeg2_vld_kernels[i];
+
+        dri_bo_unreference(kernel->bo);
+        kernel->bo = NULL;
+    }
+
+    return True;
+}
+
diff --git a/i965_drv_video/i965_media_mpeg2.h b/i965_drv_video/i965_media_mpeg2.h
new file mode 100644
index 0000000..bfeda13
--- /dev/null
+++ b/i965_drv_video/i965_media_mpeg2.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Xiang Haihao <haihao.xiang@intel.com>
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *
+ */
+
+#ifndef _I965_MEDIA_MPEG2_H_
+#define _I965_MEDIA_MPEG2_H_
+
+#include <xf86drm.h>
+#include <drm.h>
+#include <i915_drm.h>
+#include <intel_bufmgr.h>
+
+#include "i965_structs.h"
+
+struct decode_state;
+
+Bool i965_media_mpeg2_init(VADriverContextP ctx);
+Bool i965_media_mpeg2_ternimate(VADriverContextP ctx);
+void i965_media_mpeg2_decode_init(VADriverContextP ctx);
+
+#endif /* _I965_MEDIA_MPEG2_H_ */
diff --git a/i965_drv_video/i965_render.c b/i965_drv_video/i965_render.c
new file mode 100644
index 0000000..e897dcd
--- /dev/null
+++ b/i965_drv_video/i965_render.c
@@ -0,0 +1,1496 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Eric Anholt <eric@anholt.net>
+ *    Keith Packard <keithp@keithp.com>
+ *    Xiang Haihao <haihao.xiang@intel.com>
+ *
+ */
+
+/*
+ * Most of rendering codes are ported from xf86-video-intel/src/i965_video.c
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+#include "va_backend.h"
+#include "va_dricommon.h"
+
+#include "intel_batchbuffer.h"
+#include "intel_driver.h"
+
+#include "i965_defines.h"
+#include "i965_render.h"
+#include "i965_drv_video.h"
+
+#define SF_KERNEL_NUM_GRF       16
+#define SF_MAX_THREADS          1
+
+static const unsigned int sf_kernel_static[][4] = 
+{
+#include "shaders/render/exa_sf.g4b"
+};
+
+#define PS_KERNEL_NUM_GRF       32
+#define PS_MAX_THREADS          32
+
+#define I965_GRF_BLOCKS(nreg)	((nreg + 15) / 16 - 1)
+
+static const unsigned int ps_kernel_static[][4] = 
+{
+#include "shaders/render/exa_wm_xy.g4b"
+#include "shaders/render/exa_wm_src_affine.g4b"
+#include "shaders/render/exa_wm_src_sample_planar.g4b"
+#include "shaders/render/exa_wm_yuv_rgb.g4b"
+#include "shaders/render/exa_wm_write.g4b"
+};
+static const unsigned int ps_subpic_kernel_static[][4] = 
+{
+#include "shaders/render/exa_wm_xy.g4b"
+#include "shaders/render/exa_wm_src_affine.g4b"
+#include "shaders/render/exa_wm_blend_subpicture.g4b"
+#include "shaders/render/exa_wm_write.g4b"
+};
+
+/* On IGDNG */
+static const unsigned int sf_kernel_static_gen5[][4] = 
+{
+#include "shaders/render/exa_sf.g4b.gen5"
+};
+
+static const unsigned int ps_kernel_static_gen5[][4] = 
+{
+#include "shaders/render/exa_wm_xy.g4b.gen5"
+#include "shaders/render/exa_wm_src_affine.g4b.gen5"
+#include "shaders/render/exa_wm_src_sample_planar.g4b.gen5"
+#include "shaders/render/exa_wm_yuv_rgb.g4b.gen5"
+#include "shaders/render/exa_wm_write.g4b.gen5"
+};
+static const unsigned int ps_subpic_kernel_static_gen5[][4] = 
+{
+#include "shaders/render/exa_wm_xy.g4b.gen5"
+#include "shaders/render/exa_wm_src_affine.g4b.gen5"
+#include "shaders/render/exa_wm_blend_subpicture.g4b.gen5"
+#include "shaders/render/exa_wm_write.g4b.gen5"
+};
+
+static uint32_t float_to_uint (float f) 
+{
+    union {
+        uint32_t i; 
+        float f;
+    } x;
+
+    x.f = f;
+    return x.i;
+}
+
+enum 
+{
+    SF_KERNEL = 0,
+    PS_KERNEL,
+    PS_SUBPIC_KERNEL
+};
+
+struct render_kernel
+{
+    char *name;
+    const unsigned int (*bin)[4];
+    int size;
+    dri_bo *bo;
+};
+
+static struct render_kernel render_kernels_gen4[] = {
+    {
+        "SF",
+        sf_kernel_static,
+        sizeof(sf_kernel_static),
+        NULL
+    },
+    {
+        "PS",
+        ps_kernel_static,
+        sizeof(ps_kernel_static),
+        NULL
+    },
+
+    {
+        "PS_SUBPIC",
+        ps_subpic_kernel_static,
+        sizeof(ps_subpic_kernel_static),
+        NULL
+    }
+};
+
+static struct render_kernel render_kernels_gen5[] = {
+    {
+        "SF",
+        sf_kernel_static_gen5,
+        sizeof(sf_kernel_static_gen5),
+        NULL
+    },
+    {
+        "PS",
+        ps_kernel_static_gen5,
+        sizeof(ps_kernel_static_gen5),
+        NULL
+    },
+
+    {
+        "PS_SUBPIC",
+        ps_subpic_kernel_static_gen5,
+        sizeof(ps_subpic_kernel_static_gen5),
+        NULL
+    }
+};
+
+static struct render_kernel *render_kernels = NULL;
+
+#define NUM_RENDER_KERNEL (sizeof(render_kernels_gen4)/sizeof(render_kernels_gen4[0]))
+
+#define URB_VS_ENTRIES	      8
+#define URB_VS_ENTRY_SIZE     1
+
+#define URB_GS_ENTRIES	      0
+#define URB_GS_ENTRY_SIZE     0
+
+#define URB_CLIP_ENTRIES      0
+#define URB_CLIP_ENTRY_SIZE   0
+
+#define URB_SF_ENTRIES	      1
+#define URB_SF_ENTRY_SIZE     2
+
+#define URB_CS_ENTRIES	      0
+#define URB_CS_ENTRY_SIZE     0
+
+static void
+i965_render_vs_unit(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    struct i965_vs_unit_state *vs_state;
+
+    dri_bo_map(render_state->vs.state, 1);
+    assert(render_state->vs.state->virtual);
+    vs_state = render_state->vs.state->virtual;
+    memset(vs_state, 0, sizeof(*vs_state));
+
+    if (IS_IGDNG(i965->intel.device_id))
+        vs_state->thread4.nr_urb_entries = URB_VS_ENTRIES >> 2;
+    else
+        vs_state->thread4.nr_urb_entries = URB_VS_ENTRIES;
+
+    vs_state->thread4.urb_entry_allocation_size = URB_VS_ENTRY_SIZE - 1;
+    vs_state->vs6.vs_enable = 0;
+    vs_state->vs6.vert_cache_disable = 1;
+    
+    dri_bo_unmap(render_state->vs.state);
+}
+
+static void
+i965_render_sf_unit(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    struct i965_sf_unit_state *sf_state;
+
+    dri_bo_map(render_state->sf.state, 1);
+    assert(render_state->sf.state->virtual);
+    sf_state = render_state->sf.state->virtual;
+    memset(sf_state, 0, sizeof(*sf_state));
+
+    sf_state->thread0.grf_reg_count = I965_GRF_BLOCKS(SF_KERNEL_NUM_GRF);
+    sf_state->thread0.kernel_start_pointer = render_kernels[SF_KERNEL].bo->offset >> 6;
+
+    sf_state->sf1.single_program_flow = 1; /* XXX */
+    sf_state->sf1.binding_table_entry_count = 0;
+    sf_state->sf1.thread_priority = 0;
+    sf_state->sf1.floating_point_mode = 0; /* Mesa does this */
+    sf_state->sf1.illegal_op_exception_enable = 1;
+    sf_state->sf1.mask_stack_exception_enable = 1;
+    sf_state->sf1.sw_exception_enable = 1;
+
+    /* scratch space is not used in our kernel */
+    sf_state->thread2.per_thread_scratch_space = 0;
+    sf_state->thread2.scratch_space_base_pointer = 0;
+
+    sf_state->thread3.const_urb_entry_read_length = 0; /* no const URBs */
+    sf_state->thread3.const_urb_entry_read_offset = 0; /* no const URBs */
+    sf_state->thread3.urb_entry_read_length = 1; /* 1 URB per vertex */
+    sf_state->thread3.urb_entry_read_offset = 0;
+    sf_state->thread3.dispatch_grf_start_reg = 3;
+
+    sf_state->thread4.max_threads = SF_MAX_THREADS - 1;
+    sf_state->thread4.urb_entry_allocation_size = URB_SF_ENTRY_SIZE - 1;
+    sf_state->thread4.nr_urb_entries = URB_SF_ENTRIES;
+    sf_state->thread4.stats_enable = 1;
+
+    sf_state->sf5.viewport_transform = 0; /* skip viewport */
+
+    sf_state->sf6.cull_mode = I965_CULLMODE_NONE;
+    sf_state->sf6.scissor = 0;
+
+    sf_state->sf7.trifan_pv = 2;
+
+    sf_state->sf6.dest_org_vbias = 0x8;
+    sf_state->sf6.dest_org_hbias = 0x8;
+
+    dri_bo_emit_reloc(render_state->sf.state,
+                      I915_GEM_DOMAIN_INSTRUCTION, 0,
+                      sf_state->thread0.grf_reg_count << 1,
+                      offsetof(struct i965_sf_unit_state, thread0),
+                      render_kernels[SF_KERNEL].bo);
+
+    dri_bo_unmap(render_state->sf.state);
+}
+
+static void 
+i965_render_sampler(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    struct i965_sampler_state *sampler_state;
+    int i;
+    
+    assert(render_state->wm.sampler_count > 0);
+    assert(render_state->wm.sampler_count <= MAX_SAMPLERS);
+
+    dri_bo_map(render_state->wm.sampler, 1);
+    assert(render_state->wm.sampler->virtual);
+    sampler_state = render_state->wm.sampler->virtual;
+    for (i = 0; i < render_state->wm.sampler_count; i++) {
+        memset(sampler_state, 0, sizeof(*sampler_state));
+        sampler_state->ss0.min_filter = I965_MAPFILTER_LINEAR;
+        sampler_state->ss0.mag_filter = I965_MAPFILTER_LINEAR;
+        sampler_state->ss1.r_wrap_mode = I965_TEXCOORDMODE_CLAMP;
+        sampler_state->ss1.s_wrap_mode = I965_TEXCOORDMODE_CLAMP;
+        sampler_state->ss1.t_wrap_mode = I965_TEXCOORDMODE_CLAMP;
+        sampler_state++;
+    }
+
+    dri_bo_unmap(render_state->wm.sampler);
+}
+static void
+i965_subpic_render_wm_unit(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    struct i965_wm_unit_state *wm_state;
+
+    assert(render_state->wm.sampler);
+
+    dri_bo_map(render_state->wm.state, 1);
+    assert(render_state->wm.state->virtual);
+    wm_state = render_state->wm.state->virtual;
+    memset(wm_state, 0, sizeof(*wm_state));
+
+    wm_state->thread0.grf_reg_count = I965_GRF_BLOCKS(PS_KERNEL_NUM_GRF);
+    wm_state->thread0.kernel_start_pointer = render_kernels[PS_SUBPIC_KERNEL].bo->offset >> 6;
+
+    wm_state->thread1.single_program_flow = 1; /* XXX */
+
+    if (IS_IGDNG(i965->intel.device_id))
+        wm_state->thread1.binding_table_entry_count = 0; /* hardware requirement */
+    else
+        wm_state->thread1.binding_table_entry_count = 7;
+
+    wm_state->thread2.scratch_space_base_pointer = 0;
+    wm_state->thread2.per_thread_scratch_space = 0; /* 1024 bytes */
+
+    wm_state->thread3.dispatch_grf_start_reg = 3; /* XXX */
+    wm_state->thread3.const_urb_entry_read_length = 0;
+    wm_state->thread3.const_urb_entry_read_offset = 0;
+    wm_state->thread3.urb_entry_read_length = 1; /* XXX */
+    wm_state->thread3.urb_entry_read_offset = 0; /* XXX */
+
+    wm_state->wm4.stats_enable = 0;
+    wm_state->wm4.sampler_state_pointer = render_state->wm.sampler->offset >> 5; 
+
+    if (IS_IGDNG(i965->intel.device_id))
+        wm_state->wm4.sampler_count = 0;        /* hardware requirement */
+    else
+        wm_state->wm4.sampler_count = (render_state->wm.sampler_count + 3) / 4;
+
+    wm_state->wm5.max_threads = PS_MAX_THREADS - 1;
+    wm_state->wm5.thread_dispatch_enable = 1;
+    wm_state->wm5.enable_16_pix = 1;
+    wm_state->wm5.enable_8_pix = 0;
+    wm_state->wm5.early_depth_test = 1;
+
+    dri_bo_emit_reloc(render_state->wm.state,
+                      I915_GEM_DOMAIN_INSTRUCTION, 0,
+                      wm_state->thread0.grf_reg_count << 1,
+                      offsetof(struct i965_wm_unit_state, thread0),
+                      render_kernels[PS_SUBPIC_KERNEL].bo);
+
+    dri_bo_emit_reloc(render_state->wm.state,
+                      I915_GEM_DOMAIN_INSTRUCTION, 0,
+                      wm_state->wm4.sampler_count << 2,
+                      offsetof(struct i965_wm_unit_state, wm4),
+                      render_state->wm.sampler);
+
+    dri_bo_unmap(render_state->wm.state);
+}
+
+
+static void
+i965_render_wm_unit(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    struct i965_wm_unit_state *wm_state;
+
+    assert(render_state->wm.sampler);
+
+    dri_bo_map(render_state->wm.state, 1);
+    assert(render_state->wm.state->virtual);
+    wm_state = render_state->wm.state->virtual;
+    memset(wm_state, 0, sizeof(*wm_state));
+
+    wm_state->thread0.grf_reg_count = I965_GRF_BLOCKS(PS_KERNEL_NUM_GRF);
+    wm_state->thread0.kernel_start_pointer = render_kernels[PS_KERNEL].bo->offset >> 6;
+
+    wm_state->thread1.single_program_flow = 1; /* XXX */
+
+    if (IS_IGDNG(i965->intel.device_id))
+        wm_state->thread1.binding_table_entry_count = 0;        /* hardware requirement */
+    else
+        wm_state->thread1.binding_table_entry_count = 7;
+
+    wm_state->thread2.scratch_space_base_pointer = 0;
+    wm_state->thread2.per_thread_scratch_space = 0; /* 1024 bytes */
+
+    wm_state->thread3.dispatch_grf_start_reg = 3; /* XXX */
+    wm_state->thread3.const_urb_entry_read_length = 0;
+    wm_state->thread3.const_urb_entry_read_offset = 0;
+    wm_state->thread3.urb_entry_read_length = 1; /* XXX */
+    wm_state->thread3.urb_entry_read_offset = 0; /* XXX */
+
+    wm_state->wm4.stats_enable = 0;
+    wm_state->wm4.sampler_state_pointer = render_state->wm.sampler->offset >> 5; 
+
+    if (IS_IGDNG(i965->intel.device_id))
+        wm_state->wm4.sampler_count = 0;        /* hardware requirement */
+    else 
+        wm_state->wm4.sampler_count = (render_state->wm.sampler_count + 3) / 4;
+
+    wm_state->wm5.max_threads = PS_MAX_THREADS - 1;
+    wm_state->wm5.thread_dispatch_enable = 1;
+    wm_state->wm5.enable_16_pix = 1;
+    wm_state->wm5.enable_8_pix = 0;
+    wm_state->wm5.early_depth_test = 1;
+
+    dri_bo_emit_reloc(render_state->wm.state,
+                      I915_GEM_DOMAIN_INSTRUCTION, 0,
+                      wm_state->thread0.grf_reg_count << 1,
+                      offsetof(struct i965_wm_unit_state, thread0),
+                      render_kernels[PS_KERNEL].bo);
+
+    dri_bo_emit_reloc(render_state->wm.state,
+                      I915_GEM_DOMAIN_INSTRUCTION, 0,
+                      wm_state->wm4.sampler_count << 2,
+                      offsetof(struct i965_wm_unit_state, wm4),
+                      render_state->wm.sampler);
+
+    dri_bo_unmap(render_state->wm.state);
+}
+
+static void 
+i965_render_cc_viewport(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    struct i965_cc_viewport *cc_viewport;
+
+    dri_bo_map(render_state->cc.viewport, 1);
+    assert(render_state->cc.viewport->virtual);
+    cc_viewport = render_state->cc.viewport->virtual;
+    memset(cc_viewport, 0, sizeof(*cc_viewport));
+    
+    cc_viewport->min_depth = -1.e35;
+    cc_viewport->max_depth = 1.e35;
+
+    dri_bo_unmap(render_state->cc.viewport);
+}
+
+static void 
+i965_subpic_render_cc_unit(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    struct i965_cc_unit_state *cc_state;
+
+    assert(render_state->cc.viewport);
+
+    dri_bo_map(render_state->cc.state, 1);
+    assert(render_state->cc.state->virtual);
+    cc_state = render_state->cc.state->virtual;
+    memset(cc_state, 0, sizeof(*cc_state));
+
+    cc_state->cc0.stencil_enable = 0;   /* disable stencil */
+    cc_state->cc2.depth_test = 0;       /* disable depth test */
+    cc_state->cc2.logicop_enable = 0;   /* disable logic op */
+    cc_state->cc3.ia_blend_enable = 0 ;  /* blend alpha just like colors */
+    cc_state->cc3.blend_enable = 1;     /* enable color blend */
+    cc_state->cc3.alpha_test = 0;       /* disable alpha test */
+    cc_state->cc3.alpha_test_format = 0;//0:ALPHATEST_UNORM8;       /*store alpha value with UNORM8 */
+    cc_state->cc3.alpha_test_func = 5;//COMPAREFUNCTION_LESS;       /*pass if less than the reference */
+    cc_state->cc4.cc_viewport_state_offset = render_state->cc.viewport->offset >> 5;
+
+    cc_state->cc5.dither_enable = 0;    /* disable dither */
+    cc_state->cc5.logicop_func = 0xc;   /* WHITE */
+    cc_state->cc5.statistics_enable = 1;
+    cc_state->cc5.ia_blend_function = I965_BLENDFUNCTION_ADD;
+    cc_state->cc5.ia_src_blend_factor = I965_BLENDFACTOR_DST_ALPHA;
+    cc_state->cc5.ia_dest_blend_factor = I965_BLENDFACTOR_DST_ALPHA;
+
+    cc_state->cc6.clamp_post_alpha_blend = 0; 
+    cc_state->cc6.clamp_pre_alpha_blend  =0; 
+    
+    /*final color = src_color*src_blend_factor +/- dst_color*dest_color_blend_factor*/
+    cc_state->cc6.blend_function = I965_BLENDFUNCTION_ADD;
+    cc_state->cc6.src_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
+    cc_state->cc6.dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
+   
+    /*alpha test reference*/
+    cc_state->cc7.alpha_ref.f =0.0 ;
+
+
+    dri_bo_emit_reloc(render_state->cc.state,
+                      I915_GEM_DOMAIN_INSTRUCTION, 0,
+                      0,
+                      offsetof(struct i965_cc_unit_state, cc4),
+                      render_state->cc.viewport);
+
+    dri_bo_unmap(render_state->cc.state);
+}
+
+
+static void 
+i965_render_cc_unit(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    struct i965_cc_unit_state *cc_state;
+
+    assert(render_state->cc.viewport);
+
+    dri_bo_map(render_state->cc.state, 1);
+    assert(render_state->cc.state->virtual);
+    cc_state = render_state->cc.state->virtual;
+    memset(cc_state, 0, sizeof(*cc_state));
+
+    cc_state->cc0.stencil_enable = 0;   /* disable stencil */
+    cc_state->cc2.depth_test = 0;       /* disable depth test */
+    cc_state->cc2.logicop_enable = 1;   /* enable logic op */
+    cc_state->cc3.ia_blend_enable = 0;  /* blend alpha just like colors */
+    cc_state->cc3.blend_enable = 0;     /* disable color blend */
+    cc_state->cc3.alpha_test = 0;       /* disable alpha test */
+    cc_state->cc4.cc_viewport_state_offset = render_state->cc.viewport->offset >> 5;
+
+    cc_state->cc5.dither_enable = 0;    /* disable dither */
+    cc_state->cc5.logicop_func = 0xc;   /* WHITE */
+    cc_state->cc5.statistics_enable = 1;
+    cc_state->cc5.ia_blend_function = I965_BLENDFUNCTION_ADD;
+    cc_state->cc5.ia_src_blend_factor = I965_BLENDFACTOR_ONE;
+    cc_state->cc5.ia_dest_blend_factor = I965_BLENDFACTOR_ONE;
+
+    dri_bo_emit_reloc(render_state->cc.state,
+                      I915_GEM_DOMAIN_INSTRUCTION, 0,
+                      0,
+                      offsetof(struct i965_cc_unit_state, cc4),
+                      render_state->cc.viewport);
+
+    dri_bo_unmap(render_state->cc.state);
+}
+
+static void
+i965_render_src_surface_state(VADriverContextP ctx, 
+                              int index,
+                              dri_bo *region,
+                              unsigned long offset,
+                              int w, int h)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);  
+    struct i965_render_state *render_state = &i965->render_state;
+    struct i965_surface_state *ss;
+    dri_bo *ss_bo;
+
+    ss_bo = dri_bo_alloc(i965->intel.bufmgr, 
+                      "surface state", 
+                      sizeof(struct i965_surface_state), 32);
+    assert(ss_bo);
+    dri_bo_map(ss_bo, 1);
+    assert(ss_bo->virtual);
+    ss = ss_bo->virtual;
+    memset(ss, 0, sizeof(*ss));
+    ss->ss0.surface_type = I965_SURFACE_2D;
+    ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM;
+    ss->ss0.writedisable_alpha = 0;
+    ss->ss0.writedisable_red = 0;
+    ss->ss0.writedisable_green = 0;
+    ss->ss0.writedisable_blue = 0;
+    ss->ss0.color_blend = 1;
+    ss->ss0.vert_line_stride = 0;
+    ss->ss0.vert_line_stride_ofs = 0;
+    ss->ss0.mipmap_layout_mode = 0;
+    ss->ss0.render_cache_read_mode = 0;
+
+    ss->ss1.base_addr = region->offset + offset;
+
+    ss->ss2.width = w - 1;
+    ss->ss2.height = h - 1;
+    ss->ss2.mip_count = 0;
+    ss->ss2.render_target_rotation = 0;
+
+    ss->ss3.pitch = w - 1;
+
+    dri_bo_emit_reloc(ss_bo,
+                      I915_GEM_DOMAIN_SAMPLER, 0,
+                      offset,
+                      offsetof(struct i965_surface_state, ss1),
+                      region);
+
+    dri_bo_unmap(ss_bo);
+
+    assert(index < MAX_RENDER_SURFACES);
+    assert(render_state->wm.surface[index] == NULL);
+    render_state->wm.surface[index] = ss_bo;
+    render_state->wm.sampler_count++;
+}
+static void
+i965_subpic_render_src_surface_state(VADriverContextP ctx, 
+                              int index,
+                              dri_bo *region,
+                              unsigned long offset,
+                              int w, int h)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);  
+    struct i965_render_state *render_state = &i965->render_state;
+    struct i965_surface_state *ss;
+    dri_bo *ss_bo;
+
+    ss_bo = dri_bo_alloc(i965->intel.bufmgr, 
+                      "surface state", 
+                      sizeof(struct i965_surface_state), 32);
+    assert(ss_bo);
+    dri_bo_map(ss_bo, 1);
+    assert(ss_bo->virtual);
+    ss = ss_bo->virtual;
+    memset(ss, 0, sizeof(*ss));
+    ss->ss0.surface_type = I965_SURFACE_2D;
+    ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM;
+    ss->ss0.writedisable_alpha = 0;
+    ss->ss0.writedisable_red = 0;
+    ss->ss0.writedisable_green = 0;
+    ss->ss0.writedisable_blue = 0;
+    ss->ss0.color_blend = 1;
+    ss->ss0.vert_line_stride = 0;
+    ss->ss0.vert_line_stride_ofs = 0;
+    ss->ss0.mipmap_layout_mode = 0;
+    ss->ss0.render_cache_read_mode = 0;
+
+    ss->ss1.base_addr = region->offset + offset;
+
+    ss->ss2.width = w - 1;
+    ss->ss2.height = h - 1;
+    ss->ss2.mip_count = 0;
+    ss->ss2.render_target_rotation = 0;
+
+    ss->ss3.pitch = w - 1;
+
+    dri_bo_emit_reloc(ss_bo,
+                      I915_GEM_DOMAIN_SAMPLER, 0,
+                      offset,
+                      offsetof(struct i965_surface_state, ss1),
+                      region);
+
+    dri_bo_unmap(ss_bo);
+
+    assert(index < MAX_RENDER_SURFACES);
+    assert(render_state->wm.surface[index] == NULL);
+    render_state->wm.surface[index] = ss_bo;
+    render_state->wm.sampler_count++;
+}
+
+static void
+i965_render_src_surfaces_state(VADriverContextP ctx,
+                              VASurfaceID surface)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);  
+    struct object_surface *obj_surface;
+    int w, h;
+    dri_bo *region;
+
+    obj_surface = SURFACE(surface);
+    assert(obj_surface);
+    assert(obj_surface->bo);
+    w = obj_surface->width;
+    h = obj_surface->height;
+    region = obj_surface->bo;
+
+    i965_render_src_surface_state(ctx, 1, region, 0, w, h);     /* Y */
+    i965_render_src_surface_state(ctx, 2, region, 0, w, h);
+    i965_render_src_surface_state(ctx, 3, region, w * h + w * h / 4, w / 2, h / 2);     /* V */
+    i965_render_src_surface_state(ctx, 4, region, w * h + w * h / 4, w / 2, h / 2);
+    i965_render_src_surface_state(ctx, 5, region, w * h, w / 2, h / 2); /* U */
+    i965_render_src_surface_state(ctx, 6, region, w * h, w / 2, h / 2);
+}
+
+static void
+i965_subpic_render_src_surfaces_state(VADriverContextP ctx,
+                              VASurfaceID surface)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);  
+    struct object_surface *obj_surface = SURFACE(surface);
+    int w, h;
+    dri_bo *region;
+    dri_bo *subpic_region;
+    struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic);
+    struct object_image *obj_image = IMAGE(obj_subpic->image);
+    assert(obj_surface);
+    assert(obj_surface->bo);
+    w = obj_surface->width;
+    h = obj_surface->height;
+    region = obj_surface->bo;
+    subpic_region = obj_image->bo;
+    /*subpicture surface*/
+    i965_subpic_render_src_surface_state(ctx, 1, subpic_region, 0, obj_image->width, obj_image->height);     
+    i965_subpic_render_src_surface_state(ctx, 2, subpic_region, 0, obj_image->width, obj_image->height);
+}
+
+static void
+i965_render_set_surface_tiling(struct i965_surface_state *ss, unsigned int tiling)
+{
+    switch (tiling) {
+    case I915_TILING_NONE:
+        ss->ss3.tiled_surface = 0;
+        ss->ss3.tile_walk = 0;
+        break;
+    case I915_TILING_X:
+        ss->ss3.tiled_surface = 1;
+        ss->ss3.tile_walk = I965_TILEWALK_XMAJOR;
+        break;
+    case I915_TILING_Y:
+        ss->ss3.tiled_surface = 1;
+        ss->ss3.tile_walk = I965_TILEWALK_YMAJOR;
+        break;
+    }
+}
+
+static void
+i965_render_dest_surface_state(VADriverContextP ctx, int index)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);  
+    struct i965_render_state *render_state = &i965->render_state;
+    struct intel_region *dest_region = render_state->draw_region;
+    struct i965_surface_state *ss;
+    dri_bo *ss_bo;
+
+    ss_bo = dri_bo_alloc(i965->intel.bufmgr, 
+                      "surface state", 
+                      sizeof(struct i965_surface_state), 32);
+    assert(ss_bo);
+    dri_bo_map(ss_bo, 1);
+    assert(ss_bo->virtual);
+    ss = ss_bo->virtual;
+    memset(ss, 0, sizeof(*ss));
+
+    ss->ss0.surface_type = I965_SURFACE_2D;
+    ss->ss0.data_return_format = I965_SURFACERETURNFORMAT_FLOAT32;
+
+    if (dest_region->cpp == 2) {
+	ss->ss0.surface_format = I965_SURFACEFORMAT_B5G6R5_UNORM;
+	} else {
+	ss->ss0.surface_format = I965_SURFACEFORMAT_B8G8R8A8_UNORM;
+    }
+
+    ss->ss0.writedisable_alpha = 0;
+    ss->ss0.writedisable_red = 0;
+    ss->ss0.writedisable_green = 0;
+    ss->ss0.writedisable_blue = 0;
+    ss->ss0.color_blend = 1;
+    ss->ss0.vert_line_stride = 0;
+    ss->ss0.vert_line_stride_ofs = 0;
+    ss->ss0.mipmap_layout_mode = 0;
+    ss->ss0.render_cache_read_mode = 0;
+
+    ss->ss1.base_addr = dest_region->bo->offset;
+
+    ss->ss2.width = dest_region->width - 1;
+    ss->ss2.height = dest_region->height - 1;
+    ss->ss2.mip_count = 0;
+    ss->ss2.render_target_rotation = 0;
+    ss->ss3.pitch = dest_region->pitch - 1;
+    i965_render_set_surface_tiling(ss, dest_region->tiling);
+
+    dri_bo_emit_reloc(ss_bo,
+                      I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
+                      0,
+                      offsetof(struct i965_surface_state, ss1),
+                      dest_region->bo);
+
+    dri_bo_unmap(ss_bo);
+
+    assert(index < MAX_RENDER_SURFACES);
+    assert(render_state->wm.surface[index] == NULL);
+    render_state->wm.surface[index] = ss_bo;
+}
+
+static void
+i965_render_binding_table(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    int i;
+    unsigned int *binding_table;
+
+    dri_bo_map(render_state->wm.binding_table, 1);
+    assert(render_state->wm.binding_table->virtual);
+    binding_table = render_state->wm.binding_table->virtual;
+    memset(binding_table, 0, render_state->wm.binding_table->size);
+
+    for (i = 0; i < MAX_RENDER_SURFACES; i++) {
+        if (render_state->wm.surface[i]) {
+            binding_table[i] = render_state->wm.surface[i]->offset;
+            dri_bo_emit_reloc(render_state->wm.binding_table,
+                              I915_GEM_DOMAIN_INSTRUCTION, 0,
+                              0,
+                              i * sizeof(*binding_table),
+                              render_state->wm.surface[i]);
+        }
+    }
+
+    dri_bo_unmap(render_state->wm.binding_table);
+}
+
+static void 
+i965_subpic_render_upload_vertex(VADriverContextP ctx,
+                          VASurfaceID surface,
+                          short srcx,
+                          short srcy,
+                          unsigned short srcw,
+                          unsigned short srch,
+                          short destx,
+                          short desty,
+                          unsigned short destw,
+                          unsigned short desth)
+{    
+	struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    struct intel_region *dest_region = render_state->draw_region;
+    struct object_surface *obj_surface;
+    struct object_subpic *obj_subpic;
+    float *vb;
+    float src_scale_x, src_scale_y;
+    int i, width, height;
+    obj_surface = SURFACE(surface);
+    obj_subpic = SUBPIC(obj_surface->subpic);
+    assert(obj_surface);
+    assert(obj_subpic);
+    
+    int box_x1 = dest_region->x + obj_subpic->dstx;
+    int box_y1 = dest_region->y + obj_subpic->dsty;
+    int box_x2 = box_x1 + obj_subpic->width;
+    int box_y2 = box_y1 + obj_subpic->height;
+
+    width = obj_surface->width;
+    height = obj_surface->height;
+    src_scale_x = ((float)srcw / width) / (float)destw;
+    src_scale_y = ((float)srch / height) / (float)desth;
+
+    dri_bo_map(render_state->vb.vertex_buffer, 1);
+    assert(render_state->vb.vertex_buffer->virtual);
+    vb = render_state->vb.vertex_buffer->virtual;
+    /*vertex covers the full subpicture*/
+    i = 0;
+    vb[i++] = 1;
+    vb[i++] = 1;
+    vb[i++] = (float)box_x2;
+    vb[i++] = (float)box_y2;
+    
+    vb[i++] = 0.0;
+    vb[i++] = 1;
+    vb[i++] = (float)box_x1;
+    vb[i++] = (float)box_y2;
+
+    vb[i++] = 0.0;
+    vb[i++] = 0.0;
+    vb[i++] = (float)box_x1;
+    vb[i++] = (float)box_y1;
+    dri_bo_unmap(render_state->vb.vertex_buffer);
+}
+
+static void 
+i965_render_upload_vertex(VADriverContextP ctx,
+                          VASurfaceID surface,
+                          short srcx,
+                          short srcy,
+                          unsigned short srcw,
+                          unsigned short srch,
+                          short destx,
+                          short desty,
+                          unsigned short destw,
+                          unsigned short desth)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    struct intel_region *dest_region = render_state->draw_region;
+    struct object_surface *obj_surface;
+    float *vb;
+
+    float u1, v1, u2, v2;
+    int i, width, height;
+    int box_x1 = dest_region->x + destx;
+    int box_y1 = dest_region->y + desty;
+    int box_x2 = box_x1 + destw;
+    int box_y2 = box_y1 + desth;
+
+    obj_surface = SURFACE(surface);
+    assert(surface);
+    width = obj_surface->width;
+    height = obj_surface->height;
+
+    u1 = (float)srcx / width;
+    v1 = (float)srcy / height;
+    u2 = (float)(srcx + srcw) / width;
+    v2 = (float)(srcy + srch) / height;
+
+    dri_bo_map(render_state->vb.vertex_buffer, 1);
+    assert(render_state->vb.vertex_buffer->virtual);
+    vb = render_state->vb.vertex_buffer->virtual;
+
+    i = 0;
+    vb[i++] = u2;
+    vb[i++] = v2;
+    vb[i++] = (float)box_x2;
+    vb[i++] = (float)box_y2;
+    
+    vb[i++] = u1;
+    vb[i++] = v2;
+    vb[i++] = (float)box_x1;
+    vb[i++] = (float)box_y2;
+
+    vb[i++] = u1;
+    vb[i++] = v1;
+    vb[i++] = (float)box_x1;
+    vb[i++] = (float)box_y1;
+
+    dri_bo_unmap(render_state->vb.vertex_buffer);
+}
+
+static void
+i965_surface_render_state_setup(VADriverContextP ctx,
+                        VASurfaceID surface,
+                        short srcx,
+                        short srcy,
+                        unsigned short srcw,
+                        unsigned short srch,
+                        short destx,
+                        short desty,
+                        unsigned short destw,
+                        unsigned short desth)
+{
+    i965_render_vs_unit(ctx);
+    i965_render_sf_unit(ctx);
+    i965_render_dest_surface_state(ctx, 0);
+    i965_render_src_surfaces_state(ctx, surface);
+    i965_render_sampler(ctx);
+    i965_render_wm_unit(ctx);
+    i965_render_cc_viewport(ctx);
+    i965_render_cc_unit(ctx);
+    i965_render_binding_table(ctx);
+    i965_render_upload_vertex(ctx, surface,
+                              srcx, srcy, srcw, srch,
+                              destx, desty, destw, desth);
+}
+static void
+i965_subpic_render_state_setup(VADriverContextP ctx,
+                        VASurfaceID surface,
+                        short srcx,
+                        short srcy,
+                        unsigned short srcw,
+                        unsigned short srch,
+                        short destx,
+                        short desty,
+                        unsigned short destw,
+                        unsigned short desth)
+{
+    i965_render_vs_unit(ctx);
+    i965_render_sf_unit(ctx);
+    i965_render_dest_surface_state(ctx, 0);
+    i965_subpic_render_src_surfaces_state(ctx, surface);
+    i965_render_sampler(ctx);
+    i965_subpic_render_wm_unit(ctx);
+    i965_render_cc_viewport(ctx);
+    i965_subpic_render_cc_unit(ctx);
+    i965_render_binding_table(ctx);
+    i965_subpic_render_upload_vertex(ctx, surface,
+	    srcx, srcy, srcw, srch,
+	    destx, desty, destw, desth);
+}
+
+
+static void
+i965_render_pipeline_select(VADriverContextP ctx)
+{
+    BEGIN_BATCH(ctx, 1);
+    OUT_BATCH(ctx, CMD_PIPELINE_SELECT | PIPELINE_SELECT_3D);
+    ADVANCE_BATCH(ctx);
+}
+
+static void
+i965_render_state_sip(VADriverContextP ctx)
+{
+    BEGIN_BATCH(ctx, 2);
+    OUT_BATCH(ctx, CMD_STATE_SIP | 0);
+    OUT_BATCH(ctx, 0);
+    ADVANCE_BATCH(ctx);
+}
+
+static void
+i965_render_state_base_address(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+
+    if (IS_IGDNG(i965->intel.device_id)) {
+        BEGIN_BATCH(ctx, 8);
+        OUT_BATCH(ctx, CMD_STATE_BASE_ADDRESS | 6);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        ADVANCE_BATCH(ctx);
+    } else {
+        BEGIN_BATCH(ctx, 6);
+        OUT_BATCH(ctx, CMD_STATE_BASE_ADDRESS | 4);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        OUT_BATCH(ctx, 0 | BASE_ADDRESS_MODIFY);
+        ADVANCE_BATCH(ctx);
+    }
+}
+
+static void
+i965_render_binding_table_pointers(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+
+    BEGIN_BATCH(ctx, 6);
+    OUT_BATCH(ctx, CMD_BINDING_TABLE_POINTERS | 4);
+    OUT_BATCH(ctx, 0); /* vs */
+    OUT_BATCH(ctx, 0); /* gs */
+    OUT_BATCH(ctx, 0); /* clip */
+    OUT_BATCH(ctx, 0); /* sf */
+    OUT_RELOC(ctx, render_state->wm.binding_table, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); /* wm */
+    ADVANCE_BATCH(ctx);
+}
+
+static void 
+i965_render_constant_color(VADriverContextP ctx)
+{
+    BEGIN_BATCH(ctx, 5);
+    OUT_BATCH(ctx, CMD_CONSTANT_COLOR | 3);
+    OUT_BATCH(ctx, float_to_uint(1.0));
+    OUT_BATCH(ctx, float_to_uint(0.0));
+    OUT_BATCH(ctx, float_to_uint(1.0));
+    OUT_BATCH(ctx, float_to_uint(1.0));
+    ADVANCE_BATCH(ctx);
+}
+
+static void
+i965_render_pipelined_pointers(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+
+    BEGIN_BATCH(ctx, 7);
+    OUT_BATCH(ctx, CMD_PIPELINED_POINTERS | 5);
+    OUT_RELOC(ctx, render_state->vs.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
+    OUT_BATCH(ctx, 0);  /* disable GS */
+    OUT_BATCH(ctx, 0);  /* disable CLIP */
+    OUT_RELOC(ctx, render_state->sf.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
+    OUT_RELOC(ctx, render_state->wm.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
+    OUT_RELOC(ctx, render_state->cc.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
+    ADVANCE_BATCH(ctx);
+}
+
+static void
+i965_render_urb_layout(VADriverContextP ctx)
+{
+    int urb_vs_start, urb_vs_size;
+    int urb_gs_start, urb_gs_size;
+    int urb_clip_start, urb_clip_size;
+    int urb_sf_start, urb_sf_size;
+    int urb_cs_start, urb_cs_size;
+
+    urb_vs_start = 0;
+    urb_vs_size = URB_VS_ENTRIES * URB_VS_ENTRY_SIZE;
+    urb_gs_start = urb_vs_start + urb_vs_size;
+    urb_gs_size = URB_GS_ENTRIES * URB_GS_ENTRY_SIZE;
+    urb_clip_start = urb_gs_start + urb_gs_size;
+    urb_clip_size = URB_CLIP_ENTRIES * URB_CLIP_ENTRY_SIZE;
+    urb_sf_start = urb_clip_start + urb_clip_size;
+    urb_sf_size = URB_SF_ENTRIES * URB_SF_ENTRY_SIZE;
+    urb_cs_start = urb_sf_start + urb_sf_size;
+    urb_cs_size = URB_CS_ENTRIES * URB_CS_ENTRY_SIZE;
+
+    BEGIN_BATCH(ctx, 3);
+    OUT_BATCH(ctx, 
+              CMD_URB_FENCE |
+              UF0_CS_REALLOC |
+              UF0_SF_REALLOC |
+              UF0_CLIP_REALLOC |
+              UF0_GS_REALLOC |
+              UF0_VS_REALLOC |
+              1);
+    OUT_BATCH(ctx, 
+              ((urb_clip_start + urb_clip_size) << UF1_CLIP_FENCE_SHIFT) |
+              ((urb_gs_start + urb_gs_size) << UF1_GS_FENCE_SHIFT) |
+              ((urb_vs_start + urb_vs_size) << UF1_VS_FENCE_SHIFT));
+    OUT_BATCH(ctx,
+              ((urb_cs_start + urb_cs_size) << UF2_CS_FENCE_SHIFT) |
+              ((urb_sf_start + urb_sf_size) << UF2_SF_FENCE_SHIFT));
+    ADVANCE_BATCH(ctx);
+}
+
+static void 
+i965_render_cs_urb_layout(VADriverContextP ctx)
+{
+    BEGIN_BATCH(ctx, 2);
+    OUT_BATCH(ctx, CMD_CS_URB_STATE | 0);
+    OUT_BATCH(ctx,
+              ((URB_CS_ENTRY_SIZE - 1) << 4) |          /* URB Entry Allocation Size */
+              (URB_CS_ENTRIES << 0));                /* Number of URB Entries */
+    ADVANCE_BATCH(ctx);
+}
+
+static void
+i965_render_drawing_rectangle(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);  
+    struct i965_render_state *render_state = &i965->render_state;
+    struct intel_region *dest_region = render_state->draw_region;
+
+    BEGIN_BATCH(ctx, 4);
+    OUT_BATCH(ctx, CMD_DRAWING_RECTANGLE | 2);
+    OUT_BATCH(ctx, 0x00000000);
+    OUT_BATCH(ctx, (dest_region->width - 1) | (dest_region->height - 1) << 16);
+    OUT_BATCH(ctx, 0x00000000);         
+    ADVANCE_BATCH(ctx);
+}
+
+static void
+i965_render_vertex_elements(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);  
+
+    if (IS_IGDNG(i965->intel.device_id)) {
+        BEGIN_BATCH(ctx, 5);
+        OUT_BATCH(ctx, CMD_VERTEX_ELEMENTS | 3);
+        /* offset 0: X,Y -> {X, Y, 1.0, 1.0} */
+        OUT_BATCH(ctx, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
+                  VE0_VALID |
+                  (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
+                  (0 << VE0_OFFSET_SHIFT));
+        OUT_BATCH(ctx, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
+        /* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */
+        OUT_BATCH(ctx, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
+                  VE0_VALID |
+                  (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
+                  (8 << VE0_OFFSET_SHIFT));
+        OUT_BATCH(ctx, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
+        ADVANCE_BATCH(ctx);
+    } else {
+        BEGIN_BATCH(ctx, 5);
+        OUT_BATCH(ctx, CMD_VERTEX_ELEMENTS | 3);
+        /* offset 0: X,Y -> {X, Y, 1.0, 1.0} */
+        OUT_BATCH(ctx, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
+                  VE0_VALID |
+                  (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
+                  (0 << VE0_OFFSET_SHIFT));
+        OUT_BATCH(ctx, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT) |
+                  (0 << VE1_DESTINATION_ELEMENT_OFFSET_SHIFT));
+        /* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */
+        OUT_BATCH(ctx, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
+                  VE0_VALID |
+                  (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
+                  (8 << VE0_OFFSET_SHIFT));
+        OUT_BATCH(ctx, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
+                  (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT) |
+                  (4 << VE1_DESTINATION_ELEMENT_OFFSET_SHIFT));
+        ADVANCE_BATCH(ctx);
+    }
+}
+
+void
+i965_render_upload_palette(VADriverContextP ctx)
+{
+    BEGIN_BATCH(ctx, 17);
+    OUT_BATCH(ctx, CMD_SAMPLER_PALETTE_LOAD | 15);
+    /*fill palette*/
+    //int32_t out[16]; //0-23:color 23-31:alpha
+    int32_t i,c;
+    for(i = 0; i < 16; i ++){
+        c = i*16; //16 colors
+        OUT_BATCH(ctx,c<<24/*alpha*/|c<<16/*R*/|c<<8/*G*/|c/*B*/);//c<<24/*alpha*/|c<<16/*R*/|c<<8/*G*/|c/*B*/);
+    }
+
+    ADVANCE_BATCH(ctx);
+}
+static void
+i965_render_startup(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+
+    BEGIN_BATCH(ctx, 11);
+    OUT_BATCH(ctx, CMD_VERTEX_BUFFERS | 3);
+    OUT_BATCH(ctx, 
+              (0 << VB0_BUFFER_INDEX_SHIFT) |
+              VB0_VERTEXDATA |
+              ((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
+    OUT_RELOC(ctx, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
+
+    if (IS_IGDNG(i965->intel.device_id))
+        OUT_RELOC(ctx, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 12 * 4);
+    else
+        OUT_BATCH(ctx, 3);
+
+    OUT_BATCH(ctx, 0);
+
+    OUT_BATCH(ctx, 
+              CMD_3DPRIMITIVE |
+              _3DPRIMITIVE_VERTEX_SEQUENTIAL |
+              (_3DPRIM_RECTLIST << _3DPRIMITIVE_TOPOLOGY_SHIFT) |
+              (0 << 9) |
+              4);
+    OUT_BATCH(ctx, 3); /* vertex count per instance */
+    OUT_BATCH(ctx, 0); /* start vertex offset */
+    OUT_BATCH(ctx, 1); /* single instance */
+    OUT_BATCH(ctx, 0); /* start instance location */
+    OUT_BATCH(ctx, 0); /* index buffer offset, ignored */
+    ADVANCE_BATCH(ctx);
+}
+
+static void 
+i965_clear_dest_region(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);  
+    struct i965_render_state *render_state = &i965->render_state;
+    struct intel_region *dest_region = render_state->draw_region;
+    unsigned int blt_cmd, br13;
+    int pitch;
+
+    blt_cmd = XY_COLOR_BLT_CMD;
+    br13 = 0xf0 << 16;
+    pitch = dest_region->pitch;
+
+    if (dest_region->cpp == 4) {
+        br13 |= BR13_8888;
+        blt_cmd |= (XY_COLOR_BLT_WRITE_RGB | XY_COLOR_BLT_WRITE_ALPHA);
+    } else {
+        assert(dest_region->cpp == 2);
+        br13 |= BR13_565;
+    }
+
+    if (dest_region->tiling != I915_TILING_NONE) {
+        blt_cmd |= XY_COLOR_BLT_DST_TILED;
+        pitch /= 4;
+    }
+
+    br13 |= pitch;
+
+    BEGIN_BATCH(ctx, 6);
+    OUT_BATCH(ctx, blt_cmd);
+    OUT_BATCH(ctx, br13);
+    OUT_BATCH(ctx, (dest_region->y << 16) | (dest_region->x));
+    OUT_BATCH(ctx, ((dest_region->y + dest_region->height) << 16) |
+              (dest_region->x + dest_region->width));
+    OUT_RELOC(ctx, dest_region->bo, 
+              I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
+              0);
+    OUT_BATCH(ctx, 0x0);
+    ADVANCE_BATCH(ctx);
+}
+
+static void
+i965_surface_render_pipeline_setup(VADriverContextP ctx)
+{
+    intel_batchbuffer_start_atomic(ctx, 0x1000);
+    intel_batchbuffer_emit_mi_flush(ctx);
+    i965_clear_dest_region(ctx);
+    i965_render_pipeline_select(ctx);
+    i965_render_state_sip(ctx);
+    i965_render_state_base_address(ctx);
+    i965_render_binding_table_pointers(ctx);
+    i965_render_constant_color(ctx);
+    i965_render_pipelined_pointers(ctx);
+    i965_render_urb_layout(ctx);
+    i965_render_cs_urb_layout(ctx);
+    i965_render_drawing_rectangle(ctx);
+    i965_render_vertex_elements(ctx);
+    i965_render_startup(ctx);
+    intel_batchbuffer_end_atomic(ctx);
+}
+
+static void
+i965_subpic_render_pipeline_setup(VADriverContextP ctx)
+{
+    intel_batchbuffer_start_atomic(ctx, 0x1000);
+    intel_batchbuffer_emit_mi_flush(ctx);
+    i965_render_pipeline_select(ctx);
+    i965_render_state_sip(ctx);
+    i965_render_state_base_address(ctx);
+    i965_render_binding_table_pointers(ctx);
+    i965_render_constant_color(ctx);
+    i965_render_pipelined_pointers(ctx);
+    //i965_render_upload_palette(ctx);
+    i965_render_urb_layout(ctx);
+    i965_render_cs_urb_layout(ctx);
+    i965_render_drawing_rectangle(ctx);
+    i965_render_vertex_elements(ctx);
+    i965_render_startup(ctx);
+    intel_batchbuffer_end_atomic(ctx);
+}
+
+
+static void 
+i965_render_initialize(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+    int i;
+    dri_bo *bo;
+
+    /* VERTEX BUFFER */
+    dri_bo_unreference(render_state->vb.vertex_buffer);
+    bo = dri_bo_alloc(i965->intel.bufmgr,
+                      "vertex buffer",
+                      4096,
+                      4096);
+    assert(bo);
+    render_state->vb.vertex_buffer = bo;
+
+    /* VS */
+    dri_bo_unreference(render_state->vs.state);
+    bo = dri_bo_alloc(i965->intel.bufmgr,
+                      "vs state",
+                      sizeof(struct i965_vs_unit_state),
+                      64);
+    assert(bo);
+    render_state->vs.state = bo;
+
+    /* GS */
+    /* CLIP */
+    /* SF */
+    dri_bo_unreference(render_state->sf.state);
+    bo = dri_bo_alloc(i965->intel.bufmgr,
+                      "sf state",
+                      sizeof(struct i965_sf_unit_state),
+                      64);
+    assert(bo);
+    render_state->sf.state = bo;
+
+    /* WM */
+    for (i = 0; i < MAX_RENDER_SURFACES; i++) {
+        dri_bo_unreference(render_state->wm.surface[i]);
+        render_state->wm.surface[i] = NULL;
+    }
+
+    dri_bo_unreference(render_state->wm.binding_table);
+    bo = dri_bo_alloc(i965->intel.bufmgr,
+                      "binding table",
+                      MAX_RENDER_SURFACES * sizeof(unsigned int),
+                      64);
+    assert(bo);
+    render_state->wm.binding_table = bo;
+
+    dri_bo_unreference(render_state->wm.sampler);
+    bo = dri_bo_alloc(i965->intel.bufmgr,
+                      "sampler state",
+                      MAX_SAMPLERS * sizeof(struct i965_sampler_state),
+                      64);
+    assert(bo);
+    render_state->wm.sampler = bo;
+    render_state->wm.sampler_count = 0;
+
+    dri_bo_unreference(render_state->wm.state);
+    bo = dri_bo_alloc(i965->intel.bufmgr,
+                      "wm state",
+                      sizeof(struct i965_wm_unit_state),
+                      64);
+    assert(bo);
+    render_state->wm.state = bo;
+
+    /* COLOR CALCULATOR */
+    dri_bo_unreference(render_state->cc.state);
+    bo = dri_bo_alloc(i965->intel.bufmgr,
+                      "color calc state",
+                      sizeof(struct i965_cc_unit_state),
+                      64);
+    assert(bo);
+    render_state->cc.state = bo;
+
+    dri_bo_unreference(render_state->cc.viewport);
+    bo = dri_bo_alloc(i965->intel.bufmgr,
+                      "cc viewport",
+                      sizeof(struct i965_cc_viewport),
+                      64);
+    assert(bo);
+    render_state->cc.viewport = bo;
+}
+
+void
+i965_render_put_surface(VADriverContextP ctx,
+                        VASurfaceID surface,
+                        short srcx,
+                        short srcy,
+                        unsigned short srcw,
+                        unsigned short srch,
+                        short destx,
+                        short desty,
+                        unsigned short destw,
+                        unsigned short desth)
+{
+    i965_render_initialize(ctx);
+    i965_surface_render_state_setup(ctx, surface,
+                            srcx, srcy, srcw, srch,
+                            destx, desty, destw, desth);
+    i965_surface_render_pipeline_setup(ctx);
+    intel_batchbuffer_flush(ctx);
+}
+
+void
+i965_render_put_subpic(VADriverContextP ctx,
+                        VASurfaceID surface,
+                        short srcx,
+                        short srcy,
+                        unsigned short srcw,
+                        unsigned short srch,
+                        short destx,
+                        short desty,
+                        unsigned short destw,
+                        unsigned short desth)
+{
+    i965_render_initialize(ctx);
+    i965_subpic_render_state_setup(ctx, surface,
+	    srcx, srcy, srcw, srch,
+	    destx, desty, destw, desth);
+    i965_subpic_render_pipeline_setup(ctx);
+    intel_batchbuffer_flush(ctx);
+}
+
+
+Bool 
+i965_render_init(VADriverContextP ctx)
+{
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    int i;
+
+    /* kernel */
+    assert(NUM_RENDER_KERNEL == (sizeof(render_kernels_gen5) / 
+                                 sizeof(render_kernels_gen5[0])));
+
+    if (IS_IGDNG(i965->intel.device_id))
+        render_kernels = render_kernels_gen5;
+    else
+        render_kernels = render_kernels_gen4;
+
+    for (i = 0; i < NUM_RENDER_KERNEL; i++) {
+        struct render_kernel *kernel = &render_kernels[i];
+        kernel->bo = dri_bo_alloc(i965->intel.bufmgr, 
+                                  kernel->name, 
+                                  kernel->size, 64);
+        assert(kernel->bo);
+        dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
+    }
+
+    return True;
+}
+
+Bool 
+i965_render_terminate(VADriverContextP ctx)
+{
+    int i;
+    struct i965_driver_data *i965 = i965_driver_data(ctx);
+    struct i965_render_state *render_state = &i965->render_state;
+
+    for (i = 0; i < NUM_RENDER_KERNEL; i++) {
+        struct render_kernel *kernel = &render_kernels[i];
+        
+        dri_bo_unreference(kernel->bo);
+        kernel->bo = NULL;
+    }
+
+    dri_bo_unreference(render_state->vb.vertex_buffer);
+    render_state->vb.vertex_buffer = NULL;
+    dri_bo_unreference(render_state->vs.state);
+    render_state->vs.state = NULL;
+    dri_bo_unreference(render_state->sf.state);
+    render_state->sf.state = NULL;
+    dri_bo_unreference(render_state->wm.binding_table);
+    render_state->wm.binding_table = NULL;
+    dri_bo_unreference(render_state->wm.sampler);
+    render_state->wm.sampler = NULL;
+    dri_bo_unreference(render_state->wm.state);
+    render_state->wm.state = NULL;
+
+    for (i = 0; i < MAX_RENDER_SURFACES; i++) {
+        dri_bo_unreference(render_state->wm.surface[i]);
+        render_state->wm.surface[i] = NULL;
+    }
+
+    dri_bo_unreference(render_state->cc.viewport);
+    render_state->cc.viewport = NULL;
+    dri_bo_unreference(render_state->cc.state);
+    render_state->cc.state = NULL;
+
+    if (render_state->draw_region) {
+        dri_bo_unreference(render_state->draw_region->bo);
+        free(render_state->draw_region);
+        render_state->draw_region = NULL;
+    }
+
+    return True;
+}
+
diff --git a/i965_drv_video/i965_render.h b/i965_drv_video/i965_render.h
new file mode 100644
index 0000000..e3dce02
--- /dev/null
+++ b/i965_drv_video/i965_render.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Xiang Haihao <haihao.xiang@intel.com>
+ *
+ */
+
+#ifndef _I965_RENDER_H_
+#define _I965_RENDER_H_
+
+#define MAX_RENDER_SURFACES     16
+#define MAX_SAMPLERS            16
+
+struct i965_render_state
+{
+    struct {
+        dri_bo *vertex_buffer;
+    } vb;
+
+    struct {
+        dri_bo *state;
+    } vs;
+    
+    struct {
+        dri_bo *state;
+        dri_bo *prog;
+    } sf;
+
+    struct {
+        int sampler_count;
+        dri_bo *sampler;
+        dri_bo *surface[MAX_RENDER_SURFACES];
+        dri_bo *binding_table;
+        dri_bo *state;
+        dri_bo *prog;
+    } wm;
+
+    struct {
+        dri_bo *state;
+        dri_bo *viewport;
+    } cc;
+
+    struct intel_region *draw_region;
+};
+
+Bool i965_render_init(VADriverContextP ctx);
+Bool i965_render_terminate(VADriverContextP ctx);
+void i965_render_put_surface(VADriverContextP ctx,
+                             VASurfaceID surface,
+                             short srcx,
+                             short srcy,
+                             unsigned short srcw,
+                             unsigned short srch,
+                             short destx,
+                             short desty,
+                             unsigned short destw,
+                             unsigned short desth);
+
+
+void
+i965_render_put_subpic(VADriverContextP ctx,
+                        VASurfaceID surface,
+                        short srcx,
+                        short srcy,
+                        unsigned short srcw,
+                        unsigned short srch,
+                        short destx,
+                        short desty,
+                        unsigned short destw,
+                        unsigned short desth);
+#endif /* _I965_RENDER_H_ */
diff --git a/i965_drv_video/i965_structs.h b/i965_drv_video/i965_structs.h
new file mode 100644
index 0000000..93fa2f0
--- /dev/null
+++ b/i965_drv_video/i965_structs.h
@@ -0,0 +1,623 @@
+#ifndef _I965_STRUCTS_H_
+#define _I965_STRUCTS_H_
+
+struct i965_vfe_state 
+{
+    struct {
+	unsigned int per_thread_scratch_space:4;
+	unsigned int pad3:3;
+	unsigned int extend_vfe_state_present:1;
+	unsigned int pad2:2;
+	unsigned int scratch_base:22;
+    } vfe0;
+
+    struct {
+	unsigned int debug_counter_control:2;
+	unsigned int children_present:1;
+	unsigned int vfe_mode:4;
+	unsigned int pad2:2;
+	unsigned int num_urb_entries:7;
+	unsigned int urb_entry_alloc_size:9;
+	unsigned int max_threads:7;
+    } vfe1;
+
+    struct {
+	unsigned int pad4:4;
+	unsigned int interface_descriptor_base:28;
+    } vfe2;
+};
+
+struct i965_vfe_state_ex 
+{
+    struct {
+	unsigned int pad:8;
+	unsigned int obj_id:24;
+    } vfex0;
+
+    struct {
+	unsigned int residual_grf_offset:5;
+	unsigned int pad0:3;
+	unsigned int weight_grf_offset:5;
+	unsigned int pad1:3;
+	unsigned int residual_data_offset:8;
+	unsigned int sub_field_present_flag:2;
+	unsigned int residual_data_fix_offset:1;
+	unsigned int pad2:5;
+    }vfex1;
+
+    struct {
+	unsigned int remap_index_0:4;
+	unsigned int remap_index_1:4;
+	unsigned int remap_index_2:4;
+	unsigned int remap_index_3:4;
+	unsigned int remap_index_4:4;
+	unsigned int remap_index_5:4;
+	unsigned int remap_index_6:4;
+	unsigned int remap_index_7:4;
+    }remap_table0;
+
+    struct {
+	unsigned int remap_index_8:4;
+	unsigned int remap_index_9:4;
+	unsigned int remap_index_10:4;
+	unsigned int remap_index_11:4;
+	unsigned int remap_index_12:4;
+	unsigned int remap_index_13:4;
+	unsigned int remap_index_14:4;
+	unsigned int remap_index_15:4;
+    } remap_table1;
+
+    struct {
+	unsigned int scoreboard_mask:8;
+	unsigned int pad:22;
+	unsigned int type:1;
+	unsigned int enable:1;
+    } scoreboard0;
+
+    struct {
+	unsigned int ignore;
+    } scoreboard1;
+
+    struct {
+	unsigned int ignore;
+    } scoreboard2;
+
+    unsigned int pad;
+};
+
+struct i965_vld_state 
+{
+    struct {
+        unsigned int pad6:6;
+        unsigned int scan_order:1;
+        unsigned int intra_vlc_format:1;
+        unsigned int quantizer_scale_type:1;
+        unsigned int concealment_motion_vector:1;
+        unsigned int frame_predict_frame_dct:1;
+        unsigned int top_field_first:1;
+        unsigned int picture_structure:2;
+        unsigned int intra_dc_precision:2;
+        unsigned int f_code_0_0:4;
+        unsigned int f_code_0_1:4;
+        unsigned int f_code_1_0:4;
+        unsigned int f_code_1_1:4;
+    } vld0;
+
+    struct {
+        unsigned int pad2:9;
+        unsigned int picture_coding_type:2;
+        unsigned int pad:21;
+    } vld1;
+
+    struct {
+        unsigned int index_0:4;
+        unsigned int index_1:4;
+        unsigned int index_2:4;
+        unsigned int index_3:4;
+        unsigned int index_4:4;
+        unsigned int index_5:4;
+        unsigned int index_6:4;
+        unsigned int index_7:4;
+    } desc_remap_table0;
+
+    struct {
+        unsigned int index_8:4;
+        unsigned int index_9:4;
+        unsigned int index_10:4;
+        unsigned int index_11:4;
+        unsigned int index_12:4;
+        unsigned int index_13:4;
+        unsigned int index_14:4;
+        unsigned int index_15:4;
+    } desc_remap_table1;
+};
+
+struct i965_interface_descriptor 
+{
+    struct {
+	unsigned int grf_reg_blocks:4;
+	unsigned int pad:2;
+	unsigned int kernel_start_pointer:26;
+    } desc0;
+
+    struct {
+	unsigned int pad:7;
+	unsigned int software_exception:1;
+	unsigned int pad2:3;
+	unsigned int maskstack_exception:1;
+	unsigned int pad3:1;
+	unsigned int illegal_opcode_exception:1;
+	unsigned int pad4:2;
+	unsigned int floating_point_mode:1;
+	unsigned int thread_priority:1;
+	unsigned int single_program_flow:1;
+	unsigned int pad5:1;
+	unsigned int const_urb_entry_read_offset:6;
+	unsigned int const_urb_entry_read_len:6;
+    } desc1;
+
+    struct {
+	unsigned int pad:2;
+	unsigned int sampler_count:3;
+	unsigned int sampler_state_pointer:27;
+    } desc2;
+
+    struct {
+	unsigned int binding_table_entry_count:5;
+	unsigned int binding_table_pointer:27;
+    } desc3;
+};
+
+struct i965_surface_state 
+{
+    struct {
+	unsigned int cube_pos_z:1;
+	unsigned int cube_neg_z:1;
+	unsigned int cube_pos_y:1;
+	unsigned int cube_neg_y:1;
+	unsigned int cube_pos_x:1;
+	unsigned int cube_neg_x:1;
+	unsigned int pad:3;
+	unsigned int render_cache_read_mode:1;
+	unsigned int mipmap_layout_mode:1;
+	unsigned int vert_line_stride_ofs:1;
+	unsigned int vert_line_stride:1;
+	unsigned int color_blend:1;
+	unsigned int writedisable_blue:1;
+	unsigned int writedisable_green:1;
+	unsigned int writedisable_red:1;
+	unsigned int writedisable_alpha:1;
+	unsigned int surface_format:9;
+	unsigned int data_return_format:1;
+	unsigned int pad0:1;
+	unsigned int surface_type:3;
+    } ss0;
+
+    struct {
+	unsigned int base_addr;
+    } ss1;
+
+    struct {
+	unsigned int render_target_rotation:2;
+	unsigned int mip_count:4;
+	unsigned int width:13;
+	unsigned int height:13;
+    } ss2;
+
+    struct {
+	unsigned int tile_walk:1;
+	unsigned int tiled_surface:1;
+	unsigned int pad:1;
+	unsigned int pitch:18;
+	unsigned int depth:11;
+    } ss3;
+
+    struct {
+	unsigned int pad:19;
+	unsigned int min_array_elt:9;
+	unsigned int min_lod:4;
+    } ss4;
+
+    struct {
+	unsigned int pad:20;
+	unsigned int y_offset:4;
+	unsigned int pad2:1;
+	unsigned int x_offset:7;
+    } ss5;
+};
+
+struct thread0
+{
+    unsigned int pad0:1;
+    unsigned int grf_reg_count:3; 
+    unsigned int pad1:2;
+    unsigned int kernel_start_pointer:26; 
+};
+
+struct thread1
+{
+    unsigned int ext_halt_exception_enable:1; 
+    unsigned int sw_exception_enable:1; 
+    unsigned int mask_stack_exception_enable:1; 
+    unsigned int timeout_exception_enable:1; 
+    unsigned int illegal_op_exception_enable:1; 
+    unsigned int pad0:3;
+    unsigned int depth_coef_urb_read_offset:6;	/* WM only */
+    unsigned int pad1:2;
+    unsigned int floating_point_mode:1; 
+    unsigned int thread_priority:1; 
+    unsigned int binding_table_entry_count:8; 
+    unsigned int pad3:5;
+    unsigned int single_program_flow:1; 
+};
+
+struct thread2
+{
+    unsigned int per_thread_scratch_space:4; 
+    unsigned int pad0:6;
+    unsigned int scratch_space_base_pointer:22; 
+};
+
+   
+struct thread3
+{
+    unsigned int dispatch_grf_start_reg:4; 
+    unsigned int urb_entry_read_offset:6; 
+    unsigned int pad0:1;
+    unsigned int urb_entry_read_length:6; 
+    unsigned int pad1:1;
+    unsigned int const_urb_entry_read_offset:6; 
+    unsigned int pad2:1;
+    unsigned int const_urb_entry_read_length:6; 
+    unsigned int pad3:1;
+};
+
+struct i965_vs_unit_state
+{
+    struct thread0 thread0;
+    struct thread1 thread1;
+    struct thread2 thread2;
+    struct thread3 thread3;
+   
+    struct {
+        unsigned int pad0:10;
+        unsigned int stats_enable:1; 
+        unsigned int nr_urb_entries:7; 
+        unsigned int pad1:1;
+        unsigned int urb_entry_allocation_size:5; 
+        unsigned int pad2:1;
+        unsigned int max_threads:4; 
+        unsigned int pad3:3;
+    } thread4;   
+
+    struct {
+        unsigned int sampler_count:3; 
+        unsigned int pad0:2;
+        unsigned int sampler_state_pointer:27; 
+    } vs5;
+
+    struct {
+        unsigned int vs_enable:1; 
+        unsigned int vert_cache_disable:1; 
+        unsigned int pad0:30;
+    } vs6;
+};
+
+struct i965_gs_unit_state
+{
+   struct thread0 thread0;
+   struct thread1 thread1;
+   struct thread2 thread2;
+   struct thread3 thread3;
+
+   struct {
+      unsigned int pad0:10;
+      unsigned int stats_enable:1; 
+      unsigned int nr_urb_entries:7; 
+      unsigned int pad1:1;
+      unsigned int urb_entry_allocation_size:5; 
+      unsigned int pad2:1;
+      unsigned int max_threads:1; 
+      unsigned int pad3:6;
+   } thread4;   
+      
+   struct {
+      unsigned int sampler_count:3; 
+      unsigned int pad0:2;
+      unsigned int sampler_state_pointer:27; 
+   } gs5;
+
+   
+   struct {
+      unsigned int max_vp_index:4; 
+      unsigned int pad0:26;
+      unsigned int reorder_enable:1; 
+      unsigned int pad1:1;
+   } gs6;
+};
+
+struct i965_clip_unit_state
+{
+   struct thread0 thread0;
+   struct thread1 thread1;
+   struct thread2 thread2;
+   struct thread3 thread3;
+
+   struct {
+      unsigned int pad0:9;
+      unsigned int gs_output_stats:1; /* not always */
+      unsigned int stats_enable:1; 
+      unsigned int nr_urb_entries:7; 
+      unsigned int pad1:1;
+      unsigned int urb_entry_allocation_size:5; 
+      unsigned int pad2:1;
+      unsigned int max_threads:6; 	/* may be less */
+      unsigned int pad3:1;
+   } thread4;   
+      
+   struct {
+      unsigned int pad0:13;
+      unsigned int clip_mode:3; 
+      unsigned int userclip_enable_flags:8; 
+      unsigned int userclip_must_clip:1; 
+      unsigned int pad1:1;
+      unsigned int guard_band_enable:1; 
+      unsigned int viewport_z_clip_enable:1; 
+      unsigned int viewport_xy_clip_enable:1; 
+      unsigned int vertex_position_space:1; 
+      unsigned int api_mode:1; 
+      unsigned int pad2:1;
+   } clip5;
+   
+   struct {
+      unsigned int pad0:5;
+      unsigned int clipper_viewport_state_ptr:27; 
+   } clip6;
+
+   
+   float viewport_xmin;  
+   float viewport_xmax;  
+   float viewport_ymin;  
+   float viewport_ymax;  
+};
+
+struct i965_sf_unit_state
+{
+   struct thread0 thread0;
+   struct {
+      unsigned int pad0:7;
+      unsigned int sw_exception_enable:1; 
+      unsigned int pad1:3;
+      unsigned int mask_stack_exception_enable:1; 
+      unsigned int pad2:1;
+      unsigned int illegal_op_exception_enable:1; 
+      unsigned int pad3:2;
+      unsigned int floating_point_mode:1; 
+      unsigned int thread_priority:1; 
+      unsigned int binding_table_entry_count:8; 
+      unsigned int pad4:5;
+      unsigned int single_program_flow:1; 
+   } sf1;
+   
+   struct thread2 thread2;
+   struct thread3 thread3;
+
+   struct {
+      unsigned int pad0:10;
+      unsigned int stats_enable:1; 
+      unsigned int nr_urb_entries:7; 
+      unsigned int pad1:1;
+      unsigned int urb_entry_allocation_size:5; 
+      unsigned int pad2:1;
+      unsigned int max_threads:6; 
+      unsigned int pad3:1;
+   } thread4;   
+
+   struct {
+      unsigned int front_winding:1; 
+      unsigned int viewport_transform:1; 
+      unsigned int pad0:3;
+      unsigned int sf_viewport_state_offset:27; 
+   } sf5;
+   
+   struct {
+      unsigned int pad0:9;
+      unsigned int dest_org_vbias:4; 
+      unsigned int dest_org_hbias:4; 
+      unsigned int scissor:1; 
+      unsigned int disable_2x2_trifilter:1; 
+      unsigned int disable_zero_pix_trifilter:1; 
+      unsigned int point_rast_rule:2; 
+      unsigned int line_endcap_aa_region_width:2; 
+      unsigned int line_width:4; 
+      unsigned int fast_scissor_disable:1; 
+      unsigned int cull_mode:2; 
+      unsigned int aa_enable:1; 
+   } sf6;
+
+   struct {
+      unsigned int point_size:11; 
+      unsigned int use_point_size_state:1; 
+      unsigned int subpixel_precision:1; 
+      unsigned int sprite_point:1; 
+      unsigned int pad0:11;
+      unsigned int trifan_pv:2; 
+      unsigned int linestrip_pv:2; 
+      unsigned int tristrip_pv:2; 
+      unsigned int line_last_pixel_enable:1; 
+   } sf7;
+};
+
+struct i965_sampler_state
+{
+   struct {
+      unsigned int shadow_function:3; 
+      unsigned int lod_bias:11; 
+      unsigned int min_filter:3; 
+      unsigned int mag_filter:3; 
+      unsigned int mip_filter:2; 
+      unsigned int base_level:5; 
+      unsigned int pad:1;
+      unsigned int lod_preclamp:1; 
+      unsigned int border_color_mode:1; 
+      unsigned int pad0:1;
+      unsigned int disable:1; 
+   } ss0;
+
+   struct {
+      unsigned int r_wrap_mode:3; 
+      unsigned int t_wrap_mode:3; 
+      unsigned int s_wrap_mode:3; 
+      unsigned int pad:3;
+      unsigned int max_lod:10; 
+      unsigned int min_lod:10; 
+   } ss1;
+
+   
+   struct {
+      unsigned int pad:5;
+      unsigned int border_color_pointer:27; 
+   } ss2;
+   
+   struct {
+      unsigned int pad:19;
+      unsigned int max_aniso:3; 
+      unsigned int chroma_key_mode:1; 
+      unsigned int chroma_key_index:2; 
+      unsigned int chroma_key_enable:1; 
+      unsigned int monochrome_filter_width:3; 
+      unsigned int monochrome_filter_height:3; 
+   } ss3;
+};
+
+struct i965_wm_unit_state
+{
+   struct thread0 thread0;
+   struct thread1 thread1;
+   struct thread2 thread2;
+   struct thread3 thread3;
+   
+   struct {
+      unsigned int stats_enable:1; 
+      unsigned int pad0:1;
+      unsigned int sampler_count:3; 
+      unsigned int sampler_state_pointer:27; 
+   } wm4;
+   
+   struct {
+      unsigned int enable_8_pix:1; 
+      unsigned int enable_16_pix:1; 
+      unsigned int enable_32_pix:1; 
+      unsigned int pad0:7;
+      unsigned int legacy_global_depth_bias:1; 
+      unsigned int line_stipple:1; 
+      unsigned int depth_offset:1; 
+      unsigned int polygon_stipple:1; 
+      unsigned int line_aa_region_width:2; 
+      unsigned int line_endcap_aa_region_width:2; 
+      unsigned int early_depth_test:1; 
+      unsigned int thread_dispatch_enable:1; 
+      unsigned int program_uses_depth:1; 
+      unsigned int program_computes_depth:1; 
+      unsigned int program_uses_killpixel:1; 
+      unsigned int legacy_line_rast: 1; 
+      unsigned int transposed_urb_read:1; 
+      unsigned int max_threads:7; 
+   } wm5;
+   
+   float global_depth_offset_constant;  
+   float global_depth_offset_scale;   
+};
+
+struct i965_cc_viewport
+{
+   float min_depth;  
+   float max_depth;  
+};
+
+struct i965_cc_unit_state
+{
+   struct {
+      unsigned int pad0:3;
+      unsigned int bf_stencil_pass_depth_pass_op:3; 
+      unsigned int bf_stencil_pass_depth_fail_op:3; 
+      unsigned int bf_stencil_fail_op:3; 
+      unsigned int bf_stencil_func:3; 
+      unsigned int bf_stencil_enable:1; 
+      unsigned int pad1:2;
+      unsigned int stencil_write_enable:1; 
+      unsigned int stencil_pass_depth_pass_op:3; 
+      unsigned int stencil_pass_depth_fail_op:3; 
+      unsigned int stencil_fail_op:3; 
+      unsigned int stencil_func:3; 
+      unsigned int stencil_enable:1; 
+   } cc0;
+
+   
+   struct {
+      unsigned int bf_stencil_ref:8; 
+      unsigned int stencil_write_mask:8; 
+      unsigned int stencil_test_mask:8; 
+      unsigned int stencil_ref:8; 
+   } cc1;
+
+   
+   struct {
+      unsigned int logicop_enable:1; 
+      unsigned int pad0:10;
+      unsigned int depth_write_enable:1; 
+      unsigned int depth_test_function:3; 
+      unsigned int depth_test:1; 
+      unsigned int bf_stencil_write_mask:8; 
+      unsigned int bf_stencil_test_mask:8; 
+   } cc2;
+
+   
+   struct {
+      unsigned int pad0:8;
+      unsigned int alpha_test_func:3; 
+      unsigned int alpha_test:1; 
+      unsigned int blend_enable:1; 
+      unsigned int ia_blend_enable:1; 
+      unsigned int pad1:1;
+      unsigned int alpha_test_format:1;
+      unsigned int pad2:16;
+   } cc3;
+   
+   struct {
+      unsigned int pad0:5; 
+      unsigned int cc_viewport_state_offset:27; 
+   } cc4;
+   
+   struct {
+      unsigned int pad0:2;
+      unsigned int ia_dest_blend_factor:5; 
+      unsigned int ia_src_blend_factor:5; 
+      unsigned int ia_blend_function:3; 
+      unsigned int statistics_enable:1; 
+      unsigned int logicop_func:4; 
+      unsigned int pad1:11;
+      unsigned int dither_enable:1; 
+   } cc5;
+
+   struct {
+      unsigned int clamp_post_alpha_blend:1; 
+      unsigned int clamp_pre_alpha_blend:1; 
+      unsigned int clamp_range:2; 
+      unsigned int pad0:11;
+      unsigned int y_dither_offset:2; 
+      unsigned int x_dither_offset:2; 
+      unsigned int dest_blend_factor:5; 
+      unsigned int src_blend_factor:5; 
+      unsigned int blend_function:3; 
+   } cc6;
+
+   struct {
+      union {
+	 float f;  
+	 unsigned char ub[4];
+      } alpha_ref;
+   } cc7;
+};
+
+#endif /* _I965_STRUCTS_H_ */
diff --git a/i965_drv_video/intel_batchbuffer.c b/i965_drv_video/intel_batchbuffer.c
new file mode 100644
index 0000000..46c9496
--- /dev/null
+++ b/i965_drv_video/intel_batchbuffer.c
@@ -0,0 +1,204 @@
+/**************************************************************************                                                                                  
+ *                                                                                                                                                           
+ * Copyright 2006 Tungsten Graphics, Inc., Cedar Park, Texas.                                                                                                
+ * All Rights Reserved.                                                                                                                                      
+ *                                                                                                                                                           
+ * Permission is hereby granted, free of charge, to any person obtaining a                                                                                   
+ * copy of this software and associated documentation files (the                                                                                             
+ * "Software"), to deal in the Software without restriction, including                                                                                       
+ * without limitation the rights to use, copy, modify, merge, publish,                                                                                       
+ * distribute, sub license, and/or sell copies of the Software, and to                                                                                       
+ * permit persons to whom the Software is furnished to do so, subject to                                                                                     
+ * the following conditions:                                                                                                                                 
+ *                                                                                                                                                           
+ * The above copyright notice and this permission notice (including the                                                                                      
+ * next paragraph) shall be included in all copies or substantial portions                                                                                   
+ * of the Software.                                                                                                                                          
+ *                                                                                                                                                           
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS                                                                                   
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF                                                                                                
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.                                                                                   
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR                                                                                    
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,                                                                                  
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE                                                                                         
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                                                                                                    
+ *                                                                                                                                                           
+ **************************************************************************/      
+
+#include <string.h>
+#include <assert.h>
+
+#include "va_backend.h"
+
+#include "intel_batchbuffer.h"
+
+static void 
+intel_batchbuffer_reset(struct intel_batchbuffer *batch)
+{
+    struct intel_driver_data *intel = batch->intel; 
+
+    if (batch->buffer != NULL) {
+        dri_bo_unreference(batch->buffer);
+        batch->buffer = NULL;
+    }
+
+    batch->buffer = dri_bo_alloc(intel->bufmgr, "batch buffer", 
+                                 BATCH_SIZE, 0x1000);
+
+    assert(batch->buffer);
+    dri_bo_map(batch->buffer, 1);
+    batch->map = batch->buffer->virtual;
+    batch->size = BATCH_SIZE;
+    batch->ptr = batch->map;
+    batch->atomic = 0;
+}
+
+Bool 
+intel_batchbuffer_init(struct intel_driver_data *intel)
+{
+    intel->batch = calloc(1, sizeof(*(intel->batch)));
+
+    assert(intel->batch);
+    intel->batch->intel = intel;
+    intel_batchbuffer_reset(intel->batch);
+
+    return True;
+}
+
+Bool
+intel_batchbuffer_terminate(struct intel_driver_data *intel)
+{
+    if (intel->batch) {
+        if (intel->batch->map) {
+            dri_bo_unmap(intel->batch->buffer);
+            intel->batch->map = NULL;
+        }
+
+        dri_bo_unreference(intel->batch->buffer);
+        free(intel->batch);
+        intel->batch = NULL;
+    }
+
+    return True;
+}
+
+Bool 
+intel_batchbuffer_flush(VADriverContextP ctx)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+    struct intel_batchbuffer *batch = intel->batch;
+    unsigned int used = batch->ptr - batch->map;
+    int is_locked = intel->locked;
+
+    if (used == 0) {
+        return True;
+    }
+
+    if ((used & 4) == 0) {
+        *(unsigned int*)batch->ptr = 0;
+        batch->ptr += 4;
+    }
+
+    *(unsigned int*)batch->ptr = MI_BATCH_BUFFER_END;
+    batch->ptr += 4;
+    dri_bo_unmap(batch->buffer);
+    used = batch->ptr - batch->map;
+
+    if (!is_locked)
+        intel_lock_hardware(ctx);
+
+    dri_bo_exec(batch->buffer, used, 0, 0, 0);
+
+    if (!is_locked)
+        intel_unlock_hardware(ctx);
+
+    intel_batchbuffer_reset(intel->batch);
+
+    return True;
+}
+
+static unsigned int
+intel_batchbuffer_space(struct intel_batchbuffer *batch)
+{
+    return (batch->size - BATCH_RESERVED) - (batch->ptr - batch->map);
+}
+
+void 
+intel_batchbuffer_emit_dword(VADriverContextP ctx, unsigned int x)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+    struct intel_batchbuffer *batch = intel->batch;
+
+    assert(intel_batchbuffer_space(batch) >= 4);
+    *(unsigned int*)batch->ptr = x;
+    batch->ptr += 4;
+}
+
+void 
+intel_batchbuffer_emit_reloc(VADriverContextP ctx, dri_bo *bo, 
+                             uint32_t read_domains, uint32_t write_domains, 
+                             uint32_t delta)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+    struct intel_batchbuffer *batch = intel->batch;
+
+    assert(batch->ptr - batch->map < batch->size);
+    dri_bo_emit_reloc(batch->buffer, read_domains, write_domains,
+                      delta, batch->ptr - batch->map, bo);
+    intel_batchbuffer_emit_dword(ctx, bo->offset + delta);
+}
+
+void 
+intel_batchbuffer_require_space(VADriverContextP ctx, unsigned int size)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+    struct intel_batchbuffer *batch = intel->batch;
+
+    assert(size < batch->size - 8);
+
+    if (intel_batchbuffer_space(batch) < size) {
+        intel_batchbuffer_flush(ctx);
+    }
+}
+
+void 
+intel_batchbuffer_data(VADriverContextP ctx, void *data, unsigned int size)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+    struct intel_batchbuffer *batch = intel->batch;
+
+    assert((size & 3) == 0);
+    intel_batchbuffer_require_space(ctx, size);
+
+    assert(batch->ptr);
+    memcpy(batch->ptr, data, size);
+    batch->ptr += size;
+}
+
+void
+intel_batchbuffer_emit_mi_flush(VADriverContextP ctx)
+{
+    intel_batchbuffer_require_space(ctx, 4);
+    intel_batchbuffer_emit_dword(ctx, MI_FLUSH | STATE_INSTRUCTION_CACHE_INVALIDATE);
+}
+
+void
+intel_batchbuffer_start_atomic(VADriverContextP ctx, unsigned int size)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+    struct intel_batchbuffer *batch = intel->batch;
+
+    assert(!batch->atomic);
+    intel_batchbuffer_require_space(ctx, size);
+    batch->atomic = 1;
+}
+
+void
+intel_batchbuffer_end_atomic(VADriverContextP ctx)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+    struct intel_batchbuffer *batch = intel->batch;
+
+    assert(batch->atomic);
+    batch->atomic = 0;
+}
diff --git a/i965_drv_video/intel_batchbuffer.h b/i965_drv_video/intel_batchbuffer.h
new file mode 100644
index 0000000..c3a2457
--- /dev/null
+++ b/i965_drv_video/intel_batchbuffer.h
@@ -0,0 +1,51 @@
+#ifndef _INTEL_BATCHBUFFER_H_
+#define _INTEL_BATCHBUFFER_H_
+
+#include <xf86drm.h>
+#include <drm.h>
+#include <i915_drm.h>
+#include <intel_bufmgr.h>
+
+#include "intel_driver.h"
+
+struct intel_batchbuffer 
+{
+    struct intel_driver_data *intel;
+    dri_bo *buffer;
+    unsigned int size;
+    unsigned char *map;
+    unsigned char *ptr;
+    int atomic;
+};
+
+Bool intel_batchbuffer_init(struct intel_driver_data *intel);
+Bool intel_batchbuffer_terminate(struct intel_driver_data *intel);
+void intel_batchbuffer_emit_dword(VADriverContextP ctx, unsigned int x);
+void intel_batchbuffer_emit_reloc(VADriverContextP ctx, dri_bo *bo, 
+                                  uint32_t read_domains, uint32_t write_domains, 
+                                  uint32_t delta);
+void intel_batchbuffer_require_space(VADriverContextP ctx, unsigned int size);
+void intel_batchbuffer_data(VADriverContextP ctx, void *data, unsigned int size);
+void intel_batchbuffer_emit_mi_flush(VADriverContextP ctx);
+void intel_batchbuffer_start_atomic(VADriverContextP ctx, unsigned int size);
+void intel_batchbuffer_end_atomic(VADriverContextP ctx);
+Bool intel_batchbuffer_flush(VADriverContextP ctx);
+
+#define BEGIN_BATCH(ctx, n) do {                                \
+   intel_batchbuffer_require_space(ctx, (n) * 4);               \
+} while (0)
+
+#define OUT_BATCH(ctx, d) do {                                  \
+   intel_batchbuffer_emit_dword(ctx, d);                        \
+} while (0)
+
+#define OUT_RELOC(ctx, bo, read_domains, write_domain, delta) do {      \
+   assert((delta) >= 0);                                                \
+   intel_batchbuffer_emit_reloc(ctx, bo,                                \
+                                read_domains, write_domain, delta);     \
+} while (0)
+
+#define ADVANCE_BATCH(ctx) do {                                         \
+} while (0)
+
+#endif /* _INTEL_BATCHBUFFER_H_ */
diff --git a/i965_drv_video/intel_driver.c b/i965_drv_video/intel_driver.c
new file mode 100644
index 0000000..6ab915c
--- /dev/null
+++ b/i965_drv_video/intel_driver.c
@@ -0,0 +1,135 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Xiang Haihao <haihao.xiang@intel.com>
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *
+ */
+
+#include <assert.h>
+
+#include "va_dricommon.h"
+
+#include "intel_batchbuffer.h"
+#include "intel_memman.h"
+#include "intel_driver.h"
+
+static Bool
+intel_driver_get_param(struct intel_driver_data *intel, int param, int *value)
+{
+   int ret;
+   struct drm_i915_getparam gp;
+
+   gp.param = param;
+   gp.value = value;
+
+   ret = drmCommandWriteRead(intel->fd, DRM_I915_GETPARAM, &gp, sizeof(gp));
+   assert(ret == 0);
+
+   return True;
+}
+
+Bool 
+intel_driver_init(VADriverContextP ctx)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+
+    assert(dri_state);
+    assert(dri_state->driConnectedFlag == VA_DRI2 || 
+           dri_state->driConnectedFlag == VA_DRI1);
+
+    intel->fd = dri_state->fd;
+    intel->dri2Enabled = (dri_state->driConnectedFlag == VA_DRI2);
+
+    if (!intel->dri2Enabled) {
+        drm_sarea_t *pSAREA;
+
+        pSAREA = (drm_sarea_t *)dri_state->pSAREA;
+        intel->hHWContext = dri_state->hwContext;
+        intel->driHwLock = (drmLock *)(&pSAREA->lock);
+        intel->pPrivSarea = (void *)pSAREA + sizeof(drm_sarea_t);
+    }
+
+    intel->locked = 0;
+    pthread_mutex_init(&intel->ctxmutex, NULL);
+
+    intel_driver_get_param(intel, I915_PARAM_CHIPSET_ID, &intel->device_id);
+    intel_memman_init(intel);
+    intel_batchbuffer_init(intel);
+
+    return True;
+}
+
+Bool 
+intel_driver_terminate(VADriverContextP ctx)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+
+    intel_memman_terminate(intel);
+    intel_batchbuffer_terminate(intel);
+
+    pthread_mutex_destroy(&intel->ctxmutex);
+
+    return True;
+}
+
+void 
+intel_lock_hardware(VADriverContextP ctx)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+    char __ret = 0;
+
+    PPTHREAD_MUTEX_LOCK();
+
+    assert(!intel->locked);
+
+    if (!intel->dri2Enabled) {
+        DRM_CAS(intel->driHwLock, 
+                intel->hHWContext,
+                (DRM_LOCK_HELD|intel->hHWContext),
+                __ret);
+
+        if (__ret) {
+            drmGetLock(intel->fd, intel->hHWContext, 0);
+        }	
+    }
+
+    intel->locked = 1;
+}
+
+void 
+intel_unlock_hardware(VADriverContextP ctx)
+{
+    struct intel_driver_data *intel = intel_driver_data(ctx);
+
+    if (!intel->dri2Enabled) {
+        DRM_UNLOCK(intel->fd, 
+                   intel->driHwLock,
+                   intel->hHWContext);
+    }
+
+    intel->locked = 0;
+    PPTHREAD_MUTEX_UNLOCK();
+}
diff --git a/i965_drv_video/intel_driver.h b/i965_drv_video/intel_driver.h
new file mode 100644
index 0000000..f768703
--- /dev/null
+++ b/i965_drv_video/intel_driver.h
@@ -0,0 +1,134 @@
+#ifndef _INTEL_DRIVER_H_
+#define _INTEL_DRIVER_H_
+
+#include <pthread.h>
+#include <signal.h>
+
+#include <xf86drm.h>
+#include <drm.h>
+#include <i915_drm.h>
+#include <intel_bufmgr.h>
+
+#include "va_backend.h"
+
+#if defined(__GNUC__)
+#define INLINE __inline__
+#else
+#define INLINE
+#endif
+
+#define BATCH_SIZE      0x10000
+#define BATCH_RESERVED  0x10
+
+#define CMD_MI                                  (0x0 << 29)
+#define CMD_2D                                  (0x2 << 29)
+
+#define MI_NOOP                                 (CMD_MI | 0)
+
+#define MI_BATCH_BUFFER_END                     (CMD_MI | (0xA << 23))
+
+#define MI_FLUSH                                (CMD_MI | (0x4 << 23))
+#define STATE_INSTRUCTION_CACHE_INVALIDATE      (0x1 << 0)
+
+#define XY_COLOR_BLT_CMD                        (CMD_2D | (0x50 << 22) | 0x04)
+#define XY_COLOR_BLT_WRITE_ALPHA                (1 << 21)
+#define XY_COLOR_BLT_WRITE_RGB                  (1 << 20)
+#define XY_COLOR_BLT_DST_TILED                  (1 << 11)
+
+/* BR13 */
+#define BR13_565                                (0x1 << 24)
+#define BR13_8888                               (0x3 << 24)
+
+struct intel_batchbuffer;
+
+#define ALIGN(i, n)    (((i) + (n) - 1) & ~((n) - 1))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+
+#define SET_BLOCKED_SIGSET()   do {     \
+        sigset_t bl_mask;               \
+        sigfillset(&bl_mask);           \
+        sigdelset(&bl_mask, SIGFPE);    \
+        sigdelset(&bl_mask, SIGILL);    \
+        sigdelset(&bl_mask, SIGSEGV);   \
+        sigdelset(&bl_mask, SIGBUS);    \
+        sigdelset(&bl_mask, SIGKILL);   \
+        pthread_sigmask(SIG_SETMASK, &bl_mask, &intel->sa_mask); \
+    } while (0)
+
+#define RESTORE_BLOCKED_SIGSET() do {    \
+        pthread_sigmask(SIG_SETMASK, &intel->sa_mask, NULL); \
+    } while (0)
+
+#define PPTHREAD_MUTEX_LOCK() do {             \
+        SET_BLOCKED_SIGSET();                  \
+        pthread_mutex_lock(&intel->ctxmutex);       \
+    } while (0)
+
+#define PPTHREAD_MUTEX_UNLOCK() do {           \
+        pthread_mutex_unlock(&intel->ctxmutex);     \
+        RESTORE_BLOCKED_SIGSET();              \
+    } while (0)
+
+struct intel_driver_data 
+{
+    int fd;
+    int device_id;
+
+    int dri2Enabled;
+    drm_context_t hHWContext;
+    drm_i915_sarea_t *pPrivSarea;
+    drmLock *driHwLock;
+
+    sigset_t sa_mask;
+    pthread_mutex_t ctxmutex;
+    int locked;
+
+    struct intel_batchbuffer *batch;
+    dri_bufmgr *bufmgr;
+};
+
+Bool intel_driver_init(VADriverContextP ctx);
+Bool intel_driver_terminate(VADriverContextP ctx);
+void intel_lock_hardware(VADriverContextP ctx);
+void intel_unlock_hardware(VADriverContextP ctx);
+
+static INLINE struct intel_driver_data *
+intel_driver_data(VADriverContextP ctx)
+{
+    return (struct intel_driver_data *)ctx->pDriverData;
+}
+
+struct intel_region
+{
+    int x;
+    int y;
+    unsigned int width;
+    unsigned int height;
+    unsigned int cpp;
+    unsigned int pitch;
+    unsigned int tiling;
+    unsigned int swizzle;
+    dri_bo *bo;
+};
+
+#define PCI_CHIP_GM45_GM                0x2A42
+#define PCI_CHIP_IGD_E_G                0x2E02
+#define PCI_CHIP_Q45_G                  0x2E12
+#define PCI_CHIP_G45_G                  0x2E22
+#define PCI_CHIP_G41_G                  0x2E32
+
+#define PCI_CHIP_IGDNG_D_G              0x0042
+#define PCI_CHIP_IGDNG_M_G              0x0046
+
+#define IS_G45(devid)           (devid == PCI_CHIP_IGD_E_G || \
+                                 devid == PCI_CHIP_Q45_G || \
+                                 devid == PCI_CHIP_G45_G || \
+                                 devid == PCI_CHIP_G41_G)
+#define IS_GM45(devid)          (devid == PCI_CHIP_GM45_GM)
+#define IS_G4X(devid)		(IS_G45(devid) || IS_GM45(devid))
+
+#define IS_IGDNG_D(devid)       (devid == PCI_CHIP_IGDNG_D_G)
+#define IS_IGDNG_M(devid)       (devid == PCI_CHIP_IGDNG_M_G)
+#define IS_IGDNG(devid)         (IS_IGDNG_D(devid) || IS_IGDNG_M(devid))
+
+#endif /* _INTEL_DRIVER_H_ */
diff --git a/i965_drv_video/intel_memman.c b/i965_drv_video/intel_memman.c
new file mode 100644
index 0000000..aeb4186
--- /dev/null
+++ b/i965_drv_video/intel_memman.c
@@ -0,0 +1,48 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Xiang Haihao <haihao.xiang@intel.com>
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *
+ */
+
+#include <assert.h>
+
+#include "intel_driver.h"
+
+Bool 
+intel_memman_init(struct intel_driver_data *intel)
+{
+    intel->bufmgr = intel_bufmgr_gem_init(intel->fd, BATCH_SIZE);
+    assert(intel->bufmgr);
+    intel_bufmgr_gem_enable_reuse(intel->bufmgr);
+
+    return True;
+}
+
+Bool 
+intel_memman_terminate(struct intel_driver_data *intel)
+{
+    return True;
+}
diff --git a/i965_drv_video/intel_memman.h b/i965_drv_video/intel_memman.h
new file mode 100644
index 0000000..4e516e5
--- /dev/null
+++ b/i965_drv_video/intel_memman.h
@@ -0,0 +1,7 @@
+#ifndef _INTEL_MEMMAN_H_
+#define _INTEL_MEMMAN_H_
+
+Bool intel_memman_init(struct intel_driver_data *intel);
+Bool intel_memman_terminate(struct intel_driver_data *intel);
+
+#endif /* _INTEL_MEMMAN_H_ */
diff --git a/i965_drv_video/object_heap.c b/i965_drv_video/object_heap.c
new file mode 100644
index 0000000..1900f8c
--- /dev/null
+++ b/i965_drv_video/object_heap.c
@@ -0,0 +1,194 @@
+/*
+ * Copyright (c) 2007 Intel Corporation. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "object_heap.h"
+
+#include "assert.h"
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#define ASSERT	assert
+
+#define LAST_FREE	-1
+#define ALLOCATED	-2
+
+/*
+ * Expands the heap
+ * Return 0 on success, -1 on error
+ */
+static int object_heap_expand( object_heap_p heap )
+{
+    int i;
+    void *new_heap_index;
+    int next_free;
+    int new_heap_size = heap->heap_size + heap->heap_increment;
+    
+    new_heap_index = (void *) realloc( heap->heap_index, new_heap_size * heap->object_size );
+    if ( NULL == new_heap_index )
+    {
+        return -1; /* Out of memory */
+    }
+    memset(new_heap_index + heap->heap_size*heap->object_size, 0, heap->heap_increment * new_heap_size);
+    heap->heap_index = new_heap_index;
+    next_free = heap->next_free;
+    for(i = new_heap_size; i-- > heap->heap_size; )
+    {
+        object_base_p obj = (object_base_p) (heap->heap_index + i * heap->object_size);
+        obj->id = i + heap->id_offset;
+        obj->next_free = next_free;
+        next_free = i;
+    }
+    heap->next_free = next_free;
+    heap->heap_size = new_heap_size;
+    return 0; /* Success */
+}
+
+/*
+ * Return 0 on success, -1 on error
+ */
+int object_heap_init( object_heap_p heap, int object_size, int id_offset)
+{
+    heap->object_size = object_size;
+    heap->id_offset = id_offset & OBJECT_HEAP_OFFSET_MASK;
+    heap->heap_size = 0;
+    heap->heap_increment = 16;
+    heap->heap_index = NULL;
+    heap->next_free = LAST_FREE;
+    return object_heap_expand(heap);
+}
+
+/*
+ * Allocates an object
+ * Returns the object ID on success, returns -1 on error
+ */
+int object_heap_allocate( object_heap_p heap )
+{
+    object_base_p obj;
+    if ( LAST_FREE == heap->next_free )
+    {
+        if( -1 == object_heap_expand( heap ) )
+        {
+            return -1; /* Out of memory */
+        }
+    }
+    ASSERT( heap->next_free >= 0 );
+    
+    obj = (object_base_p) (heap->heap_index + heap->next_free * heap->object_size);
+    heap->next_free = obj->next_free;
+    obj->next_free = ALLOCATED;
+    return obj->id;
+}
+
+/*
+ * Lookup an object by object ID
+ * Returns a pointer to the object on success, returns NULL on error
+ */
+object_base_p object_heap_lookup( object_heap_p heap, int id )
+{
+    object_base_p obj;
+    if ( (id < heap->id_offset) || (id > (heap->heap_size+heap->id_offset)) )
+    {
+        return NULL;
+    }
+    id &= OBJECT_HEAP_ID_MASK;
+    obj = (object_base_p) (heap->heap_index + id * heap->object_size);
+
+	/* Check if the object has in fact been allocated */
+	if ( obj->next_free != ALLOCATED )
+    {
+        return NULL;
+    }
+    return obj;
+}
+
+/*
+ * Iterate over all objects in the heap.
+ * Returns a pointer to the first object on the heap, returns NULL if heap is empty.
+ */
+object_base_p object_heap_first( object_heap_p heap, object_heap_iterator *iter )
+{
+    *iter = -1;
+    return object_heap_next( heap, iter );
+}
+
+/*
+ * Iterate over all objects in the heap.
+ * Returns a pointer to the next object on the heap, returns NULL if heap is empty.
+ */
+object_base_p object_heap_next( object_heap_p heap, object_heap_iterator *iter )
+{
+    object_base_p obj;
+    int i = *iter + 1;
+    while ( i < heap->heap_size)
+    {
+        obj = (object_base_p) (heap->heap_index + i * heap->object_size);
+        if (obj->next_free == ALLOCATED)
+        {
+            *iter = i;
+            return obj;
+        }
+        i++;
+    }
+    *iter = i;
+    return NULL;
+}
+
+
+
+/*
+ * Frees an object
+ */
+void object_heap_free( object_heap_p heap, object_base_p obj )
+{
+    /* Don't complain about NULL pointers */
+    if (NULL != obj)
+    {
+        /* Check if the object has in fact been allocated */
+        ASSERT( obj->next_free == ALLOCATED );
+    
+        obj->next_free = heap->next_free;
+        heap->next_free = obj->id & OBJECT_HEAP_ID_MASK;
+    }
+}
+
+/*
+ * Destroys a heap, the heap must be empty.
+ */
+void object_heap_destroy( object_heap_p heap )
+{
+    object_base_p obj;
+    int i;
+    /* Check if heap is empty */
+    for (i = 0; i < heap->heap_size; i++)
+    {
+        /* Check if object is not still allocated */
+        obj = (object_base_p) (heap->heap_index + i * heap->object_size);
+        ASSERT( obj->next_free != ALLOCATED );
+    }
+    free(heap->heap_index);
+    heap->heap_size = 0;
+    heap->heap_index = NULL;
+    heap->next_free = LAST_FREE;
+}
diff --git a/i965_drv_video/object_heap.h b/i965_drv_video/object_heap.h
new file mode 100644
index 0000000..154fddb
--- /dev/null
+++ b/i965_drv_video/object_heap.h
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2007 Intel Corporation. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef _OBJECT_HEAP_H_
+#define _OBJECT_HEAP_H_
+
+#define OBJECT_HEAP_OFFSET_MASK		0x7F000000
+#define OBJECT_HEAP_ID_MASK			0x00FFFFFF
+
+typedef struct object_base *object_base_p;
+typedef struct object_heap *object_heap_p;
+
+struct object_base {
+    int id;
+    int next_free;
+};
+
+struct object_heap {
+    int	object_size;
+    int id_offset;
+    void *heap_index;
+    int next_free;
+    int heap_size;
+    int heap_increment;
+};
+
+typedef int object_heap_iterator;
+
+/*
+ * Return 0 on success, -1 on error
+ */
+int object_heap_init( object_heap_p heap, int object_size, int id_offset);
+
+/*
+ * Allocates an object
+ * Returns the object ID on success, returns -1 on error
+ */
+int object_heap_allocate( object_heap_p heap );
+
+/*
+ * Lookup an allocated object by object ID
+ * Returns a pointer to the object on success, returns NULL on error
+ */
+object_base_p object_heap_lookup( object_heap_p heap, int id );
+
+/*
+ * Iterate over all objects in the heap.
+ * Returns a pointer to the first object on the heap, returns NULL if heap is empty.
+ */
+object_base_p object_heap_first( object_heap_p heap, object_heap_iterator *iter );
+
+/*
+ * Iterate over all objects in the heap.
+ * Returns a pointer to the next object on the heap, returns NULL if heap is empty.
+ */
+object_base_p object_heap_next( object_heap_p heap, object_heap_iterator *iter );
+
+/*
+ * Frees an object
+ */
+void object_heap_free( object_heap_p heap, object_base_p obj );
+
+/*
+ * Destroys a heap, the heap must be empty.
+ */
+void object_heap_destroy( object_heap_p heap );
+
+#endif /* _OBJECT_HEAP_H_ */
diff --git a/i965_drv_video/shaders/Makefile.am b/i965_drv_video/shaders/Makefile.am
new file mode 100644
index 0000000..24f1aa8
--- /dev/null
+++ b/i965_drv_video/shaders/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = mpeg2 render
diff --git a/i965_drv_video/shaders/mpeg2/Makefile.am b/i965_drv_video/shaders/mpeg2/Makefile.am
new file mode 100644
index 0000000..e5c6e7f
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = vld
diff --git a/i965_drv_video/shaders/mpeg2/vld/Makefile.am b/i965_drv_video/shaders/mpeg2/vld/Makefile.am
new file mode 100644
index 0000000..ff534fe
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/Makefile.am
@@ -0,0 +1,90 @@
+
+INTEL_G4I = addidct.g4i               \
+	    do_iq_intra.g4i           \
+	    do_iq_non_intra.g4i       \
+	    idct.g4i                  \
+	    iq_intra.g4i              \
+	    iq_non_intra.g4i          \
+	    motion_field_uv.g4i       \
+	    motion_field_y.g4i        \
+	    motion_frame_uv.g4i       \
+	    motion_frame_y.g4i        \
+	    read_field_x0y0_uv.g4i    \
+	    read_field_x0y0_y.g4i     \
+	    read_field_x0y1_y.g4i     \
+	    read_field_x1y0_y.g4i     \
+	    read_field_x1y1_y.g4i     \
+	    read_frame_x0y0_uv.g4i    \
+	    read_frame_x0y0_y.g4i     \
+	    read_frame_x0y1_y.g4i     \
+	    read_frame_x1y0_y.g4i     \
+	    read_frame_x1y1_y.g4i
+
+INTEL_G4A = frame_intra.g4a 			\
+	    frame_frame_pred_forward.g4a	\
+	    frame_frame_pred_backward.g4a	\
+	    frame_frame_pred_bidirect.g4a	\
+	    frame_field_pred_forward.g4a	\
+	    frame_field_pred_backward.g4a	\
+	    frame_field_pred_bidirect.g4a	\
+	    lib.g4a				\
+	    field_intra.g4a			\
+	    field_forward.g4a			\
+	    field_forward_16x8.g4a		\
+	    field_backward.g4a			\
+	    field_backward_16x8.g4a		\
+	    field_bidirect.g4a			\
+	    field_bidirect_16x8.g4a		\
+	    null.g4a
+
+INTEL_G4B = frame_intra.g4b 			\
+	    frame_frame_pred_forward.g4b	\
+	    frame_frame_pred_backward.g4b	\
+	    frame_frame_pred_bidirect.g4b	\
+	    frame_field_pred_forward.g4b	\
+	    frame_field_pred_backward.g4b	\
+	    frame_field_pred_bidirect.g4b	\
+	    lib.g4b				\
+	    field_intra.g4b			\
+	    field_forward.g4b			\
+	    field_forward_16x8.g4b		\
+	    field_backward.g4b			\
+	    field_backward_16x8.g4b		\
+	    field_bidirect.g4b			\
+	    field_bidirect_16x8.g4b
+
+INTEL_G4B_GEN5 = frame_intra.g4b.gen5 		\
+	    frame_frame_pred_forward.g4b.gen5	\
+	    frame_frame_pred_backward.g4b.gen5	\
+	    frame_frame_pred_bidirect.g4b.gen5	\
+	    frame_field_pred_forward.g4b.gen5	\
+	    frame_field_pred_backward.g4b.gen5	\
+	    frame_field_pred_bidirect.g4b.gen5	\
+	    lib.g4b.gen5			\
+	    field_intra.g4b.gen5		\
+	    field_forward.g4b.gen5		\
+	    field_forward_16x8.g4b.gen5		\
+	    field_backward.g4b.gen5		\
+	    field_backward_16x8.g4b.gen5	\
+	    field_bidirect.g4b.gen5		\
+	    field_bidirect_16x8.g4b.gen5
+
+EXTRA_DIST = $(INTEL_G4I)	\
+	     $(INTEL_G4A)       \
+	     $(INTEL_G4B)    	\
+	     $(INTEL_G4B_GEN5)
+
+if HAVE_GEN4ASM
+
+SUFFIXES = .g4a .g4b
+.g4a.g4b:
+	m4 $*.g4a > $*.g4m && intel-gen4asm -o $@ $*.g4m && intel-gen4asm -g 5 -o $@.gen5 $*.g4m && rm $*.g4m
+
+$(INTEL_G4B): $(INTEL_G4I)
+
+BUILT_SOURCES= $(INTEL_G4B)
+
+clean-local:
+	-rm -f $(INTEL_G4B)
+	-rm -f $(INTEL_G4B_GEN5)
+endif    
diff --git a/i965_drv_video/shaders/mpeg2/vld/addidct.g4i b/i965_drv_video/shaders/mpeg2/vld/addidct.g4i
new file mode 100644
index 0000000..b57548d
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/addidct.g4i
@@ -0,0 +1,152 @@
+/*
+ * Copyright © 2008 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g32:    message descriptor for reading reference data
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data                           */
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};          //restore x and y
+
+and.nz (1) null g82.2<1,1,1>UW 0x20UW {align1};       //dct_type
+(f0) jmpi field_dct;
+
+add (16) g58.0<1>W g83.0<16,16,1>W g58.0<16,16,2>UB {align1};
+add (16) g59.0<1>W g84.0<16,16,1>W g59.0<16,16,2>UB {align1};
+add (16) g60.0<1>W g85.0<16,16,1>W g60.0<16,16,2>UB {align1};
+add (16) g61.0<1>W g86.0<16,16,1>W g61.0<16,16,2>UB {align1};
+add (16) g62.0<1>W g87.0<16,16,1>W g62.0<16,16,2>UB {align1};
+add (16) g63.0<1>W g88.0<16,16,1>W g63.0<16,16,2>UB {align1};
+add (16) g64.0<1>W g89.0<16,16,1>W g64.0<16,16,2>UB {align1};
+add (16) g65.0<1>W g90.0<16,16,1>W g65.0<16,16,2>UB {align1};
+add (16) g66.0<1>W g91.0<16,16,1>W g66.0<16,16,2>UB {align1};
+add (16) g67.0<1>W g92.0<16,16,1>W g67.0<16,16,2>UB {align1};
+add (16) g68.0<1>W g93.0<16,16,1>W g68.0<16,16,2>UB {align1};
+add (16) g69.0<1>W g94.0<16,16,1>W g69.0<16,16,2>UB {align1};
+add (16) g70.0<1>W g95.0<16,16,1>W g70.0<16,16,2>UB {align1};
+add (16) g71.0<1>W g96.0<16,16,1>W g71.0<16,16,2>UB {align1};
+add (16) g72.0<1>W g97.0<16,16,1>W g72.0<16,16,2>UB {align1};
+add (16) g73.0<1>W g98.0<16,16,1>W g73.0<16,16,2>UB {align1};
+jmpi write_back;
+
+field_dct:
+add (16) g58.0<1>W g83.0<16,16,1>W g58.0<16,16,2>UB {align1};
+add (16) g59.0<1>W g91.0<16,16,1>W g59.0<16,16,2>UB {align1};
+add (16) g60.0<1>W g84.0<16,16,1>W g60.0<16,16,2>UB {align1};
+add (16) g61.0<1>W g92.0<16,16,1>W g61.0<16,16,2>UB {align1};
+add (16) g62.0<1>W g85.0<16,16,1>W g62.0<16,16,2>UB {align1};
+add (16) g63.0<1>W g93.0<16,16,1>W g63.0<16,16,2>UB {align1};
+add (16) g64.0<1>W g86.0<16,16,1>W g64.0<16,16,2>UB {align1};
+add (16) g65.0<1>W g94.0<16,16,1>W g65.0<16,16,2>UB {align1};
+add (16) g66.0<1>W g87.0<16,16,1>W g66.0<16,16,2>UB {align1};
+add (16) g67.0<1>W g95.0<16,16,1>W g67.0<16,16,2>UB {align1};
+add (16) g68.0<1>W g88.0<16,16,1>W g68.0<16,16,2>UB {align1};
+add (16) g69.0<1>W g96.0<16,16,1>W g69.0<16,16,2>UB {align1};
+add (16) g70.0<1>W g89.0<16,16,1>W g70.0<16,16,2>UB {align1};
+add (16) g71.0<1>W g97.0<16,16,1>W g71.0<16,16,2>UB {align1};
+add (16) g72.0<1>W g90.0<16,16,1>W g72.0<16,16,2>UB {align1};
+add (16) g73.0<1>W g98.0<16,16,1>W g73.0<16,16,2>UB {align1};
+
+write_back:
+mov (1) g31.8<1>UD 0x00F000FUD {align1};
+mov.sat (16) g58.0<2>UB g58.0<16,16,1>W {align1};
+mov.sat (16) g59.0<2>UB g59.0<16,16,1>W {align1};
+mov.sat (16) g60.0<2>UB g60.0<16,16,1>W {align1};
+mov.sat (16) g61.0<2>UB g61.0<16,16,1>W {align1};
+mov.sat (16) g62.0<2>UB g62.0<16,16,1>W {align1};
+mov.sat (16) g63.0<2>UB g63.0<16,16,1>W {align1};
+mov.sat (16) g64.0<2>UB g64.0<16,16,1>W {align1};
+mov.sat (16) g65.0<2>UB g65.0<16,16,1>W {align1};
+mov.sat (16) g66.0<2>UB g66.0<16,16,1>W {align1};
+mov.sat (16) g67.0<2>UB g67.0<16,16,1>W {align1};
+mov.sat (16) g68.0<2>UB g68.0<16,16,1>W {align1};
+mov.sat (16) g69.0<2>UB g69.0<16,16,1>W {align1};
+mov.sat (16) g70.0<2>UB g70.0<16,16,1>W {align1};
+mov.sat (16) g71.0<2>UB g71.0<16,16,1>W {align1};
+mov.sat (16) g72.0<2>UB g72.0<16,16,1>W {align1};
+mov.sat (16) g73.0<2>UB g73.0<16,16,1>W {align1};
+
+mov (16) m1.0<1>UB  g58.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g59.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB  g60.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g61.0<16,16,2>UB {align1};
+mov (16) m3.0<1>UB  g62.0<16,16,2>UB {align1};
+mov (16) m3.16<1>UB g63.0<16,16,2>UB {align1};
+mov (16) m4.0<1>UB  g64.0<16,16,2>UB {align1};
+mov (16) m4.16<1>UB g65.0<16,16,2>UB {align1};
+mov (16) m5.0<1>UB  g66.0<16,16,2>UB {align1};
+mov (16) m5.16<1>UB g67.0<16,16,2>UB {align1};
+mov (16) m6.0<1>UB  g68.0<16,16,2>UB {align1};
+mov (16) m6.16<1>UB g69.0<16,16,2>UB {align1};
+mov (16) m7.0<1>UB  g70.0<16,16,2>UB {align1};
+mov (16) m7.16<1>UB g71.0<16,16,2>UB {align1};
+mov (16) m8.0<1>UB  g72.0<16,16,2>UB {align1};
+mov (16) m8.16<1>UB g73.0<16,16,2>UB {align1};
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1};
+
+//U
+mov (1) g31.8<1>UD 0x0070007UD  { align1 };
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1D {align1};
+add (16) g74.0<1>W g99.0<16,16,1>W g74.0<16,16,1>UW {align1};
+add (16) g75.0<1>W g100.0<16,16,1>W g75.0<16,16,1>UW {align1};
+add (16) g76.0<1>W g101.0<16,16,1>W g76.0<16,16,1>UW {align1};
+add (16) g77.0<1>W g102.0<16,16,1>W g77.0<16,16,1>UW {align1};
+mov.sat (16) g74.0<2>UB g74.0<16,16,1>W {align1};
+mov.sat (16) g75.0<2>UB g75.0<16,16,1>W {align1};
+mov.sat (16) g76.0<2>UB g76.0<16,16,1>W {align1};
+mov.sat (16) g77.0<2>UB g77.0<16,16,1>W {align1};
+
+mov (16) m1.0<1>UB g74.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g75.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB g76.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g77.0<16,16,2>UB {align1};
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
+
+//V
+add (16) g78.0<1>UW g103.0<16,16,1>W g78.0<16,16,1>UW {align1};
+add (16) g79.0<1>UW g104.0<16,16,1>W g79.0<16,16,1>UW {align1};
+add (16) g80.0<1>UW g105.0<16,16,1>W g80.0<16,16,1>UW {align1};
+add (16) g81.0<1>UW g106.0<16,16,1>W g81.0<16,16,1>UW {align1};
+mov.sat (16) g78.0<2>UB g78.0<16,16,1>W {align1};
+mov.sat (16) g79.0<2>UB g79.0<16,16,1>W {align1};
+mov.sat (16) g80.0<2>UB g80.0<16,16,1>W {align1};
+mov.sat (16) g81.0<2>UB g81.0<16,16,1>W {align1};
+
+mov (16) m1.0<1>UB g78.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g79.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB g80.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g81.0<16,16,2>UB {align1};
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
+
+send (16) 0 acc0<1>UW g0<8,8,1>UW
+        thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
+
diff --git a/i965_drv_video/shaders/mpeg2/vld/do_iq_intra.g4i b/i965_drv_video/shaders/mpeg2/vld/do_iq_intra.g4i
new file mode 100644
index 0000000..29bd020
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/do_iq_intra.g4i
@@ -0,0 +1,64 @@
+/*
+ * Copyright © 2008 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table 
+   g112~g115: intra IQ matrix in UW format (in order to use instruction compress), copys from g1~g2
+   g[a0.0]:DCT data of a block
+   g125:   ip before jump
+   if(v==0 && u==0 && intra_mb) 
+        F''[v][u] = QF[v][u] * intra_dc_mult
+   else 
+        F''[v][u] = (QF[v][u]*W[w][v][u]*quantiser_scale*2)/32       
+*/
+DO_IQ_INTRA:
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+mov (1) g111.0<1>W g[a0.0]<1,1,1>W  {align1};
+mul (16) g116.0<1>D g[a0.0]<8,8,1>W g112.0<8,8,1>UW {align1 compr};
+mul (16) g116.0<1>D g116.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
+asr (16) g116.0<1>D g116.0<8,8,1>D 4UW {align1 compr};
+mul (1) g116.0<1>D g111<1,1,1>W g109.4<1,1,1>UW {align1};  //intra_dc_mult
+
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+mul (16) g118.0<1>D g[a0.0]<8,8,1>W g113.0<8,8,1>UW {align1 compr};
+mul (16) g118.0<1>D g118.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
+asr (16) g118.0<1>D g118.0<8,8,1>D 4UW {align1 compr};
+
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+mul (16) g120.0<1>D g[a0.0]<8,8,1>W g114.0<8,8,1>UW {align1 compr};
+mul (16) g120.0<1>D g120.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
+asr (16) g120.0<1>D g120.0<8,8,1>D 4UW {align1 compr};
+
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+mul (16) g122.0<1>D g[a0.0]<8,8,1>W g115.0<8,8,1>UW {align1 compr};
+mul (16) g122.0<1>D g122.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
+asr (16) g122.0<1>D g122.0<8,8,1>D 4UW {align1 compr};
+
+add (1) ip g125.0<1,1,1>UD 0x20UD {align1};            //jump back
diff --git a/i965_drv_video/shaders/mpeg2/vld/do_iq_non_intra.g4i b/i965_drv_video/shaders/mpeg2/vld/do_iq_non_intra.g4i
new file mode 100644
index 0000000..da85e84
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/do_iq_non_intra.g4i
@@ -0,0 +1,59 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table 
+   g112~g115: intra IQ matrix in UW format (in order to use instruction compress), copys from g1~g2
+   g[a0.0]:DCT data of a block
+   g125:   ip before jump
+   F''[v][u]=(((QF[v][u]*2)+Sign(QF[v][u])) * W[w][v][u] * quantiser_scale)/32;  
+*/
+DO_IQ_NON_INTRA:
+add (1)  a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+mul (16) g116.0<1>D g[a0.0]<8,8,1>W g112.0<8,8,1>UW {align1 compr};
+mul (16) g116.0<1>D g116.0<8,8,1>D  g109.0<8,8,0>UW {align1 compr};
+asr (16) g116.0<1>D g116.0<8,8,1>D  4UW {align1 compr};
+
+add (1)  a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+mul (16) g118.0<1>D g[a0.0]<8,8,1>W g113.0<8,8,1>UW {align1 compr};
+mul (16) g118.0<1>D g118.0<8,8,1>D  g109.0<8,8,0>UW {align1 compr};
+asr (16) g118.0<1>D g118.0<8,8,1>D  4UW {align1 compr};
+
+add (1)  a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+mul (16) g120.0<1>D g[a0.0]<8,8,1>W g114.0<8,8,1>UW {align1 compr};
+mul (16) g120.0<1>D g120.0<8,8,1>D  g109.0<8,8,0>UW {align1 compr};
+asr (16) g120.0<1>D g120.0<8,8,1>D  4UW {align1 compr};
+
+add (1)  a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+mul (16) g122.0<1>D g[a0.0]<8,8,1>W g115.0<8,8,1>UW {align1 compr};
+mul (16) g122.0<1>D g122.0<8,8,1>D  g109.0<8,8,0>UW {align1 compr};
+asr (16) g122.0<1>D g122.0<8,8,1>D  4UW {align1 compr};
+
+add (1) ip g125.0<1,1,1>UD 0x20UD {align1};            //jump back
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_addidct.g4i b/i965_drv_video/shaders/mpeg2/vld/field_addidct.g4i
new file mode 100644
index 0000000..05d0f95
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_addidct.g4i
@@ -0,0 +1,153 @@
+/*
+ * Copyright © 2008 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g32:    message descriptor for reading reference data
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data                           */
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};          //restore x and y
+
+and.nz (1) null g82.2<1,1,1>UW 0x20UW {align1};       //dct_type
+(f0) jmpi field_dct;
+
+add (16) g58.0<1>W g83.0<16,16,1>W g58.0<16,16,2>UB {align1};
+add (16) g59.0<1>W g84.0<16,16,1>W g59.0<16,16,2>UB {align1};
+add (16) g60.0<1>W g85.0<16,16,1>W g60.0<16,16,2>UB {align1};
+add (16) g61.0<1>W g86.0<16,16,1>W g61.0<16,16,2>UB {align1};
+add (16) g62.0<1>W g87.0<16,16,1>W g62.0<16,16,2>UB {align1};
+add (16) g63.0<1>W g88.0<16,16,1>W g63.0<16,16,2>UB {align1};
+add (16) g64.0<1>W g89.0<16,16,1>W g64.0<16,16,2>UB {align1};
+add (16) g65.0<1>W g90.0<16,16,1>W g65.0<16,16,2>UB {align1};
+add (16) g66.0<1>W g91.0<16,16,1>W g66.0<16,16,2>UB {align1};
+add (16) g67.0<1>W g92.0<16,16,1>W g67.0<16,16,2>UB {align1};
+add (16) g68.0<1>W g93.0<16,16,1>W g68.0<16,16,2>UB {align1};
+add (16) g69.0<1>W g94.0<16,16,1>W g69.0<16,16,2>UB {align1};
+add (16) g70.0<1>W g95.0<16,16,1>W g70.0<16,16,2>UB {align1};
+add (16) g71.0<1>W g96.0<16,16,1>W g71.0<16,16,2>UB {align1};
+add (16) g72.0<1>W g97.0<16,16,1>W g72.0<16,16,2>UB {align1};
+add (16) g73.0<1>W g98.0<16,16,1>W g73.0<16,16,2>UB {align1};
+
+jmpi write_back;
+
+field_dct:
+add (16) g58.0<1>W g83.0<16,16,1>W g58.0<16,16,2>UB {align1};
+add (16) g59.0<1>W g91.0<16,16,1>W g59.0<16,16,2>UB {align1};
+add (16) g60.0<1>W g84.0<16,16,1>W g60.0<16,16,2>UB {align1};
+add (16) g61.0<1>W g92.0<16,16,1>W g61.0<16,16,2>UB {align1};
+add (16) g62.0<1>W g85.0<16,16,1>W g62.0<16,16,2>UB {align1};
+add (16) g63.0<1>W g93.0<16,16,1>W g63.0<16,16,2>UB {align1};
+add (16) g64.0<1>W g86.0<16,16,1>W g64.0<16,16,2>UB {align1};
+add (16) g65.0<1>W g94.0<16,16,1>W g65.0<16,16,2>UB {align1};
+add (16) g66.0<1>W g87.0<16,16,1>W g66.0<16,16,2>UB {align1};
+add (16) g67.0<1>W g95.0<16,16,1>W g67.0<16,16,2>UB {align1};
+add (16) g68.0<1>W g88.0<16,16,1>W g68.0<16,16,2>UB {align1};
+add (16) g69.0<1>W g96.0<16,16,1>W g69.0<16,16,2>UB {align1};
+add (16) g70.0<1>W g89.0<16,16,1>W g70.0<16,16,2>UB {align1};
+add (16) g71.0<1>W g97.0<16,16,1>W g71.0<16,16,2>UB {align1};
+add (16) g72.0<1>W g90.0<16,16,1>W g72.0<16,16,2>UB {align1};
+add (16) g73.0<1>W g98.0<16,16,1>W g73.0<16,16,2>UB {align1};
+
+write_back:
+mov (1) g31.8<1>UD 0x00F000FUD {align1};
+mov.sat (16) g58.0<2>UB g58.0<16,16,1>W {align1};
+mov.sat (16) g59.0<2>UB g59.0<16,16,1>W {align1};
+mov.sat (16) g60.0<2>UB g60.0<16,16,1>W {align1};
+mov.sat (16) g61.0<2>UB g61.0<16,16,1>W {align1};
+mov.sat (16) g62.0<2>UB g62.0<16,16,1>W {align1};
+mov.sat (16) g63.0<2>UB g63.0<16,16,1>W {align1};
+mov.sat (16) g64.0<2>UB g64.0<16,16,1>W {align1};
+mov.sat (16) g65.0<2>UB g65.0<16,16,1>W {align1};
+mov.sat (16) g66.0<2>UB g66.0<16,16,1>W {align1};
+mov.sat (16) g67.0<2>UB g67.0<16,16,1>W {align1};
+mov.sat (16) g68.0<2>UB g68.0<16,16,1>W {align1};
+mov.sat (16) g69.0<2>UB g69.0<16,16,1>W {align1};
+mov.sat (16) g70.0<2>UB g70.0<16,16,1>W {align1};
+mov.sat (16) g71.0<2>UB g71.0<16,16,1>W {align1};
+mov.sat (16) g72.0<2>UB g72.0<16,16,1>W {align1};
+mov.sat (16) g73.0<2>UB g73.0<16,16,1>W {align1};
+
+mov (16) m1.0<1>UB  g58.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g59.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB  g60.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g61.0<16,16,2>UB {align1};
+mov (16) m3.0<1>UB  g62.0<16,16,2>UB {align1};
+mov (16) m3.16<1>UB g63.0<16,16,2>UB {align1};
+mov (16) m4.0<1>UB  g64.0<16,16,2>UB {align1};
+mov (16) m4.16<1>UB g65.0<16,16,2>UB {align1};
+mov (16) m5.0<1>UB  g66.0<16,16,2>UB {align1};
+mov (16) m5.16<1>UB g67.0<16,16,2>UB {align1};
+mov (16) m6.0<1>UB  g68.0<16,16,2>UB {align1};
+mov (16) m6.16<1>UB g69.0<16,16,2>UB {align1};
+mov (16) m7.0<1>UB  g70.0<16,16,2>UB {align1};
+mov (16) m7.16<1>UB g71.0<16,16,2>UB {align1};
+mov (16) m8.0<1>UB  g72.0<16,16,2>UB {align1};
+mov (16) m8.16<1>UB g73.0<16,16,2>UB {align1};
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1};
+
+//U
+mov (1) g31.8<1>UD 0x0070007UD  { align1 };
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1D {align1};
+add (16) g74.0<1>W g99.0<16,16,1>W g74.0<16,16,1>UW {align1};
+add (16) g75.0<1>W g100.0<16,16,1>W g75.0<16,16,1>UW {align1};
+add (16) g76.0<1>W g101.0<16,16,1>W g76.0<16,16,1>UW {align1};
+add (16) g77.0<1>W g102.0<16,16,1>W g77.0<16,16,1>UW {align1};
+mov.sat (16) g74.0<2>UB g74.0<16,16,1>W {align1};
+mov.sat (16) g75.0<2>UB g75.0<16,16,1>W {align1};
+mov.sat (16) g76.0<2>UB g76.0<16,16,1>W {align1};
+mov.sat (16) g77.0<2>UB g77.0<16,16,1>W {align1};
+
+mov (16) m1.0<1>UB g74.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g75.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB g76.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g77.0<16,16,2>UB {align1};
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
+
+//V
+add (16) g78.0<1>UW g103.0<16,16,1>W g78.0<16,16,1>UW {align1};
+add (16) g79.0<1>UW g104.0<16,16,1>W g79.0<16,16,1>UW {align1};
+add (16) g80.0<1>UW g105.0<16,16,1>W g80.0<16,16,1>UW {align1};
+add (16) g81.0<1>UW g106.0<16,16,1>W g81.0<16,16,1>UW {align1};
+mov.sat (16) g78.0<2>UB g78.0<16,16,1>W {align1};
+mov.sat (16) g79.0<2>UB g79.0<16,16,1>W {align1};
+mov.sat (16) g80.0<2>UB g80.0<16,16,1>W {align1};
+mov.sat (16) g81.0<2>UB g81.0<16,16,1>W {align1};
+
+mov (16) m1.0<1>UB g78.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g79.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB g80.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g81.0<16,16,2>UB {align1};
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
+
+send (16) 0 acc0<1>UW g0<8,8,1>UW
+        thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
+
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_backward.g4a b/i965_drv_video/shaders/mpeg2/vld/field_backward.g4a
new file mode 100644
index 0000000..1696ff3
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_backward.g4a
@@ -0,0 +1,99 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g32:   message descriptor for reading reference data   */
+
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+mov (1) g126.8<1>UD ip {align1};
+mov (1) ip g21.0<1,1,1>UD {align1};
+
+//Y of top field 
+first_field_picture:
+asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+mov (1) g32.28<1>UD 0UD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};             //motion vertical field select forward
+(f0) mov (1) g32.28<1>UD 1UD {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
+define(`surface',`7')
+define(`mv1',`g82.20')
+define(`mv2',`g82.22')
+include(`field_motion_y.g4i')
+//UV of top field
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g31.14<1>W g82.20<2,2,1>W 2W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+mov (1) g32.28<1>UD 0UD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};             //motion vertical field select forward
+(f0) mov (1) g32.28<1>UD 1UD {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
+define(`surface_u', `8')
+define(`surface_v', `9')
+define(`mv1',`g82.20')
+define(`mv2',`g82.22')
+include(`field_motion_uv.g4i')
+jmpi field_addidct;
+
+second_field_picture:
+//Y of bottom field
+asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
+define(`surface',`3')
+define(`mv1',`g82.20')
+define(`mv2',`g82.22')
+include(`field_motion_y.g4i')
+//UV of bottom field
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g31.14<1>W g82.20<2,2,1>W 2W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
+define(`surface_u', `10')
+define(`surface_v', `11')
+define(`mv1',`g82.20')
+define(`mv2',`g82.22')
+include(`field_motion_uv.g4i')
+
+field_addidct:
+include(`field_addidct.g4i')
+out:
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_backward.g4b b/i965_drv_video/shaders/mpeg2/vld/field_backward.g4b
new file mode 100644
index 0000000..f00d8e5
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_backward.g4b
@@ -0,0 +1,757 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000143 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_backward.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/field_backward.g4b.gen5
new file mode 100644
index 0000000..7aac9e4
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_backward.g4b.gen5
@@ -0,0 +1,757 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000286 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_backward_16x8.g4a b/i965_drv_video/shaders/mpeg2/vld/field_backward_16x8.g4a
new file mode 100644
index 0000000..89b8368
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_backward_16x8.g4a
@@ -0,0 +1,30 @@
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g32:   message descriptor for reading reference data   */
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+define(`UV_red',`0xffffffffUD')
+define(`UV_white',`0x7f7f7f7fUD')
+define(`UV_green',`0x00000000UD')
+mov(2) g6.0<1>UD g82.12<2,2,1>UW {align1};
+mov(1) g6.8<1>UD 0x000f000fUD  { align1 };
+mov(16) m1<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m3<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m5<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m7<1>UD 0xFFFFFFFFUD {align1 compr};
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(0, 0, 2, 0) mlen 9 rlen 0 { align1 };
+/*Fill U buffer & V buffer with 0x7F*/
+shr (2) g6.0<1>UD g82.12<2,2,1>UW  1UW {align1};
+mov(1) g6.8<1>UD 0x00070007UD  { align1 };
+mov (16) m1<1>UD UV_white {align1 compr};
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_backward_16x8.g4b b/i965_drv_video/shaders/mpeg2/vld/field_backward_16x8.g4b
new file mode 100644
index 0000000..9d95f70
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_backward_16x8.g4b
@@ -0,0 +1,15 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
+   { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
+   { 0x00800031, 0x24001d28, 0x008d00c0, 0x05902000 },
+   { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
+   { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
+   { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302001 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_backward_16x8.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/field_backward_16x8.g4b.gen5
new file mode 100644
index 0000000..b12bddc
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_backward_16x8.g4b.gen5
@@ -0,0 +1,15 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
+   { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
+   { 0x00800031, 0x24001d28, 0x508d00c0, 0x12082000 },
+   { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
+   { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
+   { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082001 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_bidirect.g4a b/i965_drv_video/shaders/mpeg2/vld/field_bidirect.g4a
new file mode 100644
index 0000000..ad6d302
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_bidirect.g4a
@@ -0,0 +1,141 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g32:   message descriptor for reading reference data   */
+
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+mov (1) g126.8<1>UD ip {align1};
+mov (1) ip g21.0<1,1,1>UD {align1};
+
+//Y of forward 
+asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+mov (1) g32.28<1>UD 0UD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};             //motion vertical field select
+(f0) mov (1) g32.28<1>UD 1UD {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
+define(`surface',`4')
+define(`mv1',`g82.16')
+define(`mv2',`g82.18')
+include(`field_motion_y.g4i')
+mov (16) g108.0<1>UD g58.0<16,16,1>UD {align1 compr};
+mov (16) g110.0<1>UD g60.0<16,16,1>UD {align1 compr};
+mov (16) g112.0<1>UD g62.0<16,16,1>UD {align1 compr};
+mov (16) g114.0<1>UD g64.0<16,16,1>UD {align1 compr};
+mov (16) g116.0<1>UD g66.0<16,16,1>UD {align1 compr};
+mov (16) g118.0<1>UD g68.0<16,16,1>UD {align1 compr};
+mov (16) g120.0<1>UD g70.0<16,16,1>UD {align1 compr};
+mov (16) g122.0<1>UD g72.0<16,16,1>UD {align1 compr};
+
+//Y of backward 
+asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+mov (1) g32.28<1>UD 0UD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};             //motion vertical field select
+(f0) mov (1) g32.28<1>UD 1UD {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
+define(`surface',`7')
+define(`mv1',`g82.20')
+define(`mv2',`g82.22')
+include(`field_motion_y.g4i')
+avg (16) g58.0<1>UW g58.0<16,16,1>UW g108.0<16,16,1>UW {align1};
+avg (16) g59.0<1>UW g59.0<16,16,1>UW g109.0<16,16,1>UW {align1};
+avg (16) g60.0<1>UW g60.0<16,16,1>UW g110.0<16,16,1>UW {align1};
+avg (16) g61.0<1>UW g61.0<16,16,1>UW g111.0<16,16,1>UW {align1};
+avg (16) g62.0<1>UW g62.0<16,16,1>UW g112.0<16,16,1>UW {align1};
+avg (16) g63.0<1>UW g63.0<16,16,1>UW g113.0<16,16,1>UW {align1};
+avg (16) g64.0<1>UW g64.0<16,16,1>UW g114.0<16,16,1>UW {align1};
+avg (16) g65.0<1>UW g65.0<16,16,1>UW g115.0<16,16,1>UW {align1};
+avg (16) g66.0<1>UW g66.0<16,16,1>UW g116.0<16,16,1>UW {align1};
+avg (16) g67.0<1>UW g67.0<16,16,1>UW g117.0<16,16,1>UW {align1};
+avg (16) g68.0<1>UW g68.0<16,16,1>UW g118.0<16,16,1>UW {align1};
+avg (16) g69.0<1>UW g69.0<16,16,1>UW g119.0<16,16,1>UW {align1};
+avg (16) g70.0<1>UW g70.0<16,16,1>UW g120.0<16,16,1>UW {align1};
+avg (16) g71.0<1>UW g71.0<16,16,1>UW g121.0<16,16,1>UW {align1};
+avg (16) g72.0<1>UW g72.0<16,16,1>UW g122.0<16,16,1>UW {align1};
+avg (16) g73.0<1>UW g73.0<16,16,1>UW g123.0<16,16,1>UW {align1};
+
+//UV, Forward
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g31.14<1>W g82.16<2,2,1>W 2W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+mov (1) g32.28<1>UD 0UD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};             //motion vertical field select
+(f0) mov (1) g32.28<1>UD 1UD {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
+define(`surface_u', `5')
+define(`surface_v', `6')
+define(`mv1',`g82.16')
+define(`mv2',`g82.18')
+include(`field_motion_uv.g4i')
+//Save UV Forward
+mov (16) g108.0<1>UD g74.0<16,16,1>UD {align1 compr};
+mov (16) g110.0<1>UD g76.0<16,16,1>UD {align1 compr};
+mov (16) g112.0<1>UD g78.0<16,16,1>UD {align1 compr};
+mov (16) g114.0<1>UD g80.0<16,16,1>UD {align1 compr};
+
+//UV, Backward
+asr (2) g31.14<1>W g82.20<2,2,1>W 2W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+mov (1) g32.28<1>UD 0UD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};             //motion vertical field select
+(f0) mov (1) g32.28<1>UD 1UD {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
+define(`surface_u', `8')
+define(`surface_v', `9')
+define(`mv1',`g82.20')
+define(`mv2',`g82.22')
+include(`field_motion_uv.g4i')
+//Average Forward and Backward
+avg (16) g74.0<1>UW g74.0<16,16,1>UW g108.0<16,16,1>UW {align1};
+avg (16) g75.0<1>UW g75.0<16,16,1>UW g109.0<16,16,1>UW {align1};
+avg (16) g76.0<1>UW g76.0<16,16,1>UW g110.0<16,16,1>UW {align1};
+avg (16) g77.0<1>UW g77.0<16,16,1>UW g111.0<16,16,1>UW {align1};
+avg (16) g78.0<1>UW g78.0<16,16,1>UW g112.0<16,16,1>UW {align1};
+avg (16) g79.0<1>UW g79.0<16,16,1>UW g113.0<16,16,1>UW {align1};
+avg (16) g80.0<1>UW g80.0<16,16,1>UW g114.0<16,16,1>UW {align1};
+avg (16) g81.0<1>UW g81.0<16,16,1>UW g115.0<16,16,1>UW {align1};
+
+field_addidct:
+include(`field_addidct.g4i')
+out:
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_bidirect.g4b b/i965_drv_video/shaders/mpeg2/vld/field_bidirect.g4b
new file mode 100644
index 0000000..181e776
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_bidirect.g4b
@@ -0,0 +1,797 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
+   { 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
+   { 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
+   { 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
+   { 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
+   { 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
+   { 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
+   { 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00800042, 0x27402529, 0x00b10740, 0x00b10d80 },
+   { 0x00800042, 0x27602529, 0x00b10760, 0x00b10da0 },
+   { 0x00800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
+   { 0x00800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
+   { 0x00800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
+   { 0x00800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
+   { 0x00800042, 0x28002529, 0x00b10800, 0x00b10e40 },
+   { 0x00800042, 0x28202529, 0x00b10820, 0x00b10e60 },
+   { 0x00800042, 0x28402529, 0x00b10840, 0x00b10e80 },
+   { 0x00800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
+   { 0x00800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
+   { 0x00800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
+   { 0x00800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
+   { 0x00800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
+   { 0x00800042, 0x29002529, 0x00b10900, 0x00b10f40 },
+   { 0x00800042, 0x29202529, 0x00b10920, 0x00b10f60 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00802001, 0x2d800021, 0x00b10940, 0x00000000 },
+   { 0x00802001, 0x2dc00021, 0x00b10980, 0x00000000 },
+   { 0x00802001, 0x2e000021, 0x00b109c0, 0x00000000 },
+   { 0x00802001, 0x2e400021, 0x00b10a00, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00800042, 0x29402529, 0x00b10940, 0x00b10d80 },
+   { 0x00800042, 0x29602529, 0x00b10960, 0x00b10da0 },
+   { 0x00800042, 0x29802529, 0x00b10980, 0x00b10dc0 },
+   { 0x00800042, 0x29a02529, 0x00b109a0, 0x00b10de0 },
+   { 0x00800042, 0x29c02529, 0x00b109c0, 0x00b10e00 },
+   { 0x00800042, 0x29e02529, 0x00b109e0, 0x00b10e20 },
+   { 0x00800042, 0x2a002529, 0x00b10a00, 0x00b10e40 },
+   { 0x00800042, 0x2a202529, 0x00b10a20, 0x00b10e60 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_bidirect.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/field_bidirect.g4b.gen5
new file mode 100644
index 0000000..70dd7b3
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_bidirect.g4b.gen5
@@ -0,0 +1,797 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
+   { 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
+   { 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
+   { 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
+   { 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
+   { 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
+   { 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
+   { 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00800042, 0x27402529, 0x00b10740, 0x00b10d80 },
+   { 0x00800042, 0x27602529, 0x00b10760, 0x00b10da0 },
+   { 0x00800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
+   { 0x00800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
+   { 0x00800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
+   { 0x00800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
+   { 0x00800042, 0x28002529, 0x00b10800, 0x00b10e40 },
+   { 0x00800042, 0x28202529, 0x00b10820, 0x00b10e60 },
+   { 0x00800042, 0x28402529, 0x00b10840, 0x00b10e80 },
+   { 0x00800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
+   { 0x00800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
+   { 0x00800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
+   { 0x00800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
+   { 0x00800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
+   { 0x00800042, 0x29002529, 0x00b10900, 0x00b10f40 },
+   { 0x00800042, 0x29202529, 0x00b10920, 0x00b10f60 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00802001, 0x2d800021, 0x00b10940, 0x00000000 },
+   { 0x00802001, 0x2dc00021, 0x00b10980, 0x00000000 },
+   { 0x00802001, 0x2e000021, 0x00b109c0, 0x00000000 },
+   { 0x00802001, 0x2e400021, 0x00b10a00, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00800042, 0x29402529, 0x00b10940, 0x00b10d80 },
+   { 0x00800042, 0x29602529, 0x00b10960, 0x00b10da0 },
+   { 0x00800042, 0x29802529, 0x00b10980, 0x00b10dc0 },
+   { 0x00800042, 0x29a02529, 0x00b109a0, 0x00b10de0 },
+   { 0x00800042, 0x29c02529, 0x00b109c0, 0x00b10e00 },
+   { 0x00800042, 0x29e02529, 0x00b109e0, 0x00b10e20 },
+   { 0x00800042, 0x2a002529, 0x00b10a00, 0x00b10e40 },
+   { 0x00800042, 0x2a202529, 0x00b10a20, 0x00b10e60 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4a b/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4a
new file mode 100644
index 0000000..e4fc178
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4a
@@ -0,0 +1,31 @@
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g32:   message descriptor for reading reference data   */
+
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+define(`UV_red',`0xffffffffUD')
+define(`UV_white',`0x7f7f7f7fUD')
+define(`UV_green',`0x00000000UD')
+mov(2) g6.0<1>UD g82.12<2,2,1>UW {align1};
+mov(1) g6.8<1>UD 0x000f000fUD  { align1 };
+mov(16) m1<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m3<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m5<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m7<1>UD 0xFFFFFFFFUD {align1 compr};
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(0, 0, 2, 0) mlen 9 rlen 0 { align1 };
+/*Fill U buffer & V buffer with 0x7F*/
+shr (2) g6.0<1>UD g82.12<2,2,1>UW  1UW {align1};
+mov(1) g6.8<1>UD 0x00070007UD  { align1 };
+mov (16) m1<1>UD UV_white {align1 compr};
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4b b/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4b
new file mode 100644
index 0000000..9d95f70
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4b
@@ -0,0 +1,15 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
+   { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
+   { 0x00800031, 0x24001d28, 0x008d00c0, 0x05902000 },
+   { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
+   { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
+   { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302001 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen5
new file mode 100644
index 0000000..b12bddc
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen5
@@ -0,0 +1,15 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
+   { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
+   { 0x00800031, 0x24001d28, 0x508d00c0, 0x12082000 },
+   { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
+   { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
+   { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082001 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_forward.g4a b/i965_drv_video/shaders/mpeg2/vld/field_forward.g4a
new file mode 100644
index 0000000..611cf0c
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_forward.g4a
@@ -0,0 +1,116 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g32:   message descriptor for reading reference data   */
+
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+mov (1) g126.8<1>UD ip {align1};
+mov (1) ip g21.0<1,1,1>UD {align1};
+
+and.nz (1) null g82.2<1,1,1>UW 0x0800UW {align1};          //second field-picture?
+(f0) jmpi first_field_picture;
+
+and (1) g32.0<1>UW g82.10<1,1,1>UW 0x0003UW {align1};             
+cmp.e (1) null g32.0<1,1,1>UW 0x0002UW {align1};           //bottom field?
+(f0) jmpi bottom_field;
+
+top_field:
+and.z (1) null g82.2<1,1,1>UW 0x1000UW {align1};           //motion vertical field select forward
+(f0) jmpi first_field_picture;                             //second field-picture top field from top
+mov (1) g32.28<1>UD 1UD {align1};
+jmpi first_field_picture;                                  //second field-picture top field from bottom
+
+bottom_field:
+and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};          //motion vertical field select forward
+(f0) jmpi first_field_picture;                             //second field-picture bottom field from bottom
+mov (1) g32.28<1>UD 0UD {align1};
+jmpi second_field_picture;                                 //second field-picture bottom field from top
+
+//Y of top field 
+first_field_picture:
+asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+mov (1) g32.28<1>UD 0UD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};             //motion vertical field select forward
+(f0) mov (1) g32.28<1>UD 1UD {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
+define(`surface',`4')
+define(`mv1',`g82.16')
+define(`mv2',`g82.18')
+include(`field_motion_y.g4i')
+//UV of top field
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g31.14<1>W g82.16<2,2,1>W 2W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+mov (1) g32.28<1>UD 0UD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};             //motion vertical field select forward
+(f0) mov (1) g32.28<1>UD 1UD {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
+define(`surface_u', `5')
+define(`surface_v', `6')
+define(`mv1',`g82.16')
+define(`mv2',`g82.18')
+include(`field_motion_uv.g4i')
+jmpi field_addidct;
+
+second_field_picture:
+//Y of bottom field
+asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+define(`surface',`3')
+define(`mv1',`g82.16')
+define(`mv2',`g82.18')
+include(`field_motion_y.g4i')
+//UV of bottom field
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g31.14<1>W g82.16<2,2,1>W 2W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
+define(`surface_u', `10')
+define(`surface_v', `11')
+define(`mv1',`g82.16')
+define(`mv2',`g82.18')
+include(`field_motion_uv.g4i')
+
+field_addidct:
+include(`field_addidct.g4i')
+out:
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_forward.g4b b/i965_drv_video/shaders/mpeg2/vld/field_forward.g4b
new file mode 100644
index 0000000..aa059f1
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_forward.g4b
@@ -0,0 +1,768 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x08000800 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000005, 0x24002d29, 0x00210a4a, 0x00030003 },
+   { 0x01000010, 0x20002d3c, 0x00210400, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
+   { 0x01000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000002 },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000014a },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000141 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
+   { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_forward.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/field_forward.g4b.gen5
new file mode 100644
index 0000000..4867a5e
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_forward.g4b.gen5
@@ -0,0 +1,768 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x08000800 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000005, 0x24002d29, 0x00210a4a, 0x00030003 },
+   { 0x01000010, 0x20002d3c, 0x00210400, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x01000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000294 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
+   { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000282 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
+   { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
+   { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
+   { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
+   { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
+   { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
+   { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
+   { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
+   { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
+   { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
+   { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
+   { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
+   { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
+   { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
+   { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
+   { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
+   { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
+   { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
+   { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
+   { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
+   { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
+   { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
+   { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
+   { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
+   { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
+   { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
+   { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
+   { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
+   { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
+   { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
+   { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
+   { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
+   { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
+   { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_forward_16x8.g4a b/i965_drv_video/shaders/mpeg2/vld/field_forward_16x8.g4a
new file mode 100644
index 0000000..2052481
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_forward_16x8.g4a
@@ -0,0 +1,31 @@
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g32:   message descriptor for reading reference data   */
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+define(`UV_red',`0xffffffffUD')
+define(`UV_white',`0x7f7f7f7fUD')
+define(`UV_green',`0x00000000UD')
+mov(2) g6.0<1>UD g82.12<2,2,1>UW {align1};
+mov(1) g6.8<1>UD 0x000f000fUD  { align1 };
+mov(16) m1<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m3<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m5<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m7<1>UD 0xFFFFFFFFUD {align1 compr};
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(0, 0, 2, 0) mlen 9 rlen 0 { align1 };
+/*Fill U buffer & V buffer with 0x7F*/
+shr (2) g6.0<1>UD g82.12<2,2,1>UW  1UW {align1};
+mov(1) g6.8<1>UD 0x00070007UD  { align1 };
+mov (16) m1<1>UD UV_white {align1 compr};
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
+
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_forward_16x8.g4b b/i965_drv_video/shaders/mpeg2/vld/field_forward_16x8.g4b
new file mode 100644
index 0000000..9d95f70
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_forward_16x8.g4b
@@ -0,0 +1,15 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
+   { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
+   { 0x00800031, 0x24001d28, 0x008d00c0, 0x05902000 },
+   { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
+   { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
+   { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302001 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_forward_16x8.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/field_forward_16x8.g4b.gen5
new file mode 100644
index 0000000..b12bddc
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_forward_16x8.g4b.gen5
@@ -0,0 +1,15 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
+   { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
+   { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
+   { 0x00800031, 0x24001d28, 0x508d00c0, 0x12082000 },
+   { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
+   { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
+   { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
+   { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082001 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_intra.g4a b/i965_drv_video/shaders/mpeg2/vld/field_intra.g4a
new file mode 100644
index 0000000..e85ec85
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_intra.g4a
@@ -0,0 +1,209 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/*
+   GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT tab
+   g31:    read and write message descriptor
+   g32~g55:DCT data
+   g58~g81:reference data
+   g82:    thread payload 
+   g83~g106:IDCT data 
+*/
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+
+include(`iq_intra.g4i')
+
+//defined for idct
+define(`ROW_SHIFT', `11UD') 
+define(`ROW_ADD', `0x400UD')          
+define(`COL_SHIFT', `20UD') 
+define(`COL_ADD', `0x80000UD')          
+
+mov (1) a0.0<1>UD 0x06F006E0UD {align1};      //0x06F006E0UD+0x00200020UD=0x07100700UD (g56.0 and g56.16)
+
+//Y0
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (8) g83.0<1>W g32.0<16,8,2>W 128UW {align1};
+add (8) g84.0<1>W g33.0<16,8,2>W 128UW {align1};
+add (8) g85.0<1>W g34.0<16,8,2>W 128UW {align1};
+add (8) g86.0<1>W g35.0<16,8,2>W 128UW {align1};
+add (8) g87.0<1>W g36.0<16,8,2>W 128UW {align1};
+add (8) g88.0<1>W g37.0<16,8,2>W 128UW {align1};
+add (8) g89.0<1>W g38.0<16,8,2>W 128UW {align1};
+add (8) g90.0<1>W g39.0<16,8,2>W 128UW {align1};
+
+//Y1
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (8) g83.16<1>W g32.0<16,8,2>W 128UW {align1};
+add (8) g84.16<1>W g33.0<16,8,2>W 128UW {align1};
+add (8) g85.16<1>W g34.0<16,8,2>W 128UW {align1};
+add (8) g86.16<1>W g35.0<16,8,2>W 128UW {align1};
+add (8) g87.16<1>W g36.0<16,8,2>W 128UW {align1};
+add (8) g88.16<1>W g37.0<16,8,2>W 128UW {align1};
+add (8) g89.16<1>W g38.0<16,8,2>W 128UW {align1};
+add (8) g90.16<1>W g39.0<16,8,2>W 128UW {align1};
+
+//Y2
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (8) g91.0<1>W g32.0<16,8,2>W 128UW {align1};
+add (8) g92.0<1>W g33.0<16,8,2>W 128UW {align1};
+add (8) g93.0<1>W g34.0<16,8,2>W 128UW {align1};
+add (8) g94.0<1>W g35.0<16,8,2>W 128UW {align1};
+add (8) g95.0<1>W g36.0<16,8,2>W 128UW {align1};
+add (8) g96.0<1>W g37.0<16,8,2>W 128UW {align1};
+add (8) g97.0<1>W g38.0<16,8,2>W 128UW {align1};
+add (8) g98.0<1>W g39.0<16,8,2>W 128UW {align1};
+
+//Y3
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (8) g91.16<1>W g32.0<16,8,2>W 128UW {align1};
+add (8) g92.16<1>W g33.0<16,8,2>W 128UW {align1};
+add (8) g93.16<1>W g34.0<16,8,2>W 128UW {align1};
+add (8) g94.16<1>W g35.0<16,8,2>W 128UW {align1};
+add (8) g95.16<1>W g36.0<16,8,2>W 128UW {align1};
+add (8) g96.16<1>W g37.0<16,8,2>W 128UW {align1};
+add (8) g97.16<1>W g38.0<16,8,2>W 128UW {align1};
+add (8) g98.16<1>W g39.0<16,8,2>W 128UW {align1};
+
+//U
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (16) g99.0<1>W g32.0<16,8,2>W 128UW {align1};
+add (16) g100.0<1>W g34.0<16,8,2>W 128UW {align1};
+add (16) g101.0<1>W g36.0<16,8,2>W 128UW {align1};
+add (16) g102.0<1>W g38.0<16,8,2>W 128UW {align1};
+
+//V
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (16) g103.0<1>W g32.0<16,8,2>W 128UW {align1};
+add (16) g104.0<1>W g34.0<16,8,2>W 128UW {align1};
+add (16) g105.0<1>W g36.0<16,8,2>W 128UW {align1};
+add (16) g106.0<1>W g38.0<16,8,2>W 128UW {align1};
+
+//send msg
+mov (1) g31.8<1>UD 0x00F000FUD {align1};
+mov.sat (16) g83.0<2>UB g83.0<16,16,1>W {align1};
+mov.sat (16) g84.0<2>UB g84.0<16,16,1>W {align1};
+mov.sat (16) g85.0<2>UB g85.0<16,16,1>W {align1};
+mov.sat (16) g86.0<2>UB g86.0<16,16,1>W {align1};
+mov.sat (16) g87.0<2>UB g87.0<16,16,1>W {align1};
+mov.sat (16) g88.0<2>UB g88.0<16,16,1>W {align1};
+mov.sat (16) g89.0<2>UB g89.0<16,16,1>W {align1};
+mov.sat (16) g90.0<2>UB g90.0<16,16,1>W {align1};
+mov.sat (16) g91.0<2>UB g91.0<16,16,1>W {align1};
+mov.sat (16) g92.0<2>UB g92.0<16,16,1>W {align1};
+mov.sat (16) g93.0<2>UB g93.0<16,16,1>W {align1};
+mov.sat (16) g94.0<2>UB g94.0<16,16,1>W {align1};
+mov.sat (16) g95.0<2>UB g95.0<16,16,1>W {align1};
+mov.sat (16) g96.0<2>UB g96.0<16,16,1>W {align1};
+mov.sat (16) g97.0<2>UB g97.0<16,16,1>W {align1};
+mov.sat (16) g98.0<2>UB g98.0<16,16,1>W {align1};
+
+and.nz (1) null g82.2<1,1,1>UW 0x20UW{align1};
+(f0) jmpi field_dct;
+
+mov (16) m1.0<1>UB  g83.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g84.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB  g85.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g86.0<16,16,2>UB {align1};
+mov (16) m3.0<1>UB  g87.0<16,16,2>UB {align1};
+mov (16) m3.16<1>UB g88.0<16,16,2>UB {align1};
+mov (16) m4.0<1>UB  g89.0<16,16,2>UB {align1};
+mov (16) m4.16<1>UB g90.0<16,16,2>UB {align1};
+mov (16) m5.0<1>UB  g91.0<16,16,2>UB {align1};
+mov (16) m5.16<1>UB g92.0<16,16,2>UB {align1};
+mov (16) m6.0<1>UB  g93.0<16,16,2>UB {align1};
+mov (16) m6.16<1>UB g94.0<16,16,2>UB {align1};
+mov (16) m7.0<1>UB  g95.0<16,16,2>UB {align1};
+mov (16) m7.16<1>UB g96.0<16,16,2>UB {align1};
+mov (16) m8.0<1>UB  g97.0<16,16,2>UB {align1};
+mov (16) m8.16<1>UB g98.0<16,16,2>UB {align1};
+jmpi write_back;
+
+field_dct:
+mov (16) m1.0<1>UB  g83.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g91.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB  g84.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g92.0<16,16,2>UB {align1};
+mov (16) m3.0<1>UB  g85.0<16,16,2>UB {align1};
+mov (16) m3.16<1>UB g93.0<16,16,2>UB {align1};
+mov (16) m4.0<1>UB  g86.0<16,16,2>UB {align1};
+mov (16) m4.16<1>UB g94.0<16,16,2>UB {align1};
+mov (16) m5.0<1>UB  g87.0<16,16,2>UB {align1};
+mov (16) m5.16<1>UB g95.0<16,16,2>UB {align1};
+mov (16) m6.0<1>UB  g88.0<16,16,2>UB {align1};
+mov (16) m6.16<1>UB g96.0<16,16,2>UB {align1};
+mov (16) m7.0<1>UB  g89.0<16,16,2>UB {align1};
+mov (16) m7.16<1>UB g97.0<16,16,2>UB {align1};
+mov (16) m8.0<1>UB  g90.0<16,16,2>UB {align1};
+mov (16) m8.16<1>UB g98.0<16,16,2>UB {align1};
+
+write_back:
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1};
+
+//U
+mov (1) g31.8<1>UD 0x0070007UD  { align1 };
+shr (2) g31.0<1>UD g82.12<2,2,1>UW 1D {align1};
+mov.sat (16) g99.0<2>UB g99.0<16,16,1>W {align1};
+mov.sat (16) g100.0<2>UB g100.0<16,16,1>W {align1};
+mov.sat (16) g101.0<2>UB g101.0<16,16,1>W {align1};
+mov.sat (16) g102.0<2>UB g102.0<16,16,1>W {align1};
+
+mov (16) m1.0<1>UB  g99.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g100.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB  g101.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g102.0<16,16,2>UB {align1};
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
+
+//V
+mov.sat (16) g103.0<2>UB g103.0<16,16,1>W {align1};
+mov.sat (16) g104.0<2>UB g104.0<16,16,1>W {align1};
+mov.sat (16) g105.0<2>UB g105.0<16,16,1>W {align1};
+mov.sat (16) g106.0<2>UB g106.0<16,16,1>W {align1};
+
+mov (16) m1.0<1>UB  g103.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g104.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB  g105.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g106.0<16,16,2>UB {align1};
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
+
+OUT:
+send (16) 0 acc0<1>UW g0<8,8,1>UW
+        thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
+
+include(`do_iq_intra.g4i')
+include(`idct.g4i')
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_intra.g4b b/i965_drv_video/shaders/mpeg2/vld/field_intra.g4b
new file mode 100644
index 0000000..4c1c8c4
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_intra.g4b
@@ -0,0 +1,313 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
+   { 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
+   { 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
+   { 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
+   { 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000005 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000001 },
+   { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
+   { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
+   { 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
+   { 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
+   { 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
+   { 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000a1 },
+   { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000009b },
+   { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000095 },
+   { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
+   { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000089 },
+   { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000083 },
+   { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
+   { 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000085 },
+   { 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000007b },
+   { 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000071 },
+   { 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000067 },
+   { 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
+   { 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
+   { 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
+   { 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000061 },
+   { 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
+   { 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
+   { 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
+   { 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
+   { 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
+   { 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
+   { 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
+   { 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
+   { 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
+   { 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
+   { 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
+   { 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
+   { 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
+   { 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
+   { 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
+   { 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
+   { 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
+   { 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
+   { 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
+   { 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
+   { 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
+   { 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
+   { 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
+   { 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
+   { 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
+   { 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
+   { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
+   { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
+   { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
+   { 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
+   { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
+   { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
+   { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
+   { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
+   { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
+   { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
+   { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
+   { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
+   { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
+   { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
+   { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_intra.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/field_intra.g4b.gen5
new file mode 100644
index 0000000..957f6fc
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_intra.g4b.gen5
@@ -0,0 +1,313 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
+   { 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
+   { 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
+   { 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
+   { 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000012 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000002 },
+   { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
+   { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
+   { 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
+   { 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
+   { 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
+   { 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000142 },
+   { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000136 },
+   { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000012a },
+   { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
+   { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000112 },
+   { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000106 },
+   { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
+   { 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000010a },
+   { 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000f6 },
+   { 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000e2 },
+   { 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000ce },
+   { 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
+   { 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
+   { 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
+   { 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000c2 },
+   { 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
+   { 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
+   { 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
+   { 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
+   { 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
+   { 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
+   { 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
+   { 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
+   { 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
+   { 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
+   { 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
+   { 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
+   { 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
+   { 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
+   { 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
+   { 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
+   { 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
+   { 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
+   { 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
+   { 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
+   { 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
+   { 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
+   { 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
+   { 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
+   { 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
+   { 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
+   { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
+   { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
+   { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
+   { 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
+   { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
+   { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
+   { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
+   { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
+   { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
+   { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000034 },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
+   { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
+   { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
+   { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
+   { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
+   { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_motion_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/field_motion_uv.g4i
new file mode 100644
index 0000000..201ee51
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_motion_uv.g4i
@@ -0,0 +1,47 @@
+/*
+ * Copyright © 2008 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Zhang Hua jun <huajun.zhang@intel.com>
+ *    Xing Dong sheng <dongsheng.xing@intel.com>
+ *
+ */
+
+       and.z (1) null mv1<1,1,1>W 2W {align1};       
+       (f0) jmpi L1;
+       and.z (1) null mv2<1,1,1>W 2W {align1};       
+       (f0) jmpi L2;
+       include(`field_read_x1y1_uv.g4i')
+       jmpi L5;
+L2:
+       include(`field_read_x1y0_uv.g4i')
+       jmpi L5;
+L1:
+       and.z (1) null mv2<1,1,1>W 2W {align1};       
+       (f0) jmpi L4;
+       include(`field_read_x0y1_uv.g4i')
+       jmpi L5;
+L4:
+       include(`field_read_x0y0_uv.g4i')
+L5:
+
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_motion_y.g4i b/i965_drv_video/shaders/mpeg2/vld/field_motion_y.g4i
new file mode 100644
index 0000000..20adb31
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_motion_y.g4i
@@ -0,0 +1,45 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Zhang Hua jun <huajun.zhang@intel.com>
+ *    Xing Dong sheng <dongsheng.xing@intel.com>
+ *
+ */
+	and.z (1) null mv1<1,1,1>W 1UW {align1};	
+	(f0) jmpi L1;
+	and.z (1) null mv2<1,1,1>W 1UW {align1};	
+	(f0) jmpi L2;
+	include(`field_read_x1y1_y.g4i')
+	jmpi L5;
+L2:
+	include(`field_read_x1y0_y.g4i')
+	jmpi L5;
+L1:
+	and.z (1) null mv2<1,1,1>W 1UW {align1};	
+	(f0) jmpi L4;
+	include(`field_read_x0y1_y.g4i')
+	jmpi L5;
+L4:
+	include(`field_read_x0y0_y.g4i')
+L5:
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_read_x0y0_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/field_read_x0y0_uv.g4i
new file mode 100644
index 0000000..ff439e5
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_read_x0y0_uv.g4i
@@ -0,0 +1,65 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g32:   message descriptor for reading reference data   */
+
+mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
+send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+//U
+mov (8) g74.0<1>UW  g40.0<8,8,1>UB {align1};
+mov (8) g74.16<1>UW g41.0<8,8,1>UB {align1};
+mov (8) g75.0<1>UW  g42.0<8,8,1>UB {align1};
+mov (8) g75.16<1>UW g43.0<8,8,1>UB {align1};
+//V
+mov (8) g78.0<1>UW  g44.0<8,8,1>UB {align1};
+mov (8) g78.16<1>UW g45.0<8,8,1>UB {align1};
+mov (8) g79.0<1>UW  g46.0<8,8,1>UB {align1};
+mov (8) g79.16<1>UW g47.0<8,8,1>UB {align1};
+
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+//U
+mov (8) g76.0<1>UW  g40.0<8,8,1>UB {align1};
+mov (8) g76.16<1>UW g41.0<8,8,1>UB {align1};
+mov (8) g77.0<1>UW  g42.0<8,8,1>UB {align1};
+mov (8) g77.16<1>UW g43.0<8,8,1>UB {align1};
+//V
+mov (8) g80.0<1>UW  g44.0<8,8,1>UB {align1};
+mov (8) g80.16<1>UW g45.0<8,8,1>UB {align1};
+mov (8) g81.0<1>UW  g46.0<8,8,1>UB {align1};
+mov (8) g81.16<1>UW g47.0<8,8,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_read_x0y0_y.g4i b/i965_drv_video/shaders/mpeg2/vld/field_read_x0y0_y.g4i
new file mode 100644
index 0000000..3b0da9c
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_read_x0y0_y.g4i
@@ -0,0 +1,62 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g32:   message descriptor for reading reference data   */
+mov (1) g32.8<1>UD 0x07001FUD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+mov (16) g58.0<1>UW g38.0<16,16,1>UB {align1};
+mov (16) g59.0<1>UW g40.0<16,16,1>UB {align1};
+mov (16) g60.0<1>UW g42.0<16,16,1>UB {align1};
+mov (16) g61.0<1>UW g44.0<16,16,1>UB {align1};
+mov (16) g62.0<1>UW g46.0<16,16,1>UB {align1};
+mov (16) g63.0<1>UW g48.0<16,16,1>UB {align1};
+mov (16) g64.0<1>UW g50.0<16,16,1>UB {align1};
+mov (16) g65.0<1>UW g52.0<16,16,1>UB {align1};
+
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+mov (16) g66.0<1>UW g38.0<16,16,1>UB {align1};
+mov (16) g67.0<1>UW g40.0<16,16,1>UB {align1};
+mov (16) g68.0<1>UW g42.0<16,16,1>UB {align1};
+mov (16) g69.0<1>UW g44.0<16,16,1>UB {align1};
+mov (16) g70.0<1>UW g46.0<16,16,1>UB {align1};
+mov (16) g71.0<1>UW g48.0<16,16,1>UB {align1};
+mov (16) g72.0<1>UW g50.0<16,16,1>UB {align1};
+mov (16) g73.0<1>UW g52.0<16,16,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_read_x0y1_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/field_read_x0y1_uv.g4i
new file mode 100644
index 0000000..b72507a
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_read_x0y1_uv.g4i
@@ -0,0 +1,45 @@
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
+send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x0FUD {align1}; 
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
+send (16) 0 g50.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
+//U
+avg (8) g74.0<1>UW  g40.0<8,8,1>UB g41.0<8,8,1>UB {align1};
+avg (8) g74.16<1>UW g41.0<8,8,1>UB g42.0<8,8,1>UB {align1};
+avg (8) g75.0<1>UW  g42.0<8,8,1>UB g43.0<8,8,1>UB {align1};
+avg (8) g75.16<1>UW g43.0<8,8,1>UB g44.0<8,8,1>UB {align1};
+//V
+avg (8) g78.0<1>UW  g46.0<8,8,1>UB g47.0<8,8,1>UB {align1};
+avg (8) g78.16<1>UW g47.0<8,8,1>UB g48.0<8,8,1>UB {align1};
+avg (8) g79.0<1>UW  g48.0<8,8,1>UB g49.0<8,8,1>UB {align1};
+avg (8) g79.16<1>UW g49.0<8,8,1>UB g50.0<8,8,1>UB {align1};
+
+mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
+send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x0FUD {align1}; 
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
+send (16) 0 g50.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
+//U
+avg (8) g76.0<1>UW  g40.0<8,8,1>UB g41.0<8,8,1>UB {align1};
+avg (8) g76.16<1>UW g41.0<8,8,1>UB g42.0<8,8,1>UB {align1};
+avg (8) g77.0<1>UW  g42.0<8,8,1>UB g43.0<8,8,1>UB {align1};
+avg (8) g77.16<1>UW g43.0<8,8,1>UB g44.0<8,8,1>UB {align1};
+//V
+avg (8) g80.0<1>UW  g46.0<8,8,1>UB g47.0<8,8,1>UB {align1};
+avg (8) g80.16<1>UW g47.0<8,8,1>UB g48.0<8,8,1>UB {align1};
+avg (8) g81.0<1>UW  g48.0<8,8,1>UB g49.0<8,8,1>UB {align1};
+avg (8) g81.16<1>UW g49.0<8,8,1>UB g50.0<8,8,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_read_x0y1_y.g4i b/i965_drv_video/shaders/mpeg2/vld/field_read_x0y1_y.g4i
new file mode 100644
index 0000000..98a09ed
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_read_x0y1_y.g4i
@@ -0,0 +1,68 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g32.8<1>UD 0x07001FUD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x1FUD {align1};
+send (16) 0 g54.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+avg (16) g58.0<1>UW g38.0<16,16,1>UB g40.0<16,16,1>UB {align1};
+avg (16) g59.0<1>UW g40.0<16,16,1>UB g42.0<16,16,1>UB {align1};
+avg (16) g60.0<1>UW g42.0<16,16,1>UB g44.0<16,16,1>UB {align1};
+avg (16) g61.0<1>UW g44.0<16,16,1>UB g46.0<16,16,1>UB {align1};
+avg (16) g62.0<1>UW g46.0<16,16,1>UB g48.0<16,16,1>UB {align1};
+avg (16) g63.0<1>UW g48.0<16,16,1>UB g50.0<16,16,1>UB {align1};
+avg (16) g64.0<1>UW g50.0<16,16,1>UB g52.0<16,16,1>UB {align1};
+avg (16) g65.0<1>UW g52.0<16,16,1>UB g54.0<16,16,1>UB {align1};
+
+mov (1) g32.8<1>UD 0x07001FUD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x1FUD {align1};
+send (16) 0 g54.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+avg (16) g66.0<1>UW g38.0<16,16,1>UB g40.0<16,16,1>UB {align1};
+avg (16) g67.0<1>UW g40.0<16,16,1>UB g42.0<16,16,1>UB {align1};
+avg (16) g68.0<1>UW g42.0<16,16,1>UB g44.0<16,16,1>UB {align1};
+avg (16) g69.0<1>UW g44.0<16,16,1>UB g46.0<16,16,1>UB {align1};
+avg (16) g70.0<1>UW g46.0<16,16,1>UB g48.0<16,16,1>UB {align1};
+avg (16) g71.0<1>UW g48.0<16,16,1>UB g50.0<16,16,1>UB {align1};
+avg (16) g72.0<1>UW g50.0<16,16,1>UB g52.0<16,16,1>UB {align1};
+avg (16) g73.0<1>UW g52.0<16,16,1>UB g54.0<16,16,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_read_x1y0_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/field_read_x1y0_uv.g4i
new file mode 100644
index 0000000..8e318d7
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_read_x1y0_uv.g4i
@@ -0,0 +1,37 @@
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
+send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+//U
+avg (8) g74.0<1>UW  g40.0<8,8,1>UB g40.1<8,8,1>UB {align1};
+avg (8) g74.16<1>UW g41.0<8,8,1>UB g41.1<8,8,1>UB {align1};
+avg (8) g75.0<1>UW  g42.0<8,8,1>UB g42.1<8,8,1>UB {align1};
+avg (8) g75.16<1>UW g43.0<8,8,1>UB g43.1<8,8,1>UB {align1};
+//V 
+avg (8) g78.0<1>UW  g44.0<8,8,1>UB g44.1<8,8,1>UB {align1};
+avg (8) g78.16<1>UW g45.0<8,8,1>UB g45.1<8,8,1>UB {align1};
+avg (8) g79.0<1>UW  g46.0<8,8,1>UB g46.1<8,8,1>UB {align1};
+avg (8) g79.16<1>UW g47.0<8,8,1>UB g47.1<8,8,1>UB {align1};
+
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+//U
+avg (8) g76.0<1>UW  g40.0<8,8,1>UB g40.1<8,8,1>UB {align1};
+avg (8) g76.16<1>UW g41.0<8,8,1>UB g41.1<8,8,1>UB {align1};
+avg (8) g77.0<1>UW  g42.0<8,8,1>UB g42.1<8,8,1>UB {align1};
+avg (8) g77.16<1>UW g43.0<8,8,1>UB g43.1<8,8,1>UB {align1};
+//V                                              
+avg (8) g80.0<1>UW  g44.0<8,8,1>UB g44.1<8,8,1>UB {align1};
+avg (8) g80.16<1>UW g45.0<8,8,1>UB g45.1<8,8,1>UB {align1};
+avg (8) g81.0<1>UW  g46.0<8,8,1>UB g46.1<8,8,1>UB {align1};
+avg (8) g81.16<1>UW g47.0<8,8,1>UB g47.1<8,8,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_read_x1y0_y.g4i b/i965_drv_video/shaders/mpeg2/vld/field_read_x1y0_y.g4i
new file mode 100644
index 0000000..0d2fbb1
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_read_x1y0_y.g4i
@@ -0,0 +1,62 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g32.8<1>UD 0x07001FUD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+avg (16) g58.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
+avg (16) g59.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
+avg (16) g60.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
+avg (16) g61.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
+avg (16) g62.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
+avg (16) g63.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
+avg (16) g64.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
+avg (16) g65.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
+
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+avg (16) g66.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
+avg (16) g67.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
+avg (16) g68.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
+avg (16) g69.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
+avg (16) g70.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
+avg (16) g71.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
+avg (16) g72.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
+avg (16) g73.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_read_x1y1_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/field_read_x1y1_uv.g4i
new file mode 100644
index 0000000..dd8877a
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_read_x1y1_uv.g4i
@@ -0,0 +1,91 @@
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
+send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x0FUD {align1}; 
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
+send (16) 0 g50.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
+//U
+add (8) g74.0<1>UW  g40.0<8,8,1>UB g40.1<8,8,1>UB {align1};
+add (8) g74.16<1>UW g41.0<8,8,1>UB g41.1<8,8,1>UB {align1};
+add (8) g75.0<1>UW  g42.0<8,8,1>UB g42.1<8,8,1>UB {align1};
+add (8) g75.16<1>UW g43.0<8,8,1>UB g43.1<8,8,1>UB {align1};
+
+add (8) g74.0<1>UW  g74.0<8,8,1>UW  g41.0<8,8,1>UB {align1};
+add (8) g74.16<1>UW g74.16<8,8,1>UW g42.0<8,8,1>UB {align1};
+add (8) g75.0<1>UW  g75.0<8,8,1>UW  g43.0<8,8,1>UB {align1};
+add (8) g75.16<1>UW g75.16<8,8,1>UW g44.0<8,8,1>UB {align1};
+
+add (8) g74.0<1>UW  g74.0<8,8,1>UW  g41.1<8,8,1>UB {align1};
+add (8) g74.16<1>UW g74.16<8,8,1>UW g42.1<8,8,1>UB {align1};
+add (8) g75.0<1>UW  g75.0<8,8,1>UW  g43.1<8,8,1>UB {align1};
+add (8) g75.16<1>UW g75.16<8,8,1>UW g44.1<8,8,1>UB {align1};
+//V
+add (8) g78.0<1>UW  g46.0<8,8,1>UB g46.1<8,8,1>UB {align1};
+add (8) g78.16<1>UW g47.0<8,8,1>UB g47.1<8,8,1>UB {align1};
+add (8) g79.0<1>UW  g48.0<8,8,1>UB g48.1<8,8,1>UB {align1};
+add (8) g79.16<1>UW g49.0<8,8,1>UB g49.1<8,8,1>UB {align1};
+
+add (8) g78.0<1>UW  g78.0<8,8,1>UW  g47.0<8,8,1>UB {align1};
+add (8) g78.16<1>UW g78.16<8,8,1>UW g48.0<8,8,1>UB {align1};
+add (8) g79.0<1>UW  g79.0<8,8,1>UW  g49.0<8,8,1>UB {align1};
+add (8) g79.16<1>UW g79.16<8,8,1>UW g50.0<8,8,1>UB {align1};
+
+add (8) g78.0<1>UW  g78.0<8,8,1>UW  g47.1<8,8,1>UB {align1};
+add (8) g78.16<1>UW g78.16<8,8,1>UW g48.1<8,8,1>UB {align1};
+add (8) g79.0<1>UW  g79.0<8,8,1>UW  g49.1<8,8,1>UB {align1};
+add (8) g79.16<1>UW g79.16<8,8,1>UW g50.1<8,8,1>UB {align1};
+
+mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
+send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x0FUD {align1}; 
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
+send (16) 0 g50.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
+//U
+add (8) g76.0<1>UW  g40.0<8,8,1>UB g40.1<8,8,1>UB {align1};
+add (8) g76.16<1>UW g41.0<8,8,1>UB g41.1<8,8,1>UB {align1};
+add (8) g77.0<1>UW  g42.0<8,8,1>UB g42.1<8,8,1>UB {align1};
+add (8) g77.16<1>UW g43.0<8,8,1>UB g43.1<8,8,1>UB {align1};
+
+add (8) g76.0<1>UW  g76.0<8,8,1>UW  g41.0<8,8,1>UB {align1};
+add (8) g76.16<1>UW g76.16<8,8,1>UW g42.0<8,8,1>UB {align1};
+add (8) g77.0<1>UW  g77.0<8,8,1>UW  g43.0<8,8,1>UB {align1};
+add (8) g77.16<1>UW g77.16<8,8,1>UW g44.0<8,8,1>UB {align1};
+
+add (8) g76.0<1>UW  g76.0<8,8,1>UW  g41.1<8,8,1>UB {align1};
+add (8) g76.16<1>UW g76.16<8,8,1>UW g42.1<8,8,1>UB {align1};
+add (8) g77.0<1>UW  g77.0<8,8,1>UW  g43.1<8,8,1>UB {align1};
+add (8) g77.16<1>UW g77.16<8,8,1>UW g44.1<8,8,1>UB {align1};
+//V
+add (8) g80.0<1>UW  g46.0<8,8,1>UB g46.1<8,8,1>UB {align1};
+add (8) g80.16<1>UW g47.0<8,8,1>UB g47.1<8,8,1>UB {align1};
+add (8) g81.0<1>UW  g48.0<8,8,1>UB g48.1<8,8,1>UB {align1};
+add (8) g81.16<1>UW g49.0<8,8,1>UB g49.1<8,8,1>UB {align1};
+
+add (8) g80.0<1>UW  g80.0<8,8,1>UW  g47.0<8,8,1>UB {align1};
+add (8) g80.16<1>UW g80.16<8,8,1>UW g48.0<8,8,1>UB {align1};
+add (8) g81.0<1>UW  g81.0<8,8,1>UW  g49.0<8,8,1>UB {align1};
+add (8) g81.16<1>UW g81.16<8,8,1>UW g50.0<8,8,1>UB {align1};
+
+add (8) g80.0<1>UW  g80.0<8,8,1>UW  g47.1<8,8,1>UB {align1};
+add (8) g80.16<1>UW g80.16<8,8,1>UW g48.1<8,8,1>UB {align1};
+add (8) g81.0<1>UW  g81.0<8,8,1>UW  g49.1<8,8,1>UB {align1};
+add (8) g81.16<1>UW g81.16<8,8,1>UW g50.1<8,8,1>UB {align1};
+
+shr (32) g74.0<1>UW g74.0<16,16,1>UW 2UW {align1 compr};
+shr (32) g76.0<1>UW g76.0<16,16,1>UW 2UW {align1 compr};
+shr (32) g78.0<1>UW g78.0<16,16,1>UW 2UW {align1 compr};
+shr (32) g80.0<1>UW g80.0<16,16,1>UW 2UW {align1 compr};
+
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_read_x1y1_y.g4i b/i965_drv_video/shaders/mpeg2/vld/field_read_x1y1_y.g4i
new file mode 100644
index 0000000..7c28b86
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/field_read_x1y1_y.g4i
@@ -0,0 +1,123 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g32.8<1>UD 0x07001FUD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x1FUD {align1};
+send (16) 0 g54.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (16) g58.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
+add (16) g59.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
+add (16) g60.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
+add (16) g61.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
+add (16) g62.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
+add (16) g63.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
+add (16) g64.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
+add (16) g65.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
+
+add (16) g58.0<1>UW g58.0<16,16,1>UW g40.0<16,16,1>UB {align1};
+add (16) g59.0<1>UW g59.0<16,16,1>UW g42.0<16,16,1>UB {align1};
+add (16) g60.0<1>UW g60.0<16,16,1>UW g44.0<16,16,1>UB {align1};
+add (16) g61.0<1>UW g61.0<16,16,1>UW g46.0<16,16,1>UB {align1};
+add (16) g62.0<1>UW g62.0<16,16,1>UW g48.0<16,16,1>UB {align1};
+add (16) g63.0<1>UW g63.0<16,16,1>UW g50.0<16,16,1>UB {align1};
+add (16) g64.0<1>UW g64.0<16,16,1>UW g52.0<16,16,1>UB {align1};
+add (16) g65.0<1>UW g65.0<16,16,1>UW g54.0<16,16,1>UB {align1};
+
+add (16) g58.0<1>UW g58.0<16,16,1>UW g40.1<16,16,1>UB {align1};
+add (16) g59.0<1>UW g59.0<16,16,1>UW g42.1<16,16,1>UB {align1};
+add (16) g60.0<1>UW g60.0<16,16,1>UW g44.1<16,16,1>UB {align1};
+add (16) g61.0<1>UW g61.0<16,16,1>UW g46.1<16,16,1>UB {align1};
+add (16) g62.0<1>UW g62.0<16,16,1>UW g48.1<16,16,1>UB {align1};
+add (16) g63.0<1>UW g63.0<16,16,1>UW g50.1<16,16,1>UB {align1};
+add (16) g64.0<1>UW g64.0<16,16,1>UW g52.1<16,16,1>UB {align1};
+add (16) g65.0<1>UW g65.0<16,16,1>UW g54.1<16,16,1>UB {align1};
+
+shr (16) g58.0<1>UW g58.0<16,16,1>UW 2UW {align1};
+shr (16) g59.0<1>UW g59.0<16,16,1>UW 2UW {align1};
+shr (16) g60.0<1>UW g60.0<16,16,1>UW 2UW {align1};
+shr (16) g61.0<1>UW g61.0<16,16,1>UW 2UW {align1};
+shr (16) g62.0<1>UW g62.0<16,16,1>UW 2UW {align1};
+shr (16) g63.0<1>UW g63.0<16,16,1>UW 2UW {align1};
+shr (16) g64.0<1>UW g64.0<16,16,1>UW 2UW {align1};
+shr (16) g65.0<1>UW g65.0<16,16,1>UW 2UW {align1};
+
+mov (1) g32.8<1>UD 0x07001FUD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x1FUD {align1};
+send (16) 0 g54.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (16) g66.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
+add (16) g67.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
+add (16) g68.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
+add (16) g69.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
+add (16) g70.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
+add (16) g71.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
+add (16) g72.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
+add (16) g73.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
+
+add (16) g66.0<1>UW g66.0<16,16,1>UW g40.0<16,16,1>UB {align1};
+add (16) g67.0<1>UW g67.0<16,16,1>UW g42.0<16,16,1>UB {align1};
+add (16) g68.0<1>UW g68.0<16,16,1>UW g44.0<16,16,1>UB {align1};
+add (16) g69.0<1>UW g69.0<16,16,1>UW g46.0<16,16,1>UB {align1};
+add (16) g70.0<1>UW g70.0<16,16,1>UW g48.0<16,16,1>UB {align1};
+add (16) g71.0<1>UW g71.0<16,16,1>UW g50.0<16,16,1>UB {align1};
+add (16) g72.0<1>UW g72.0<16,16,1>UW g52.0<16,16,1>UB {align1};
+add (16) g73.0<1>UW g73.0<16,16,1>UW g54.0<16,16,1>UB {align1};
+
+add (16) g66.0<1>UW g66.0<16,16,1>UW g40.1<16,16,1>UB {align1};
+add (16) g67.0<1>UW g67.0<16,16,1>UW g42.1<16,16,1>UB {align1};
+add (16) g68.0<1>UW g68.0<16,16,1>UW g44.1<16,16,1>UB {align1};
+add (16) g69.0<1>UW g69.0<16,16,1>UW g46.1<16,16,1>UB {align1};
+add (16) g70.0<1>UW g70.0<16,16,1>UW g48.1<16,16,1>UB {align1};
+add (16) g71.0<1>UW g71.0<16,16,1>UW g50.1<16,16,1>UB {align1};
+add (16) g72.0<1>UW g72.0<16,16,1>UW g52.1<16,16,1>UB {align1};
+add (16) g73.0<1>UW g73.0<16,16,1>UW g54.1<16,16,1>UB {align1};
+
+shr (16) g66.0<1>UW g66.0<16,16,1>UW 2UW {align1};
+shr (16) g67.0<1>UW g67.0<16,16,1>UW 2UW {align1};
+shr (16) g68.0<1>UW g68.0<16,16,1>UW 2UW {align1};
+shr (16) g69.0<1>UW g69.0<16,16,1>UW 2UW {align1};
+shr (16) g70.0<1>UW g70.0<16,16,1>UW 2UW {align1};
+shr (16) g71.0<1>UW g71.0<16,16,1>UW 2UW {align1};
+shr (16) g72.0<1>UW g72.0<16,16,1>UW 2UW {align1};
+shr (16) g73.0<1>UW g73.0<16,16,1>UW 2UW {align1};
+
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_backward.g4a b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_backward.g4a
new file mode 100644
index 0000000..9db50ed
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_backward.g4a
@@ -0,0 +1,126 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov(2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+mov (1) g126.8<1>UD ip {align1};
+mov (1) ip g21.0<1,1,1>UD {align1};
+
+/*field 0 of Y*/
+asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface',`7')
+define(`mv1',`g82.20')
+define(`mv2',`g82.22')
+include(`motion_field_y.g4i')
+mov (8) g58.0<1>UD g32.0<8,8,1>UD {align1};
+mov (8) g60.0<1>UD g33.0<8,8,1>UD {align1};
+mov (8) g62.0<1>UD g34.0<8,8,1>UD {align1};
+mov (8) g64.0<1>UD g35.0<8,8,1>UD {align1};
+mov (8) g66.0<1>UD g36.0<8,8,1>UD {align1};
+mov (8) g68.0<1>UD g37.0<8,8,1>UD {align1};
+mov (8) g70.0<1>UD g38.0<8,8,1>UD {align1};
+mov (8) g72.0<1>UD g39.0<8,8,1>UD {align1};
+
+/*field 1 of Y*/
+asr (2) g31.14<1>W g82.28<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x8000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface',`7')
+define(`mv1',`g82.28')
+define(`mv2',`g82.30')
+include(`motion_field_y.g4i')
+mov (8) g59.0<1>UD g32.0<8,8,1>UD {align1};
+mov (8) g61.0<1>UD g33.0<8,8,1>UD {align1};
+mov (8) g63.0<1>UD g34.0<8,8,1>UD {align1};
+mov (8) g65.0<1>UD g35.0<8,8,1>UD {align1};
+mov (8) g67.0<1>UD g36.0<8,8,1>UD {align1};
+mov (8) g69.0<1>UD g37.0<8,8,1>UD {align1};
+mov (8) g71.0<1>UD g38.0<8,8,1>UD {align1};
+mov (8) g73.0<1>UD g39.0<8,8,1>UD {align1};
+
+/*field 0 of UV*/
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g82.20<1>W g82.20<2,2,1>W 1W {align1};
+asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface_u', `8')
+define(`surface_v', `9')
+define(`mv1',`g82.20')
+define(`mv2',`g82.22')
+include(`motion_field_uv.g4i')
+mov (8) g74.0<1>UW g32.0<8,8,1>UW {align1};
+mov (8) g75.0<1>UW g33.0<8,8,1>UW {align1};
+mov (8) g76.0<1>UW g34.0<8,8,1>UW {align1};
+mov (8) g77.0<1>UW g35.0<8,8,1>UW {align1};
+mov (8) g78.0<1>UW g36.0<8,8,1>UW {align1};
+mov (8) g79.0<1>UW g37.0<8,8,1>UW {align1};
+mov (8) g80.0<1>UW g38.0<8,8,1>UW {align1};
+mov (8) g81.0<1>UW g39.0<8,8,1>UW {align1};
+
+/*field 1 of UV*/
+asr (2) g82.28<1>W g82.28<2,2,1>W 1W {align1};
+asr (2) g31.14<1>W g82.28<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x8000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`mv1',`g82.28')
+define(`mv2',`g82.30')
+include(`motion_field_uv.g4i')
+mov (8) g74.16<1>UW g32.0<8,8,1>UW {align1};
+mov (8) g75.16<1>UW g33.0<8,8,1>UW {align1};
+mov (8) g76.16<1>UW g34.0<8,8,1>UW {align1};
+mov (8) g77.16<1>UW g35.0<8,8,1>UW {align1};
+mov (8) g78.16<1>UW g36.0<8,8,1>UW {align1};
+mov (8) g79.16<1>UW g37.0<8,8,1>UW {align1};
+mov (8) g80.16<1>UW g38.0<8,8,1>UW {align1};
+mov (8) g81.16<1>UW g39.0<8,8,1>UW {align1};
+
+include(`addidct.g4i')
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_backward.g4b b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_backward.g4b
new file mode 100644
index 0000000..5d46829
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_backward.g4b
@@ -0,0 +1,553 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
+   { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
+   { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
+   { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5
new file mode 100644
index 0000000..18595b2
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5
@@ -0,0 +1,553 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
+   { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
+   { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
+   { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
+   { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_bidirect.g4a b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_bidirect.g4a
new file mode 100644
index 0000000..fdc1e83
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_bidirect.g4a
@@ -0,0 +1,213 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov(2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+mov (1) g126.8<1>UD ip {align1};
+mov (1) ip g21.0<1,1,1>UD {align1};
+
+/*field 0 forward prediction of Y*/
+asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface',`4')
+define(`mv1',`g82.16')
+define(`mv2',`g82.18')
+include(`motion_field_y.g4i')
+mov (8) g58.0<1>UD g32.0<8,8,1>UD {align1};
+mov (8) g60.0<1>UD g33.0<8,8,1>UD {align1};
+mov (8) g62.0<1>UD g34.0<8,8,1>UD {align1};
+mov (8) g64.0<1>UD g35.0<8,8,1>UD {align1};
+mov (8) g66.0<1>UD g36.0<8,8,1>UD {align1};
+mov (8) g68.0<1>UD g37.0<8,8,1>UD {align1};
+mov (8) g70.0<1>UD g38.0<8,8,1>UD {align1};
+mov (8) g72.0<1>UD g39.0<8,8,1>UD {align1};
+
+/*field 1 forward prediction of Y*/
+asr (2) g31.14<1>W g82.24<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x4000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface',`4')
+define(`mv1',`g82.24')
+define(`mv2',`g82.26')
+include(`motion_field_y.g4i')
+mov (8) g59.0<1>UD g32.0<8,8,1>UD {align1};
+mov (8) g61.0<1>UD g33.0<8,8,1>UD {align1};
+mov (8) g63.0<1>UD g34.0<8,8,1>UD {align1};
+mov (8) g65.0<1>UD g35.0<8,8,1>UD {align1};
+mov (8) g67.0<1>UD g36.0<8,8,1>UD {align1};
+mov (8) g69.0<1>UD g37.0<8,8,1>UD {align1};
+mov (8) g71.0<1>UD g38.0<8,8,1>UD {align1};
+mov (8) g73.0<1>UD g39.0<8,8,1>UD {align1};
+
+/*field 0 forward prediction of UV*/
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g82.16<1>W g82.16<2,2,1>W 1W {align1};
+asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface_u', `5')
+define(`surface_v', `6')
+define(`mv1',`g82.16')
+define(`mv2',`g82.18')
+include(`motion_field_uv.g4i')
+mov (8) g74.0<1>UW g32.0<8,8,1>UW {align1};
+mov (8) g75.0<1>UW g33.0<8,8,1>UW {align1};
+mov (8) g76.0<1>UW g34.0<8,8,1>UW {align1};
+mov (8) g77.0<1>UW g35.0<8,8,1>UW {align1};
+mov (8) g78.0<1>UW g36.0<8,8,1>UW {align1};
+mov (8) g79.0<1>UW g37.0<8,8,1>UW {align1};
+mov (8) g80.0<1>UW g38.0<8,8,1>UW {align1};
+mov (8) g81.0<1>UW g39.0<8,8,1>UW {align1};
+
+/*field 1 forward prediction of UV*/
+asr (2) g82.24<1>W g82.24<2,2,1>W 1W {align1};
+asr (2) g31.14<1>W g82.24<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x4000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`mv1',`g82.24')
+define(`mv2',`g82.26')
+include(`motion_field_uv.g4i')
+mov (8) g74.16<1>UW g32.0<8,8,1>UW {align1};
+mov (8) g75.16<1>UW g33.0<8,8,1>UW {align1};
+mov (8) g76.16<1>UW g34.0<8,8,1>UW {align1};
+mov (8) g77.16<1>UW g35.0<8,8,1>UW {align1};
+mov (8) g78.16<1>UW g36.0<8,8,1>UW {align1};
+mov (8) g79.16<1>UW g37.0<8,8,1>UW {align1};
+mov (8) g80.16<1>UW g38.0<8,8,1>UW {align1};
+mov (8) g81.16<1>UW g39.0<8,8,1>UW {align1};
+
+/*field 0 backward prediction of Y*/
+mov(2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+
+asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface',`7')
+define(`mv1',`g82.20')
+define(`mv2',`g82.22')
+include(`motion_field_y.g4i')
+avg.sat (16) g58.0<1>UW g58.0<16,16,1>UW g32.0<16,16,1>UW {align1};
+avg.sat (16) g60.0<1>UW g60.0<16,16,1>UW g33.0<16,16,1>UW {align1};
+avg.sat (16) g62.0<1>UW g62.0<16,16,1>UW g34.0<16,16,1>UW {align1};
+avg.sat (16) g64.0<1>UW g64.0<16,16,1>UW g35.0<16,16,1>UW {align1};
+avg.sat (16) g66.0<1>UW g66.0<16,16,1>UW g36.0<16,16,1>UW {align1};
+avg.sat (16) g68.0<1>UW g68.0<16,16,1>UW g37.0<16,16,1>UW {align1};
+avg.sat (16) g70.0<1>UW g70.0<16,16,1>UW g38.0<16,16,1>UW {align1};
+avg.sat (16) g72.0<1>UW g72.0<16,16,1>UW g39.0<16,16,1>UW {align1};
+
+/*field 1 backward prediction of Y*/
+asr (2) g31.14<1>W g82.28<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x8000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface',`7')
+define(`mv1',`g82.28')
+define(`mv2',`g82.30')
+include(`motion_field_y.g4i')
+avg.sat (16) g59.0<1>UW g59.0<16,16,1>UW g32.0<16,16,1>UW {align1};
+avg.sat (16) g61.0<1>UW g61.0<16,16,1>UW g33.0<16,16,1>UW {align1};
+avg.sat (16) g63.0<1>UW g63.0<16,16,1>UW g34.0<16,16,1>UW {align1};
+avg.sat (16) g65.0<1>UW g65.0<16,16,1>UW g35.0<16,16,1>UW {align1};
+avg.sat (16) g67.0<1>UW g67.0<16,16,1>UW g36.0<16,16,1>UW {align1};
+avg.sat (16) g69.0<1>UW g69.0<16,16,1>UW g37.0<16,16,1>UW {align1};
+avg.sat (16) g71.0<1>UW g71.0<16,16,1>UW g38.0<16,16,1>UW {align1};
+avg.sat (16) g73.0<1>UW g73.0<16,16,1>UW g39.0<16,16,1>UW {align1};
+
+/*field 0 backward prediction of UV*/
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g82.20<1>W g82.20<2,2,1>W 1W {align1};
+asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface_u', `8')
+define(`surface_v', `9')
+define(`mv1',`g82.20')
+define(`mv2',`g82.22')
+include(`motion_field_uv.g4i')
+avg.sat (8) g74.0<1>UW g74.0<8,8,1>UW g32.0<8,8,1>UW {align1};
+avg.sat (8) g75.0<1>UW g75.0<8,8,1>UW g33.0<8,8,1>UW {align1};
+avg.sat (8) g76.0<1>UW g76.0<8,8,1>UW g34.0<8,8,1>UW {align1};
+avg.sat (8) g77.0<1>UW g77.0<8,8,1>UW g35.0<8,8,1>UW {align1};
+avg.sat (8) g78.0<1>UW g78.0<8,8,1>UW g36.0<8,8,1>UW {align1};
+avg.sat (8) g79.0<1>UW g79.0<8,8,1>UW g37.0<8,8,1>UW {align1};
+avg.sat (8) g80.0<1>UW g80.0<8,8,1>UW g38.0<8,8,1>UW {align1};
+avg.sat (8) g81.0<1>UW g81.0<8,8,1>UW g39.0<8,8,1>UW {align1};
+
+/*field 1 backward prediction of UV*/
+asr (2) g82.28<1>W g82.28<2,2,1>W 1W {align1};
+asr (2) g31.14<1>W g82.28<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x8000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`mv1',`g82.28')
+define(`mv2',`g82.30')
+include(`motion_field_uv.g4i')
+avg.sat (8) g74.16<1>UW g74.16<8,8,1>UW g32.0<8,8,1>UW {align1};
+avg.sat (8) g75.16<1>UW g75.16<8,8,1>UW g33.0<8,8,1>UW {align1};
+avg.sat (8) g76.16<1>UW g76.16<8,8,1>UW g34.0<8,8,1>UW {align1};
+avg.sat (8) g77.16<1>UW g77.16<8,8,1>UW g35.0<8,8,1>UW {align1};
+avg.sat (8) g78.16<1>UW g78.16<8,8,1>UW g36.0<8,8,1>UW {align1};
+avg.sat (8) g79.16<1>UW g79.16<8,8,1>UW g37.0<8,8,1>UW {align1};
+avg.sat (8) g80.16<1>UW g80.16<8,8,1>UW g38.0<8,8,1>UW {align1};
+avg.sat (8) g81.16<1>UW g81.16<8,8,1>UW g39.0<8,8,1>UW {align1};
+
+include(`addidct.g4i')
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b
new file mode 100644
index 0000000..9bd272e
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b
@@ -0,0 +1,1007 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
+   { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
+   { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
+   { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x80800042, 0x27402529, 0x00b10740, 0x00b10400 },
+   { 0x80800042, 0x27802529, 0x00b10780, 0x00b10420 },
+   { 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10440 },
+   { 0x80800042, 0x28002529, 0x00b10800, 0x00b10460 },
+   { 0x80800042, 0x28402529, 0x00b10840, 0x00b10480 },
+   { 0x80800042, 0x28802529, 0x00b10880, 0x00b104a0 },
+   { 0x80800042, 0x28c02529, 0x00b108c0, 0x00b104c0 },
+   { 0x80800042, 0x29002529, 0x00b10900, 0x00b104e0 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
+   { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x80800042, 0x27602529, 0x00b10760, 0x00b10400 },
+   { 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10420 },
+   { 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10440 },
+   { 0x80800042, 0x28202529, 0x00b10820, 0x00b10460 },
+   { 0x80800042, 0x28602529, 0x00b10860, 0x00b10480 },
+   { 0x80800042, 0x28a02529, 0x00b108a0, 0x00b104a0 },
+   { 0x80800042, 0x28e02529, 0x00b108e0, 0x00b104c0 },
+   { 0x80800042, 0x29202529, 0x00b10920, 0x00b104e0 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x80600042, 0x29402529, 0x008d0940, 0x008d0400 },
+   { 0x80600042, 0x29602529, 0x008d0960, 0x008d0420 },
+   { 0x80600042, 0x29802529, 0x008d0980, 0x008d0440 },
+   { 0x80600042, 0x29a02529, 0x008d09a0, 0x008d0460 },
+   { 0x80600042, 0x29c02529, 0x008d09c0, 0x008d0480 },
+   { 0x80600042, 0x29e02529, 0x008d09e0, 0x008d04a0 },
+   { 0x80600042, 0x2a002529, 0x008d0a00, 0x008d04c0 },
+   { 0x80600042, 0x2a202529, 0x008d0a20, 0x008d04e0 },
+   { 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
+   { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
+   { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
+   { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x80600042, 0x29502529, 0x008d0950, 0x008d0400 },
+   { 0x80600042, 0x29702529, 0x008d0970, 0x008d0420 },
+   { 0x80600042, 0x29902529, 0x008d0990, 0x008d0440 },
+   { 0x80600042, 0x29b02529, 0x008d09b0, 0x008d0460 },
+   { 0x80600042, 0x29d02529, 0x008d09d0, 0x008d0480 },
+   { 0x80600042, 0x29f02529, 0x008d09f0, 0x008d04a0 },
+   { 0x80600042, 0x2a102529, 0x008d0a10, 0x008d04c0 },
+   { 0x80600042, 0x2a302529, 0x008d0a30, 0x008d04e0 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen5
new file mode 100644
index 0000000..b99ad57
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen5
@@ -0,0 +1,1007 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
+   { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
+   { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
+   { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
+   { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
+   { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x80800042, 0x27402529, 0x00b10740, 0x00b10400 },
+   { 0x80800042, 0x27802529, 0x00b10780, 0x00b10420 },
+   { 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10440 },
+   { 0x80800042, 0x28002529, 0x00b10800, 0x00b10460 },
+   { 0x80800042, 0x28402529, 0x00b10840, 0x00b10480 },
+   { 0x80800042, 0x28802529, 0x00b10880, 0x00b104a0 },
+   { 0x80800042, 0x28c02529, 0x00b108c0, 0x00b104c0 },
+   { 0x80800042, 0x29002529, 0x00b10900, 0x00b104e0 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
+   { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
+   { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x80800042, 0x27602529, 0x00b10760, 0x00b10400 },
+   { 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10420 },
+   { 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10440 },
+   { 0x80800042, 0x28202529, 0x00b10820, 0x00b10460 },
+   { 0x80800042, 0x28602529, 0x00b10860, 0x00b10480 },
+   { 0x80800042, 0x28a02529, 0x00b108a0, 0x00b104a0 },
+   { 0x80800042, 0x28e02529, 0x00b108e0, 0x00b104c0 },
+   { 0x80800042, 0x29202529, 0x00b10920, 0x00b104e0 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
+   { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x80600042, 0x29402529, 0x008d0940, 0x008d0400 },
+   { 0x80600042, 0x29602529, 0x008d0960, 0x008d0420 },
+   { 0x80600042, 0x29802529, 0x008d0980, 0x008d0440 },
+   { 0x80600042, 0x29a02529, 0x008d09a0, 0x008d0460 },
+   { 0x80600042, 0x29c02529, 0x008d09c0, 0x008d0480 },
+   { 0x80600042, 0x29e02529, 0x008d09e0, 0x008d04a0 },
+   { 0x80600042, 0x2a002529, 0x008d0a00, 0x008d04c0 },
+   { 0x80600042, 0x2a202529, 0x008d0a20, 0x008d04e0 },
+   { 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
+   { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
+   { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
+   { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x80600042, 0x29502529, 0x008d0950, 0x008d0400 },
+   { 0x80600042, 0x29702529, 0x008d0970, 0x008d0420 },
+   { 0x80600042, 0x29902529, 0x008d0990, 0x008d0440 },
+   { 0x80600042, 0x29b02529, 0x008d09b0, 0x008d0460 },
+   { 0x80600042, 0x29d02529, 0x008d09d0, 0x008d0480 },
+   { 0x80600042, 0x29f02529, 0x008d09f0, 0x008d04a0 },
+   { 0x80600042, 0x2a102529, 0x008d0a10, 0x008d04c0 },
+   { 0x80600042, 0x2a302529, 0x008d0a30, 0x008d04e0 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_forward.g4a b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_forward.g4a
new file mode 100644
index 0000000..4c79c5f
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_forward.g4a
@@ -0,0 +1,130 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+mov (1) g126.8<1>UD ip {align1};
+mov (1) ip g21.0<1,1,1>UD {align1};
+
+/*field 0 of Y*/
+asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};             //motion vertical field select
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface',`4')
+define(`mv1',`g82.16')
+define(`mv2',`g82.18')
+include(`motion_field_y.g4i')
+mov (8) g58.0<1>UD g32.0<8,8,1>UD {align1};
+mov (8) g60.0<1>UD g33.0<8,8,1>UD {align1};
+mov (8) g62.0<1>UD g34.0<8,8,1>UD {align1};
+mov (8) g64.0<1>UD g35.0<8,8,1>UD {align1};
+mov (8) g66.0<1>UD g36.0<8,8,1>UD {align1};
+mov (8) g68.0<1>UD g37.0<8,8,1>UD {align1};
+mov (8) g70.0<1>UD g38.0<8,8,1>UD {align1};
+mov (8) g72.0<1>UD g39.0<8,8,1>UD {align1};
+
+/*field 1 of Y*/
+asr (2) g31.14<1>W g82.24<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x4000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface',`4')
+define(`mv1',`g82.24')
+define(`mv2',`g82.26')
+include(`motion_field_y.g4i')
+mov (8) g59.0<1>UD g32.0<8,8,1>UD {align1};
+mov (8) g61.0<1>UD g33.0<8,8,1>UD {align1};
+mov (8) g63.0<1>UD g34.0<8,8,1>UD {align1};
+mov (8) g65.0<1>UD g35.0<8,8,1>UD {align1};
+mov (8) g67.0<1>UD g36.0<8,8,1>UD {align1};
+mov (8) g69.0<1>UD g37.0<8,8,1>UD {align1};
+mov (8) g71.0<1>UD g38.0<8,8,1>UD {align1};
+mov (8) g73.0<1>UD g39.0<8,8,1>UD {align1};
+
+/*field 0 of UV*/
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g82.16<1>W g82.16<2,2,1>W 1W {align1};
+asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface_u', `5')
+define(`surface_v', `6')
+define(`mv1',`g82.16')
+define(`mv2',`g82.18')
+include(`motion_field_uv.g4i')
+mov (8) g74.0<1>UW g32.0<8,8,1>UW {align1};
+mov (8) g75.0<1>UW g33.0<8,8,1>UW {align1};
+mov (8) g76.0<1>UW g34.0<8,8,1>UW {align1};
+mov (8) g77.0<1>UW g35.0<8,8,1>UW {align1};
+mov (8) g78.0<1>UW g36.0<8,8,1>UW {align1};
+mov (8) g79.0<1>UW g37.0<8,8,1>UW {align1};
+mov (8) g80.0<1>UW g38.0<8,8,1>UW {align1};
+mov (8) g81.0<1>UW g39.0<8,8,1>UW {align1};
+
+/*field 1 of UV*/
+asr (2) g82.24<1>W g82.24<2,2,1>W 1W {align1};
+asr (2) g31.14<1>W g82.24<2,2,1>W 1W {align1};
+shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
+add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
+and.nz (1) null g82.2<1,1,1>UW 0x4000UW {align1};
+(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
+define(`surface_u', `5')
+define(`surface_v', `6')
+define(`mv1',`g82.24')
+define(`mv2',`g82.26')
+include(`motion_field_uv.g4i')
+mov (8) g74.16<1>UW g32.0<8,8,1>UW {align1};
+mov (8) g75.16<1>UW g33.0<8,8,1>UW {align1};
+mov (8) g76.16<1>UW g34.0<8,8,1>UW {align1};
+mov (8) g77.16<1>UW g35.0<8,8,1>UW {align1};
+mov (8) g78.16<1>UW g36.0<8,8,1>UW {align1};
+mov (8) g79.16<1>UW g37.0<8,8,1>UW {align1};
+mov (8) g80.16<1>UW g38.0<8,8,1>UW {align1};
+mov (8) g81.16<1>UW g39.0<8,8,1>UW {align1};
+
+include(`addidct.g4i')
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_forward.g4b b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_forward.g4b
new file mode 100644
index 0000000..6c02221
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_forward.g4b
@@ -0,0 +1,555 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
+   { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
+   { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
+   { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
+   { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
+   { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5
new file mode 100644
index 0000000..4c2434a
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5
@@ -0,0 +1,555 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
+   { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
+   { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
+   { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
+   { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
+   { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
+   { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
+   { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
+   { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
+   { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
+   { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
+   { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
+   { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
+   { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
+   { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
+   { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
+   { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
+   { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
+   { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
+   { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
+   { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
+   { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
+   { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
+   { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
+   { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
+   { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
+   { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
+   { 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
+   { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
+   { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
+   { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
+   { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
+   { 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
+   { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
+   { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
+   { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
+   { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
+   { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
+   { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
+   { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
+   { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
+   { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
+   { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
+   { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
+   { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
+   { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
+   { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
+   { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
+   { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
+   { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
+   { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
+   { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
+   { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
+   { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
+   { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
+   { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
+   { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
+   { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
+   { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
+   { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
+   { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
+   { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
+   { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
+   { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
+   { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
+   { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
+   { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
+   { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
+   { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
+   { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
+   { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
+   { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
+   { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
+   { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_backward.g4a b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_backward.g4a
new file mode 100644
index 0000000..28fe910
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_backward.g4a
@@ -0,0 +1,61 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g32:    message descriptor for reading reference data
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data                           */
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov(2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+mov (1) g126.8<1>UD ip {align1};
+mov (1) ip g21.0<1,1,1>UD {align1};
+ 
+//Y, (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) 
+asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+define(`input_surface',	`7')
+define(`mv1',	`g82.20')
+define(`mv2',	`g82.22') 
+include(`motion_frame_y.g4i')
+
+//UV, (x', y') = (x >> 1, y >> 1) + (motion_vector.x >> 2, motion_vector.y >> 2)
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g31.14<1>W g82.20<2,2,1>W 2W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+define(`input_surface1', `8')
+define(`input_surface2', `9')
+include(`motion_frame_uv.g4i')
+
+include(`addidct.g4i')
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_backward.g4b b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_backward.g4b
new file mode 100644
index 0000000..475200b
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_backward.g4b
@@ -0,0 +1,369 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
+   { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
+   { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
+   { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
+   { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
+   { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
+   { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
+   { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
+   { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
+   { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
+   { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
+   { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
+   { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
+   { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
+   { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
+   { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
+   { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
+   { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
+   { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
+   { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
+   { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
+   { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
+   { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
+   { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
+   { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
+   { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
+   { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
+   { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
+   { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24801d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a009 },
+   { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
+   { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
+   { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
+   { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
+   { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5
new file mode 100644
index 0000000..5f5c174
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5
@@ -0,0 +1,369 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
+   { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
+   { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
+   { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
+   { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
+   { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
+   { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
+   { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
+   { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
+   { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
+   { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
+   { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
+   { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
+   { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
+   { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
+   { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
+   { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
+   { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
+   { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
+   { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
+   { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
+   { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
+   { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
+   { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
+   { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
+   { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
+   { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
+   { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
+   { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24801d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a009 },
+   { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
+   { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
+   { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
+   { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
+   { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4a b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4a
new file mode 100644
index 0000000..cf7ef57
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4a
@@ -0,0 +1,120 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g32:    message descriptor for reading reference data
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data                           */
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+mov (1) g126.8<1>UD ip {align1};
+mov (1) ip g21.0<1,1,1>UD {align1};
+
+//Y, Forward
+mov (1) g31.8<1>UD 0x0070007UD {align1};  
+define(`input_surface',	`4')
+define(`mv1',	`g82.16')
+define(`mv2',	`g82.18')
+asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+include(`motion_frame_y.g4i')
+//Save Forward
+mov (16) g108.0<1>UD g58.0<16,16,1>UD {align1 compr};
+mov (16) g110.0<1>UD g60.0<16,16,1>UD {align1 compr};
+mov (16) g112.0<1>UD g62.0<16,16,1>UD {align1 compr};
+mov (16) g114.0<1>UD g64.0<16,16,1>UD {align1 compr};
+mov (16) g116.0<1>UD g66.0<16,16,1>UD {align1 compr};
+mov (16) g118.0<1>UD g68.0<16,16,1>UD {align1 compr};
+mov (16) g120.0<1>UD g70.0<16,16,1>UD {align1 compr};
+mov (16) g122.0<1>UD g72.0<16,16,1>UD {align1 compr};
+//Y, Backward
+define(`input_surface',	`7')
+define(`mv1',	`g82.20')
+define(`mv2',	`g82.22')  
+asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+include(`motion_frame_y.g4i')
+//Average Forward and Backward
+avg.sat (16) g58.0<1>UW g58.0<16,16,1>UW g108.0<16,16,1>UW {align1};
+avg.sat (16) g59.0<1>UW g59.0<16,16,1>UW g109.0<16,16,1>UW {align1};
+avg.sat (16) g60.0<1>UW g60.0<16,16,1>UW g110.0<16,16,1>UW {align1};
+avg.sat (16) g61.0<1>UW g61.0<16,16,1>UW g111.0<16,16,1>UW {align1};
+avg.sat (16) g62.0<1>UW g62.0<16,16,1>UW g112.0<16,16,1>UW {align1};
+avg.sat (16) g63.0<1>UW g63.0<16,16,1>UW g113.0<16,16,1>UW {align1};
+avg.sat (16) g64.0<1>UW g64.0<16,16,1>UW g114.0<16,16,1>UW {align1};
+avg.sat (16) g65.0<1>UW g65.0<16,16,1>UW g115.0<16,16,1>UW {align1};
+avg.sat (16) g66.0<1>UW g66.0<16,16,1>UW g116.0<16,16,1>UW {align1};
+avg.sat (16) g67.0<1>UW g67.0<16,16,1>UW g117.0<16,16,1>UW {align1};
+avg.sat (16) g68.0<1>UW g68.0<16,16,1>UW g118.0<16,16,1>UW {align1};
+avg.sat (16) g69.0<1>UW g69.0<16,16,1>UW g119.0<16,16,1>UW {align1};
+avg.sat (16) g70.0<1>UW g70.0<16,16,1>UW g120.0<16,16,1>UW {align1};
+avg.sat (16) g71.0<1>UW g71.0<16,16,1>UW g121.0<16,16,1>UW {align1};
+avg.sat (16) g72.0<1>UW g72.0<16,16,1>UW g122.0<16,16,1>UW {align1};
+avg.sat (16) g73.0<1>UW g73.0<16,16,1>UW g123.0<16,16,1>UW {align1};
+
+//UV, Forward
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g31.14<1>W g82.16<2,2,1>W 2W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+define(`input_surface1', `5')
+define(`input_surface2', `6')
+mov (1) g32.8<1>UD 0x007000fUD  {align1};
+include(`motion_frame_uv.g4i')
+//Save UV Forward
+mov (16) g108.0<1>UB  g74.0<16,16,2>UB {align1};
+mov (16) g108.16<1>UB g75.0<16,16,2>UB {align1};
+mov (16) g109.0<1>UB  g76.0<16,16,2>UB {align1};
+mov (16) g109.16<1>UB g77.0<16,16,2>UB {align1};
+mov (16) g110.0<1>UB  g78.0<16,16,2>UB {align1};
+mov (16) g110.16<1>UB g79.0<16,16,2>UB {align1};
+mov (16) g111.0<1>UB  g80.0<16,16,2>UB {align1};
+mov (16) g111.16<1>UB g81.0<16,16,2>UB {align1};
+//UV, Backward
+asr (2) g31.14<1>W g82.20<2,2,1>W 2W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+define(`input_surface1', `8')
+define(`input_surface2', `9')
+include(`motion_frame_uv.g4i')
+//Average Forward and Backward
+avg.sat (16) g74.0<1>UW g74.0<16,16,1>UW g108.0<16,16,1>UB {align1};
+avg.sat (16) g75.0<1>UW g75.0<16,16,1>UW g108.16<16,16,1>UB {align1};
+avg.sat (16) g76.0<1>UW g76.0<16,16,1>UW g109.0<16,16,1>UB {align1};
+avg.sat (16) g77.0<1>UW g77.0<16,16,1>UW g109.16<16,16,1>UB {align1};
+avg.sat (16) g78.0<1>UW g78.0<16,16,1>UW g110.0<16,16,1>UB {align1};
+avg.sat (16) g79.0<1>UW g79.0<16,16,1>UW g110.16<16,16,1>UB {align1};
+avg.sat (16) g80.0<1>UW g80.0<16,16,1>UW g111.0<16,16,1>UB {align1};
+avg.sat (16) g81.0<1>UW g81.0<16,16,1>UW g111.16<16,16,1>UB {align1};
+
+include(`addidct.g4i')
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b
new file mode 100644
index 0000000..0ca1f38
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b
@@ -0,0 +1,675 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
+   { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
+   { 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
+   { 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
+   { 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
+   { 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
+   { 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
+   { 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
+   { 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
+   { 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
+   { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
+   { 0x80800042, 0x27402529, 0x00b10740, 0x00b10d80 },
+   { 0x80800042, 0x27602529, 0x00b10760, 0x00b10da0 },
+   { 0x80800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
+   { 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
+   { 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
+   { 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
+   { 0x80800042, 0x28002529, 0x00b10800, 0x00b10e40 },
+   { 0x80800042, 0x28202529, 0x00b10820, 0x00b10e60 },
+   { 0x80800042, 0x28402529, 0x00b10840, 0x00b10e80 },
+   { 0x80800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
+   { 0x80800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
+   { 0x80800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
+   { 0x80800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
+   { 0x80800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
+   { 0x80800042, 0x29002529, 0x00b10900, 0x00b10f40 },
+   { 0x80800042, 0x29202529, 0x00b10920, 0x00b10f60 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
+   { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
+   { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
+   { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
+   { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
+   { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
+   { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
+   { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
+   { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
+   { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
+   { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
+   { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
+   { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
+   { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
+   { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
+   { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
+   { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
+   { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
+   { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
+   { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
+   { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
+   { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
+   { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
+   { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
+   { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
+   { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
+   { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
+   { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24801d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a006 },
+   { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
+   { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
+   { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
+   { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
+   { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x2d800231, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x2d900231, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x2da00231, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x2db00231, 0x00b209a0, 0x00000000 },
+   { 0x00800001, 0x2dc00231, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x2dd00231, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x2de00231, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x2df00231, 0x00b20a20, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
+   { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
+   { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
+   { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
+   { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
+   { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
+   { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
+   { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
+   { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
+   { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
+   { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
+   { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
+   { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
+   { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
+   { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
+   { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
+   { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
+   { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
+   { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
+   { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
+   { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
+   { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
+   { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
+   { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
+   { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
+   { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
+   { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
+   { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
+   { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24801d29, 0x008d0400, 0x0414a008 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a009 },
+   { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
+   { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
+   { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
+   { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
+   { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
+   { 0x80800042, 0x29404529, 0x00b10940, 0x00b10d80 },
+   { 0x80800042, 0x29604529, 0x00b10960, 0x00b10d90 },
+   { 0x80800042, 0x29804529, 0x00b10980, 0x00b10da0 },
+   { 0x80800042, 0x29a04529, 0x00b109a0, 0x00b10db0 },
+   { 0x80800042, 0x29c04529, 0x00b109c0, 0x00b10dc0 },
+   { 0x80800042, 0x29e04529, 0x00b109e0, 0x00b10dd0 },
+   { 0x80800042, 0x2a004529, 0x00b10a00, 0x00b10de0 },
+   { 0x80800042, 0x2a204529, 0x00b10a20, 0x00b10df0 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5
new file mode 100644
index 0000000..1078caa
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5
@@ -0,0 +1,675 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
+   { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
+   { 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
+   { 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
+   { 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
+   { 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
+   { 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
+   { 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
+   { 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
+   { 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
+   { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
+   { 0x80800042, 0x27402529, 0x00b10740, 0x00b10d80 },
+   { 0x80800042, 0x27602529, 0x00b10760, 0x00b10da0 },
+   { 0x80800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
+   { 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
+   { 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
+   { 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
+   { 0x80800042, 0x28002529, 0x00b10800, 0x00b10e40 },
+   { 0x80800042, 0x28202529, 0x00b10820, 0x00b10e60 },
+   { 0x80800042, 0x28402529, 0x00b10840, 0x00b10e80 },
+   { 0x80800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
+   { 0x80800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
+   { 0x80800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
+   { 0x80800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
+   { 0x80800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
+   { 0x80800042, 0x29002529, 0x00b10900, 0x00b10f40 },
+   { 0x80800042, 0x29202529, 0x00b10920, 0x00b10f60 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
+   { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
+   { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
+   { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
+   { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
+   { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
+   { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
+   { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
+   { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
+   { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
+   { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
+   { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
+   { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
+   { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
+   { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
+   { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
+   { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
+   { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
+   { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
+   { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
+   { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
+   { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
+   { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
+   { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
+   { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
+   { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
+   { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
+   { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24801d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a006 },
+   { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
+   { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
+   { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
+   { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
+   { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
+   { 0x00800001, 0x2d800231, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x2d900231, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x2da00231, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x2db00231, 0x00b209a0, 0x00000000 },
+   { 0x00800001, 0x2dc00231, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x2dd00231, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x2de00231, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x2df00231, 0x00b20a20, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
+   { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
+   { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
+   { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
+   { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
+   { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
+   { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
+   { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
+   { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
+   { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
+   { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
+   { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
+   { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
+   { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
+   { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
+   { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
+   { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
+   { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
+   { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
+   { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
+   { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
+   { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
+   { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
+   { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
+   { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
+   { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
+   { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
+   { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
+   { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
+   { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24801d29, 0x408d0400, 0x0248a008 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a009 },
+   { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
+   { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
+   { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
+   { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
+   { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
+   { 0x80800042, 0x29404529, 0x00b10940, 0x00b10d80 },
+   { 0x80800042, 0x29604529, 0x00b10960, 0x00b10d90 },
+   { 0x80800042, 0x29804529, 0x00b10980, 0x00b10da0 },
+   { 0x80800042, 0x29a04529, 0x00b109a0, 0x00b10db0 },
+   { 0x80800042, 0x29c04529, 0x00b109c0, 0x00b10dc0 },
+   { 0x80800042, 0x29e04529, 0x00b109e0, 0x00b10dd0 },
+   { 0x80800042, 0x2a004529, 0x00b10a00, 0x00b10de0 },
+   { 0x80800042, 0x2a204529, 0x00b10a20, 0x00b10df0 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_forward.g4a b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_forward.g4a
new file mode 100644
index 0000000..22f4804
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_forward.g4a
@@ -0,0 +1,61 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g32:    message descriptor for reading reference data
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data                           */
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+mov (1) g126.8<1>UD ip {align1};
+mov (1) ip g21.0<1,1,1>UD {align1};
+
+//Y, (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) 
+asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};  
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+define(`input_surface',	`4')
+define(`mv1',	`g82.16')
+define(`mv2',	`g82.18')
+include(`motion_frame_y.g4i')
+
+//UV, (x', y') = (x >> 1, y >> 1) + (motion_vector.x >> 2, motion_vector.y >> 2)
+shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
+asr (2) g31.14<1>W g82.16<2,2,1>W 2W {align1};
+add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
+define(`input_surface1', `5')
+define(`input_surface2', `6')
+include(`motion_frame_uv.g4i')
+
+include(`addidct.g4i')
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_forward.g4b b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_forward.g4b
new file mode 100644
index 0000000..4bf6c93
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_forward.g4b
@@ -0,0 +1,369 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
+   { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
+   { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
+   { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
+   { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
+   { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
+   { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
+   { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
+   { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
+   { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
+   { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
+   { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
+   { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
+   { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
+   { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
+   { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
+   { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
+   { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
+   { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
+   { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
+   { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
+   { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
+   { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
+   { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
+   { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
+   { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
+   { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
+   { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
+   { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
+   { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
+   { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24801d29, 0x008d0400, 0x0414a005 },
+   { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a006 },
+   { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
+   { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
+   { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
+   { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
+   { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5
new file mode 100644
index 0000000..9d89488
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5
@@ -0,0 +1,369 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
+   { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
+   { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
+   { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
+   { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
+   { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
+   { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
+   { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
+   { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
+   { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
+   { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
+   { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
+   { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
+   { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
+   { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
+   { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
+   { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
+   { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
+   { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
+   { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
+   { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
+   { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
+   { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
+   { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
+   { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
+   { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
+   { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
+   { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
+   { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
+   { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
+   { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
+   { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
+   { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
+   { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
+   { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
+   { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
+   { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
+   { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
+   { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
+   { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
+   { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
+   { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
+   { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
+   { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
+   { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
+   { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
+   { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
+   { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
+   { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
+   { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
+   { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
+   { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
+   { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
+   { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
+   { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
+   { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
+   { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
+   { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
+   { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
+   { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
+   { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
+   { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
+   { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
+   { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
+   { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
+   { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
+   { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
+   { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
+   { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
+   { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
+   { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
+   { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
+   { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
+   { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
+   { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
+   { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
+   { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
+   { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
+   { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
+   { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
+   { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
+   { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
+   { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
+   { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
+   { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
+   { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
+   { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
+   { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
+   { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
+   { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
+   { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
+   { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
+   { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
+   { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
+   { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
+   { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
+   { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
+   { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
+   { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
+   { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
+   { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
+   { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
+   { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
+   { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
+   { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
+   { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
+   { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
+   { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
+   { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
+   { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
+   { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
+   { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
+   { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
+   { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
+   { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
+   { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
+   { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
+   { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
+   { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
+   { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
+   { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
+   { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
+   { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
+   { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
+   { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
+   { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
+   { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
+   { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
+   { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
+   { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
+   { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
+   { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
+   { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
+   { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
+   { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
+   { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
+   { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
+   { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
+   { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
+   { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
+   { 0x00800031, 0x24801d29, 0x408d0400, 0x0248a005 },
+   { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a006 },
+   { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
+   { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
+   { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
+   { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
+   { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
+   { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
+   { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
+   { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
+   { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
+   { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
+   { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
+   { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
+   { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
+   { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
+   { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
+   { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
+   { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
+   { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
+   { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
+   { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
+   { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
+   { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
+   { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
+   { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
+   { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
+   { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
+   { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
+   { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
+   { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
+   { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
+   { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
+   { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
+   { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
+   { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
+   { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
+   { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
+   { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
+   { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
+   { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
+   { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
+   { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
+   { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
+   { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
+   { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
+   { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
+   { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
+   { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
+   { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
+   { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
+   { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
+   { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
+   { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
+   { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_intra.g4a b/i965_drv_video/shaders/mpeg2/vld/frame_intra.g4a
new file mode 100644
index 0000000..cf12a44
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_intra.g4a
@@ -0,0 +1,211 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/*
+   GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT tab
+   g31:    read and write message descriptor
+   g32~g55:DCT data
+   g58~g81:reference data
+   g82:    thread payload 
+   g83~g106:IDCT data 
+*/
+
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+//shl (1) g31.4<1>UD g31.4<1,1,1>UD 1UD {align1};
+
+include(`iq_intra.g4i')
+
+//defined for idct
+define(`ROW_SHIFT', `11UD') 
+define(`ROW_ADD', `0x400UD')          
+define(`COL_SHIFT', `20UD') 
+define(`COL_ADD', `0x80000UD')          
+
+mov (1) a0.0<1>UD 0x06F006E0UD {align1};      //0x06F006E0UD+0x00200020UD=0x07100700UD (g56.0 and g56.16)
+
+//Y0
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (8) g83.0<1>W g32.0<16,8,2>W 128UW {align1};
+add (8) g84.0<1>W g33.0<16,8,2>W 128UW {align1};
+add (8) g85.0<1>W g34.0<16,8,2>W 128UW {align1};
+add (8) g86.0<1>W g35.0<16,8,2>W 128UW {align1};
+add (8) g87.0<1>W g36.0<16,8,2>W 128UW {align1};
+add (8) g88.0<1>W g37.0<16,8,2>W 128UW {align1};
+add (8) g89.0<1>W g38.0<16,8,2>W 128UW {align1};
+add (8) g90.0<1>W g39.0<16,8,2>W 128UW {align1};
+
+//Y1
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (8) g83.16<1>W g32.0<16,8,2>W 128UW {align1};
+add (8) g84.16<1>W g33.0<16,8,2>W 128UW {align1};
+add (8) g85.16<1>W g34.0<16,8,2>W 128UW {align1};
+add (8) g86.16<1>W g35.0<16,8,2>W 128UW {align1};
+add (8) g87.16<1>W g36.0<16,8,2>W 128UW {align1};
+add (8) g88.16<1>W g37.0<16,8,2>W 128UW {align1};
+add (8) g89.16<1>W g38.0<16,8,2>W 128UW {align1};
+add (8) g90.16<1>W g39.0<16,8,2>W 128UW {align1};
+
+//Y2
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (8) g91.0<1>W g32.0<16,8,2>W 128UW {align1};
+add (8) g92.0<1>W g33.0<16,8,2>W 128UW {align1};
+add (8) g93.0<1>W g34.0<16,8,2>W 128UW {align1};
+add (8) g94.0<1>W g35.0<16,8,2>W 128UW {align1};
+add (8) g95.0<1>W g36.0<16,8,2>W 128UW {align1};
+add (8) g96.0<1>W g37.0<16,8,2>W 128UW {align1};
+add (8) g97.0<1>W g38.0<16,8,2>W 128UW {align1};
+add (8) g98.0<1>W g39.0<16,8,2>W 128UW {align1};
+
+//Y3
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (8) g91.16<1>W g32.0<16,8,2>W 128UW {align1};
+add (8) g92.16<1>W g33.0<16,8,2>W 128UW {align1};
+add (8) g93.16<1>W g34.0<16,8,2>W 128UW {align1};
+add (8) g94.16<1>W g35.0<16,8,2>W 128UW {align1};
+add (8) g95.16<1>W g36.0<16,8,2>W 128UW {align1};
+add (8) g96.16<1>W g37.0<16,8,2>W 128UW {align1};
+add (8) g97.16<1>W g38.0<16,8,2>W 128UW {align1};
+add (8) g98.16<1>W g39.0<16,8,2>W 128UW {align1};
+
+//U
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (16) g99.0<1>W g32.0<16,8,2>W 128UW {align1};
+add (16) g100.0<1>W g34.0<16,8,2>W 128UW {align1};
+add (16) g101.0<1>W g36.0<16,8,2>W 128UW {align1};
+add (16) g102.0<1>W g38.0<16,8,2>W 128UW {align1};
+
+//V
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+add (16) g103.0<1>W g32.0<16,8,2>W 128UW {align1};
+add (16) g104.0<1>W g34.0<16,8,2>W 128UW {align1};
+add (16) g105.0<1>W g36.0<16,8,2>W 128UW {align1};
+add (16) g106.0<1>W g38.0<16,8,2>W 128UW {align1};
+
+//send msg
+mov (1) g31.8<1>UD 0x00F000FUD {align1};
+mov.sat (16) g83.0<2>UB g83.0<16,16,1>W {align1};
+mov.sat (16) g84.0<2>UB g84.0<16,16,1>W {align1};
+mov.sat (16) g85.0<2>UB g85.0<16,16,1>W {align1};
+mov.sat (16) g86.0<2>UB g86.0<16,16,1>W {align1};
+mov.sat (16) g87.0<2>UB g87.0<16,16,1>W {align1};
+mov.sat (16) g88.0<2>UB g88.0<16,16,1>W {align1};
+mov.sat (16) g89.0<2>UB g89.0<16,16,1>W {align1};
+mov.sat (16) g90.0<2>UB g90.0<16,16,1>W {align1};
+mov.sat (16) g91.0<2>UB g91.0<16,16,1>W {align1};
+mov.sat (16) g92.0<2>UB g92.0<16,16,1>W {align1};
+mov.sat (16) g93.0<2>UB g93.0<16,16,1>W {align1};
+mov.sat (16) g94.0<2>UB g94.0<16,16,1>W {align1};
+mov.sat (16) g95.0<2>UB g95.0<16,16,1>W {align1};
+mov.sat (16) g96.0<2>UB g96.0<16,16,1>W {align1};
+mov.sat (16) g97.0<2>UB g97.0<16,16,1>W {align1};
+mov.sat (16) g98.0<2>UB g98.0<16,16,1>W {align1};
+
+and.nz (1) null g82.2<1,1,1>UW 0x20UW{align1};
+(f0) jmpi field_dct;
+
+mov (16) m1.0<1>UB  g83.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g84.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB  g85.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g86.0<16,16,2>UB {align1};
+mov (16) m3.0<1>UB  g87.0<16,16,2>UB {align1};
+mov (16) m3.16<1>UB g88.0<16,16,2>UB {align1};
+mov (16) m4.0<1>UB  g89.0<16,16,2>UB {align1};
+mov (16) m4.16<1>UB g90.0<16,16,2>UB {align1};
+mov (16) m5.0<1>UB  g91.0<16,16,2>UB {align1};
+mov (16) m5.16<1>UB g92.0<16,16,2>UB {align1};
+mov (16) m6.0<1>UB  g93.0<16,16,2>UB {align1};
+mov (16) m6.16<1>UB g94.0<16,16,2>UB {align1};
+mov (16) m7.0<1>UB  g95.0<16,16,2>UB {align1};
+mov (16) m7.16<1>UB g96.0<16,16,2>UB {align1};
+mov (16) m8.0<1>UB  g97.0<16,16,2>UB {align1};
+mov (16) m8.16<1>UB g98.0<16,16,2>UB {align1};
+jmpi write_back;
+
+field_dct:
+mov (16) m1.0<1>UB  g83.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g91.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB  g84.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g92.0<16,16,2>UB {align1};
+mov (16) m3.0<1>UB  g85.0<16,16,2>UB {align1};
+mov (16) m3.16<1>UB g93.0<16,16,2>UB {align1};
+mov (16) m4.0<1>UB  g86.0<16,16,2>UB {align1};
+mov (16) m4.16<1>UB g94.0<16,16,2>UB {align1};
+mov (16) m5.0<1>UB  g87.0<16,16,2>UB {align1};
+mov (16) m5.16<1>UB g95.0<16,16,2>UB {align1};
+mov (16) m6.0<1>UB  g88.0<16,16,2>UB {align1};
+mov (16) m6.16<1>UB g96.0<16,16,2>UB {align1};
+mov (16) m7.0<1>UB  g89.0<16,16,2>UB {align1};
+mov (16) m7.16<1>UB g97.0<16,16,2>UB {align1};
+mov (16) m8.0<1>UB  g90.0<16,16,2>UB {align1};
+mov (16) m8.16<1>UB g98.0<16,16,2>UB {align1};
+
+write_back:
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1};
+
+//U
+mov (1) g31.8<1>UD 0x0070007UD  { align1 };
+shr (2) g31.0<1>UD g82.12<2,2,1>UW 1D {align1};
+mov.sat (16) g99.0<2>UB g99.0<16,16,1>W {align1};
+mov.sat (16) g100.0<2>UB g100.0<16,16,1>W {align1};
+mov.sat (16) g101.0<2>UB g101.0<16,16,1>W {align1};
+mov.sat (16) g102.0<2>UB g102.0<16,16,1>W {align1};
+
+mov (16) m1.0<1>UB  g99.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g100.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB  g101.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g102.0<16,16,2>UB {align1};
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
+
+//V
+mov.sat (16) g103.0<2>UB g103.0<16,16,1>W {align1};
+mov.sat (16) g104.0<2>UB g104.0<16,16,1>W {align1};
+mov.sat (16) g105.0<2>UB g105.0<16,16,1>W {align1};
+mov.sat (16) g106.0<2>UB g106.0<16,16,1>W {align1};
+
+mov (16) m1.0<1>UB  g103.0<16,16,2>UB {align1};
+mov (16) m1.16<1>UB g104.0<16,16,2>UB {align1};
+mov (16) m2.0<1>UB  g105.0<16,16,2>UB {align1};
+mov (16) m2.16<1>UB g106.0<16,16,2>UB {align1};
+send (16) 0 acc0<1>UW g31<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
+
+OUT:
+send (16) 0 acc0<1>UW g0<8,8,1>UW
+        thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
+
+include(`do_iq_intra.g4i')
+include(`idct.g4i')
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_intra.g4b b/i965_drv_video/shaders/mpeg2/vld/frame_intra.g4b
new file mode 100644
index 0000000..4c1c8c4
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_intra.g4b
@@ -0,0 +1,313 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
+   { 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
+   { 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
+   { 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
+   { 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000005 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000001 },
+   { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
+   { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
+   { 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
+   { 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
+   { 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
+   { 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000a1 },
+   { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000009b },
+   { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000095 },
+   { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
+   { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000089 },
+   { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000083 },
+   { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
+   { 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000085 },
+   { 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000007b },
+   { 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000071 },
+   { 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000067 },
+   { 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
+   { 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
+   { 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
+   { 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000061 },
+   { 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
+   { 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
+   { 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
+   { 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
+   { 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
+   { 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
+   { 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
+   { 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
+   { 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
+   { 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
+   { 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
+   { 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
+   { 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
+   { 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
+   { 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
+   { 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
+   { 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
+   { 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
+   { 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
+   { 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
+   { 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
+   { 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
+   { 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
+   { 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
+   { 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
+   { 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
+   { 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
+   { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
+   { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
+   { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
+   { 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
+   { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
+   { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
+   { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
+   { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
+   { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
+   { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
+   { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
+   { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
+   { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
+   { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
+   { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/frame_intra.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/frame_intra.g4b.gen5
new file mode 100644
index 0000000..957f6fc
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/frame_intra.g4b.gen5
@@ -0,0 +1,313 @@
+   { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
+   { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
+   { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
+   { 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
+   { 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
+   { 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
+   { 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000012 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000002 },
+   { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
+   { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
+   { 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
+   { 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
+   { 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
+   { 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000142 },
+   { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000136 },
+   { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000012a },
+   { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
+   { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000112 },
+   { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000106 },
+   { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
+   { 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000010a },
+   { 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000f6 },
+   { 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000e2 },
+   { 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
+   { 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
+   { 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
+   { 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
+   { 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
+   { 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
+   { 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
+   { 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000ce },
+   { 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
+   { 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
+   { 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
+   { 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000c2 },
+   { 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
+   { 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
+   { 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
+   { 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
+   { 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
+   { 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
+   { 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
+   { 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
+   { 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
+   { 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
+   { 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
+   { 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
+   { 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
+   { 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
+   { 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
+   { 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
+   { 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
+   { 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
+   { 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
+   { 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
+   { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
+   { 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
+   { 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
+   { 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
+   { 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
+   { 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
+   { 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
+   { 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
+   { 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
+   { 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
+   { 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
+   { 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
+   { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
+   { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
+   { 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
+   { 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
+   { 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
+   { 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
+   { 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
+   { 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
+   { 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
+   { 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
+   { 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
+   { 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
+   { 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
+   { 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
+   { 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
+   { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
+   { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
+   { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
+   { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
+   { 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
+   { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
+   { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
+   { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
+   { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
+   { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
+   { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000034 },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
+   { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
+   { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
+   { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
+   { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
+   { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/idct.g4i b/i965_drv_video/shaders/mpeg2/vld/idct.g4i
new file mode 100644
index 0000000..c1747d1
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/idct.g4i
@@ -0,0 +1,147 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix in UB format
+           g3~g4:non intra IQ matrix in UB format
+           g5~g20:IDCT table
+   g56~g79:DCT data after IQ before idct
+   g83~g106: IDCT data after idct
+   g82:    thread payload backup
+   g125:   ip before idct
+*/
+IDCT_START:
+mov (1) g126.0<1>UD ip {align1};
+jmpi DO_IDCT;
+add (16) g32<1>D g32<8,8,1>D ROW_ADD {compr};
+add (16) g34<1>D g34<8,8,1>D ROW_ADD {compr};
+add (16) g36<1>D g36<8,8,1>D ROW_ADD {compr};
+add (16) g38<1>D g38<8,8,1>D ROW_ADD {compr};
+
+shr (16) g32<1>D g32<8,8,1>D ROW_SHIFT {compr};
+shr (16) g34<1>D g34<8,8,1>D ROW_SHIFT {compr};
+shr (16) g36<1>D g36<8,8,1>D ROW_SHIFT {compr};
+shr (16) g38<1>D g38<8,8,1>D ROW_SHIFT {compr};
+
+mov (16) g110.0<1>W g32<16,8,2>W {align1};
+mov (16) g111.0<1>W g34<16,8,2>W {align1};
+mov (16) g112.0<1>W g36<16,8,2>W {align1};
+mov (16) g113.0<1>W g38<16,8,2>W {align1};
+
+mov (1) g80.0<1>UD a0.0<1,1,1>UD {align1};  //save a0
+mov (1) a0.0<1>UD 0x0DB00DA0UD {align1};  //begin at g110.0, the output of idct_row.g4i
+mov (1) g126.0<1>UD ip {align1};
+jmpi DO_IDCT;
+
+add (16) g32<1>D g32<8,8,1>D COL_ADD {compr};
+add (16) g34<1>D g34<8,8,1>D COL_ADD {compr};
+add (16) g36<1>D g36<8,8,1>D COL_ADD {compr};
+add (16) g38<1>D g38<8,8,1>D COL_ADD {compr};
+
+shr (16) g32<1>D g32<8,8,1>D COL_SHIFT {compr};
+shr (16) g34<1>D g34<8,8,1>D COL_SHIFT {compr};
+shr (16) g36<1>D g36<8,8,1>D COL_SHIFT {compr};
+shr (16) g38<1>D g38<8,8,1>D COL_SHIFT {compr};
+
+mov (1) a0.0<1>UD g80.0<1,1,1>UD {align1};             //restore a0 
+add (1) ip g125.0<1,1,1>UD 0x20UD {align1};            //jump back
+
+DO_IDCT:
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};           //increase the address 
+dp4 (16) g40<1>D g[a0.0]<8,8,1>W g5<8,8,1>D {align1 compr};
+dp4 (16) g42<1>D g[a0.0]<8,8,1>W g7<8,8,1>D {align1 compr};
+dp4 (16) g44<1>D g[a0.0]<8,8,1>W g9<8,8,1>D {align1 compr};
+dp4 (16) g46<1>D g[a0.0]<8,8,1>W g11<8,8,1>D {align1 compr};
+dp4 (16) g48<1>D g[a0.0]<8,8,1>W g13<8,8,1>D {align1 compr};
+dp4 (16) g50<1>D g[a0.0]<8,8,1>W g15<8,8,1>D {align1 compr};
+dp4 (16) g52<1>D g[a0.0]<8,8,1>W g17<8,8,1>D {align1 compr};
+dp4 (16) g54<1>D g[a0.0]<8,8,1>W g19<8,8,1>D {align1 compr};
+add (2) g32.0<1>D g40.0<8,1,8>D g40.16<8,1,8>D {align1};
+add (2) g33.0<1>D g42.0<8,1,8>D g42.16<8,1,8>D {align1};
+add (2) g34.0<1>D g44.0<8,1,8>D g44.16<8,1,8>D {align1};
+add (2) g35.0<1>D g46.0<8,1,8>D g46.16<8,1,8>D {align1};
+add (2) g36.0<1>D g48.0<8,1,8>D g48.16<8,1,8>D {align1};
+add (2) g37.0<1>D g50.0<8,1,8>D g50.16<8,1,8>D {align1};
+add (2) g38.0<1>D g52.0<8,1,8>D g52.16<8,1,8>D {align1};
+add (2) g39.0<1>D g54.0<8,1,8>D g54.16<8,1,8>D {align1};
+
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+dp4 (16) g40<1>D g[a0.0]<8,8,1>W g5<8,8,1>D {align1 compr};
+dp4 (16) g42<1>D g[a0.0]<8,8,1>W g7<8,8,1>D {align1 compr};
+dp4 (16) g44<1>D g[a0.0]<8,8,1>W g9<8,8,1>D {align1 compr};
+dp4 (16) g46<1>D g[a0.0]<8,8,1>W g11<8,8,1>D {align1 compr};
+dp4 (16) g48<1>D g[a0.0]<8,8,1>W g13<8,8,1>D {align1 compr};
+dp4 (16) g50<1>D g[a0.0]<8,8,1>W g15<8,8,1>D {align1 compr};
+dp4 (16) g52<1>D g[a0.0]<8,8,1>W g17<8,8,1>D {align1 compr};
+dp4 (16) g54<1>D g[a0.0]<8,8,1>W g19<8,8,1>D {align1 compr};
+add (2) g32.8<1>D g40.0<8,1,8>D g40.16<8,1,8>D {align1};
+add (2) g33.8<1>D g42.0<8,1,8>D g42.16<8,1,8>D {align1};
+add (2) g34.8<1>D g44.0<8,1,8>D g44.16<8,1,8>D {align1};
+add (2) g35.8<1>D g46.0<8,1,8>D g46.16<8,1,8>D {align1};
+add (2) g36.8<1>D g48.0<8,1,8>D g48.16<8,1,8>D {align1};
+add (2) g37.8<1>D g50.0<8,1,8>D g50.16<8,1,8>D {align1};
+add (2) g38.8<1>D g52.0<8,1,8>D g52.16<8,1,8>D {align1};
+add (2) g39.8<1>D g54.0<8,1,8>D g54.16<8,1,8>D {align1};
+
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+dp4 (16) g40<1>D g[a0.0]<8,8,1>W g5<8,8,1>D {align1 compr};
+dp4 (16) g42<1>D g[a0.0]<8,8,1>W g7<8,8,1>D {align1 compr};
+dp4 (16) g44<1>D g[a0.0]<8,8,1>W g9<8,8,1>D {align1 compr};
+dp4 (16) g46<1>D g[a0.0]<8,8,1>W g11<8,8,1>D {align1 compr};
+dp4 (16) g48<1>D g[a0.0]<8,8,1>W g13<8,8,1>D {align1 compr};
+dp4 (16) g50<1>D g[a0.0]<8,8,1>W g15<8,8,1>D {align1 compr};
+dp4 (16) g52<1>D g[a0.0]<8,8,1>W g17<8,8,1>D {align1 compr};
+dp4 (16) g54<1>D g[a0.0]<8,8,1>W g19<8,8,1>D {align1 compr};
+add (2) g32.16<1>D g40.0<8,1,8>D g40.16<8,1,8>D {align1};
+add (2) g33.16<1>D g42.0<8,1,8>D g42.16<8,1,8>D {align1};
+add (2) g34.16<1>D g44.0<8,1,8>D g44.16<8,1,8>D {align1};
+add (2) g35.16<1>D g46.0<8,1,8>D g46.16<8,1,8>D {align1};
+add (2) g36.16<1>D g48.0<8,1,8>D g48.16<8,1,8>D {align1};
+add (2) g37.16<1>D g50.0<8,1,8>D g50.16<8,1,8>D {align1};
+add (2) g38.16<1>D g52.0<8,1,8>D g52.16<8,1,8>D {align1};
+add (2) g39.16<1>D g54.0<8,1,8>D g54.16<8,1,8>D {align1};
+
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
+dp4 (16) g40<1>D g[a0.0]<8,8,1>W g5<8,8,1>D {align1 compr};
+dp4 (16) g42<1>D g[a0.0]<8,8,1>W g7<8,8,1>D {align1 compr};
+dp4 (16) g44<1>D g[a0.0]<8,8,1>W g9<8,8,1>D {align1 compr};
+dp4 (16) g46<1>D g[a0.0]<8,8,1>W g11<8,8,1>D {align1 compr};
+dp4 (16) g48<1>D g[a0.0]<8,8,1>W g13<8,8,1>D {align1 compr};
+dp4 (16) g50<1>D g[a0.0]<8,8,1>W g15<8,8,1>D {align1 compr};
+dp4 (16) g52<1>D g[a0.0]<8,8,1>W g17<8,8,1>D {align1 compr};
+dp4 (16) g54<1>D g[a0.0]<8,8,1>W g19<8,8,1>D {align1 compr};
+add (2) g32.24<1>D g40.0<8,1,8>D g40.16<8,1,8>D {align1};
+add (2) g33.24<1>D g42.0<8,1,8>D g42.16<8,1,8>D {align1};
+add (2) g34.24<1>D g44.0<8,1,8>D g44.16<8,1,8>D {align1};
+add (2) g35.24<1>D g46.0<8,1,8>D g46.16<8,1,8>D {align1};
+add (2) g36.24<1>D g48.0<8,1,8>D g48.16<8,1,8>D {align1};
+add (2) g37.24<1>D g50.0<8,1,8>D g50.16<8,1,8>D {align1};
+add (2) g38.24<1>D g52.0<8,1,8>D g52.16<8,1,8>D {align1};
+add (2) g39.24<1>D g54.0<8,1,8>D g54.16<8,1,8>D {align1};
+
+add (1) ip g126.0<1,1,1>UD 0x20UD {align1};            //jump back
diff --git a/i965_drv_video/shaders/mpeg2/vld/iq_intra.g4i b/i965_drv_video/shaders/mpeg2/vld/iq_intra.g4i
new file mode 100644
index 0000000..b014361
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/iq_intra.g4i
@@ -0,0 +1,131 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix in UB format
+           g3~g4:non intra IQ matrix in UB format
+           g5~g20:IDCT table
+   g32~g55:DCT data before IQ
+   g56~g79:DCT data after IQ
+   g82:    thread payload backup
+   g109:   g109.0:q_scale_code, g109.4:intra_dc_mult, 
+   g110:   q_scale_code
+   g111:   intra DC coefficient 
+   g112~g115: intra IQ matrix in UW format (in order to use instruction compress), copys from g1~g2
+   g125:   ip before jump
+*/
+and (1) g109.0<1>UW g82.8<1,1,1>UW 0x1fUW {align1};    //q_scale_code
+
+and (1) g109.4<1>UW g82.8<1,1,1>UW 0x6000UW {align1};   //intra_dc_presion
+shr (1) g109.4<1>UW g109.4<1,1,1>UW 13UW {align1};
+mov (1) g109.6<1>UW 0x8UW {align1};
+shr (1) g109.4<1>UW g109.6<1,1,1>UW g109.4<1,1,1>UW {align1};  //intra_dc_mult
+ 
+and.z (1) null g82.8<1,1,1>UW 0x20UW {align1};   //if(q_scale_type==0) q_scale=q_scale_code*2;
+(f0) jmpi Q_SCALE_TYPE_0;
+
+cmp.l (1) null g109.0<1,1,1>UW 9UW {align1};      //if(q_scale_type!=0) calculate q_scale
+(f0) jmpi DO_IQ;
+cmp.l (1) null g109.0<1,1,1>UW 17UW {align1};
+(f0) jmpi RANG_9_16;
+cmp.l (1) null g109.0<1,1,1>UW 25UW {align1};
+(f0) jmpi RANG_17_24;
+
+RANG_25_31:
+add (1) g109.0<1>UW g109.0<1,1,1>UW -25W {align1};
+shl (1) g109.0<1>UW g109.0<1,1,1>UW 3UW {align1};
+add (1) g109.0<1>UW g109.0<1,1,1>UW 64UW {align1};
+jmpi DO_IQ;
+
+RANG_9_16:
+add (1) g109.0<1>UW g109.0<1,1,1>UW -9W {align1};
+shl (1) g109.0<1>UW g109.0<1,1,1>UW 1UW {align1};
+add (1) g109.0<1>UW g109.0<1,1,1>UW 10UW {align1};
+jmpi DO_IQ;
+
+RANG_17_24:
+add (1) g109.0<1>UW g109.0<1,1,1>UW -17W {align1};
+shl (1) g109.0<1>UW g109.0<1,1,1>UW 2UW {align1};
+add (1) g109.0<1>UW g109.0<1,1,1>UW 28UW {align1};
+jmpi DO_IQ;
+
+Q_SCALE_TYPE_0:
+shl (1) g109.0<1>UW g109.0<1,1,1>UW 1UD {align1};
+
+DO_IQ:
+mov (1) g110.0<1>UW g109.0<1,1,1>UW {align1};
+
+mov (16) g112.0<1>UW g1.0<16,16,1>UB {align1};
+mov (16) g113.0<1>UW g1.16<16,16,1>UB {align1};
+mov (16) g114.0<1>UW g2.0<16,16,1>UB {align1};
+mov (16) g115.0<1>UW g2.16<16,16,1>UB {align1};
+
+mov (1) a0.0<1>UD 0x03F003E0UD {align1};
+
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_INTRA;
+mov (16) g56.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g57.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g58.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g59.0<1>W g122.0<16,8,2>W {align1};
+
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_INTRA;
+mov (16) g60.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g61.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g62.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g63.0<1>W g122.0<16,8,2>W {align1};
+
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_INTRA;
+mov (16) g64.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g65.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g66.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g67.0<1>W g122.0<16,8,2>W {align1};
+
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_INTRA;
+mov (16) g68.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g69.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g70.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g71.0<1>W g122.0<16,8,2>W {align1};
+
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_INTRA;
+mov (16) g72.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g73.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g74.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g75.0<1>W g122.0<16,8,2>W {align1};
+
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_INTRA;
+mov (16) g76.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g77.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g78.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g79.0<1>W g122.0<16,8,2>W {align1};
+
diff --git a/i965_drv_video/shaders/mpeg2/vld/iq_non_intra.g4i b/i965_drv_video/shaders/mpeg2/vld/iq_non_intra.g4i
new file mode 100644
index 0000000..03c09aa
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/iq_non_intra.g4i
@@ -0,0 +1,150 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix in UB format
+           g3~g4:non intra IQ matrix in UB format
+           g5~g20:IDCT table
+   g32~g55:DCT data before IQ
+   g56~g79:DCT data after IQ
+   g82:    thread payload backup
+   g109:   q_scale_code
+   g110:   q_scale_code
+   g112~g115: non intra IQ matrix in UW format (in order to use instruction compress), copys from g3~g4
+   g125:   ip before jump
+*/
+and (1) g109.0<1>UW g82.8<1,1,1>UW 0x1fUW {align1}; //q_scale_code
+
+and.z (1) null g82.8<1,1,1>UW 0x20UW {align1};   //if(q_scale_type==0) q_scale=q_scale_code*2;
+(f0) jmpi Q_SCALE_TYPE_0;
+
+cmp.l (1) null g109.0<1,1,1>UW 9UW {align1};      //if(q_scale_type!=0) calculate q_scale
+(f0) jmpi DO_IQ;
+cmp.l (1) null g109.0<1,1,1>UW 17UW {align1};
+(f0) jmpi RANG_9_16;
+cmp.l (1) null g109.0<1,1,1>UW 25UW {align1};
+(f0) jmpi RANG_17_24;
+
+RANG_25_31:
+add (1) g109.0<1>UW g109.0<1,1,1>UW -25W {align1};
+shl (1) g109.0<1>UW g109.0<1,1,1>UW 3UW {align1};
+add (1) g109.0<1>UW g109.0<1,1,1>UW 64UW {align1};
+jmpi DO_IQ;
+
+RANG_9_16:
+add (1) g109.0<1>UW g109.0<1,1,1>UW -9W {align1};
+shl (1) g109.0<1>UW g109.0<1,1,1>UW 1UW {align1};
+add (1) g109.0<1>UW g109.0<1,1,1>UW 10UW {align1};
+jmpi DO_IQ;
+
+RANG_17_24:
+add (1) g109.0<1>UW g109.0<1,1,1>UW -17W {align1};
+shl (1) g109.0<1>UW g109.0<1,1,1>UW 2UW {align1};
+add (1) g109.0<1>UW g109.0<1,1,1>UW 28UW {align1};
+jmpi DO_IQ;
+
+Q_SCALE_TYPE_0:
+shl (1) g109.0<1>UW g109.0<1,1,1>UW 1UD {align1};
+
+DO_IQ:
+mov (1) g110.0<1>UW g109.0<1,1,1>UW {align1};
+
+mov (16) g112.0<1>UW g3.0<16,16,1>UB {align1};
+mov (16) g113.0<1>UW g3.16<16,16,1>UB {align1};
+mov (16) g114.0<1>UW g4.0<16,16,1>UB {align1};
+mov (16) g115.0<1>UW g4.16<16,16,1>UB {align1};
+
+mov (1) a0.0<1>UD 0x03F003E0UD {align1};
+
+//Y0
+iq_non_intra_y0:
+and.z (1) null g82.8<1,1,1>UW 0x800UW {align1};
+(f0) jmpi iq_non_intra_y1;
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_NON_INTRA;
+mov (16) g56.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g57.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g58.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g59.0<1>W g122.0<16,8,2>W {align1};
+
+//Y1
+iq_non_intra_y1:
+and.z (1) null g82.8<1,1,1>UW 0x400UW {align1};
+(f0) jmpi iq_non_intra_y2;
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_NON_INTRA;
+mov (16) g60.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g61.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g62.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g63.0<1>W g122.0<16,8,2>W {align1};
+
+//Y2
+iq_non_intra_y2:
+and.z (1) null g82.8<1,1,1>UW 0x200UW {align1};
+(f0) jmpi iq_non_intra_y3;
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_NON_INTRA;
+mov (16) g64.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g65.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g66.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g67.0<1>W g122.0<16,8,2>W {align1};
+
+//Y3
+iq_non_intra_y3:
+and.z (1) null g82.8<1,1,1>UW 0x100UW {align1};
+(f0) jmpi iq_non_intra_u;
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_NON_INTRA;
+mov (16) g68.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g69.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g70.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g71.0<1>W g122.0<16,8,2>W {align1};
+
+//U
+iq_non_intra_u:
+and.z (1) null g82.8<1,1,1>UW 0x80UW {align1};
+(f0) jmpi iq_non_intra_v;
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_NON_INTRA;
+mov (16) g72.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g73.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g74.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g75.0<1>W g122.0<16,8,2>W {align1};
+
+//V
+iq_non_intra_v:
+and.z (1) null g82.8<1,1,1>UW 0x40UW {align1};
+(f0) jmpi iq_non_intra_end;
+mov (1) g125.0<1>UD ip {align1};
+jmpi DO_IQ_NON_INTRA;
+mov (16) g76.0<1>W g116.0<16,8,2>W {align1};
+mov (16) g77.0<1>W g118.0<16,8,2>W {align1};
+mov (16) g78.0<1>W g120.0<16,8,2>W {align1};
+mov (16) g79.0<1>W g122.0<16,8,2>W {align1};
+
+iq_non_intra_end:
diff --git a/i965_drv_video/shaders/mpeg2/vld/lib.g4a b/i965_drv_video/shaders/mpeg2/vld/lib.g4a
new file mode 100644
index 0000000..567caaf
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/lib.g4a
@@ -0,0 +1,190 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix in UB format
+           g3~g4:non intra IQ matrix in UB format
+           g5~g20:IDCT table
+   g32~g55:DCT data before IQ
+   g56~g79:DCT data after IQ
+   g83~g106: IDCT data after idct
+   g82:    thread payload backup
+   g125:   ip before jump
+*/
+include(`iq_non_intra.g4i')
+
+define(`ROW_SHIFT', `11UD') //define for idct
+define(`ROW_ADD', `0x400UD')            
+define(`COL_SHIFT', `20UD') 
+define(`COL_ADD', `0x80000UD')           
+
+mov (1) a0.0<1>UD 0x06F006E0UD {align1};//0x06F006E0UD+0x00200020UD=0x07100700UD (g56.0 and g56.16,the start of DCT data)
+
+//Y0
+and.nz (1) null g82.8<1,1,1>UW 0x800UW {align1};
+(f0) jmpi do_idct_y0;
+
+mov (8) g83.0<1>UW 0UW {align1}; 
+mov (8) g84.0<1>UW 0UW {align1}; 
+mov (8) g85.0<1>UW 0UW {align1}; 
+mov (8) g86.0<1>UW 0UW {align1}; 
+mov (8) g87.0<1>UW 0UW {align1}; 
+mov (8) g88.0<1>UW 0UW {align1}; 
+mov (8) g89.0<1>UW 0UW {align1}; 
+mov (8) g90.0<1>UW 0UW {align1}; 
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00800080UD {align1};
+jmpi block_y1;
+do_idct_y0:
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+mov (8) g83.0<1>W g32.0<16,8,2>W {align1};
+mov (8) g84.0<1>W g33.0<16,8,2>W {align1};
+mov (8) g85.0<1>W g34.0<16,8,2>W {align1};
+mov (8) g86.0<1>W g35.0<16,8,2>W {align1};
+mov (8) g87.0<1>W g36.0<16,8,2>W {align1};
+mov (8) g88.0<1>W g37.0<16,8,2>W {align1};
+mov (8) g89.0<1>W g38.0<16,8,2>W {align1};
+mov (8) g90.0<1>W g39.0<16,8,2>W {align1};
+
+//Y1
+block_y1:
+and.nz (1) null g82.8<1,1,1>UW 0x400UW {align1};
+(f0) jmpi do_idct_y1;
+mov (8) g83.16<1>UW 0UW {align1}; 
+mov (8) g84.16<1>UW 0UW {align1}; 
+mov (8) g85.16<1>UW 0UW {align1}; 
+mov (8) g86.16<1>UW 0UW {align1}; 
+mov (8) g87.16<1>UW 0UW {align1}; 
+mov (8) g88.16<1>UW 0UW {align1}; 
+mov (8) g89.16<1>UW 0UW {align1}; 
+mov (8) g90.16<1>UW 0UW {align1}; 
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00800080UD {align1};
+jmpi block_y2;
+do_idct_y1:
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+mov (8) g83.16<1>W g32.0<16,8,2>W {align1};
+mov (8) g84.16<1>W g33.0<16,8,2>W {align1};
+mov (8) g85.16<1>W g34.0<16,8,2>W {align1};
+mov (8) g86.16<1>W g35.0<16,8,2>W {align1};
+mov (8) g87.16<1>W g36.0<16,8,2>W {align1};
+mov (8) g88.16<1>W g37.0<16,8,2>W {align1};
+mov (8) g89.16<1>W g38.0<16,8,2>W {align1};
+mov (8) g90.16<1>W g39.0<16,8,2>W {align1};
+
+//Y2
+block_y2:
+and.nz (1) null g82.8<1,1,1>UW 0x200UW {align1};
+(f0) jmpi do_idct_y2;
+mov (8) g91.0<1>UW 0UW {align1}; 
+mov (8) g92.0<1>UW 0UW {align1}; 
+mov (8) g93.0<1>UW 0UW {align1}; 
+mov (8) g94.0<1>UW 0UW {align1}; 
+mov (8) g95.0<1>UW 0UW {align1}; 
+mov (8) g96.0<1>UW 0UW {align1}; 
+mov (8) g97.0<1>UW 0UW {align1}; 
+mov (8) g98.0<1>UW 0UW {align1}; 
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00800080UD {align1};
+jmpi block_y3;
+do_idct_y2:
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+mov (8) g91.0<1>W g32.0<16,8,2>W {align1};
+mov (8) g92.0<1>W g33.0<16,8,2>W {align1};
+mov (8) g93.0<1>W g34.0<16,8,2>W {align1};
+mov (8) g94.0<1>W g35.0<16,8,2>W {align1};
+mov (8) g95.0<1>W g36.0<16,8,2>W {align1};
+mov (8) g96.0<1>W g37.0<16,8,2>W {align1};
+mov (8) g97.0<1>W g38.0<16,8,2>W {align1};
+mov (8) g98.0<1>W g39.0<16,8,2>W {align1};
+
+//Y3
+block_y3:
+and.nz (1) null g82.8<1,1,1>UW 0x100UW {align1};
+(f0) jmpi do_idct_y3;
+mov (8) g91.16<1>UW 0UW {align1}; 
+mov (8) g92.16<1>UW 0UW {align1}; 
+mov (8) g93.16<1>UW 0UW {align1}; 
+mov (8) g94.16<1>UW 0UW {align1}; 
+mov (8) g95.16<1>UW 0UW {align1}; 
+mov (8) g96.16<1>UW 0UW {align1}; 
+mov (8) g97.16<1>UW 0UW {align1}; 
+mov (8) g98.16<1>UW 0UW {align1}; 
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00800080UD {align1};
+jmpi block_u;
+do_idct_y3:
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+mov (8) g91.16<1>W g32.0<16,8,2>W {align1};
+mov (8) g92.16<1>W g33.0<16,8,2>W {align1};
+mov (8) g93.16<1>W g34.0<16,8,2>W {align1};
+mov (8) g94.16<1>W g35.0<16,8,2>W {align1};
+mov (8) g95.16<1>W g36.0<16,8,2>W {align1};
+mov (8) g96.16<1>W g37.0<16,8,2>W {align1};
+mov (8) g97.16<1>W g38.0<16,8,2>W {align1};
+mov (8) g98.16<1>W g39.0<16,8,2>W {align1};
+
+//U
+block_u:
+and.nz (1) null g82.8<1,1,1>UW 0x80UW {align1};
+(f0) jmpi do_idct_u;
+mov (16) g99.0<1>UW 0UW {align1}; 
+mov (16) g100.0<1>UW 0UW {align1}; 
+mov (16) g101.0<1>UW 0UW {align1}; 
+mov (16) g102.0<1>UW 0UW {align1}; 
+add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00800080UD {align1};
+jmpi block_v;
+do_idct_u:
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+mov (16) g99.0<1>W g32.0<16,8,2>W {align1};
+mov (16) g100.0<1>W g34.0<16,8,2>W {align1};
+mov (16) g101.0<1>W g36.0<16,8,2>W {align1};
+mov (16) g102.0<1>W g38.0<16,8,2>W {align1};
+
+//V
+block_v:
+and.nz (1) null g82.8<1,1,1>UW 0x40UW {align1};
+(f0) jmpi do_idct_v;
+mov (16) g103.0<1>UW 0UW {align1}; 
+mov (16) g104.0<1>UW 0UW {align1}; 
+mov (16) g105.0<1>UW 0UW {align1}; 
+mov (16) g106.0<1>UW 0UW {align1};  
+jmpi block_end;
+do_idct_v:
+mov (1) g125.0<1>UD ip {align1};
+jmpi IDCT_START;
+mov (16) g103.0<1>W g32.0<16,8,2>W {align1};
+mov (16) g104.0<1>W g34.0<16,8,2>W {align1};
+mov (16) g105.0<1>W g36.0<16,8,2>W {align1};
+mov (16) g106.0<1>W g38.0<16,8,2>W {align1};
+block_end:
+
+add (1) ip g126.8<1,1,1>UD 0x20UD {align1};            //jump back
+include(`do_iq_non_intra.g4i')
+include(`idct.g4i')
diff --git a/i965_drv_video/shaders/mpeg2/vld/lib.g4b b/i965_drv_video/shaders/mpeg2/vld/lib.g4b
new file mode 100644
index 0000000..262bff9
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/lib.g4b
@@ -0,0 +1,307 @@
+   { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000005 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000001 },
+   { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
+   { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
+   { 0x00800001, 0x2e000229, 0x00b10060, 0x00000000 },
+   { 0x00800001, 0x2e200229, 0x00b10070, 0x00000000 },
+   { 0x00800001, 0x2e400229, 0x00b10080, 0x00000000 },
+   { 0x00800001, 0x2e600229, 0x00b10090, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x08000800 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000a1 },
+   { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x04000400 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000099 },
+   { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x02000200 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000091 },
+   { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x01000100 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000089 },
+   { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x00800080 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000081 },
+   { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x00400040 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000079 },
+   { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x08000800 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00600001, 0x2a600169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2a800169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2aa00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2ac00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2ae00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b000169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b200169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b400169, 0x00000000, 0x00000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000077 },
+   { 0x00600001, 0x2a6001ad, 0x00ae0400, 0x00000000 },
+   { 0x00600001, 0x2a8001ad, 0x00ae0420, 0x00000000 },
+   { 0x00600001, 0x2aa001ad, 0x00ae0440, 0x00000000 },
+   { 0x00600001, 0x2ac001ad, 0x00ae0460, 0x00000000 },
+   { 0x00600001, 0x2ae001ad, 0x00ae0480, 0x00000000 },
+   { 0x00600001, 0x2b0001ad, 0x00ae04a0, 0x00000000 },
+   { 0x00600001, 0x2b2001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00600001, 0x2b4001ad, 0x00ae04e0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x04000400 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00600001, 0x2a700169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2a900169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2ab00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2ad00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2af00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b100169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b300169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b500169, 0x00000000, 0x00000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000061 },
+   { 0x00600001, 0x2a7001ad, 0x00ae0400, 0x00000000 },
+   { 0x00600001, 0x2a9001ad, 0x00ae0420, 0x00000000 },
+   { 0x00600001, 0x2ab001ad, 0x00ae0440, 0x00000000 },
+   { 0x00600001, 0x2ad001ad, 0x00ae0460, 0x00000000 },
+   { 0x00600001, 0x2af001ad, 0x00ae0480, 0x00000000 },
+   { 0x00600001, 0x2b1001ad, 0x00ae04a0, 0x00000000 },
+   { 0x00600001, 0x2b3001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00600001, 0x2b5001ad, 0x00ae04e0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x02000200 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00600001, 0x2b600169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b800169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2ba00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2bc00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2be00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c000169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c200169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c400169, 0x00000000, 0x00000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000004b },
+   { 0x00600001, 0x2b6001ad, 0x00ae0400, 0x00000000 },
+   { 0x00600001, 0x2b8001ad, 0x00ae0420, 0x00000000 },
+   { 0x00600001, 0x2ba001ad, 0x00ae0440, 0x00000000 },
+   { 0x00600001, 0x2bc001ad, 0x00ae0460, 0x00000000 },
+   { 0x00600001, 0x2be001ad, 0x00ae0480, 0x00000000 },
+   { 0x00600001, 0x2c0001ad, 0x00ae04a0, 0x00000000 },
+   { 0x00600001, 0x2c2001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00600001, 0x2c4001ad, 0x00ae04e0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x01000100 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00600001, 0x2b700169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b900169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2bb00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2bd00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2bf00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c100169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c300169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c500169, 0x00000000, 0x00000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000035 },
+   { 0x00600001, 0x2b7001ad, 0x00ae0400, 0x00000000 },
+   { 0x00600001, 0x2b9001ad, 0x00ae0420, 0x00000000 },
+   { 0x00600001, 0x2bb001ad, 0x00ae0440, 0x00000000 },
+   { 0x00600001, 0x2bd001ad, 0x00ae0460, 0x00000000 },
+   { 0x00600001, 0x2bf001ad, 0x00ae0480, 0x00000000 },
+   { 0x00600001, 0x2c1001ad, 0x00ae04a0, 0x00000000 },
+   { 0x00600001, 0x2c3001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00600001, 0x2c5001ad, 0x00ae04e0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x00800080 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x00800001, 0x2c600169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2c800169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2ca00169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2cc00169, 0x00000000, 0x00000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000023 },
+   { 0x00800001, 0x2c6001ad, 0x00ae0400, 0x00000000 },
+   { 0x00800001, 0x2c8001ad, 0x00ae0440, 0x00000000 },
+   { 0x00800001, 0x2ca001ad, 0x00ae0480, 0x00000000 },
+   { 0x00800001, 0x2cc001ad, 0x00ae04c0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x00400040 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000005 },
+   { 0x00800001, 0x2ce00169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2d000169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2d200169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2d400169, 0x00000000, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
+   { 0x00800001, 0x2ce001ad, 0x00ae0400, 0x00000000 },
+   { 0x00800001, 0x2d0001ad, 0x00ae0440, 0x00000000 },
+   { 0x00800001, 0x2d2001ad, 0x00ae0480, 0x00000000 },
+   { 0x00800001, 0x2d4001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00000040, 0x34000c20, 0x00210fc8, 0x00000020 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
+   { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
+   { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
+   { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
+   { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
+   { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
+   { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
+   { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
+   { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
+   { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
+   { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
+   { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
+   { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
+   { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/lib.g4b.gen5 b/i965_drv_video/shaders/mpeg2/vld/lib.g4b.gen5
new file mode 100644
index 0000000..2371beb
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/lib.g4b.gen5
@@ -0,0 +1,307 @@
+   { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000012 },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
+   { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
+   { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000002 },
+   { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
+   { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
+   { 0x00800001, 0x2e000229, 0x00b10060, 0x00000000 },
+   { 0x00800001, 0x2e200229, 0x00b10070, 0x00000000 },
+   { 0x00800001, 0x2e400229, 0x00b10080, 0x00000000 },
+   { 0x00800001, 0x2e600229, 0x00b10090, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x08000800 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000142 },
+   { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x04000400 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000132 },
+   { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x02000200 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000122 },
+   { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x01000100 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000112 },
+   { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x00800080 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000102 },
+   { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
+   { 0x01000005, 0x20002d3c, 0x00210a48, 0x00400040 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000f2 },
+   { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
+   { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
+   { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
+   { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x08000800 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00600001, 0x2a600169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2a800169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2aa00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2ac00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2ae00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b000169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b200169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b400169, 0x00000000, 0x00000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000ee },
+   { 0x00600001, 0x2a6001ad, 0x00ae0400, 0x00000000 },
+   { 0x00600001, 0x2a8001ad, 0x00ae0420, 0x00000000 },
+   { 0x00600001, 0x2aa001ad, 0x00ae0440, 0x00000000 },
+   { 0x00600001, 0x2ac001ad, 0x00ae0460, 0x00000000 },
+   { 0x00600001, 0x2ae001ad, 0x00ae0480, 0x00000000 },
+   { 0x00600001, 0x2b0001ad, 0x00ae04a0, 0x00000000 },
+   { 0x00600001, 0x2b2001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00600001, 0x2b4001ad, 0x00ae04e0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x04000400 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00600001, 0x2a700169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2a900169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2ab00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2ad00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2af00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b100169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b300169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b500169, 0x00000000, 0x00000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x000000c2 },
+   { 0x00600001, 0x2a7001ad, 0x00ae0400, 0x00000000 },
+   { 0x00600001, 0x2a9001ad, 0x00ae0420, 0x00000000 },
+   { 0x00600001, 0x2ab001ad, 0x00ae0440, 0x00000000 },
+   { 0x00600001, 0x2ad001ad, 0x00ae0460, 0x00000000 },
+   { 0x00600001, 0x2af001ad, 0x00ae0480, 0x00000000 },
+   { 0x00600001, 0x2b1001ad, 0x00ae04a0, 0x00000000 },
+   { 0x00600001, 0x2b3001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00600001, 0x2b5001ad, 0x00ae04e0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x02000200 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00600001, 0x2b600169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b800169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2ba00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2bc00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2be00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c000169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c200169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c400169, 0x00000000, 0x00000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000096 },
+   { 0x00600001, 0x2b6001ad, 0x00ae0400, 0x00000000 },
+   { 0x00600001, 0x2b8001ad, 0x00ae0420, 0x00000000 },
+   { 0x00600001, 0x2ba001ad, 0x00ae0440, 0x00000000 },
+   { 0x00600001, 0x2bc001ad, 0x00ae0460, 0x00000000 },
+   { 0x00600001, 0x2be001ad, 0x00ae0480, 0x00000000 },
+   { 0x00600001, 0x2c0001ad, 0x00ae04a0, 0x00000000 },
+   { 0x00600001, 0x2c2001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00600001, 0x2c4001ad, 0x00ae04e0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x01000100 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00600001, 0x2b700169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2b900169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2bb00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2bd00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2bf00169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c100169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c300169, 0x00000000, 0x00000000 },
+   { 0x00600001, 0x2c500169, 0x00000000, 0x00000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000006a },
+   { 0x00600001, 0x2b7001ad, 0x00ae0400, 0x00000000 },
+   { 0x00600001, 0x2b9001ad, 0x00ae0420, 0x00000000 },
+   { 0x00600001, 0x2bb001ad, 0x00ae0440, 0x00000000 },
+   { 0x00600001, 0x2bd001ad, 0x00ae0460, 0x00000000 },
+   { 0x00600001, 0x2bf001ad, 0x00ae0480, 0x00000000 },
+   { 0x00600001, 0x2c1001ad, 0x00ae04a0, 0x00000000 },
+   { 0x00600001, 0x2c3001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00600001, 0x2c5001ad, 0x00ae04e0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x00800080 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x00800001, 0x2c600169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2c800169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2ca00169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2cc00169, 0x00000000, 0x00000000 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000046 },
+   { 0x00800001, 0x2c6001ad, 0x00ae0400, 0x00000000 },
+   { 0x00800001, 0x2c8001ad, 0x00ae0440, 0x00000000 },
+   { 0x00800001, 0x2ca001ad, 0x00ae0480, 0x00000000 },
+   { 0x00800001, 0x2cc001ad, 0x00ae04c0, 0x00000000 },
+   { 0x02000005, 0x20002d3c, 0x00210a48, 0x00400040 },
+   { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
+   { 0x00800001, 0x2ce00169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2d000169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2d200169, 0x00000000, 0x00000000 },
+   { 0x00800001, 0x2d400169, 0x00000000, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
+   { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
+   { 0x00800001, 0x2ce001ad, 0x00ae0400, 0x00000000 },
+   { 0x00800001, 0x2d0001ad, 0x00ae0440, 0x00000000 },
+   { 0x00800001, 0x2d2001ad, 0x00ae0480, 0x00000000 },
+   { 0x00800001, 0x2d4001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00000040, 0x34000c20, 0x00210fc8, 0x00000020 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
+   { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
+   { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
+   { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
+   { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
+   { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
+   { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
+   { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
+   { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000034 },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
+   { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
+   { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
+   { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
+   { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
+   { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
+   { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
+   { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
+   { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
+   { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
+   { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
+   { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
+   { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
+   { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
+   { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
+   { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
+   { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
+   { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
+   { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
+   { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
+   { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
+   { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
+   { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
+   { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
+   { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
+   { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
+   { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
+   { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
+   { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
+   { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
+   { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
+   { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
+   { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
+   { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
+   { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
+   { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/i965_drv_video/shaders/mpeg2/vld/motion_field_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/motion_field_uv.g4i
new file mode 100644
index 0000000..4598c85
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/motion_field_uv.g4i
@@ -0,0 +1,46 @@
+/*
+ * Copyright © 2008 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Zhang Hua jun <huajun.zhang@intel.com>
+ *    Xing Dong sheng <dongsheng.xing@intel.com>
+ *
+ */
+       and.z (1) null mv1<1,1,1>W 1W {align1};       
+       (f0) jmpi L1;
+       and.z (1) null mv2<1,1,1>W 1W {align1};       
+       (f0) jmpi L2;
+       include(`read_field_x1y1_uv.g4i')
+       jmpi L5;
+L2:
+       include(`read_field_x1y0_uv.g4i')
+       jmpi L5;
+L1:
+       and.z (1) null mv2<1,1,1>W 1W {align1};       
+       (f0) jmpi L4;
+       include(`read_field_x0y1_uv.g4i')
+       jmpi L5;
+L4:
+       include(`read_field_x0y0_uv.g4i')
+L5:
+
diff --git a/i965_drv_video/shaders/mpeg2/vld/motion_field_y.g4i b/i965_drv_video/shaders/mpeg2/vld/motion_field_y.g4i
new file mode 100644
index 0000000..47d2ec4
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/motion_field_y.g4i
@@ -0,0 +1,45 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Zhang Hua jun <huajun.zhang@intel.com>
+ *    Xing Dong sheng <dongsheng.xing@intel.com>
+ *
+ */
+	and.z (1) null mv1<1,1,1>W 1UW {align1};	
+	(f0) jmpi L1;
+	and.z (1) null mv2<1,1,1>W 1UW {align1};	
+	(f0) jmpi L2;
+	include(`read_field_x1y1_y.g4i')
+	jmpi L5;
+L2:
+	include(`read_field_x1y0_y.g4i')
+	jmpi L5;
+L1:
+	and.z (1) null mv2<1,1,1>W 1UW {align1};	
+	(f0) jmpi L4;
+	include(`read_field_x0y1_y.g4i')
+	jmpi L5;
+L4:
+	include(`read_field_x0y0_y.g4i')
+L5:
diff --git a/i965_drv_video/shaders/mpeg2/vld/motion_frame_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/motion_frame_uv.g4i
new file mode 100644
index 0000000..00a5f2b
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/motion_frame_uv.g4i
@@ -0,0 +1,45 @@
+/*
+ * Copyright © 2008 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Zhang Hua jun <huajun.zhang@intel.com>
+ *    Xing Dong sheng <dongsheng.xing@intel.com>
+ */  
+
+	and.z (1) null mv1<1,1,1>UW 2UD {align1};	
+	(f0) jmpi LL1;
+	and.z (1) null mv2<1,1,1>UW 2UD {align1};	
+	(f0) jmpi LL2;
+	include(`read_frame_x1y1_uv.g4i')
+	jmpi LL5;
+LL2:
+	include(`read_frame_x1y0_uv.g4i')
+	jmpi LL5;
+LL1:
+	and.z (1) null mv2<1,1,1>UW 2UD {align1};	
+	(f0) jmpi LL4;
+	include(`read_frame_x0y1_uv.g4i')
+	jmpi LL5;
+LL4:
+	include(`read_frame_x0y0_uv.g4i')
+LL5:
diff --git a/i965_drv_video/shaders/mpeg2/vld/motion_frame_y.g4i b/i965_drv_video/shaders/mpeg2/vld/motion_frame_y.g4i
new file mode 100644
index 0000000..88c8085
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/motion_frame_y.g4i
@@ -0,0 +1,57 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ */  
+ 
+/* if (motion_vect.x & 1) {
+ *   if (motion_vect.y & 1)
+ *	 half_pixel in x and y;
+ *   else
+ *	 half_pixel in x;
+ * } else {
+ *	if (motion_vect.y & 1) 
+ *	  half_pixel y;
+ *	else
+ *	  full_pixel_read;	
+ * }	 
+ */
+
+	and.z (1) null mv1<1,1,1>UW 1UD {align1};	
+	(f0) jmpi LL1;
+	and.z (1) null mv2<1,1,1>UW 1UD {align1};	
+	(f0) jmpi LL2;
+	include(`read_frame_x1y1_y.g4i') 
+	jmpi LL5;
+LL2: 
+	include(`read_frame_x1y0_y.g4i') 
+	jmpi LL5;
+LL1: 
+	and.z (1) null mv2<1,1,1>UW 1UD {align1};	
+	(f0) jmpi LL4;
+	include(`read_frame_x0y1_y.g4i')
+	jmpi LL5;
+LL4:
+	include(`read_frame_x0y0_y.g4i')
+LL5:
+
diff --git a/i965_drv_video/shaders/mpeg2/vld/null.g4a b/i965_drv_video/shaders/mpeg2/vld/null.g4a
new file mode 100644
index 0000000..1e1dcea
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/null.g4a
@@ -0,0 +1,51 @@
+/*
+ * Copyright © 2008 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *
+ */
+mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
+mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
+define(`UV_red',`0xffffffffUD')
+define(`UV_white',`0x7f7f7f7fUD')
+define(`UV_green',`0x00000000UD')
+
+mov(2) g6.0<1>UD g82.12<2,2,1>UW {align1};
+mov(1) g6.8<1>UD 0x000f000fUD  { align1 };
+mov(16) m1<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m3<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m5<1>UD 0xFFFFFFFFUD {align1 compr};
+mov(16) m7<1>UD 0xFFFFFFFFUD {align1 compr};
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(0, 0, 2, 0) mlen 9 rlen 0 { align1 };
+
+/*Fill U buffer & V buffer with 0x7F*/
+shr (2) g6.0<1>UD g82.12<2,2,1>UW  1UW {align1};
+
+mov(1) g6.8<1>UD 0x00070007UD  { align1 };
+mov (16) m1<1>UD UV_white {align1 compr};
+//mov (16) m1<1>UD g1.0<16,8,1>UD {align1 compr};
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
+send (16) 0 acc0<1>UW g6<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
+
+send (16) 0 acc0<1>UW g0<8,8,1>UW 
+	thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_field_x0y0_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/read_field_x0y0_uv.g4i
new file mode 100644
index 0000000..36e589a
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_field_x0y0_uv.g4i
@@ -0,0 +1,50 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+
+mov (1) g115.8<1>UD 0x7000FUD {align1}; // 8*16/32=4
+send (16) 0 g40.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g45.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+
+mov (16) g32.0<1>UW g40.0<16,8,1>UB {align1};
+mov (16) g33.0<1>UW g41.0<16,8,1>UB {align1};
+mov (16) g34.0<1>UW g42.0<16,8,1>UB {align1};
+mov (16) g35.0<1>UW g43.0<16,8,1>UB {align1};
+mov (16) g36.0<1>UW g45.0<16,8,1>UB {align1};
+mov (16) g37.0<1>UW g46.0<16,8,1>UB {align1};
+mov (16) g38.0<1>UW g47.0<16,8,1>UB {align1};
+mov (16) g39.0<1>UW g48.0<16,8,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_field_x0y0_y.g4i b/i965_drv_video/shaders/mpeg2/vld/read_field_x0y0_y.g4i
new file mode 100644
index 0000000..e549598
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_field_x0y0_y.g4i
@@ -0,0 +1,57 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g115.8<1>UD 0x01FUD {align1};
+send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g42.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g46.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+mov (1) g115.8<1>UD 0x07001FUD {align1};
+send (16) 0 g48.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+
+mov (16) g32.0<1>UW g40.0<16,16,1>UB {align1};
+mov (16) g33.0<1>UW g42.0<16,16,1>UB {align1};
+mov (16) g34.0<1>UW g44.0<16,16,1>UB {align1};
+mov (16) g35.0<1>UW g46.0<16,16,1>UB {align1};
+mov (16) g36.0<1>UW g48.0<16,16,1>UB {align1};
+mov (16) g37.0<1>UW g50.0<16,16,1>UB {align1};
+mov (16) g38.0<1>UW g52.0<16,16,1>UB {align1};
+mov (16) g39.0<1>UW g54.0<16,16,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_field_x0y1_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/read_field_x0y1_uv.g4i
new file mode 100644
index 0000000..ac8030b
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_field_x0y1_uv.g4i
@@ -0,0 +1,28 @@
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+
+mov (1) g115.8<1>UD 0x07000FUD {align1}; // 8*16/32=4
+send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g45.0<1>UW g115<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+mov (1) g115.8<1>UD 0xFUD {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1};
+send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
+send (16) 0 g49.0<1>UW g115<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
+
+avg (16) g32.0<1>UW g40.0<16,8,1>UB g41.0<16,8,1>UB {align1};
+avg (16) g33.0<1>UW g41.0<16,8,1>UB g42.0<16,8,1>UB {align1};
+avg (16) g34.0<1>UW g42.0<16,8,1>UB g43.0<16,8,1>UB {align1};
+avg (16) g35.0<1>UW g43.0<16,8,1>UB g44.0<16,8,1>UB {align1};
+
+avg (16) g36.0<1>UW g45.0<16,8,1>UB g46.0<16,8,1>UB {align1};
+avg (16) g37.0<1>UW g46.0<16,8,1>UB g47.0<16,8,1>UB {align1};
+avg (16) g38.0<1>UW g47.0<16,8,1>UB g48.0<16,8,1>UB {align1};
+avg (16) g39.0<1>UW g48.0<16,8,1>UB g49.0<16,8,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_field_x0y1_y.g4i b/i965_drv_video/shaders/mpeg2/vld/read_field_x0y1_y.g4i
new file mode 100644
index 0000000..7a7909f
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_field_x0y1_y.g4i
@@ -0,0 +1,60 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g115.8<1>UD 0x01FUD {align1};
+send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g42.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g46.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+mov (1) g115.8<1>UD 0x07001FUD {align1};
+send (16) 0 g48.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1};
+mov (1) g115.8<1>UD 0x1FUD {align1};
+send (16) 0 g56.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+
+avg.sat (16) g32.0<1>UW g40.0<16,16,1>UB g42.0<16,16,1>UB {align1};
+avg.sat (16) g33.0<1>UW g42.0<16,16,1>UB g44.0<16,16,1>UB {align1};
+avg.sat (16) g34.0<1>UW g44.0<16,16,1>UB g46.0<16,16,1>UB {align1};
+avg.sat (16) g35.0<1>UW g46.0<16,16,1>UB g48.0<16,16,1>UB {align1};
+avg.sat (16) g36.0<1>UW g48.0<16,16,1>UB g50.0<16,16,1>UB {align1};
+avg.sat (16) g37.0<1>UW g50.0<16,16,1>UB g52.0<16,16,1>UB {align1};
+avg.sat (16) g38.0<1>UW g52.0<16,16,1>UB g54.0<16,16,1>UB {align1};
+avg.sat (16) g39.0<1>UW g54.0<16,16,1>UB g56.0<16,16,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_field_x1y0_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/read_field_x1y0_uv.g4i
new file mode 100644
index 0000000..4c36438
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_field_x1y0_uv.g4i
@@ -0,0 +1,24 @@
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+
+mov (1) g115.8<1>UD 0x07000FUD {align1}; // 8*16/32=4
+send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+
+avg (16) g32.0<1>UW g40.0<16,8,1>UB g40.1<16,8,1>UB {align1};
+avg (16) g33.0<1>UW g41.0<16,8,1>UB g41.1<16,8,1>UB {align1};
+avg (16) g34.0<1>UW g42.0<16,8,1>UB g42.1<16,8,1>UB {align1};
+avg (16) g35.0<1>UW g43.0<16,8,1>UB g43.1<16,8,1>UB {align1};
+
+avg (16) g36.0<1>UW g44.0<16,8,1>UB g44.1<16,8,1>UB {align1};
+avg (16) g37.0<1>UW g45.0<16,8,1>UB g45.1<16,8,1>UB {align1};
+avg (16) g38.0<1>UW g46.0<16,8,1>UB g46.1<16,8,1>UB {align1};
+avg (16) g39.0<1>UW g47.0<16,8,1>UB g47.1<16,8,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_field_x1y0_y.g4i b/i965_drv_video/shaders/mpeg2/vld/read_field_x1y0_y.g4i
new file mode 100644
index 0000000..c8ff505
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_field_x1y0_y.g4i
@@ -0,0 +1,57 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g115.8<1>UD 0x01FUD {align1};
+send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g42.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g46.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+mov (1) g115.8<1>UD 0x07001FUD {align1};
+send (16) 0 g48.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+
+avg.sat (16) g32.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
+avg.sat (16) g33.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
+avg.sat (16) g34.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
+avg.sat (16) g35.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
+avg.sat (16) g36.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
+avg.sat (16) g37.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
+avg.sat (16) g38.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
+avg.sat (16) g39.0<1>UW g54.0<16,16,1>UB g54.1<16,16,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_field_x1y1_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/read_field_x1y1_uv.g4i
new file mode 100644
index 0000000..816dd72
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_field_x1y1_uv.g4i
@@ -0,0 +1,53 @@
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g115.8<1>UD 0x07000FUD {align1};
+send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
+send (16) 0 g45.0<1>UW g115<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
+mov (1) g115.8<1>UD 0x01000FUD {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1};
+send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
+send (16) 0 g49.0<1>UW g115<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
+//U
+add (16) g32.0<1>UW g40.0<16,8,1>UB g41.0<16,8,1>UB {align1};
+add (16) g33.0<1>UW g41.0<16,8,1>UB g42.0<16,8,1>UB {align1};
+add (16) g34.0<1>UW g42.0<16,8,1>UB g43.0<16,8,1>UB {align1};
+add (16) g35.0<1>UW g43.0<16,8,1>UB g44.0<16,8,1>UB {align1};
+
+add (16) g32.0<1>UW g32.0<16,8,1>UW g40.1<16,8,1>UB {align1};
+add (16) g33.0<1>UW g33.0<16,8,1>UW g41.1<16,8,1>UB {align1};
+add (16) g34.0<1>UW g34.0<16,8,1>UW g42.1<16,8,1>UB {align1};
+add (16) g35.0<1>UW g35.0<16,8,1>UW g43.1<16,8,1>UB {align1};
+
+add (16) g32.0<1>UW g32.0<16,8,1>UW g41.1<16,8,1>UB {align1};
+add (16) g33.0<1>UW g33.0<16,8,1>UW g42.1<16,8,1>UB {align1};
+add (16) g34.0<1>UW g34.0<16,8,1>UW g43.1<16,8,1>UB {align1};
+add (16) g35.0<1>UW g35.0<16,8,1>UW g44.1<16,8,1>UB {align1};
+//V
+add (16) g36.0<1>UW g45.0<16,8,1>UB g46.0<16,8,1>UB {align1};
+add (16) g37.0<1>UW g46.0<16,8,1>UB g47.0<16,8,1>UB {align1};
+add (16) g38.0<1>UW g47.0<16,8,1>UB g48.0<16,8,1>UB {align1};
+add (16) g39.0<1>UW g48.0<16,8,1>UB g49.0<16,8,1>UB {align1};
+
+add (16) g36.0<1>UW g36.0<16,8,1>UW g45.1<16,8,1>UB {align1};
+add (16) g37.0<1>UW g37.0<16,8,1>UW g46.1<16,8,1>UB {align1};
+add (16) g38.0<1>UW g38.0<16,8,1>UW g47.1<16,8,1>UB {align1};
+add (16) g39.0<1>UW g39.0<16,8,1>UW g48.1<16,8,1>UB {align1};
+
+add (16) g36.0<1>UW g36.0<16,8,1>UW g46.1<16,8,1>UB {align1};
+add (16) g37.0<1>UW g37.0<16,8,1>UW g47.1<16,8,1>UB {align1};
+add (16) g38.0<1>UW g38.0<16,8,1>UW g48.1<16,8,1>UB {align1};
+add (16) g39.0<1>UW g39.0<16,8,1>UW g49.1<16,8,1>UB {align1};
+
+shr (32) g32.0<1>UW g32.0<16,16,1>UW 2UW {align1 compr};
+shr (32) g34.0<1>UW g34.0<16,16,1>UW 2UW {align1 compr};
+shr (32) g36.0<1>UW g36.0<16,16,1>UW 2UW {align1 compr};
+shr (32) g38.0<1>UW g38.0<16,16,1>UW 2UW {align1 compr};
+
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_field_x1y1_y.g4i b/i965_drv_video/shaders/mpeg2/vld/read_field_x1y1_y.g4i
new file mode 100644
index 0000000..dcc9ebf
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_field_x1y1_y.g4i
@@ -0,0 +1,87 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data
+   g115:   message descriptor for reading reference data   */
+mov (1) g115.8<1>UD 0x01FUD {align1};
+send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g42.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+send (16) 0 g46.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
+mov (1) g115.8<1>UD 0x07001FUD {align1};
+send (16) 0 g48.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
+add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1};
+mov (1) g115.8<1>UD 0x1FUD {align1};
+send (16) 0 g56.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
+
+add (16) g32.0<1>UW g40.0<16,16,1>UB g42.0<16,16,1>UB {align1};
+add (16) g33.0<1>UW g42.0<16,16,1>UB g44.0<16,16,1>UB {align1};
+add (16) g34.0<1>UW g44.0<16,16,1>UB g46.0<16,16,1>UB {align1};
+add (16) g35.0<1>UW g46.0<16,16,1>UB g48.0<16,16,1>UB {align1};
+add (16) g36.0<1>UW g48.0<16,16,1>UB g50.0<16,16,1>UB {align1};
+add (16) g37.0<1>UW g50.0<16,16,1>UB g52.0<16,16,1>UB {align1};
+add (16) g38.0<1>UW g52.0<16,16,1>UB g54.0<16,16,1>UB {align1};
+add (16) g39.0<1>UW g54.0<16,16,1>UB g56.0<16,16,1>UB {align1};
+
+add (16) g32.0<1>UW g32.0<16,16,1>UW g40.1<16,16,1>UB {align1};
+add (16) g33.0<1>UW g33.0<16,16,1>UW g42.1<16,16,1>UB {align1};
+add (16) g34.0<1>UW g34.0<16,16,1>UW g44.1<16,16,1>UB {align1};
+add (16) g35.0<1>UW g35.0<16,16,1>UW g46.1<16,16,1>UB {align1};
+add (16) g36.0<1>UW g36.0<16,16,1>UW g48.1<16,16,1>UB {align1};
+add (16) g37.0<1>UW g37.0<16,16,1>UW g50.1<16,16,1>UB {align1};
+add (16) g38.0<1>UW g38.0<16,16,1>UW g52.1<16,16,1>UB {align1};
+add (16) g39.0<1>UW g39.0<16,16,1>UW g54.1<16,16,1>UB {align1};
+
+add (16) g32.0<1>UW g32.0<16,16,1>UW g42.1<16,16,1>UB {align1};
+add (16) g33.0<1>UW g33.0<16,16,1>UW g44.1<16,16,1>UB {align1};
+add (16) g34.0<1>UW g34.0<16,16,1>UW g46.1<16,16,1>UB {align1};
+add (16) g35.0<1>UW g35.0<16,16,1>UW g48.1<16,16,1>UB {align1};
+add (16) g36.0<1>UW g36.0<16,16,1>UW g50.1<16,16,1>UB {align1};
+add (16) g37.0<1>UW g37.0<16,16,1>UW g52.1<16,16,1>UB {align1};
+add (16) g38.0<1>UW g38.0<16,16,1>UW g54.1<16,16,1>UB {align1};
+add (16) g39.0<1>UW g39.0<16,16,1>UW g56.1<16,16,1>UB {align1};
+
+shr (16) g32.0<1>UW g32.0<16,16,1>UW 2UW {align1};
+shr (16) g33.0<1>UW g33.0<16,16,1>UW 2UW {align1};
+shr (16) g34.0<1>UW g34.0<16,16,1>UW 2UW {align1};
+shr (16) g35.0<1>UW g35.0<16,16,1>UW 2UW {align1};
+shr (16) g36.0<1>UW g36.0<16,16,1>UW 2UW {align1};
+shr (16) g37.0<1>UW g37.0<16,16,1>UW 2UW {align1};
+shr (16) g38.0<1>UW g38.0<16,16,1>UW 2UW {align1};
+shr (16) g39.0<1>UW g39.0<16,16,1>UW 2UW {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y0_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y0_uv.g4i
new file mode 100644
index 0000000..63f898f
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y0_uv.g4i
@@ -0,0 +1,49 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g32:    message descriptor for reading reference data
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data                           */
+mov (1) g32.8<1>UD 0x007000fUD  {align1};
+send (16) 0 g36.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1};
+send (16) 0 g40.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1};
+
+mov (16) g74.0<1>UW g36.0<16,8,1>UB {align1};
+mov (16) g75.0<1>UW g37.0<16,8,1>UB {align1};
+mov (16) g76.0<1>UW g38.0<16,8,1>UB {align1};
+mov (16) g77.0<1>UW g39.0<16,8,1>UB {align1};
+mov (16) g78.0<1>UW g40.0<16,8,1>UB {align1};
+mov (16) g79.0<1>UW g41.0<16,8,1>UB {align1};
+mov (16) g80.0<1>UW g42.0<16,8,1>UB {align1};
+mov (16) g81.0<1>UW g43.0<16,8,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y0_y.g4i b/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y0_y.g4i
new file mode 100644
index 0000000..3ab5ccd
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y0_y.g4i
@@ -0,0 +1,58 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g32:    message descriptor for reading reference data
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data                           */
+mov (1) g32.8<1>UD 0x007001FUD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
+
+mov (16) g58.0<1>UW g38.0<16,16,1>UB {align1};
+mov (16) g59.0<1>UW g39.0<16,16,1>UB {align1};
+mov (16) g60.0<1>UW g40.0<16,16,1>UB {align1};
+mov (16) g61.0<1>UW g41.0<16,16,1>UB {align1};
+mov (16) g62.0<1>UW g42.0<16,16,1>UB {align1};
+mov (16) g63.0<1>UW g43.0<16,16,1>UB {align1};
+mov (16) g64.0<1>UW g44.0<16,16,1>UB {align1};
+mov (16) g65.0<1>UW g45.0<16,16,1>UB {align1};
+mov (16) g66.0<1>UW g46.0<16,16,1>UB {align1};
+mov (16) g67.0<1>UW g47.0<16,16,1>UB {align1};
+mov (16) g68.0<1>UW g48.0<16,16,1>UB {align1};
+mov (16) g69.0<1>UW g49.0<16,16,1>UB {align1};
+mov (16) g70.0<1>UW g50.0<16,16,1>UB {align1};
+mov (16) g71.0<1>UW g51.0<16,16,1>UB {align1};
+mov (16) g72.0<1>UW g52.0<16,16,1>UB {align1};
+mov (16) g73.0<1>UW g53.0<16,16,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y1_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y1_uv.g4i
new file mode 100644
index 0000000..6351ec5
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y1_uv.g4i
@@ -0,0 +1,56 @@
+/*
+ * Copyright © 2008 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDINg BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINgEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIgHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAgES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISINg FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINgS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Zhang Hua jun <huajun.zhang@intel.com>
+ *    Xing Dong sheng <dongsheng.xing@intel.com>
+ *
+ */
+mov (1) g32.8<1>UD 0x007001FUD {align1};
+send (16) 0 g34.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 8 {align1}; //U
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 8 {align1}; //V
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x1FUD {align1};
+send (16) 0 g42.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 1 {align1}; //U
+send (16) 0 g52.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 1 {align1}; //V
+
+//U
+avg (8) g74.0<1>UW  g34.0<8,8,1>UB g35.0<8,8,1>UB {align1};
+avg (8) g74.16<1>UW g35.0<8,8,1>UB g36.0<8,8,1>UB {align1};
+avg (8) g75.0<1>UW  g36.0<8,8,1>UB g37.0<8,8,1>UB {align1};
+avg (8) g75.16<1>UW g37.0<8,8,1>UB g38.0<8,8,1>UB {align1};
+avg (8) g76.0<1>UW  g38.0<8,8,1>UB g39.0<8,8,1>UB {align1};
+avg (8) g76.16<1>UW g39.0<8,8,1>UB g40.0<8,8,1>UB {align1};
+avg (8) g77.0<1>UW  g40.0<8,8,1>UB g41.0<8,8,1>UB {align1};
+avg (8) g77.16<1>UW g41.0<8,8,1>UB g42.0<8,8,1>UB {align1};
+
+//V
+avg (8) g78.0<1>UW  g44.0<8,8,1>UB g45.0<8,8,1>UB {align1};
+avg (8) g78.16<1>UW g45.0<8,8,1>UB g46.0<8,8,1>UB {align1};
+avg (8) g79.0<1>UW  g46.0<8,8,1>UB g47.0<8,8,1>UB {align1};
+avg (8) g79.16<1>UW g47.0<8,8,1>UB g48.0<8,8,1>UB {align1};
+avg (8) g80.0<1>UW  g48.0<8,8,1>UB g49.0<8,8,1>UB {align1};
+avg (8) g80.16<1>UW g49.0<8,8,1>UB g50.0<8,8,1>UB {align1};
+avg (8) g81.0<1>UW  g50.0<8,8,1>UB g51.0<8,8,1>UB {align1};
+avg (8) g81.16<1>UW g51.0<8,8,1>UB g52.0<8,8,1>UB {align1};
+
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y1_y.g4i b/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y1_y.g4i
new file mode 100644
index 0000000..db3dcc5
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_frame_x0y1_y.g4i
@@ -0,0 +1,61 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g32:    message descriptor for reading reference data
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data                           */
+mov (1) g32.8<1>UD 0x007001FUD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x1FUD {align1};
+send (16) 0 g54.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 1 {align1};
+
+avg.sat (16) g58.0<1>UW g38.0<16,16,1>UB g39.0<16,16,1>UB {align1};
+avg.sat (16) g59.0<1>UW g39.0<16,16,1>UB g40.0<16,16,1>UB {align1};
+avg.sat (16) g60.0<1>UW g40.0<16,16,1>UB g41.0<16,16,1>UB {align1};
+avg.sat (16) g61.0<1>UW g41.0<16,16,1>UB g42.0<16,16,1>UB {align1};
+avg.sat (16) g62.0<1>UW g42.0<16,16,1>UB g43.0<16,16,1>UB {align1};
+avg.sat (16) g63.0<1>UW g43.0<16,16,1>UB g44.0<16,16,1>UB {align1};
+avg.sat (16) g64.0<1>UW g44.0<16,16,1>UB g45.0<16,16,1>UB {align1};
+avg.sat (16) g65.0<1>UW g45.0<16,16,1>UB g46.0<16,16,1>UB {align1};
+avg.sat (16) g66.0<1>UW g46.0<16,16,1>UB g47.0<16,16,1>UB {align1};
+avg.sat (16) g67.0<1>UW g47.0<16,16,1>UB g48.0<16,16,1>UB {align1};
+avg.sat (16) g68.0<1>UW g48.0<16,16,1>UB g49.0<16,16,1>UB {align1};
+avg.sat (16) g69.0<1>UW g49.0<16,16,1>UB g50.0<16,16,1>UB {align1};
+avg.sat (16) g70.0<1>UW g50.0<16,16,1>UB g51.0<16,16,1>UB {align1};
+avg.sat (16) g71.0<1>UW g51.0<16,16,1>UB g52.0<16,16,1>UB {align1};
+avg.sat (16) g72.0<1>UW g52.0<16,16,1>UB g53.0<16,16,1>UB {align1};
+avg.sat (16) g73.0<1>UW g53.0<16,16,1>UB g54.0<16,16,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y0_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y0_uv.g4i
new file mode 100644
index 0000000..05736f0
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y0_uv.g4i
@@ -0,0 +1,42 @@
+/*
+ * Copyright © 2008 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Zhang Hua jun <huajun.zhang@intel.com>
+ *    Xing Dong sheng <dongsheng.xing@intel.com>
+ *
+ */
+
+mov (1) g32.8<1>UD 0x007000fUD  {align1};
+send (16) 0 g34.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1};
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1};
+
+avg (16) g74.0<1>UW g34.0<16,8,1>UB g34.1<16,8,1>UB{align1};
+avg (16) g75.0<1>UW g35.0<16,8,1>UB g35.1<16,8,1>UB{align1};
+avg (16) g76.0<1>UW g36.0<16,8,1>UB g36.1<16,8,1>UB{align1};
+avg (16) g77.0<1>UW g37.0<16,8,1>UB g37.1<16,8,1>UB{align1};
+
+avg (16) g78.0<1>UW g44.0<16,8,1>UB g44.1<16,8,1>UB{align1};
+avg (16) g79.0<1>UW g45.0<16,8,1>UB g45.1<16,8,1>UB{align1};
+avg (16) g80.0<1>UW g46.0<16,8,1>UB g46.1<16,8,1>UB{align1};
+avg (16) g81.0<1>UW g47.0<16,8,1>UB g47.1<16,8,1>UB{align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y0_y.g4i b/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y0_y.g4i
new file mode 100644
index 0000000..c236d11
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y0_y.g4i
@@ -0,0 +1,58 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g32:    message descriptor for reading reference data
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data                           */
+mov (1) g32.8<1>UD 0x007001FUD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
+
+avg.sat (16) g58.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
+avg.sat (16) g59.0<1>UW g39.0<16,16,1>UB g39.1<16,16,1>UB {align1};
+avg.sat (16) g60.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
+avg.sat (16) g61.0<1>UW g41.0<16,16,1>UB g41.1<16,16,1>UB {align1};
+avg.sat (16) g62.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
+avg.sat (16) g63.0<1>UW g43.0<16,16,1>UB g43.1<16,16,1>UB {align1};
+avg.sat (16) g64.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
+avg.sat (16) g65.0<1>UW g45.0<16,16,1>UB g45.1<16,16,1>UB {align1};
+avg.sat (16) g66.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
+avg.sat (16) g67.0<1>UW g47.0<16,16,1>UB g47.1<16,16,1>UB {align1};
+avg.sat (16) g68.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
+avg.sat (16) g69.0<1>UW g49.0<16,16,1>UB g49.1<16,16,1>UB {align1};
+avg.sat (16) g70.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
+avg.sat (16) g71.0<1>UW g51.0<16,16,1>UB g51.1<16,16,1>UB {align1};
+avg.sat (16) g72.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
+avg.sat (16) g73.0<1>UW g53.0<16,16,1>UB g53.1<16,16,1>UB {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y1_uv.g4i b/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y1_uv.g4i
new file mode 100644
index 0000000..2f741fa
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y1_uv.g4i
@@ -0,0 +1,74 @@
+/*
+ */
+mov (1) g32.8<1>UD 0x007001FUD {align1};
+send (16) 0 g34.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 8 {align1}; //U
+send (16) 0 g44.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 8 {align1}; //V
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x1FUD {align1};
+send (16) 0 g42.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 1 {align1}; //U
+send (16) 0 g52.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 1 {align1}; //V
+
+//U
+add (8) g74.0<1>UW  g34.0<8,8,1>UB g34.1<8,8,1>UB {align1};
+add (8) g74.16<1>UW g35.0<8,8,1>UB g35.1<8,8,1>UB {align1};
+add (8) g75.0<1>UW  g36.0<8,8,1>UB g36.1<8,8,1>UB {align1};
+add (8) g75.16<1>UW g37.0<8,8,1>UB g37.1<8,8,1>UB {align1};
+add (8) g76.0<1>UW  g38.0<8,8,1>UB g38.1<8,8,1>UB {align1};
+add (8) g76.16<1>UW g39.0<8,8,1>UB g39.1<8,8,1>UB {align1};
+add (8) g77.0<1>UW  g40.0<8,8,1>UB g40.1<8,8,1>UB {align1};
+add (8) g77.16<1>UW g41.0<8,8,1>UB g41.1<8,8,1>UB {align1};
+
+add (8) g74.0<1>UW  g74.0<8,8,1>UW  g35.0<8,8,1>UB {align1};
+add (8) g74.16<1>UW g74.16<8,8,1>UW g36.0<8,8,1>UB {align1};
+add (8) g75.0<1>UW  g75.0<8,8,1>UW  g37.0<8,8,1>UB {align1};
+add (8) g75.16<1>UW g75.16<8,8,1>UW g38.0<8,8,1>UB {align1};
+add (8) g76.0<1>UW  g76.0<8,8,1>UW  g39.0<8,8,1>UB {align1};
+add (8) g76.16<1>UW g76.16<8,8,1>UW g40.0<8,8,1>UB {align1};
+add (8) g77.0<1>UW  g77.0<8,8,1>UW  g41.0<8,8,1>UB {align1};
+add (8) g77.16<1>UW g77.16<8,8,1>UW g42.0<8,8,1>UB {align1};
+
+add (8) g74.0<1>UW  g74.0<8,8,1>UW  g35.1<8,8,1>UB {align1};
+add (8) g74.16<1>UW g74.16<8,8,1>UW g36.1<8,8,1>UB {align1};
+add (8) g75.0<1>UW  g75.0<8,8,1>UW  g37.1<8,8,1>UB {align1};
+add (8) g75.16<1>UW g75.16<8,8,1>UW g38.1<8,8,1>UB {align1};
+add (8) g76.0<1>UW  g76.0<8,8,1>UW  g39.1<8,8,1>UB {align1};
+add (8) g76.16<1>UW g76.16<8,8,1>UW g40.1<8,8,1>UB {align1};
+add (8) g77.0<1>UW  g77.0<8,8,1>UW  g41.1<8,8,1>UB {align1};
+add (8) g77.16<1>UW g77.16<8,8,1>UW g42.1<8,8,1>UB {align1};
+
+//V
+add (8) g78.0<1>UW  g44.0<8,8,1>UB g44.1<8,8,1>UB {align1};
+add (8) g78.16<1>UW g45.0<8,8,1>UB g45.1<8,8,1>UB {align1};
+add (8) g79.0<1>UW  g46.0<8,8,1>UB g46.1<8,8,1>UB {align1};
+add (8) g79.16<1>UW g47.0<8,8,1>UB g47.1<8,8,1>UB {align1};
+add (8) g80.0<1>UW  g48.0<8,8,1>UB g48.1<8,8,1>UB {align1};
+add (8) g80.16<1>UW g49.0<8,8,1>UB g49.1<8,8,1>UB {align1};
+add (8) g81.0<1>UW  g50.0<8,8,1>UB g50.1<8,8,1>UB {align1};
+add (8) g81.16<1>UW g51.0<8,8,1>UB g51.1<8,8,1>UB {align1};
+
+add (8) g78.0<1>UW  g78.0<8,8,1>UW  g45.0<8,8,1>UB {align1};
+add (8) g78.16<1>UW g78.16<8,8,1>UW g46.0<8,8,1>UB {align1};
+add (8) g79.0<1>UW  g79.0<8,8,1>UW  g47.0<8,8,1>UB {align1};
+add (8) g79.16<1>UW g79.16<8,8,1>UW g48.0<8,8,1>UB {align1};
+add (8) g80.0<1>UW  g80.0<8,8,1>UW  g49.0<8,8,1>UB {align1};
+add (8) g80.16<1>UW g80.16<8,8,1>UW g50.0<8,8,1>UB {align1};
+add (8) g81.0<1>UW  g81.0<8,8,1>UW  g51.0<8,8,1>UB {align1};
+add (8) g81.16<1>UW g81.16<8,8,1>UW g52.0<8,8,1>UB {align1};
+
+add (8) g78.0<1>UW  g78.0<8,8,1>UW  g45.1<8,8,1>UB {align1};
+add (8) g78.16<1>UW g78.16<8,8,1>UW g46.1<8,8,1>UB {align1};
+add (8) g79.0<1>UW  g79.0<8,8,1>UW  g47.1<8,8,1>UB {align1};
+add (8) g79.16<1>UW g79.16<8,8,1>UW g48.1<8,8,1>UB {align1};
+add (8) g80.0<1>UW  g80.0<8,8,1>UW  g49.1<8,8,1>UB {align1};
+add (8) g80.16<1>UW g80.16<8,8,1>UW g50.1<8,8,1>UB {align1};
+add (8) g81.0<1>UW  g81.0<8,8,1>UW  g51.1<8,8,1>UB {align1};
+add (8) g81.16<1>UW g81.16<8,8,1>UW g52.1<8,8,1>UB {align1};
+
+shr (16) g74.0<1>UW g74.0<16,16,1>UW 2UW {align1};
+shr (16) g75.0<1>UW g75.0<16,16,1>UW 2UW {align1};
+shr (16) g76.0<1>UW g76.0<16,16,1>UW 2UW {align1};
+shr (16) g77.0<1>UW g77.0<16,16,1>UW 2UW {align1};
+shr (16) g78.0<1>UW g78.0<16,16,1>UW 2UW {align1};
+shr (16) g79.0<1>UW g79.0<16,16,1>UW 2UW {align1};
+shr (16) g80.0<1>UW g80.0<16,16,1>UW 2UW {align1};
+shr (16) g81.0<1>UW g81.0<16,16,1>UW 2UW {align1};
diff --git a/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y1_y.g4i b/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y1_y.g4i
new file mode 100644
index 0000000..990927d
--- /dev/null
+++ b/i965_drv_video/shaders/mpeg2/vld/read_frame_x1y1_y.g4i
@@ -0,0 +1,112 @@
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author:
+ *    Zou Nan hai <nanhai.zou@intel.com>
+ *    Yan Li <li.l.yan@intel.com>
+ *    Liu Xi bin<xibin.liu@intel.com>
+ */
+/* GRF allocation:
+   g1~g30: constant buffer
+           g1~g2:intra IQ matrix
+           g3~g4:non intra IQ matrix
+           g5~g20:IDCT table
+   g31:    thread payload 
+   g32:    message descriptor for reading reference data
+   g58~g81:reference data
+   g82:    thread payload backup
+   g83~g106:IDCT data                           */
+mov (1) g32.8<1>UD 0x007001FUD {align1};
+send (16) 0 g38.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+send (16) 0 g46.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
+add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
+mov (1) g32.8<1>UD 0x1FUD {align1};
+send (16) 0 g54.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 1 {align1};
+
+add (16) g58.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
+add (16) g59.0<1>UW g39.0<16,16,1>UB g39.1<16,16,1>UB {align1};
+add (16) g60.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
+add (16) g61.0<1>UW g41.0<16,16,1>UB g41.1<16,16,1>UB {align1};
+add (16) g62.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
+add (16) g63.0<1>UW g43.0<16,16,1>UB g43.1<16,16,1>UB {align1};
+add (16) g64.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
+add (16) g65.0<1>UW g45.0<16,16,1>UB g45.1<16,16,1>UB {align1};
+add (16) g66.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
+add (16) g67.0<1>UW g47.0<16,16,1>UB g47.1<16,16,1>UB {align1};
+add (16) g68.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
+add (16) g69.0<1>UW g49.0<16,16,1>UB g49.1<16,16,1>UB {align1};
+add (16) g70.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
+add (16) g71.0<1>UW g51.0<16,16,1>UB g51.1<16,16,1>UB {align1};
+add (16) g72.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
+add (16) g73.0<1>UW g53.0<16,16,1>UB g53.1<16,16,1>UB {align1};
+
+add (16) g58.0<1>UW g58.0<16,16,1>UW g39.0<16,16,1>UB {align1};
+add (16) g59.0<1>UW g59.0<16,16,1>UW g40.0<16,16,1>UB {align1};
+add (16) g60.0<1>UW g60.0<16,16,1>UW g41.0<16,16,1>UB {align1};
+add (16) g61.0<1>UW g61.0<16,16,1>UW g42.0<16,16,1>UB {align1};
+add (16) g62.0<1>UW g62.0<16,16,1>UW g43.0<16,16,1>UB {align1};
+add (16) g63.0<1>UW g63.0<16,16,1>UW g44.0<16,16,1>UB {align1};
+add (16) g64.0<1>UW g64.0<16,16,1>UW g45.0<16,16,1>UB {align1};
+add (16) g65.0<1>UW g65.0<16,16,1>UW g46.0<16,16,1>UB {align1};
+add (16) g66.0<1>UW g66.0<16,16,1>UW g47.0<16,16,1>UB {align1};
+add (16) g67.0<1>UW g67.0<16,16,1>UW g48.0<16,16,1>UB {align1};
+add (16) g68.0<1>UW g68.0<16,16,1>UW g49.0<16,16,1>UB {align1};
+add (16) g69.0<1>UW g69.0<16,16,1>UW g50.0<16,16,1>UB {align1};
+add (16) g70.0<1>UW g70.0<16,16,1>UW g51.0<16,16,1>UB {align1};
+add (16) g71.0<1>UW g71.0<16,16,1>UW g52.0<16,16,1>UB {align1};
+add (16) g72.0<1>UW g72.0<16,16,1>UW g53.0<16,16,1>UB {align1};
+add (16) g73.0<1>UW g73.0<16,16,1>UW g54.0<16,16,1>UB {align1};
+
+add (16) g58.0<1>UW g58.0<16,16,1>UW g39.1<16,16,1>UB {align1};
+add (16) g59.0<1>UW g59.0<16,16,1>UW g40.1<16,16,1>UB {align1};
+add (16) g60.0<1>UW g60.0<16,16,1>UW g41.1<16,16,1>UB {align1};
+add (16) g61.0<1>UW g61.0<16,16,1>UW g42.1<16,16,1>UB {align1};
+add (16) g62.0<1>UW g62.0<16,16,1>UW g43.1<16,16,1>UB {align1};
+add (16) g63.0<1>UW g63.0<16,16,1>UW g44.1<16,16,1>UB {align1};
+add (16) g64.0<1>UW g64.0<16,16,1>UW g45.1<16,16,1>UB {align1};
+add (16) g65.0<1>UW g65.0<16,16,1>UW g46.1<16,16,1>UB {align1};
+add (16) g66.0<1>UW g66.0<16,16,1>UW g47.1<16,16,1>UB {align1};
+add (16) g67.0<1>UW g67.0<16,16,1>UW g48.1<16,16,1>UB {align1};
+add (16) g68.0<1>UW g68.0<16,16,1>UW g49.1<16,16,1>UB {align1};
+add (16) g69.0<1>UW g69.0<16,16,1>UW g50.1<16,16,1>UB {align1};
+add (16) g70.0<1>UW g70.0<16,16,1>UW g51.1<16,16,1>UB {align1};
+add (16) g71.0<1>UW g71.0<16,16,1>UW g52.1<16,16,1>UB {align1};
+add (16) g72.0<1>UW g72.0<16,16,1>UW g53.1<16,16,1>UB {align1};
+add (16) g73.0<1>UW g73.0<16,16,1>UW g54.1<16,16,1>UB {align1};
+
+shr.sat (16) g58.0<1>UW g58.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g59.0<1>UW g59.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g60.0<1>UW g60.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g61.0<1>UW g61.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g62.0<1>UW g62.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g63.0<1>UW g63.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g64.0<1>UW g64.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g65.0<1>UW g65.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g66.0<1>UW g66.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g67.0<1>UW g67.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g68.0<1>UW g68.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g69.0<1>UW g69.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g70.0<1>UW g70.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g71.0<1>UW g71.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g72.0<1>UW g72.0<16,16,1>UW 2UW {align1};
+shr.sat (16) g73.0<1>UW g73.0<16,16,1>UW 2UW {align1};
diff --git a/i965_drv_video/shaders/render/Makefile.am b/i965_drv_video/shaders/render/Makefile.am
new file mode 100644
index 0000000..f38c234
--- /dev/null
+++ b/i965_drv_video/shaders/render/Makefile.am
@@ -0,0 +1,51 @@
+
+INTEL_G4I =			\
+	exa_wm.g4i		\
+	exa_wm_affine.g4i
+
+INTEL_G4A =				\
+	exa_sf.g4a			\
+	exa_wm_xy.g4a			\
+	exa_wm_src_affine.g4a		\
+	exa_wm_src_sample_planar.g4a	\
+	exa_wm_yuv_rgb.g4a		\
+	exa_wm_blend_subpicture.g4a		\
+	exa_wm_write.g4a
+
+INTEL_G4B =				\
+	exa_sf.g4b			\
+	exa_wm_xy.g4b			\
+	exa_wm_src_affine.g4b		\
+	exa_wm_src_sample_planar.g4b	\
+	exa_wm_yuv_rgb.g4b		\
+	exa_wm_blend_subpicture.g4b		\
+	exa_wm_write.g4b
+
+INTEL_G4B_GEN5 =				\
+	exa_sf.g4b.gen5				\
+	exa_wm_xy.g4b.gen5			\
+	exa_wm_src_affine.g4b.gen5		\
+	exa_wm_src_sample_planar.g4b.gen5	\
+	exa_wm_yuv_rgb.g4b.gen5			\
+	exa_wm_blend_subpicture.g4b.gen5	\
+	exa_wm_write.g4b.gen5
+
+EXTRA_DIST = $(INTEL_G4I)	\
+	     $(INTEL_G4A)       \
+	     $(INTEL_G4B)    	\
+	     $(INTEL_G4B_GEN5)
+
+if HAVE_GEN4ASM
+
+SUFFIXES = .g4a .g4b
+.g4a.g4b:
+	m4 $*.g4a > $*.g4m && intel-gen4asm -o $@ $*.g4m && intel-gen4asm -g 5 -o $@.gen5 $*.g4m && rm $*.g4m
+
+$(INTEL_G4B): $(INTEL_G4I)
+
+BUILT_SOURCES= $(INTEL_G4B)
+
+clean-local:
+	-rm -f $(INTEL_G4B)
+	-rm -f $(INTEL_G4B_GEN5)
+endif    
diff --git a/i965_drv_video/shaders/render/exa_sf.g4a b/i965_drv_video/shaders/render/exa_sf.g4a
new file mode 100644
index 0000000..3e660ac
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_sf.g4a
@@ -0,0 +1,107 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Keith Packard <keithp@keithp.com>
+ *    Eric Anholt <eric@anholt.net>
+ *
+ */
+
+/*
+ * Inputs (note all sub-register addresses are bytes, not float indices)
+ *
+ * Note that the vertices will have been reordered:
+ *
+ * V0 is topmost (leftmost among topmost) (upper left)
+ * V1 is next clockwise (lower right)
+ * V2 is remaining (lower left)
+ *
+ *  V0 ...................... XX
+ *  |                          .
+ *  |                          .
+ *  |                          .
+ *  V2------------------------V1
+ *
+ *  G0	    thread state -- just pass along
+ *
+ *  G1 and G2 are fixed by SF spec
+ *
+ *  G1.0    reserved
+ *  G1.4    Provoking vertex
+ *  G1.8    Determinant
+ *  G1.12   X1 - X0
+ *  G1.16   X2 - X0
+ *  G1.20   Y1 - Y0
+ *  G1.24   Y2 - Y0
+ *  G1.30   reserved
+ *
+ *  G2.0    Z0
+ *  G2.4    1/W0
+ *  G2.8    Z1
+ *  G2.12   1/W1
+ *  G2.16   Z2
+ *  G2.20   1/W2
+ *  G2.24   reserved
+ *  G2.30   reserved
+ *
+ *  G3 is V0 Vertex Attribute Data from URB (upper left)
+ *
+ *  G3.0    u0
+ *  G3.4    v0
+ *
+ *  G4 is V1 Vertex Attribute Data from URB (lower right)
+ *
+ *  G4.0    u1
+ *  G4.4    v1
+ *
+ *  G5 is V2 Vertex Attribute Data from URB (lower left)
+ *
+ */
+
+/* Compute inverses of the input deltas */
+send (4) 0 g6<1>F g1.12<4,4,1>F math inv mlen 1 rlen 1 { align1 };
+
+/* texture location at V0 */
+mov (4) m3<1>F g3<4,4,1>F { align1 };
+
+/* compute V1 - V2 (motion in X) for texture coordinates */
+add (4) g7<1>F g4<4,4,1>F -g5<4,4,1>F { align1 };
+
+/* multiply by 1/dx */
+mul (4) m1<1>F g7<4,4,1>F g6.0<0,1,0>F { align1 };
+
+/* Compute V2 - V0 (motion in Y) for texture coordinates */
+add (4) g7<1>F g5<4,4,1>F -g3<4,4,1>F { align1 };
+
+/* multiply by 1/dy */
+mul (4) m2<1>F g7<4,4,1>F g6.8<0,1,0>F {align1 };
+
+/* and we're done */
+send (8) 0 null g0<8,8,1>F urb 0 transpose used complete mlen 4 rlen 0 { align1 EOT };
+nop;
+nop;
+nop;
+nop;
+nop;
+nop;
+nop;
+nop;
diff --git a/i965_drv_video/shaders/render/exa_sf.g4b b/i965_drv_video/shaders/render/exa_sf.g4b
new file mode 100644
index 0000000..223c9c9
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_sf.g4b
@@ -0,0 +1,15 @@
+   { 0x00400031, 0x20c01fbd, 0x0069002c, 0x01110001 },
+   { 0x00400001, 0x206003be, 0x00690060, 0x00000000 },
+   { 0x00400040, 0x20e077bd, 0x00690080, 0x006940a0 },
+   { 0x00400041, 0x202077be, 0x006900e0, 0x000000c0 },
+   { 0x00400040, 0x20e077bd, 0x006900a0, 0x00694060 },
+   { 0x00400041, 0x204077be, 0x006900e0, 0x000000c8 },
+   { 0x00600031, 0x20001fbc, 0x008d0000, 0x8640c800 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/i965_drv_video/shaders/render/exa_sf.g4b.gen5 b/i965_drv_video/shaders/render/exa_sf.g4b.gen5
new file mode 100644
index 0000000..a838f47
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_sf.g4b.gen5
@@ -0,0 +1,15 @@
+   { 0x00400031, 0x20c01fbd, 0x1069002c, 0x02100001 },
+   { 0x00400001, 0x206003be, 0x00690060, 0x00000000 },
+   { 0x00400040, 0x20e077bd, 0x00690080, 0x006940a0 },
+   { 0x00400041, 0x202077be, 0x006900e0, 0x000000c0 },
+   { 0x00400040, 0x20e077bd, 0x006900a0, 0x00694060 },
+   { 0x00400041, 0x204077be, 0x006900e0, 0x000000c8 },
+   { 0x00600031, 0x20001fbc, 0x648d0000, 0x8808c800 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/i965_drv_video/shaders/render/exa_wm.g4i b/i965_drv_video/shaders/render/exa_wm.g4i
new file mode 100644
index 0000000..5d3d45b
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm.g4i
@@ -0,0 +1,156 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Wang Zhenyu <zhenyu.z.wang@intel.com>
+ *    Keith Packard <keithp@keithp.com>
+ */
+ 
+/*
+ * Input parameters
+ */
+
+/* Destination X/Y */
+define(`dst_x_uw',  `g1.8<2,4,0>UW')
+define(`dst_y_uw',  `g1.10<2,4,0>UW')
+define(`screen_x0', `g1.0<0,1,0>F')
+define(`screen_y0', `g1.4<0,1,0>F')
+
+/* Source transformation parameters */
+define(`src_du_dx', `g3.0<0,1,0>F')
+define(`src_du_dy', `g3.4<0,1,0>F')
+define(`src_uo',    `g3.12<0,1,0>F')
+define(`src_dv_dx', `g3.16<0,1,0>F')
+define(`src_dv_dy', `g3.20<0,1,0>F')
+define(`src_vo',    `g3.28<0,1,0>F')
+define(`src_dw_dx', `g4.0<0,1,0>F')
+define(`src_dw_dy', `g4.4<0,1,0>F')
+define(`src_wo',    `g4.12<0,1,0>F')
+
+define(`mask_du_dx', `g5.0<0,1,0>F')
+define(`mask_du_dy', `g5.4<0,1,0>F')
+define(`mask_uo',    `g5.12<0,1,0>F')
+define(`mask_dv_dx', `g5.16<0,1,0>F')
+define(`mask_dv_dy', `g5.20<0,1,0>F')
+define(`mask_vo',    `g5.28<0,1,0>F')
+define(`mask_dw_dx', `g6.0<0,1,0>F')
+define(`mask_dw_dy', `g6.4<0,1,0>F')
+define(`mask_wo',    `g6.12<0,1,0>F')
+
+/*
+ * Local variables. Pairs must be aligned on even reg boundry
+ */
+
+/* this holds the X dest coordinates */
+define(`dst_x',	    `g8')
+define(`dst_x_0',   `dst_x')
+define(`dst_x_1',   `g9')
+
+/* this holds the Y dest coordinates */
+define(`dst_y',	    `g10')
+define(`dst_y_0',   `dst_y')
+define(`dst_y_1',   `g11')
+
+/* When computing x * dn/dx, use this */
+define(`temp_x',    `g30')
+define(`temp_x_0',  `temp_x')
+define(`temp_x_1',  `g31')
+
+/* When computing y * dn/dy, use this */
+define(`temp_y',    `g28')
+define(`temp_y_0',  temp_y)
+define(`temp_y_1',  `g29')
+
+/* when loading x/y, use these to hold them in UW format */
+define(`temp_x_uw', temp_x)
+define(`temp_y_uw', temp_y)
+
+/* compute source and mask u/v to this pair to send to sampler */
+define(`src_msg',   `m1')
+define(`src_msg_ind',`1')
+define(`src_u',	    `m2')
+define(`src_v',	    `m4')
+define(`src_w',	    `g12')
+define(`src_w_0',   `src_w')
+define(`src_w_1',   `g13')
+
+define(`mask_msg',  `m7')
+define(`mask_msg_ind',`7')
+define(`mask_u',    `m8')
+define(`mask_v',    `m10')
+define(`mask_w',    `src_w')
+define(`mask_w_0',  `src_w_0')
+define(`mask_w_1',  `src_w_1')
+
+/* sample src to these registers */
+define(`src_sample_base',	`g14')
+
+define(`src_sample_r',		`g14')
+define(`src_sample_r_01',	`g14')
+define(`src_sample_r_23',	`g15')
+
+define(`src_sample_g',		`g16')
+define(`src_sample_g_01',	`g16')
+define(`src_sample_g_23',	`g17')
+
+define(`src_sample_b',		`g18')
+define(`src_sample_b_01',	`g18')
+define(`src_sample_b_23',	`g19')
+
+define(`src_sample_a',		`g20')
+define(`src_sample_a_01',	`g20')
+define(`src_sample_a_23',	`g21')
+
+/* sample mask to these registers */
+define(`mask_sample_base',	`g22')
+    
+define(`mask_sample_r',		`g22')
+define(`mask_sample_r_01',	`g22')
+define(`mask_sample_r_23',	`g23')
+    
+define(`mask_sample_g',		`g24')
+define(`mask_sample_g_01',	`g24')
+define(`mask_sample_g_23',	`g25')
+    
+define(`mask_sample_b',		`g26')
+define(`mask_sample_b_01',	`g26')
+define(`mask_sample_b_23',	`g27')
+    
+define(`mask_sample_a',		`g28')
+define(`mask_sample_a_01',	`g28')
+define(`mask_sample_a_23',	`g29')
+
+/* data port SIMD16 send registers */
+
+define(`data_port_msg_0',	`m0')
+define(`data_port_msg_0_ind',	`0')
+define(`data_port_msg_1',	`m1')
+define(`data_port_r_01',	`m2')
+define(`data_port_g_01',	`m3')
+define(`data_port_b_01',	`m4')
+define(`data_port_a_01',	`m5')
+
+define(`data_port_r_23',	`m6')
+define(`data_port_g_23',	`m7')
+define(`data_port_b_23',	`m8')
+define(`data_port_a_23',	`m9')
+
diff --git a/i965_drv_video/shaders/render/exa_wm_affine.g4i b/i965_drv_video/shaders/render/exa_wm_affine.g4i
new file mode 100644
index 0000000..e72656b
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_affine.g4i
@@ -0,0 +1,44 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Wang Zhenyu <zhenyu.z.wang@intel.com>
+ *    Keith Packard <keithp@keithp.com>
+ */
+
+/*
+ * Fragment to compute src u/v values under an affine transform
+ */
+
+/********** Compute u *************/
+
+mul (16)	temp_x<1>F	dst_x<8,8,1>F	du_dx		{ compr align1 };
+mul (16)	temp_y<1>F	dst_y<8,8,1>F	du_dy		{ compr align1 };
+add (16)	temp_x<1>F	temp_x<8,8,1>F	temp_y<8,8,1>F	{ compr align1 };
+add (16)	u<1>F		temp_x<8,8,1>F	uo		{ compr align1 };
+
+/********** Compute v *************/
+
+mul (16)	temp_x<1>F	dst_x<8,8,1>F	dv_dx		{ compr align1 };
+mul (16)	temp_y<1>F	dst_y<8,8,1>F	dv_dy		{ compr align1 };
+add (16)	temp_x<1>F	temp_x<8,8,1>F	temp_y<8,8,1>F	{ compr align1 };
+add (16)	v<1>F		temp_x<8,8,1>F	vo		{ compr align1 };
diff --git a/i965_drv_video/shaders/render/exa_wm_blend_subpicture.g4a b/i965_drv_video/shaders/render/exa_wm_blend_subpicture.g4a
new file mode 100644
index 0000000..2d2cd31
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_blend_subpicture.g4a
@@ -0,0 +1,83 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Wang Zhenyu <zhenyu.z.wang@intel.com>
+ *    Keith Packard <keithp@keithp.com>
+ */
+
+/* Sample the src surface in planar format */
+include(`exa_wm.g4i')
+
+/* prepare sampler read back gX register, which would be written back to output */
+
+/* use simd16 sampler, param 0 is u, param 1 is v. */
+/* 'payload' loading, assuming tex coord start from g4 */
+
+/* load r */
+mov (1) g0.8<1>UD	0x0000e000UD { align1 mask_disable };
+
+/* src_msg will be copied with g0, as it contains send desc */
+/* emit sampler 'send' cmd */
+
+
+/* sample Y */
+send (16) src_msg_ind		/* msg reg index */
+	src_sample_g<1>UW 	/* readback */
+	g0<8,8,1>UW		/* copy to msg start reg*/
+	sampler (1,0,F)		/* sampler message description, (binding_table,sampler_index,datatype)*/
+	mlen 5 rlen 2 {align1};
+
+/* sample U (Cr) */
+send (16) src_msg_ind		/* msg reg index */
+	src_sample_r<1>UW 	/* readback */
+	g0<8,8,1>UW		/* copy to msg start reg*/
+	sampler (1,2,F)		/* sampler message description, (binding_table,sampler_index,datatype)
+				/* here(src->dst) we should use src_sampler and src_surface */
+	mlen 5 rlen 2 { align1 };   /* required message len 5, readback len 8 */
+	
+/* sample V (Cb) */
+send (16) src_msg_ind		/* msg reg index */
+	src_sample_b<1>UW 	/* readback */
+	g0<8,8,1>UW		/* copy to msg start reg*/
+	sampler (1,4,F)		/* sampler message description, (binding_table,sampler_index,datatype)
+				/* here(src->dst) we should use src_sampler and src_surface */
+	mlen 5 rlen 2 { align1 };   /* required message len 5, readback len 8 */
+
+/*extract alpha value, alpha value stores in one float with color value, because the color value is small,
+we can neglect it when doing alpha blend*/
+mov (8) src_sample_a<1>F g14<8,8,1>F { align1 };
+mov (8) src_sample_a_23<1>F g15<8,8,1>F { align1 };
+
+
+/*set subtitle color*/
+add (8) g14<1>F g14<8,8,1>F 0.5F { align1 };
+add (8) g15<1>F g15<8,8,1>F 0.5F { align1 };
+add (8) g16<1>F g16<8,8,1>F 0.5F { align1 };
+add (8) g17<1>F g17<8,8,1>F 0.5F { align1 };
+add (8) g18<1>F g18<8,8,1>F 0.5F { align1 };
+add (8) g19<1>F g19<8,8,1>F 0.5F { align1 };
+
+nop;
+nop;
+nop;
+
diff --git a/i965_drv_video/shaders/render/exa_wm_blend_subpicture.g4b b/i965_drv_video/shaders/render/exa_wm_blend_subpicture.g4b
new file mode 100644
index 0000000..bbc75c0
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_blend_subpicture.g4b
@@ -0,0 +1,15 @@
+   { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
+   { 0x01800031, 0x22001d29, 0x008d0000, 0x02520001 },
+   { 0x01800031, 0x21c01d29, 0x008d0000, 0x02520201 },
+   { 0x01800031, 0x22401d29, 0x008d0000, 0x02520401 },
+   { 0x00600001, 0x228003bd, 0x008d01c0, 0x00000000 },
+   { 0x00600001, 0x22a003bd, 0x008d01e0, 0x00000000 },
+   { 0x00600040, 0x21c07fbd, 0x008d01c0, 0x3f000000 },
+   { 0x00600040, 0x21e07fbd, 0x008d01e0, 0x3f000000 },
+   { 0x00600040, 0x22007fbd, 0x008d0200, 0x3f000000 },
+   { 0x00600040, 0x22207fbd, 0x008d0220, 0x3f000000 },
+   { 0x00600040, 0x22407fbd, 0x008d0240, 0x3f000000 },
+   { 0x00600040, 0x22607fbd, 0x008d0260, 0x3f000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/i965_drv_video/shaders/render/exa_wm_blend_subpicture.g4b.gen5 b/i965_drv_video/shaders/render/exa_wm_blend_subpicture.g4b.gen5
new file mode 100644
index 0000000..0e7534f
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_blend_subpicture.g4b.gen5
@@ -0,0 +1,15 @@
+   { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
+   { 0x01800031, 0x22001d29, 0x208d0000, 0x0a2a0001 },
+   { 0x01800031, 0x21c01d29, 0x208d0000, 0x0a2a0201 },
+   { 0x01800031, 0x22401d29, 0x208d0000, 0x0a2a0401 },
+   { 0x00600001, 0x228003bd, 0x008d01c0, 0x00000000 },
+   { 0x00600001, 0x22a003bd, 0x008d01e0, 0x00000000 },
+   { 0x00600040, 0x21c07fbd, 0x008d01c0, 0x3f000000 },
+   { 0x00600040, 0x21e07fbd, 0x008d01e0, 0x3f000000 },
+   { 0x00600040, 0x22007fbd, 0x008d0200, 0x3f000000 },
+   { 0x00600040, 0x22207fbd, 0x008d0220, 0x3f000000 },
+   { 0x00600040, 0x22407fbd, 0x008d0240, 0x3f000000 },
+   { 0x00600040, 0x22607fbd, 0x008d0260, 0x3f000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/i965_drv_video/shaders/render/exa_wm_src_affine.g4a b/i965_drv_video/shaders/render/exa_wm_src_affine.g4a
new file mode 100644
index 0000000..3194b5a
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_src_affine.g4a
@@ -0,0 +1,45 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Wang Zhenyu <zhenyu.z.wang@intel.com>
+ *    Keith Packard <keithp@keithp.com>
+ */
+
+/*
+ * Fragment to compute src u/v values under an affine transform
+ */
+
+include(`exa_wm.g4i')
+
+define(`du_dx',	`src_du_dx')
+define(`du_dy',	`src_du_dy')
+define(`uo',	`src_uo')
+
+define(`dv_dx',	`src_dv_dx')
+define(`dv_dy',	`src_dv_dy')
+define(`vo',	`src_vo')
+
+define(`u',	`src_u')
+define(`v',	`src_v')
+
+include(`exa_wm_affine.g4i')
diff --git a/i965_drv_video/shaders/render/exa_wm_src_affine.g4b b/i965_drv_video/shaders/render/exa_wm_src_affine.g4b
new file mode 100644
index 0000000..d30da87
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_src_affine.g4b
@@ -0,0 +1,8 @@
+   { 0x00802041, 0x23c077bd, 0x008d0100, 0x00000060 },
+   { 0x00802041, 0x238077bd, 0x008d0140, 0x00000064 },
+   { 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
+   { 0x00802040, 0x204077be, 0x008d03c0, 0x0000006c },
+   { 0x00802041, 0x23c077bd, 0x008d0100, 0x00000070 },
+   { 0x00802041, 0x238077bd, 0x008d0140, 0x00000074 },
+   { 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
+   { 0x00802040, 0x208077be, 0x008d03c0, 0x0000007c },
diff --git a/i965_drv_video/shaders/render/exa_wm_src_affine.g4b.gen5 b/i965_drv_video/shaders/render/exa_wm_src_affine.g4b.gen5
new file mode 100644
index 0000000..d30da87
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_src_affine.g4b.gen5
@@ -0,0 +1,8 @@
+   { 0x00802041, 0x23c077bd, 0x008d0100, 0x00000060 },
+   { 0x00802041, 0x238077bd, 0x008d0140, 0x00000064 },
+   { 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
+   { 0x00802040, 0x204077be, 0x008d03c0, 0x0000006c },
+   { 0x00802041, 0x23c077bd, 0x008d0100, 0x00000070 },
+   { 0x00802041, 0x238077bd, 0x008d0140, 0x00000074 },
+   { 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
+   { 0x00802040, 0x208077be, 0x008d03c0, 0x0000007c },
diff --git a/i965_drv_video/shaders/render/exa_wm_src_sample_planar.g4a b/i965_drv_video/shaders/render/exa_wm_src_sample_planar.g4a
new file mode 100644
index 0000000..ca77b48
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_src_sample_planar.g4a
@@ -0,0 +1,65 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Wang Zhenyu <zhenyu.z.wang@intel.com>
+ *    Keith Packard <keithp@keithp.com>
+ */
+
+/* Sample the src surface in planar format */
+
+include(`exa_wm.g4i')
+
+/* prepare sampler read back gX register, which would be written back to output */
+
+/* use simd16 sampler, param 0 is u, param 1 is v. */
+/* 'payload' loading, assuming tex coord start from g4 */
+
+/* load r */
+mov (1) g0.8<1>UD	0x0000e000UD { align1 mask_disable };
+
+/* src_msg will be copied with g0, as it contains send desc */
+/* emit sampler 'send' cmd */
+
+/* sample Y */
+send (16) src_msg_ind		/* msg reg index */
+	src_sample_g<1>UW 	/* readback */
+	g0<8,8,1>UW		/* copy to msg start reg*/
+	sampler (1,0,F)		/* sampler message description, (binding_table,sampler_index,datatype)
+				/* here(src->dst) we should use src_sampler and src_surface */
+	mlen 5 rlen 2 { align1 };   /* required message len 5, readback len 8 */
+	
+/* sample U (Cr) */
+send (16) src_msg_ind		/* msg reg index */
+	src_sample_r<1>UW 	/* readback */
+	g0<8,8,1>UW		/* copy to msg start reg*/
+	sampler (3,2,F)		/* sampler message description, (binding_table,sampler_index,datatype)
+				/* here(src->dst) we should use src_sampler and src_surface */
+	mlen 5 rlen 2 { align1 };   /* required message len 5, readback len 8 */
+	
+/* sample V (Cb) */
+send (16) src_msg_ind		/* msg reg index */
+	src_sample_b<1>UW 	/* readback */
+	g0<8,8,1>UW		/* copy to msg start reg*/
+	sampler (5,4,F)		/* sampler message description, (binding_table,sampler_index,datatype)
+				/* here(src->dst) we should use src_sampler and src_surface */
+	mlen 5 rlen 2 { align1 };   /* required message len 5, readback len 8 */
diff --git a/i965_drv_video/shaders/render/exa_wm_src_sample_planar.g4b b/i965_drv_video/shaders/render/exa_wm_src_sample_planar.g4b
new file mode 100644
index 0000000..77a5c23
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_src_sample_planar.g4b
@@ -0,0 +1,4 @@
+   { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
+   { 0x01800031, 0x22001d29, 0x008d0000, 0x02520001 },
+   { 0x01800031, 0x21c01d29, 0x008d0000, 0x02520203 },
+   { 0x01800031, 0x22401d29, 0x008d0000, 0x02520405 },
diff --git a/i965_drv_video/shaders/render/exa_wm_src_sample_planar.g4b.gen5 b/i965_drv_video/shaders/render/exa_wm_src_sample_planar.g4b.gen5
new file mode 100644
index 0000000..a381e68
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_src_sample_planar.g4b.gen5
@@ -0,0 +1,4 @@
+   { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
+   { 0x01800031, 0x22001d29, 0x208d0000, 0x0a2a0001 },
+   { 0x01800031, 0x21c01d29, 0x208d0000, 0x0a2a0203 },
+   { 0x01800031, 0x22401d29, 0x208d0000, 0x0a2a0405 },
diff --git a/i965_drv_video/shaders/render/exa_wm_write.g4a b/i965_drv_video/shaders/render/exa_wm_write.g4a
new file mode 100644
index 0000000..2cb3d89
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_write.g4a
@@ -0,0 +1,85 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Wang Zhenyu <zhenyu.z.wang@intel.com>
+ *    Keith Packard <keithp@keithp.com>
+ */
+
+include(`exa_wm.g4i')
+
+/*
+ * Prepare data in m2-m5 for subspan(1,0), m6-m9 for subspan(3,2),
+ *
+ * Note that the SIMD16 write message takes data for the first
+ * two sub-spans followed by the data for the second two sub-spans
+ * instead of having the two sub-spans interleaved by channel. Weird.
+ */
+
+mov (8) data_port_r_01<1>F	g14<8,8,1>F { align1 };
+mov (8) data_port_g_01<1>F	g16<8,8,1>F { align1 };
+mov (8) data_port_b_01<1>F	g18<8,8,1>F { align1 };
+mov (8) data_port_a_01<1>F	src_sample_a_01<8,8,1>F { align1 };
+
+mov (8) data_port_r_23<1>F	src_sample_r_23<8,8,1>F { sechalf align1 };
+mov (8) data_port_g_23<1>F	src_sample_g_23<8,8,1>F { sechalf align1 };
+mov (8) data_port_b_23<1>F	src_sample_b_23<8,8,1>F { sechalf align1 };
+mov (8) data_port_a_23<1>F 	src_sample_a_23<8,8,1>F { sechalf align1 };
+
+
+mov (8) data_port_r_01<1>F	src_sample_r_01<8,8,1>F { align1 };
+mov (8) data_port_g_01<1>F	src_sample_g_01<8,8,1>F { align1 };
+mov (8) data_port_b_01<1>F	src_sample_b_01<8,8,1>F { align1 };
+mov (8) data_port_a_01<1>F	src_sample_a_01<8,8,1>F { align1 };
+
+mov (8) data_port_r_23<1>F	src_sample_r_23<8,8,1>F { sechalf align1 };
+mov (8) data_port_g_23<1>F	src_sample_g_23<8,8,1>F { sechalf align1 };
+mov (8) data_port_b_23<1>F	src_sample_b_23<8,8,1>F { sechalf align1 };
+mov (8) data_port_a_23<1>F 	src_sample_a_23<8,8,1>F { sechalf align1 };
+
+/* m0, m1 are all direct passed by PS thread payload */
+mov (8) data_port_msg_1<1>UD	g1<8,8,1>UD		{ mask_disable align1 };
+
+/* write */
+send (16) 
+	data_port_msg_0_ind 
+	acc0<1>UW 
+	g0<8,8,1>UW 
+	write (
+	       0,  /* binding_table */
+	       8,  /* pixel scordboard clear, msg type simd16 single source */
+	       4,  /* render target write */
+	       0   /* no write commit message */
+	) 
+	mlen 10
+	rlen 0
+	{ align1 EOT };
+
+nop;
+nop;
+nop;
+nop;
+nop;
+nop;
+nop;
+nop;
+
diff --git a/i965_drv_video/shaders/render/exa_wm_write.g4b b/i965_drv_video/shaders/render/exa_wm_write.g4b
new file mode 100644
index 0000000..b7dcd16
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_write.g4b
@@ -0,0 +1,26 @@
+   { 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
+   { 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
+   { 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
+   { 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
+   { 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
+   { 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
+   { 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
+   { 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
+   { 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
+   { 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
+   { 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
+   { 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
+   { 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
+   { 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
+   { 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
+   { 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
+   { 0x00600201, 0x20200022, 0x008d0020, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x008d0000, 0x85a04800 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/i965_drv_video/shaders/render/exa_wm_write.g4b.gen5 b/i965_drv_video/shaders/render/exa_wm_write.g4b.gen5
new file mode 100644
index 0000000..14c1dae
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_write.g4b.gen5
@@ -0,0 +1,26 @@
+   { 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
+   { 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
+   { 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
+   { 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
+   { 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
+   { 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
+   { 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
+   { 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
+   { 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
+   { 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
+   { 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
+   { 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
+   { 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
+   { 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
+   { 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
+   { 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
+   { 0x00600201, 0x20200022, 0x008d0020, 0x00000000 },
+   { 0x00800031, 0x24001d28, 0x548d0000, 0x94084800 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
+   { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/i965_drv_video/shaders/render/exa_wm_xy.g4a b/i965_drv_video/shaders/render/exa_wm_xy.g4a
new file mode 100644
index 0000000..e99f5ac
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_xy.g4a
@@ -0,0 +1,52 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Wang Zhenyu <zhenyu.z.wang@intel.com>
+ *    Keith Packard <keithp@keithp.com>
+ */
+ 
+/*
+ * Register assignments:
+ *
+ *  x		    g6/g7
+ *  y		    g8/g9
+ *
+ *  temp x	    g10/g11
+ *  temp y	    g12/g13
+ *
+ *  src w	    g14/g15
+ *  src u	    m1/m2
+ *  src v	    m3/m4
+ */
+ 
+/* Fragment to compute per-pixel XY values */
+
+include(`exa_wm.g4i')
+    
+    /* Load X and Y coordinates and compute per-pixel coordinates */
+add (16)	temp_x_uw<1>UW	dst_x_uw		0x10101010V	{ align1 };
+add (16)	temp_y_uw<1>UW	dst_y_uw		0x11001100V	{ align1 };
+
+    /* subtract screen-space origin of vertex 0 */
+add (16)	dst_x<1>F	temp_x_uw<8,8,1>UW	-screen_x0	{ compr align1 };
+add (16)	dst_y<1>F	temp_y_uw<8,8,1>UW	-screen_y0	{ compr align1 };
diff --git a/i965_drv_video/shaders/render/exa_wm_xy.g4b b/i965_drv_video/shaders/render/exa_wm_xy.g4b
new file mode 100644
index 0000000..327fc29
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_xy.g4b
@@ -0,0 +1,4 @@
+   { 0x00800040, 0x23c06d29, 0x00480028, 0x10101010 },
+   { 0x00800040, 0x23806d29, 0x0048002a, 0x11001100 },
+   { 0x00802040, 0x2100753d, 0x008d03c0, 0x00004020 },
+   { 0x00802040, 0x2140753d, 0x008d0380, 0x00004024 },
diff --git a/i965_drv_video/shaders/render/exa_wm_xy.g4b.gen5 b/i965_drv_video/shaders/render/exa_wm_xy.g4b.gen5
new file mode 100644
index 0000000..327fc29
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_xy.g4b.gen5
@@ -0,0 +1,4 @@
+   { 0x00800040, 0x23c06d29, 0x00480028, 0x10101010 },
+   { 0x00800040, 0x23806d29, 0x0048002a, 0x11001100 },
+   { 0x00802040, 0x2100753d, 0x008d03c0, 0x00004020 },
+   { 0x00802040, 0x2140753d, 0x008d0380, 0x00004024 },
diff --git a/i965_drv_video/shaders/render/exa_wm_yuv_rgb.g4a b/i965_drv_video/shaders/render/exa_wm_yuv_rgb.g4a
new file mode 100644
index 0000000..c16037e
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_yuv_rgb.g4a
@@ -0,0 +1,98 @@
+/*
+ * Copyright © 2006 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Keith Packard <keithp@keithp.com>
+ *    Eric Anholt <eric@anholt.net>
+ *
+ */
+
+include(`exa_wm.g4i')
+
+define(`YCbCr_base',	`src_sample_base')
+
+define(`Cr',		`src_sample_r')
+define(`Cr_01',		`src_sample_r_01')
+define(`Cr_23',		`src_sample_r_23')
+
+define(`Y',		`src_sample_g')
+define(`Y_01',		`src_sample_g_01')
+define(`Y_23',		`src_sample_g_23')
+
+define(`Cb',		`src_sample_b')
+define(`Cb_01',		`src_sample_b_01')
+define(`Cb_23',		`src_sample_b_23')
+
+define(`Crn',		`mask_sample_r')
+define(`Crn_01',	`mask_sample_r_01')
+define(`Crn_23',	`mask_sample_r_23')
+
+define(`Yn',		`mask_sample_g')
+define(`Yn_01',		`mask_sample_g_01')
+define(`Yn_23',		`mask_sample_g_23')
+
+define(`Cbn',		`mask_sample_b')
+define(`Cbn_01',	`mask_sample_b_01')
+define(`Cbn_23',	`mask_sample_b_23')
+
+    /* color space conversion function:
+     * R = Clamp ( 1.164(Y-16/255) + 1.596(Cr-128/255), 0, 1)
+     * G = Clamp ( 1.164(Y-16/255) - 0.813(Cr-128/255) - 0.392(Cb-128/255), 0, 1)
+     * B = Clamp ( 1.164(Y-16/255) + 2.017(Cb-128/255), 0, 1)
+     */
+
+    /* Normalize Y, Cb and Cr:
+     *
+     * Yn = (Y - 16/255) * 1.164
+     * Crn = Cr - 128 / 255
+     * Cbn = Cb - 128 / 255
+     */
+add (16)    Yn<1>F		Y<8,8,1>F	-0.0627451F { compr align1 };
+mul (16)    Yn<1>F		Yn<8,8,1>F	1.164F	    { compr align1 };
+
+add (16)    Crn<1>F		Cr<8,8,1>F	-0.501961F  { compr align1 };
+
+add (16)    Cbn<1>F		Cb<8,8,1>F	-0.501961F  { compr align1 };
+
+    /* 
+     * R = Y + Cr * 1.596
+     */
+mov (16)    acc0<1>F		Yn<8,8,1>F		    { compr align1 };
+mac.sat(16) src_sample_r<1>F	Crn<8,8,1>F	1.596F	    { compr align1 };
+     
+    /*
+     * G = Crn * -0.813 + Cbn * -0.392 + Y
+     */
+mov (16)    acc0<1>F		Yn<8,8,1>F		    { compr align1 };
+mac (16)    acc0<1>F		Crn<8,8,1>F    	-0.813F	    { compr align1 };
+mac.sat(16) src_sample_g<1>F	Cbn<8,8,1>F    	-0.392F	    { compr align1 };
+
+    /*
+     * B = Cbn * 2.017 + Y
+     */
+mov (16)    acc0<1>F	        Yn<8,8,1>F		    { compr align1 };
+mac.sat(16) src_sample_b<1>F	Cbn<8,8,1>F     2.017F	    { compr align1 };
+
+    /*
+     * A = 1.0
+     */
+//mov (16)    src_sample_a<1>F	1.0F			    { compr align1 };
diff --git a/i965_drv_video/shaders/render/exa_wm_yuv_rgb.g4b b/i965_drv_video/shaders/render/exa_wm_yuv_rgb.g4b
new file mode 100644
index 0000000..ce19e1a
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_yuv_rgb.g4b
@@ -0,0 +1,11 @@
+   { 0x00802040, 0x23007fbd, 0x008d0200, 0xbd808081 },
+   { 0x00802041, 0x23007fbd, 0x008d0300, 0x3f94fdf4 },
+   { 0x00802040, 0x22c07fbd, 0x008d01c0, 0xbf008084 },
+   { 0x00802040, 0x23407fbd, 0x008d0240, 0xbf008084 },
+   { 0x00802001, 0x240003bc, 0x008d0300, 0x00000000 },
+   { 0x80802048, 0x21c07fbd, 0x008d02c0, 0x3fcc49ba },
+   { 0x00802001, 0x240003bc, 0x008d0300, 0x00000000 },
+   { 0x00802048, 0x24007fbc, 0x008d02c0, 0xbf5020c5 },
+   { 0x80802048, 0x22007fbd, 0x008d0340, 0xbec8b439 },
+   { 0x00802001, 0x240003bc, 0x008d0300, 0x00000000 },
+   { 0x80802048, 0x22407fbd, 0x008d0340, 0x40011687 },
diff --git a/i965_drv_video/shaders/render/exa_wm_yuv_rgb.g4b.gen5 b/i965_drv_video/shaders/render/exa_wm_yuv_rgb.g4b.gen5
new file mode 100644
index 0000000..ce19e1a
--- /dev/null
+++ b/i965_drv_video/shaders/render/exa_wm_yuv_rgb.g4b.gen5
@@ -0,0 +1,11 @@
+   { 0x00802040, 0x23007fbd, 0x008d0200, 0xbd808081 },
+   { 0x00802041, 0x23007fbd, 0x008d0300, 0x3f94fdf4 },
+   { 0x00802040, 0x22c07fbd, 0x008d01c0, 0xbf008084 },
+   { 0x00802040, 0x23407fbd, 0x008d0240, 0xbf008084 },
+   { 0x00802001, 0x240003bc, 0x008d0300, 0x00000000 },
+   { 0x80802048, 0x21c07fbd, 0x008d02c0, 0x3fcc49ba },
+   { 0x00802001, 0x240003bc, 0x008d0300, 0x00000000 },
+   { 0x00802048, 0x24007fbc, 0x008d02c0, 0xbf5020c5 },
+   { 0x80802048, 0x22007fbd, 0x008d0340, 0xbec8b439 },
+   { 0x00802001, 0x240003bc, 0x008d0300, 0x00000000 },
+   { 0x80802048, 0x22407fbd, 0x008d0340, 0x40011687 },
diff --git a/libva-x11.pc.in b/libva-x11.pc.in
new file mode 100644
index 0000000..75e4f0b
--- /dev/null
+++ b/libva-x11.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+display=x11
+
+Name: libva-${display}
+Description: Userspace Video Acceleration (VA) ${display} interface
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lva-${display}
+Cflags: -I${includedir}
diff --git a/libva.pc.in b/libva.pc.in
index 16fb6aa..60f1483 100644
--- a/libva.pc.in
+++ b/libva.pc.in
@@ -2,6 +2,7 @@
 exec_prefix=@exec_prefix@
 libdir=@libdir@
 includedir=@includedir@
+driverdir=@LIBVA_DRIVERS_PATH@
 
 Name: libva
 Description: Userspace Video Acceleration (VA) core interface
diff --git a/src/Makefile.am b/src/Makefile.am
index 8af43f2..2f4210a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -21,28 +21,35 @@
 # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 INCLUDES = \
-	$(LIBVA_CFLAGS) \
-	-DIN_LIBVA
+	$(LIBVA_CFLAGS) -I$(top_srcdir)/src/x11 \
+	-DIN_LIBVA \
+	-DVA_DRIVERS_PATH="\"$(LIBVA_DRIVERS_PATH)\""
 
-libva_la_LTLIBRARIES = libva.la
+LDADD = \
+	$(LIBVA_LT_LDFLAGS)
+
+lib_LTLIBRARIES = \
+	libva.la \
+	libva-x11.la
+
 libva_ladir = $(libdir)
-libva_la_LDFLAGS = -version-number 0:30:4 -no-undefined
-libva_la_LIBADD = $(LIBVA_LIBS) -ldl -lX11 -lXext X11/libva_X11.la
-CFLAGS = -ansi -O2 
+libva_la_LDFLAGS = $(LDADD) -no-undefined
+libva_la_LIBADD = $(LIBVA_LIBS) -ldl
 
-nodist_libva_la_SOURCES = va_version.h
-BUILT_SOURCES = va_version.h
+libva_x11_la_SOURCES = 
+libva_x11_la_LIBADD  = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS) $(XEXT_LIBS) $(DRM_LIBS) $(XFIXES_LIBS)
+libva_x11_la_LDFLAGS = $(LDADD)
+libva_x11_la_DEPENDENCIES = $(libvacorelib) x11/libva_x11.la
 
-CLEANFILES = va_version.h
+SUBDIRS = x11
 
-va_version.h: Makefile
-	echo "#define VA_BUILD_DATE \"$(shell date +'%Y%m%d') $(shell date +'1%H%M%S') \"" > va_version.h
-	echo "#define VA_BUILD_GIT  \"($(shell git log  | head -n1 | cut -f2 -d' ')) \" "    >> va_version.h
-
-
-SUBDIRS = X11
-
-libva_la_SOURCES = va.c 
+libva_la_SOURCES = va.c
 
 libvaincludedir = ${includedir}/va
-libvainclude_HEADERS = va.h va_backend.h
+libvainclude_HEADERS = va.h va_backend.h va_version.h
+
+DISTCLEANFILES = \
+	va_version.h
+
+EXTRA_DIST = \
+	va_version.h.in
diff --git a/src/va.c b/src/va.c
index fe6e1bd..2eaa966 100644
--- a/src/va.c
+++ b/src/va.c
@@ -22,11 +22,10 @@
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#define _GNU_SOURCE 1
 #include "va.h"
 #include "va_backend.h"
 
-#include "va_version.h"
-
 #include <assert.h>
 #include <stdarg.h>
 #include <stdio.h>
@@ -35,14 +34,13 @@
 #include <unistd.h>
 
 #include <linux/videodev2.h>
+#include "va_dri.h"
+#include "va_dri2.h"
+#include "va_dricommon.h"
 
-#define VA_STR_VERSION		VA_BUILD_DATE VA_BUILD_GIT
 
-#define VA_MAJOR_VERSION	0
-#define VA_MINOR_VERSION	30
-#define DRIVER_INIT_FUNC	"__vaDriverInit_0_30"
+#define DRIVER_INIT_FUNC	"__vaDriverInit_0_31"
 
-#define DEFAULT_DRIVER_DIR	"/usr/lib/dri/"
 #define DRIVER_EXTENSION	"_drv_video.so"
 
 #define CTX(dpy) (((VADisplayContextP)dpy)->pDriverContext)
@@ -57,7 +55,11 @@
 
 static int va_debug_trace = 0;
 
-int vaDisplayIsValid(VADisplay dpy);
+static int vaDisplayIsValid(VADisplay dpy)
+{
+  VADisplayContextP pDisplayContext = (VADisplayContextP)dpy;
+  return pDisplayContext && pDisplayContext->vaIsValid(pDisplayContext);
+}
 
 static void va_errorMessage(const char *msg, ...)
 {
@@ -112,6 +114,7 @@
 static VAStatus va_getDriverName(VADisplay dpy, char **driver_name)
 {
     VADisplayContextP pDisplayContext = (VADisplayContextP)dpy;
+
     return pDisplayContext->vaGetDriverName(pDisplayContext, driver_name);
 }
 
@@ -134,11 +137,11 @@
     }
     if (!search_path)
     {
-        search_path = DEFAULT_DRIVER_DIR;
+        search_path = VA_DRIVERS_PATH;
     }
 
-    search_path = strdup(search_path);
-    driver_dir = strtok_r(search_path, ":", &saveptr);
+    search_path = strdup((const char *)search_path);
+    driver_dir = strtok_r((const char *)search_path, ":", &saveptr);
     while(driver_dir)
     {
         void *handle = NULL;
@@ -212,7 +215,6 @@
                     CHECK_VTABLE(vaStatus, ctx, SetImagePalette);
                     CHECK_VTABLE(vaStatus, ctx, GetImage);
                     CHECK_VTABLE(vaStatus, ctx, PutImage);
-                    CHECK_VTABLE(vaStatus, ctx, PutImage2);
                     CHECK_VTABLE(vaStatus, ctx, QuerySubpictureFormats);
                     CHECK_VTABLE(vaStatus, ctx, CreateSubpicture);
                     CHECK_VTABLE(vaStatus, ctx, DestroySubpicture);
@@ -220,7 +222,6 @@
                     CHECK_VTABLE(vaStatus, ctx, SetSubpictureChromakey);
                     CHECK_VTABLE(vaStatus, ctx, SetSubpictureGlobalAlpha);
                     CHECK_VTABLE(vaStatus, ctx, AssociateSubpicture);
-                    CHECK_VTABLE(vaStatus, ctx, AssociateSubpicture2);
                     CHECK_VTABLE(vaStatus, ctx, DeassociateSubpicture);
                     CHECK_VTABLE(vaStatus, ctx, QueryDisplayAttributes);
                     CHECK_VTABLE(vaStatus, ctx, GetDisplayAttributes);
@@ -310,6 +311,8 @@
             return "invalid parameter";
         case VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED:
             return "resolution not supported";
+        case VA_STATUS_ERROR_UNIMPLEMENTED:
+            return "the requested function is not implemented";
         case VA_STATUS_ERROR_UNKNOWN:
             return "unknown libva error";
     }
@@ -329,7 +332,7 @@
 
   va_debug_trace = (getenv("LIBVA_DEBUG_TRACE") != NULL);
 
-  va_infoMessage("libva build on %s\n", VA_STR_VERSION);
+  va_infoMessage("libva version %s\n", VA_VERSION_S);
 
   vaStatus = va_getDriverName(dpy, &driver_name);
   va_infoMessage("va_getDriverName() returns %d\n", vaStatus);
@@ -702,7 +705,6 @@
 
 VAStatus vaSyncSurface (
     VADisplay dpy,
-    VAContextID context,
     VASurfaceID render_target
 )
 {
@@ -711,7 +713,7 @@
   ctx = CTX(dpy);
 
   TRACE(vaSyncSurface);
-  return ctx->vtable.vaSyncSurface( ctx, context, render_target );
+  return ctx->vtable.vaSyncSurface( ctx, render_target );
 }
 
 VAStatus vaQuerySurfaceStatus (
@@ -866,30 +868,6 @@
     VAImageID image,
     int src_x,
     int src_y,
-    unsigned int width,
-    unsigned int height,
-    int dest_x,
-    int dest_y
-)
-{
-  VADriverContextP ctx;
-  CHECK_DISPLAY(dpy);
-  ctx = CTX(dpy);
-
-  TRACE(vaPutImage);
-  return ctx->vtable.vaPutImage ( ctx, surface, image, src_x, src_y, width, height, dest_x, dest_y );
-}
-
-/*
- * Similar to vaPutImage but with additional destination width
- * and height arguments to enable scaling
- */
-VAStatus vaPutImage2 (
-    VADisplay dpy,
-    VASurfaceID surface,
-    VAImageID image,
-    int src_x,
-    int src_y,
     unsigned int src_width,
     unsigned int src_height,
     int dest_x,
@@ -902,8 +880,8 @@
   CHECK_DISPLAY(dpy);
   ctx = CTX(dpy);
 
-  TRACE(vaPutImage2);
-  return ctx->vtable.vaPutImage2 ( ctx, surface, image, src_x, src_y, src_width, src_height, dest_x, dest_y, dest_width, dest_height );
+  TRACE(vaPutImage);
+  return ctx->vtable.vaPutImage ( ctx, surface, image, src_x, src_y, src_width, src_height, dest_x, dest_y, dest_width, dest_height );
 }
 
 /*
@@ -1087,32 +1065,6 @@
     int num_surfaces,
     short src_x, /* upper left offset in subpicture */
     short src_y,
-    short dest_x, /* upper left offset in surface */
-    short dest_y,
-    unsigned short width,
-    unsigned short height,
-    /*
-     * whether to enable chroma-keying or global-alpha
-     * see VA_SUBPICTURE_XXX values
-     */
-    unsigned int flags
-)
-{
-  VADriverContextP ctx;
-  CHECK_DISPLAY(dpy);
-  ctx = CTX(dpy);
-
-  TRACE(vaAssociateSubpicture);
-  return ctx->vtable.vaAssociateSubpicture ( ctx, subpicture, target_surfaces, num_surfaces, src_x, src_y, dest_x, dest_y, width, height, flags );
-}
-
-VAStatus vaAssociateSubpicture2 (
-    VADisplay dpy,
-    VASubpictureID subpicture,
-    VASurfaceID *target_surfaces,
-    int num_surfaces,
-    short src_x, /* upper left offset in subpicture */
-    short src_y,
     unsigned short src_width,
     unsigned short src_height,
     short dest_x, /* upper left offset in surface */
@@ -1130,8 +1082,8 @@
   CHECK_DISPLAY(dpy);
   ctx = CTX(dpy);
 
-  TRACE(vaAssociateSubpicture2);
-  return ctx->vtable.vaAssociateSubpicture2 ( ctx, subpicture, target_surfaces, num_surfaces, src_x, src_y, src_width, src_height, dest_x, dest_y, dest_width, dest_height, flags );
+  TRACE(vaAssociateSubpicture);
+  return ctx->vtable.vaAssociateSubpicture ( ctx, subpicture, target_surfaces, num_surfaces, src_x, src_y, src_width, src_height, dest_x, dest_y, dest_width, dest_height, flags );
 }
 
 /*
diff --git a/src/va.h b/src/va.h
index 2c2cbe6..d3f901b 100755
--- a/src/va.h
+++ b/src/va.h
@@ -53,6 +53,8 @@
  *                                       added VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED
  * rev 0.30 (03/01/2009 Jonathan Bian) - Added encoding support for H.264 BP and MPEG-4 SP and fixes
  *                                       for ISO C conformance.
+ * rev 0.31 (09/02/2009 Gwenole Beauchesne) - VC-1/H264 fields change for VDPAU and XvBA backend
+ *                                       Application needs to relink with the new library.
  *
  * Acknowledgements:
  *  Some concepts borrowed from XvMC and XvImage.
@@ -63,6 +65,12 @@
 #ifndef _VA_H_
 #define _VA_H_
 
+#ifdef IN_LIBVA
+#include "va_version.h"
+#else
+#include <va/va_version.h>
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -119,6 +127,7 @@
 #define VA_STATUS_ERROR_FLAG_NOT_SUPPORTED      0x00000011
 #define VA_STATUS_ERROR_INVALID_PARAMETER	0x00000012
 #define VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED 0x00000013
+#define VA_STATUS_ERROR_UNIMPLEMENTED           0x00000014    
 #define VA_STATUS_ERROR_UNKNOWN			0xFFFFFFFF
 
 /*
@@ -364,7 +373,8 @@
 
 typedef VAGenericID VASurfaceID;
 
-#define VA_INVALID_SURFACE	-1
+#define VA_INVALID_ID		0xffffffff
+#define VA_INVALID_SURFACE	VA_INVALID_ID
 
 /* 
  * vaCreateSurfaces - Create an array of surfaces used for decode and display  
@@ -384,6 +394,21 @@
     VASurfaceID *surfaces	/* out */
 );
 
+/* Wrap a CI (camera imaging) frame as a VA surface to share captured video between camear
+ * and VA encode. With frame_id, VA driver need to call CI interfaces to get the information
+ * of the frame, and to determine if the frame can be wrapped as a VA surface
+ *
+ * Application should make sure the frame is idle before the frame is passed into VA stack
+ * and also a vaSyncSurface should be called before application tries to access the frame
+ * from CI stack
+ */
+VAStatus vaCreateSurfaceFromCIFrame (
+    VADisplay dpy,
+    unsigned long frame_id,
+    VASurfaceID *surface	/* out */
+);
+    
+    
 /*
  * vaDestroySurfaces - Destroy resources associated with surfaces. 
  *  Surfaces can only be destroyed after the context associated has been 
@@ -465,6 +490,27 @@
 } VABufferType;
 
 
+/* 
+ * There will be cases where the bitstream buffer will not have enough room to hold
+ * the data for the entire slice, and the following flags will be used in the slice
+ * parameter to signal to the server for the possible cases.
+ * If a slice parameter buffer and slice data buffer pair is sent to the server with 
+ * the slice data partially in the slice data buffer (BEGIN and MIDDLE cases below), 
+ * then a slice parameter and data buffer needs to be sent again to complete this slice. 
+ */
+#define VA_SLICE_DATA_FLAG_ALL		0x00	/* whole slice is in the buffer */
+#define VA_SLICE_DATA_FLAG_BEGIN	0x01	/* The beginning of the slice is in the buffer but the end if not */
+#define VA_SLICE_DATA_FLAG_MIDDLE	0x02	/* Neither beginning nor end of the slice is in the buffer */
+#define VA_SLICE_DATA_FLAG_END		0x04	/* end of the slice is in the buffer */
+
+/* Codec-independent Slice Parameter Buffer base */
+typedef struct _VASliceParameterBufferBase
+{
+    unsigned int slice_data_size;	/* number of bytes in the slice data buffer for this slice */
+    unsigned int slice_data_offset;	/* the offset to the first byte of slice data */
+    unsigned int slice_data_flag;	/* see VA_SLICE_DATA_FLAG_XXX definitions */
+} VASliceParameterBufferBase;
+
 /****************************
  * MPEG-2 data structures
  ****************************/
@@ -516,19 +562,6 @@
     unsigned char chroma_non_intra_quantiser_matrix[64];
 } VAIQMatrixBufferMPEG2;
 
-/* 
- * There will be cases where the bitstream buffer will not have enough room to hold
- * the data for the entire slice, and the following flags will be used in the slice
- * parameter to signal to the server for the possible cases.
- * If a slice parameter buffer and slice data buffer pair is sent to the server with 
- * the slice data partially in the slice data buffer (BEGIN and MIDDLE cases below), 
- * then a slice parameter and data buffer needs to be sent again to complete this slice. 
- */
-#define VA_SLICE_DATA_FLAG_ALL		0x00	/* whole slice is in the buffer */
-#define VA_SLICE_DATA_FLAG_BEGIN	0x01	/* The beginning of the slice is in the buffer but the end if not */
-#define VA_SLICE_DATA_FLAG_MIDDLE	0x02	/* Neither beginning nor end of the slice is in the buffer */
-#define VA_SLICE_DATA_FLAG_END		0x04	/* end of the slice is in the buffer */
-
 /* MPEG-2 Slice Parameter Buffer */
 typedef struct _VASliceParameterBufferMPEG2
 {
@@ -557,7 +590,7 @@
             unsigned int field_motion_type		: 2; 
             unsigned int dct_type			: 1; 
         } bits;
-        unsigned char value;
+        unsigned int value;
     } macroblock_modes;
     unsigned char motion_vertical_field_select; 
     /* 
@@ -611,18 +644,18 @@
     VASurfaceID backward_reference_picture;
     union {
         struct {
-            unsigned char short_video_header		: 1; 
-            unsigned char chroma_format			: 2; 
-            unsigned char interlaced			: 1; 
-            unsigned char obmc_disable			: 1; 
-            unsigned char sprite_enable			: 2; 
-            unsigned char sprite_warping_accuracy	: 2; 
-            unsigned char quant_type			: 1; 
-            unsigned char quarter_sample			: 1; 
-            unsigned char data_partitioned		: 1; 
-            unsigned char reversible_vlc			: 1; 
+            unsigned int short_video_header		: 1; 
+            unsigned int chroma_format			: 2; 
+            unsigned int interlaced			: 1; 
+            unsigned int obmc_disable			: 1; 
+            unsigned int sprite_enable			: 2; 
+            unsigned int sprite_warping_accuracy	: 2; 
+            unsigned int quant_type			: 1; 
+            unsigned int quarter_sample			: 1; 
+            unsigned int data_partitioned		: 1; 
+            unsigned int reversible_vlc			: 1; 
         } bits;
-        unsigned short value;
+        unsigned int value;
     } vol_fields;
     unsigned char no_of_sprite_warping_points;
     short sprite_trajectory_du[3];
@@ -630,14 +663,14 @@
     unsigned char quant_precision;
     union {
         struct {
-            unsigned char vop_coding_type		: 2; 
-            unsigned char backward_reference_vop_coding_type	: 2; 
-            unsigned char vop_rounding_type		: 1; 
-            unsigned char intra_dc_vlc_thr		: 3; 
-            unsigned char top_field_first		: 1; 
-            unsigned char alternate_vertical_scan_flag	: 1; 
+            unsigned int vop_coding_type		: 2; 
+            unsigned int backward_reference_vop_coding_type	: 2; 
+            unsigned int vop_rounding_type		: 1; 
+            unsigned int intra_dc_vlc_thr		: 3; 
+            unsigned int top_field_first		: 1; 
+            unsigned int alternate_vertical_scan_flag	: 1; 
         } bits;
-        unsigned short value;
+        unsigned int value;
     } vop_fields;
     unsigned char vop_fcode_forward;
     unsigned char vop_fcode_backward;
@@ -707,28 +740,41 @@
     /* sequence layer for AP or meta data for SP and MP */
     union {
         struct {
-            unsigned char interlace	: 1; /* SEQUENCE_LAYER::INTERLACE */
-            unsigned char syncmarker	: 1;/* METADATA::SYNCMARKER */
-            unsigned char overlap	: 1;/* METADATA::OVERLAP */
+            unsigned int pulldown	: 1; /* SEQUENCE_LAYER::PULLDOWN */
+            unsigned int interlace	: 1; /* SEQUENCE_LAYER::INTERLACE */
+            unsigned int tfcntrflag	: 1; /* SEQUENCE_LAYER::TFCNTRFLAG */
+            unsigned int finterpflag	: 1; /* SEQUENCE_LAYER::FINTERPFLAG */
+            unsigned int psf		: 1; /* SEQUENCE_LAYER::PSF */
+            unsigned int multires	: 1; /* METADATA::MULTIRES */
+            unsigned int overlap	: 1; /* METADATA::OVERLAP */
+            unsigned int syncmarker	: 1; /* METADATA::SYNCMARKER */
+            unsigned int rangered	: 1; /* METADATA::RANGERED */
+            unsigned int max_b_frames	: 3; /* METADATA::MAXBFRAMES */
         } bits;
-        unsigned char value;
+        unsigned int value;
     } sequence_fields;
 
     unsigned short coded_width;		/* ENTRY_POINT_LAYER::CODED_WIDTH */
     unsigned short coded_height;	/* ENTRY_POINT_LAYER::CODED_HEIGHT */
-    unsigned char closed_entry;		/* ENTRY_POINT_LAYER::CLOSED_ENTRY */
-    unsigned char broken_link;		/* ENTRY_POINT_LAYER::BROKEN_LINK */
-    unsigned char loopfilter;		/* ENTRY_POINT_LAYER::LOOPFILTER */
+    union {
+	struct {
+            unsigned int broken_link	: 1; /* ENTRY_POINT_LAYER::BROKEN_LINK */
+            unsigned int closed_entry	: 1; /* ENTRY_POINT_LAYER::CLOSED_ENTRY */
+            unsigned int panscan_flag	: 1; /* ENTRY_POINT_LAYER::PANSCAN_FLAG */
+            unsigned int loopfilter	: 1; /* ENTRY_POINT_LAYER::LOOPFILTER */
+	} bits;
+	unsigned int value;
+    } entrypoint_fields;
     unsigned char conditional_overlap_flag; /* ENTRY_POINT_LAYER::CONDOVER */
     unsigned char fast_uvmc_flag;	/* ENTRY_POINT_LAYER::FASTUVMC */
     union {
         struct {
-            unsigned char luma_flag	: 1; /* ENTRY_POINT_LAYER::RANGE_MAPY_FLAG */
-            unsigned char luma		: 3; /* ENTRY_POINT_LAYER::RANGE_MAPY */
-            unsigned char chroma_flag	: 1; /* ENTRY_POINT_LAYER::RANGE_MAPUV_FLAG */
-            unsigned char chroma		: 3; /* ENTRY_POINT_LAYER::RANGE_MAPUV */
+            unsigned int luma_flag	: 1; /* ENTRY_POINT_LAYER::RANGE_MAPY_FLAG */
+            unsigned int luma		: 3; /* ENTRY_POINT_LAYER::RANGE_MAPY */
+            unsigned int chroma_flag	: 1; /* ENTRY_POINT_LAYER::RANGE_MAPUV_FLAG */
+            unsigned int chroma		: 3; /* ENTRY_POINT_LAYER::RANGE_MAPUV */
         } bits;
-        unsigned char value;
+        unsigned int value;
     } range_mapping_fields;
 
     unsigned char b_picture_fraction;	/* PICTURE_LAYER::BFRACTION */
@@ -742,88 +788,88 @@
     unsigned char luma_shift;		/* PICTURE_LAYER::LUMSHIFT */
     union {
         struct {
-            unsigned char picture_type		: 2; /* PICTURE_LAYER::PTYPE */
-            unsigned char frame_coding_mode	: 3; /* PICTURE_LAYER::FCM */
-            unsigned char top_field_first	: 1; /* PICTURE_LAYER::TFF */
-            unsigned char is_first_field		: 1; /* set to 1 if it is the first field */
-            unsigned char intensity_compensation	: 1; /* PICTURE_LAYER::INTCOMP */
+            unsigned int picture_type		: 3; /* PICTURE_LAYER::PTYPE */
+            unsigned int frame_coding_mode	: 3; /* PICTURE_LAYER::FCM */
+            unsigned int top_field_first	: 1; /* PICTURE_LAYER::TFF */
+            unsigned int is_first_field		: 1; /* set to 1 if it is the first field */
+            unsigned int intensity_compensation	: 1; /* PICTURE_LAYER::INTCOMP */
         } bits;
-        unsigned char value;
+        unsigned int value;
     } picture_fields;
     union {
         struct {
-            unsigned char mv_type_mb	: 1; 	/* PICTURE::MVTYPEMB */
-            unsigned char direct_mb	: 1; 	/* PICTURE::DIRECTMB */
-            unsigned char skip_mb	: 1; 	/* PICTURE::SKIPMB */
-            unsigned char field_tx	: 1; 	/* PICTURE::FIELDTX */
-            unsigned char forward_mb	: 1;	/* PICTURE::FORWARDMB */
-            unsigned char ac_pred	: 1;	/* PICTURE::ACPRED */
-            unsigned char overflags	: 1;	/* PICTURE::OVERFLAGS */
+            unsigned int mv_type_mb	: 1; 	/* PICTURE::MVTYPEMB */
+            unsigned int direct_mb	: 1; 	/* PICTURE::DIRECTMB */
+            unsigned int skip_mb	: 1; 	/* PICTURE::SKIPMB */
+            unsigned int field_tx	: 1; 	/* PICTURE::FIELDTX */
+            unsigned int forward_mb	: 1;	/* PICTURE::FORWARDMB */
+            unsigned int ac_pred	: 1;	/* PICTURE::ACPRED */
+            unsigned int overflags	: 1;	/* PICTURE::OVERFLAGS */
         } flags;
-        unsigned char value;
+        unsigned int value;
     } raw_coding;
     union {
         struct {
-            unsigned char bp_mv_type_mb   : 1;    /* PICTURE::MVTYPEMB */
-            unsigned char bp_direct_mb    : 1;    /* PICTURE::DIRECTMB */
-            unsigned char bp_skip_mb      : 1;    /* PICTURE::SKIPMB */  
-            unsigned char bp_field_tx     : 1;    /* PICTURE::FIELDTX */ 
-            unsigned char bp_forward_mb   : 1;    /* PICTURE::FORWARDMB */
-            unsigned char bp_ac_pred      : 1;    /* PICTURE::ACPRED */   
-            unsigned char bp_overflags    : 1;    /* PICTURE::OVERFLAGS */
+            unsigned int bp_mv_type_mb   : 1;    /* PICTURE::MVTYPEMB */
+            unsigned int bp_direct_mb    : 1;    /* PICTURE::DIRECTMB */
+            unsigned int bp_skip_mb      : 1;    /* PICTURE::SKIPMB */  
+            unsigned int bp_field_tx     : 1;    /* PICTURE::FIELDTX */ 
+            unsigned int bp_forward_mb   : 1;    /* PICTURE::FORWARDMB */
+            unsigned int bp_ac_pred      : 1;    /* PICTURE::ACPRED */   
+            unsigned int bp_overflags    : 1;    /* PICTURE::OVERFLAGS */
         } flags;
-        unsigned char value;
+        unsigned int value;
     } bitplane_present; /* signal what bitplane is being passed via the bitplane buffer */
     union {
         struct {
-            unsigned char reference_distance_flag : 1;/* PICTURE_LAYER::REFDIST_FLAG */
-            unsigned char reference_distance	: 5;/* PICTURE_LAYER::REFDIST */
-            unsigned char num_reference_pictures: 1;/* PICTURE_LAYER::NUMREF */
-            unsigned char reference_field_pic_indicator	: 1;/* PICTURE_LAYER::REFFIELD */
+            unsigned int reference_distance_flag : 1;/* PICTURE_LAYER::REFDIST_FLAG */
+            unsigned int reference_distance	: 5;/* PICTURE_LAYER::REFDIST */
+            unsigned int num_reference_pictures: 1;/* PICTURE_LAYER::NUMREF */
+            unsigned int reference_field_pic_indicator	: 1;/* PICTURE_LAYER::REFFIELD */
         } bits;
-        unsigned short value;
+        unsigned int value;
     } reference_fields;
     union {
         struct {
-            unsigned char mv_mode		: 3; /* PICTURE_LAYER::MVMODE */
-            unsigned char mv_mode2		: 3; /* PICTURE_LAYER::MVMODE2 */
-            unsigned char mv_table		: 3; /* PICTURE_LAYER::MVTAB/IMVTAB */
-            unsigned char two_mv_block_pattern_table: 2; /* PICTURE_LAYER::2MVBPTAB */
-            unsigned char four_mv_switch		: 1; /* PICTURE_LAYER::4MVSWITCH */
-            unsigned char four_mv_block_pattern_table : 2; /* PICTURE_LAYER::4MVBPTAB */
-            unsigned char extended_mv_flag	: 1; /* ENTRY_POINT_LAYER::EXTENDED_MV */
-            unsigned char extended_mv_range	: 2; /* PICTURE_LAYER::MVRANGE */
-            unsigned char extended_dmv_flag	: 1; /* ENTRY_POCHAR_LAYER::EXTENDED_DMV */
-            unsigned char extended_dmv_range	: 2; /* PICTURE_LAYER::DMVRANGE */
+            unsigned int mv_mode		: 3; /* PICTURE_LAYER::MVMODE */
+            unsigned int mv_mode2		: 3; /* PICTURE_LAYER::MVMODE2 */
+            unsigned int mv_table		: 3; /* PICTURE_LAYER::MVTAB/IMVTAB */
+            unsigned int two_mv_block_pattern_table: 2; /* PICTURE_LAYER::2MVBPTAB */
+            unsigned int four_mv_switch		: 1; /* PICTURE_LAYER::4MVSWITCH */
+            unsigned int four_mv_block_pattern_table : 2; /* PICTURE_LAYER::4MVBPTAB */
+            unsigned int extended_mv_flag	: 1; /* ENTRY_POINT_LAYER::EXTENDED_MV */
+            unsigned int extended_mv_range	: 2; /* PICTURE_LAYER::MVRANGE */
+            unsigned int extended_dmv_flag	: 1; /* ENTRY_POINT_LAYER::EXTENDED_DMV */
+            unsigned int extended_dmv_range	: 2; /* PICTURE_LAYER::DMVRANGE */
         } bits;
         unsigned int value;
     } mv_fields;
     union {
         struct {
-            unsigned char dquant	: 2; 	/* ENTRY_POINT_LAYER::DQUANT */
-            unsigned char quantizer     : 2; 	/* ENTRY_POINT_LAYER::QUANTIZER */
-            unsigned char half_qp	: 1; 	/* PICTURE_LAYER::HALFQP */
-            unsigned char pic_quantizer_scale : 5;/* PICTURE_LAYER::PQUANT */
-            unsigned char pic_quantizer_type : 1;/* PICTURE_LAYER::PQUANTIZER */
-            unsigned char dq_frame	: 1; 	/* VOPDQUANT::DQUANTFRM */
-            unsigned char dq_profile	: 2; 	/* VOPDQUANT::DQPROFILE */
-            unsigned char dq_sb_edge	: 2; 	/* VOPDQUANT::DQSBEDGE */
-            unsigned char dq_db_edge 	: 2; 	/* VOPDQUANT::DQDBEDGE */
-            unsigned char dq_binary_level : 1; 	/* VOPDQUANT::DQBILEVEL */
-            unsigned char alt_pic_quantizer : 5;/* VOPDQUANT::ALTPQUANT */
+            unsigned int dquant	: 2; 	/* ENTRY_POINT_LAYER::DQUANT */
+            unsigned int quantizer     : 2; 	/* ENTRY_POINT_LAYER::QUANTIZER */
+            unsigned int half_qp	: 1; 	/* PICTURE_LAYER::HALFQP */
+            unsigned int pic_quantizer_scale : 5;/* PICTURE_LAYER::PQUANT */
+            unsigned int pic_quantizer_type : 1;/* PICTURE_LAYER::PQUANTIZER */
+            unsigned int dq_frame	: 1; 	/* VOPDQUANT::DQUANTFRM */
+            unsigned int dq_profile	: 2; 	/* VOPDQUANT::DQPROFILE */
+            unsigned int dq_sb_edge	: 2; 	/* VOPDQUANT::DQSBEDGE */
+            unsigned int dq_db_edge 	: 2; 	/* VOPDQUANT::DQDBEDGE */
+            unsigned int dq_binary_level : 1; 	/* VOPDQUANT::DQBILEVEL */
+            unsigned int alt_pic_quantizer : 5;/* VOPDQUANT::ALTPQUANT */
         } bits;
-        unsigned long value;
+        unsigned int value;
     } pic_quantizer_fields;
     union {
         struct {
-            unsigned char variable_sized_transform_flag	: 1;/* ENTRY_POINT_LAYER::VSTRANSFORM */
-            unsigned char mb_level_transform_type_flag	: 1;/* PICTURE_LAYER::TTMBF */
-            unsigned char frame_level_transform_type	: 2;/* PICTURE_LAYER::TTFRM */
-            unsigned char transform_ac_codingset_idx1	: 2;/* PICTURE_LAYER::TRANSACFRM */
-            unsigned char transform_ac_codingset_idx2	: 2;/* PICTURE_LAYER::TRANSACFRM2 */
-            unsigned char intra_transform_dc_table	: 1;/* PICTURE_LAYER::TRANSDCTAB */
+            unsigned int variable_sized_transform_flag	: 1;/* ENTRY_POINT_LAYER::VSTRANSFORM */
+            unsigned int mb_level_transform_type_flag	: 1;/* PICTURE_LAYER::TTMBF */
+            unsigned int frame_level_transform_type	: 2;/* PICTURE_LAYER::TTFRM */
+            unsigned int transform_ac_codingset_idx1	: 2;/* PICTURE_LAYER::TRANSACFRM */
+            unsigned int transform_ac_codingset_idx2	: 2;/* PICTURE_LAYER::TRANSACFRM2 */
+            unsigned int intra_transform_dc_table	: 1;/* PICTURE_LAYER::TRANSDCTAB */
         } bits;
-        unsigned short value;
+        unsigned int value;
     } transform_fields;
 } VAPictureParameterBufferVC1;
 
@@ -867,6 +913,7 @@
 typedef struct _VAPictureH264
 {
     VASurfaceID picture_id;
+    unsigned int frame_idx;
     unsigned int flags;
     unsigned int TopFieldOrderCnt;
     unsigned int BottomFieldOrderCnt;
@@ -894,30 +941,41 @@
     unsigned char num_ref_frames;
     union {
         struct {
-            unsigned char chroma_format_idc			: 2; 
-            unsigned char residual_colour_transform_flag		: 1; 
-            unsigned char frame_mbs_only_flag			: 1; 
-            unsigned char mb_adaptive_frame_field_flag		: 1; 
-            unsigned char direct_8x8_inference_flag		: 1; 
-            unsigned char MinLumaBiPredSize8x8			: 1; /* see A.3.3.2 */
+            unsigned int chroma_format_idc			: 2; 
+            unsigned int residual_colour_transform_flag		: 1; 
+            unsigned int gaps_in_frame_num_value_allowed_flag	: 1; 
+            unsigned int frame_mbs_only_flag			: 1; 
+            unsigned int mb_adaptive_frame_field_flag		: 1; 
+            unsigned int direct_8x8_inference_flag		: 1; 
+            unsigned int MinLumaBiPredSize8x8			: 1; /* see A.3.3.2 */
+            unsigned int log2_max_frame_num_minus4		: 4;
+            unsigned int pic_order_cnt_type			: 2;
+            unsigned int log2_max_pic_order_cnt_lsb_minus4	: 4;
+            unsigned int delta_pic_order_always_zero_flag	: 1;
         } bits;
-        unsigned char value;
+        unsigned int value;
     } seq_fields;
     unsigned char num_slice_groups_minus1;
     unsigned char slice_group_map_type;
+    unsigned short slice_group_change_rate_minus1;
     signed char pic_init_qp_minus26;
+    signed char pic_init_qs_minus26;
     signed char chroma_qp_index_offset;
     signed char second_chroma_qp_index_offset;
     union {
         struct {
-            unsigned char entropy_coding_mode_flag	: 1;
-            unsigned char weighted_pred_flag		: 1;
-            unsigned char weighted_bipred_idc		: 2;
-            unsigned char transform_8x8_mode_flag	: 1;
-            unsigned char field_pic_flag			: 1;
-            unsigned char constrained_intra_pred_flag	: 1;
+            unsigned int entropy_coding_mode_flag	: 1;
+            unsigned int weighted_pred_flag		: 1;
+            unsigned int weighted_bipred_idc		: 2;
+            unsigned int transform_8x8_mode_flag	: 1;
+            unsigned int field_pic_flag			: 1;
+            unsigned int constrained_intra_pred_flag	: 1;
+            unsigned int pic_order_present_flag			: 1;
+            unsigned int deblocking_filter_control_present_flag : 1;
+            unsigned int redundant_pic_cnt_present_flag		: 1;
+            unsigned int reference_pic_flag			: 1; /* nal_ref_idc != 0 */
         } bits;
-        unsigned char value;
+        unsigned int value;
     } pic_fields;
     unsigned short frame_num;
 } VAPictureParameterBufferH264;
@@ -991,10 +1049,10 @@
     unsigned int slice_height;	/* slice height measured in MB */
     union {
         struct {
-            unsigned char is_intra	: 1;
-            unsigned char disable_deblocking_filter_idc : 2;
+            unsigned int is_intra	: 1;
+            unsigned int disable_deblocking_filter_idc : 2;
         } bits;
-        unsigned char value;
+        unsigned int value;
     } slice_flags;
 } VAEncSliceParameterBuffer;
 
@@ -1203,18 +1261,17 @@
  */
 VAStatus vaSyncSurface (
     VADisplay dpy,
-    VAContextID context,
     VASurfaceID render_target
 );
 
 typedef enum
 {
-    VASurfaceRendering	= 0, /* Rendering in progress */ 
-    VASurfaceDisplaying	= 1, /* Displaying in progress (not safe to render into it) */ 
+    VASurfaceRendering	= 1, /* Rendering in progress */ 
+    VASurfaceDisplaying	= 2, /* Displaying in progress (not safe to render into it) */ 
                              /* this status is useful if surface is used as the source */
                              /* of an overlay */
-    VASurfaceReady	= 2, /* not being rendered or displayed */
-    VASurfaceSkipped	= 4  /* Indicate a skipped frame during encode */
+    VASurfaceReady	= 4, /* not being rendered or displayed */
+    VASurfaceSkipped	= 8  /* Indicate a skipped frame during encode */
 } VASurfaceStatus;
 
 /*
@@ -1379,8 +1436,6 @@
  * Image must be in a format supported by the implementation
  * Returns a VA_STATUS_ERROR_SURFACE_BUSY if the surface
  * shouldn't be rendered into when this is called
- * The source and destionation width and height are the same and
- * no scaling is performed with this operation.
  */
 VAStatus vaPutImage (
     VADisplay dpy,
@@ -1388,22 +1443,6 @@
     VAImageID image,
     int src_x,
     int src_y,
-    unsigned int width,
-    unsigned int height,
-    int dest_x,
-    int dest_y
-);
-
-/*
- * Similar to vaPutImage but with additional destination width
- * and height arguments to enable scaling
- */
-VAStatus vaPutImage2 (
-    VADisplay dpy,
-    VASurfaceID surface,
-    VAImageID image,
-    int src_x,
-    int src_y,
     unsigned int src_width,
     unsigned int src_height,
     int dest_x,
@@ -1552,28 +1591,6 @@
     int num_surfaces,
     short src_x, /* upper left offset in subpicture */
     short src_y,
-    short dest_x, /* upper left offset in surface */
-    short dest_y,
-    unsigned short width,
-    unsigned short height,
-    /*
-     * whether to enable chroma-keying or global-alpha
-     * see VA_SUBPICTURE_XXX values
-     */
-    unsigned int flags
-);
-
-/*
- * Similar to vaAssociateSubpicture but with additional destination width
- * and height to enable scaling
- */
-VAStatus vaAssociateSubpicture2 (
-    VADisplay dpy,
-    VASubpictureID subpicture,
-    VASurfaceID *target_surfaces,
-    int num_surfaces,
-    short src_x, /* upper left offset in subpicture */
-    short src_y,
     unsigned short src_width,
     unsigned short src_height,
     short dest_x, /* upper left offset in surface */
diff --git a/src/va_backend.h b/src/va_backend.h
index f8456ad..6f858f5 100755
--- a/src/va_backend.h
+++ b/src/va_backend.h
@@ -31,7 +31,7 @@
 
 #ifdef IN_LIBVA
 #include "va.h"
-#include "X11/va_x11.h"
+#include "x11/va_x11.h"
 #else
 #include <va/va.h>
 #include <va/va_x11.h>
@@ -175,7 +175,6 @@
 
 	VAStatus (*vaSyncSurface) (
 		VADriverContextP ctx,
-		VAContextID context,
 		VASurfaceID render_target
 	);
 
@@ -254,18 +253,6 @@
 		VAImageID image,
 		int src_x,
 		int src_y,
-		unsigned int width,
-		unsigned int height,
-		int dest_x,
-		int dest_y 
-	);
-
-	VAStatus (*vaPutImage2) (
-		VADriverContextP ctx,
-		VASurfaceID surface,
-		VAImageID image,
-		int src_x,
-		int src_y,
 		unsigned int src_width,
 		unsigned int src_height,
 		int dest_x,
@@ -297,7 +284,7 @@
                 VASubpictureID subpicture,
                 VAImageID image
         );
-        
+
 	VAStatus (*vaSetSubpictureChromakey) (
 		VADriverContextP ctx,
 		VASubpictureID subpicture,
@@ -319,24 +306,6 @@
 		int num_surfaces,
 		short src_x, /* upper left offset in subpicture */
 		short src_y,
-		short dest_x, /* upper left offset in surface */
-		short dest_y,
-		unsigned short width,
-		unsigned short height,
-		/*
-		 * whether to enable chroma-keying or global-alpha
-		 * see VA_SUBPICTURE_XXX values
-		 */
-		unsigned int flags
-	);
-
-	VAStatus (*vaAssociateSubpicture2) (
-		VADriverContextP ctx,
-		VASubpictureID subpicture,
-		VASurfaceID *target_surfaces,
-		int num_surfaces,
-		short src_x, /* upper left offset in subpicture */
-		short src_y,
 		unsigned short src_width,
 		unsigned short src_height,
 		short dest_x, /* upper left offset in surface */
@@ -407,14 +376,11 @@
 
 struct VADriverContext
 {
-    void *old_pNext;			/* preserved for binary compatibility */
-
     void *pDriverData;
     struct VADriverVTable vtable;
 
     Display *x11_dpy;
     int x11_screen;
-    int dri2;
     int version_major;
     int version_minor;
     int max_profiles;
@@ -426,6 +392,8 @@
     const char *str_vendor;
 
     void *handle;			/* dlopen handle */
+    
+    void *dri_state;
 };
 
 struct VADisplayContext
diff --git a/src/va_version.h.in b/src/va_version.h.in
new file mode 100644
index 0000000..c9ea97a
--- /dev/null
+++ b/src/va_version.h.in
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef VA_VERSION_H
+#define VA_VERSION_H
+
+/**
+ * VA_MAJOR_VERSION:
+ *
+ * The major version of the VA library (1, if %VA_VERSION is 1.2.3)
+ */
+#define VA_MAJOR_VERSION   (@LIBVA_MAJOR_VERSION@)
+
+/**
+ * VA_MINOR_VERSION:
+ *
+ * The minor version of the VA library (2, if %VA_VERSION is 1.2.3)
+ */
+#define VA_MINOR_VERSION   (@LIBVA_MINOR_VERSION@)
+
+/**
+ * VA_MICRO_VERSION:
+ *
+ * The micro version of the VA library (3, if %VA_VERSION is 1.2.3)
+ */
+#define VA_MICRO_VERSION   (@LIBVA_MICRO_VERSION@)
+
+/**
+ * VA_VERSION:
+ *
+ * The full version of the VA library, like 1.2.3
+ */
+#define VA_VERSION         @LIBVA_VERSION@
+
+/**
+ * VA_VERSION_S:
+ *
+ * The full version of the VA library, in string form (suited for
+ * string concatenation)
+ */
+#define VA_VERSION_S       "@LIBVA_VERSION@"
+
+/**
+ * VA_VERSION_HEX:
+ *
+ * Numerically encoded version of the VA library, like 0x010203
+ */
+#define VA_VERSION_HEX     ((VA_MAJOR_VERSION << 24) | \
+                            (VA_MINOR_VERSION << 16) | \
+                            (VA_MICRO_VERSION << 8))
+
+/**
+ * VA_CHECK_VERSION:
+ * @major: major version, like 1 in 1.2.3
+ * @minor: minor version, like 2 in 1.2.3
+ * @micro: micro version, like 3 in 1.2.3
+ *
+ * Evaluates to %TRUE if the version of the VA library is greater
+ * than @major, @minor and @micro
+ */
+#define VA_CHECK_VERSION(major,minor,micro) \
+        (VA_MAJOR_VERSION > (major) || \
+         (VA_MAJOR_VERSION == (major) && VA_MINOR_VERSION > (minor)) || \
+         (VA_MAJOR_VERSION == (major) && VA_MINOR_VERSION == (minor) && VA_MICRO_VERSION >= (micro)))
+
+#endif /* VA_VERSION_H */
diff --git a/src/x11/Makefile.am b/src/x11/Makefile.am
new file mode 100644
index 0000000..c70380d
--- /dev/null
+++ b/src/x11/Makefile.am
@@ -0,0 +1,30 @@
+# INTEL CONFIDENTIAL
+# Copyright 2007 Intel Corporation. All Rights Reserved.
+#
+# The source code contained or described herein and all documents related to
+# the source code ("Material") are owned by Intel Corporation or its suppliers
+# or licensors. Title to the Material remains with Intel Corporation or its
+# suppliers and licensors. The Material may contain trade secrets and
+# proprietary and confidential information of Intel Corporation and its
+# suppliers and licensors, and is protected by worldwide copyright and trade
+# secret laws and treaty provisions. No part of the Material may be used,
+# copied, reproduced, modified, published, uploaded, posted, transmitted,
+# distributed, or disclosed in any way without Intel's prior express written
+# permission. 
+# 
+# No license under any patent, copyright, trade secret or other intellectual
+# property right is granted to or conferred upon you by disclosure or delivery
+# of the Materials, either expressly, by implication, inducement, estoppel or
+# otherwise. Any license under such intellectual property rights must be
+# express and approved by Intel in writing.
+
+AM_CFLAGS = -DLINUX -DIN_LIBVA -I$(top_srcdir)/src $(DRM_CFLAGS)
+
+noinst_LTLIBRARIES = libva_x11.la	
+
+libva_x11includedir = ${includedir}/va
+libva_x11include_HEADERS = va_x11.h va_dri.h va_dri2.h va_dricommon.h
+
+libva_x11_la_SOURCES = va_x11.c va_dri.c va_dri2.c va_dricommon.c dri2_util.c dri1_util.c va_nvctrl.c
+
+EXTRA_DIST = va_dristr.h va_dri2str.h va_dri2tokens.h va_nvctrl.h
diff --git a/src/x11/dri1_util.c b/src/x11/dri1_util.c
new file mode 100644
index 0000000..b3db5b4
--- /dev/null
+++ b/src/x11/dri1_util.c
@@ -0,0 +1,158 @@
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/mman.h>
+#include <assert.h>
+
+#include <xf86drm.h>
+
+#include "X11/Xlib.h"
+#include "va.h"
+#include "va_backend.h"
+
+#include "va_dri.h"
+#include "va_dricommon.h"
+
+struct dri1_drawable 
+{
+    struct dri_drawable base;
+    union dri_buffer buffer;
+    int width;
+    int height;
+};
+
+static struct dri_drawable * 
+dri1CreateDrawable(VADriverContextP ctx, XID x_drawable)
+{
+    struct dri1_drawable *dri1_drawable;
+
+    dri1_drawable = calloc(1, sizeof(*dri1_drawable));
+
+    if (!dri1_drawable)
+        return NULL;
+
+    dri1_drawable->base.x_drawable = x_drawable;
+
+    return &dri1_drawable->base;
+}
+
+static void 
+dri1DestroyDrawable(VADriverContextP ctx, struct dri_drawable *dri_drawable)
+{
+    free(dri_drawable);
+}
+
+static void 
+dri1SwapBuffer(VADriverContextP ctx, struct dri_drawable *dri_drawable)
+{
+
+}
+
+static union dri_buffer *
+dri1GetRenderingBuffer(VADriverContextP ctx, struct dri_drawable *dri_drawable)
+{
+    struct dri1_drawable *dri1_drawable = (struct dri1_drawable *)dri_drawable;
+
+    return &dri1_drawable->buffer;
+}
+
+static void
+dri1Close(VADriverContextP ctx)
+{
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+
+    free_drawable_hashtable(ctx);
+    VA_DRIDestroyContext(ctx->x11_dpy, ctx->x11_screen, dri_state->hwContextID);
+    assert(dri_state->pSAREA != MAP_FAILED);
+    drmUnmap(dri_state->pSAREA, SAREA_MAX);
+    assert(dri_state->fd >= 0);
+    drmCloseOnce(dri_state->fd);
+    VA_DRICloseConnection(ctx->x11_dpy, ctx->x11_screen);
+}
+
+Bool 
+isDRI1Connected(VADriverContextP ctx, char **driver_name)
+{
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+    int direct_capable;
+    int driver_major;
+    int driver_minor;
+    int driver_patch;
+    int newlyopened;
+    char *BusID;
+    drm_magic_t magic;        
+
+    *driver_name = NULL;
+    dri_state->fd = -1;
+    dri_state->pSAREA = MAP_FAILED;
+    dri_state->driConnectedFlag = VA_NONE;
+
+    if (!VA_DRIQueryDirectRenderingCapable(ctx->x11_dpy, 
+                                           ctx->x11_screen, 
+                                           &direct_capable))
+        goto err_out0;
+
+    if (!direct_capable)
+        goto err_out0;
+
+    if (!VA_DRIGetClientDriverName(ctx->x11_dpy, ctx->x11_screen, 
+                                   &driver_major, &driver_minor,
+                                   &driver_patch, driver_name))
+        goto err_out0;
+
+    if (!VA_DRIOpenConnection(ctx->x11_dpy, ctx->x11_screen, 
+                              &dri_state->hSAREA, &BusID))
+        goto err_out0;
+
+    
+    dri_state->fd = drmOpenOnce(NULL, BusID, &newlyopened);
+    XFree(BusID);
+    assert(dri_state->fd >= 0);
+
+    if (dri_state->fd < 0)
+        goto err_out1;
+
+
+    if (drmGetMagic(dri_state->fd, &magic))
+        goto err_out1;
+
+    if (newlyopened && !VA_DRIAuthConnection(ctx->x11_dpy, ctx->x11_screen, magic))
+        goto err_out1;
+
+    if (drmMap(dri_state->fd, dri_state->hSAREA, SAREA_MAX, &dri_state->pSAREA))
+        goto err_out1;
+
+    if (!VA_DRICreateContext(ctx->x11_dpy, ctx->x11_screen,
+                             DefaultVisual(ctx->x11_dpy, ctx->x11_screen),
+                             &dri_state->hwContextID, &dri_state->hwContext))
+        goto err_out1;
+
+    dri_state->driConnectedFlag = VA_DRI1;
+    dri_state->createDrawable = dri1CreateDrawable;
+    dri_state->destroyDrawable = dri1DestroyDrawable;
+    dri_state->swapBuffer = dri1SwapBuffer;
+    dri_state->getRenderingBuffer = dri1GetRenderingBuffer;
+    dri_state->close = dri1Close;
+
+    return True;
+
+err_out1:
+    if (dri_state->pSAREA != MAP_FAILED)
+        drmUnmap(dri_state->pSAREA, SAREA_MAX);
+
+    if (dri_state->fd >= 0)
+        drmCloseOnce(dri_state->fd);
+
+    VA_DRICloseConnection(ctx->x11_dpy, ctx->x11_screen);
+
+err_out0:
+    if (*driver_name)
+        XFree(*driver_name);
+
+    dri_state->pSAREA = MAP_FAILED;
+    dri_state->fd = -1;
+    *driver_name = NULL;
+    
+    return False;
+}
+
diff --git a/src/x11/dri2_util.c b/src/x11/dri2_util.c
new file mode 100644
index 0000000..ebe7a2c
--- /dev/null
+++ b/src/x11/dri2_util.c
@@ -0,0 +1,200 @@
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <assert.h>
+
+#include <xf86drm.h>
+
+#include <X11/Xlibint.h>
+#include <X11/Xlib.h>
+#include "va.h"
+#include "va_backend.h"
+
+#include "va_dri2.h"
+#include "va_dri2tokens.h"
+#include "va_dricommon.h"
+
+#define __DRI_BUFFER_FRONT_LEFT         0
+#define __DRI_BUFFER_BACK_LEFT          1
+#define __DRI_BUFFER_FRONT_RIGHT        2
+#define __DRI_BUFFER_BACK_RIGHT         3
+#define __DRI_BUFFER_DEPTH              4
+#define __DRI_BUFFER_STENCIL            5
+#define __DRI_BUFFER_ACCUM              6
+#define __DRI_BUFFER_FAKE_FRONT_LEFT    7
+#define __DRI_BUFFER_FAKE_FRONT_RIGHT   8
+
+struct dri2_drawable 
+{
+    struct dri_drawable base;
+    union dri_buffer buffers[5];
+    int width;
+    int height;
+    int has_backbuffer;
+    int back_index;
+    int front_index;
+};
+
+static struct dri_drawable * 
+dri2CreateDrawable(VADriverContextP ctx, XID x_drawable)
+{
+    struct dri2_drawable *dri2_drawable;
+
+    dri2_drawable = calloc(1, sizeof(*dri2_drawable));
+
+    if (!dri2_drawable)
+        return NULL;
+
+    dri2_drawable->base.x_drawable = x_drawable;
+    dri2_drawable->base.x = 0;
+    dri2_drawable->base.y = 0;
+    VA_DRI2CreateDrawable(ctx->x11_dpy, x_drawable);
+
+    return &dri2_drawable->base;
+}
+
+static void 
+dri2DestroyDrawable(VADriverContextP ctx, struct dri_drawable *dri_drawable)
+{
+    VA_DRI2DestroyDrawable(ctx->x11_dpy, dri_drawable->x_drawable);
+    free(dri_drawable);
+}
+
+static void 
+dri2SwapBuffer(VADriverContextP ctx, struct dri_drawable *dri_drawable)
+{
+    struct dri2_drawable *dri2_drawable = (struct dri2_drawable *)dri_drawable;
+    XRectangle xrect;
+    XserverRegion region;
+
+    if (dri2_drawable->has_backbuffer) {
+        xrect.x = 0;
+        xrect.y = 0;
+        xrect.width = dri2_drawable->width;
+        xrect.height = dri2_drawable->height;
+
+        region = XFixesCreateRegion(ctx->x11_dpy, &xrect, 1);
+        VA_DRI2CopyRegion(ctx->x11_dpy, dri_drawable->x_drawable, region,
+                       DRI2BufferFrontLeft, DRI2BufferBackLeft);
+        XFixesDestroyRegion(ctx->x11_dpy, region);
+    }
+}
+
+static union dri_buffer *
+dri2GetRenderingBuffer(VADriverContextP ctx, struct dri_drawable *dri_drawable)
+{
+    struct dri2_drawable *dri2_drawable = (struct dri2_drawable *)dri_drawable;
+    int i;
+    int count;
+    unsigned int attachments[5];
+    VA_DRI2Buffer *buffers;
+    
+    i = 0;
+    attachments[i++] = __DRI_BUFFER_BACK_LEFT;
+    attachments[i++] = __DRI_BUFFER_FRONT_LEFT;
+    buffers = VA_DRI2GetBuffers(ctx->x11_dpy, dri_drawable->x_drawable,
+			     &dri2_drawable->width, &dri2_drawable->height, 
+                             attachments, i, &count);
+    assert(buffers);
+    if (buffers == NULL)
+        return NULL;
+
+    dri2_drawable->has_backbuffer = 0;
+
+    for (i = 0; i < count; i++) {
+        dri2_drawable->buffers[i].dri2.attachment = buffers[i].attachment;
+        dri2_drawable->buffers[i].dri2.name = buffers[i].name;
+        dri2_drawable->buffers[i].dri2.pitch = buffers[i].pitch;
+        dri2_drawable->buffers[i].dri2.cpp = buffers[i].cpp;
+        dri2_drawable->buffers[i].dri2.flags = buffers[i].flags;
+        
+        if (buffers[i].attachment == __DRI_BUFFER_BACK_LEFT) {
+            dri2_drawable->has_backbuffer = 1;
+            dri2_drawable->back_index = i;
+        }
+
+        if (buffers[i].attachment == __DRI_BUFFER_FRONT_LEFT)
+            dri2_drawable->front_index = i;
+    }
+    
+    dri_drawable->width = dri2_drawable->width;
+    dri_drawable->height = dri2_drawable->height;
+    Xfree(buffers);
+
+    if (dri2_drawable->has_backbuffer)
+        return &dri2_drawable->buffers[dri2_drawable->back_index];
+
+    return &dri2_drawable->buffers[dri2_drawable->front_index];
+}
+
+static void
+dri2Close(VADriverContextP ctx)
+{
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+
+    free_drawable_hashtable(ctx);
+    assert(dri_state->fd >= 0);
+    close(dri_state->fd);
+}
+
+Bool 
+isDRI2Connected(VADriverContextP ctx, char **driver_name)
+{
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+    int major, minor;
+    int error_base;
+    int event_base;
+    char *device_name = NULL;
+    drm_magic_t magic;        
+    *driver_name = NULL;
+    dri_state->fd = -1;
+    dri_state->driConnectedFlag = VA_NONE;
+    if (!VA_DRI2QueryExtension(ctx->x11_dpy, &event_base, &error_base))
+        goto err_out;
+
+    if (!VA_DRI2QueryVersion(ctx->x11_dpy, &major, &minor))
+        goto err_out;
+
+
+    if (!VA_DRI2Connect(ctx->x11_dpy, RootWindow(ctx->x11_dpy, ctx->x11_screen),
+                     driver_name, &device_name))
+        goto err_out;
+
+    dri_state->fd = open(device_name, O_RDWR);
+    assert(dri_state->fd >= 0);
+
+    if (dri_state->fd < 0)
+        goto err_out;
+
+    if (drmGetMagic(dri_state->fd, &magic))
+        goto err_out;
+
+    if (!VA_DRI2Authenticate(ctx->x11_dpy, RootWindow(ctx->x11_dpy, ctx->x11_screen),
+                          magic))
+        goto err_out;
+
+    dri_state->driConnectedFlag = VA_DRI2;
+    dri_state->createDrawable = dri2CreateDrawable;
+    dri_state->destroyDrawable = dri2DestroyDrawable;
+    dri_state->swapBuffer = dri2SwapBuffer;
+    dri_state->getRenderingBuffer = dri2GetRenderingBuffer;
+    dri_state->close = dri2Close;
+
+    return True;
+
+err_out:
+    if (device_name)
+        Xfree(device_name);
+
+    if (*driver_name)
+        Xfree(*driver_name);
+
+    if (dri_state->fd >= 0)
+        close(dri_state->fd);
+
+    *driver_name = NULL;
+    dri_state->fd = -1;
+    
+    return False;
+}
+
diff --git a/src/x11/va_dri.c b/src/x11/va_dri.c
new file mode 100644
index 0000000..ce3b7cd
--- /dev/null
+++ b/src/x11/va_dri.c
@@ -0,0 +1,624 @@
+/* $XFree86: xc/lib/GL/dri/XF86dri.c,v 1.13 2002/10/30 12:51:25 alanh Exp $ */
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright 2007 Intel Corporation
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ *   Kevin E. Martin <martin@valinux.com>
+ *   Jens Owen <jens@tungstengraphics.com>
+ *   Rickard E. (Rik) Faith <faith@valinux.com>
+ *
+ */
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD */
+
+#define NEED_REPLIES
+#include <X11/Xlibint.h>
+#include <X11/extensions/Xext.h>
+#include <X11/extensions/extutil.h>
+#include "va_dristr.h"
+
+#define PUBLIC
+
+static XExtensionInfo _va_dri_info_data;
+static XExtensionInfo *va_dri_info = &_va_dri_info_data;
+static char va_dri_extension_name[] = VA_DRINAME;
+
+#define VA_DRICheckExtension(dpy,i,val) \
+  XextCheckExtension (dpy, i, va_dri_extension_name, val)
+
+/*****************************************************************************
+ *                                                                           *
+ *			   private utility routines                          *
+ *                                                                           *
+ *****************************************************************************/
+
+static int close_display(Display *dpy, XExtCodes *extCodes);
+static /* const */ XExtensionHooks va_dri_extension_hooks = {
+    NULL,				/* create_gc */
+    NULL,				/* copy_gc */
+    NULL,				/* flush_gc */
+    NULL,				/* free_gc */
+    NULL,				/* create_font */
+    NULL,				/* free_font */
+    close_display,			/* close_display */
+    NULL,				/* wire_to_event */
+    NULL,				/* event_to_wire */
+    NULL,				/* error */
+    NULL,				/* error_string */
+};
+
+static XEXT_GENERATE_FIND_DISPLAY (find_display, va_dri_info, 
+				   va_dri_extension_name, 
+				   &va_dri_extension_hooks, 
+				   0, NULL)
+
+static XEXT_GENERATE_CLOSE_DISPLAY (close_display, va_dri_info)
+
+
+/*****************************************************************************
+ *                                                                           *
+ *		    public XFree86-DRI Extension routines                    *
+ *                                                                           *
+ *****************************************************************************/
+
+#if 0
+#include <stdio.h>
+#define TRACE(msg)  fprintf(stderr,"XF86DRI%s\n", msg);
+#else
+#define TRACE(msg)
+#endif
+
+
+PUBLIC Bool VA_DRIQueryExtension (dpy, event_basep, error_basep)
+    Display *dpy;
+    int *event_basep, *error_basep;
+{
+    XExtDisplayInfo *info = find_display (dpy);
+
+    TRACE("QueryExtension...");
+    if (XextHasExtension(info)) {
+	*event_basep = info->codes->first_event;
+	*error_basep = info->codes->first_error;
+        TRACE("QueryExtension... return True");
+	return True;
+    } else {
+        TRACE("QueryExtension... return False");
+	return False;
+    }
+}
+
+PUBLIC Bool VA_DRIQueryVersion(dpy, majorVersion, minorVersion, patchVersion)
+    Display* dpy;
+    int* majorVersion; 
+    int* minorVersion;
+    int* patchVersion;
+{
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRIQueryVersionReply rep;
+    xVA_DRIQueryVersionReq *req;
+
+    TRACE("QueryVersion...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRIQueryVersion, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRIQueryVersion;
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+        TRACE("QueryVersion... return False");
+	return False;
+    }
+    *majorVersion = rep.majorVersion;
+    *minorVersion = rep.minorVersion;
+    *patchVersion = rep.patchVersion;
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("QueryVersion... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRIQueryDirectRenderingCapable(dpy, screen, isCapable)
+    Display* dpy;
+    int screen;
+    Bool* isCapable;
+{
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRIQueryDirectRenderingCapableReply rep;
+    xVA_DRIQueryDirectRenderingCapableReq *req;
+
+    TRACE("QueryDirectRenderingCapable...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRIQueryDirectRenderingCapable, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRIQueryDirectRenderingCapable;
+    req->screen = screen;
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+        TRACE("QueryDirectRenderingCapable... return False");
+	return False;
+    }
+    *isCapable = rep.isCapable;
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("QueryDirectRenderingCapable... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRIOpenConnection(dpy, screen, hSAREA, busIdString)
+    Display* dpy;
+    int screen;
+    drm_handle_t * hSAREA;
+    char **busIdString;
+{
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRIOpenConnectionReply rep;
+    xVA_DRIOpenConnectionReq *req;
+
+    TRACE("OpenConnection...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRIOpenConnection, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRIOpenConnection;
+    req->screen = screen;
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+        TRACE("OpenConnection... return False");
+	return False;
+    }
+
+    *hSAREA = rep.hSAREALow;
+    if (sizeof(drm_handle_t) == 8) {
+       int shift = 32; /* var to prevent warning on next line */
+       *hSAREA |= ((drm_handle_t) rep.hSAREAHigh) << shift;
+    }
+
+    if (rep.length) {
+        if (!(*busIdString = (char *)Xcalloc(rep.busIdStringLength + 1, 1))) {
+            _XEatData(dpy, ((rep.busIdStringLength+3) & ~3));
+            UnlockDisplay(dpy);
+            SyncHandle();
+            TRACE("OpenConnection... return False");
+            return False;
+        }
+	_XReadPad(dpy, *busIdString, rep.busIdStringLength);
+    } else {
+        *busIdString = NULL;
+    }
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("OpenConnection... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRIAuthConnection(dpy, screen, magic)
+    Display* dpy;
+    int screen;
+    drm_magic_t magic;
+{
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRIAuthConnectionReq *req;
+    xVA_DRIAuthConnectionReply rep;
+
+    TRACE("AuthConnection...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRIAuthConnection, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRIAuthConnection;
+    req->screen = screen;
+    req->magic = magic;
+    rep.authenticated = 0;
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse) || !rep.authenticated) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+        TRACE("AuthConnection... return False");
+	return False;
+    }
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("AuthConnection... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRICloseConnection(dpy, screen)
+    Display* dpy;
+    int screen;
+{
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRICloseConnectionReq *req;
+
+    TRACE("CloseConnection...");
+
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRICloseConnection, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRICloseConnection;
+    req->screen = screen;
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("CloseConnection... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRIGetClientDriverName(dpy, screen, ddxDriverMajorVersion, 
+	ddxDriverMinorVersion, ddxDriverPatchVersion, clientDriverName)
+    Display* dpy;
+    int screen;
+    int* ddxDriverMajorVersion;
+    int* ddxDriverMinorVersion;
+    int* ddxDriverPatchVersion;
+    char** clientDriverName;
+{
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRIGetClientDriverNameReply rep;
+    xVA_DRIGetClientDriverNameReq *req;
+
+    TRACE("GetClientDriverName...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRIGetClientDriverName, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRIGetClientDriverName;
+    req->screen = screen;
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+        TRACE("GetClientDriverName... return False");
+	return False;
+    }
+
+    *ddxDriverMajorVersion = rep.ddxDriverMajorVersion;
+    *ddxDriverMinorVersion = rep.ddxDriverMinorVersion;
+    *ddxDriverPatchVersion = rep.ddxDriverPatchVersion;
+
+    if (rep.length) {
+        if (!(*clientDriverName = (char *)Xcalloc(rep.clientDriverNameLength + 1, 1))) {
+            _XEatData(dpy, ((rep.clientDriverNameLength+3) & ~3));
+            UnlockDisplay(dpy);
+            SyncHandle();
+            TRACE("GetClientDriverName... return False");
+            return False;
+        }
+	_XReadPad(dpy, *clientDriverName, rep.clientDriverNameLength);
+    } else {
+        *clientDriverName = NULL;
+    }
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("GetClientDriverName... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRICreateContextWithConfig(dpy, screen, configID, context,
+	hHWContext)
+    Display* dpy;
+    int screen;
+    int configID;
+    XID* context;
+    drm_context_t * hHWContext;
+{
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRICreateContextReply rep;
+    xVA_DRICreateContextReq *req;
+
+    TRACE("CreateContext...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRICreateContext, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRICreateContext;
+    req->visual = configID;
+    req->screen = screen;
+    *context = XAllocID(dpy);
+    req->context = *context;
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+        TRACE("CreateContext... return False");
+	return False;
+    }
+    *hHWContext = rep.hHWContext;
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("CreateContext... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRICreateContext(dpy, screen, visual, context, hHWContext)
+    Display* dpy;
+    int screen;
+    Visual* visual;
+    XID* context;
+    drm_context_t * hHWContext;
+{
+    return VA_DRICreateContextWithConfig( dpy, screen, visual->visualid,
+					   context, hHWContext );
+}
+
+PUBLIC Bool VA_DRIDestroyContext( __DRInativeDisplay * ndpy, int screen, 
+    __DRIid context )
+{
+    Display * const dpy = (Display *) ndpy;
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRIDestroyContextReq *req;
+
+    TRACE("DestroyContext...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRIDestroyContext, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRIDestroyContext;
+    req->screen = screen;
+    req->context = context;
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("DestroyContext... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRICreateDrawable( __DRInativeDisplay * ndpy, int screen, 
+    __DRIid drawable, drm_drawable_t * hHWDrawable )
+{
+    Display * const dpy = (Display *) ndpy;
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRICreateDrawableReply rep;
+    xVA_DRICreateDrawableReq *req;
+
+    TRACE("CreateDrawable...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRICreateDrawable, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRICreateDrawable;
+    req->screen = screen;
+    req->drawable = drawable;
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+        TRACE("CreateDrawable... return False");
+	return False;
+    }
+    *hHWDrawable = rep.hHWDrawable;
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("CreateDrawable... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRIDestroyDrawable( __DRInativeDisplay * ndpy, int screen,
+    __DRIid drawable )
+{
+    Display * const dpy = (Display *) ndpy;
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRIDestroyDrawableReq *req;
+
+    TRACE("DestroyDrawable...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRIDestroyDrawable, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRIDestroyDrawable;
+    req->screen = screen;
+    req->drawable = drawable;
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("DestroyDrawable... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRIGetDrawableInfo(Display* dpy, int screen, Drawable drawable,
+    unsigned int* index, unsigned int* stamp,
+    int* X, int* Y, int* W, int* H,
+    int* numClipRects, drm_clip_rect_t ** pClipRects,
+    int* backX, int* backY,
+    int* numBackClipRects, drm_clip_rect_t ** pBackClipRects )
+{
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRIGetDrawableInfoReply rep;
+    xVA_DRIGetDrawableInfoReq *req;
+    int total_rects;
+
+    TRACE("GetDrawableInfo...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRIGetDrawableInfo, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRIGetDrawableInfo;
+    req->screen = screen;
+    req->drawable = drawable;
+
+    if (!_XReply(dpy, (xReply *)&rep, 1, xFalse)) 
+    {
+	UnlockDisplay(dpy);
+	SyncHandle();
+        TRACE("GetDrawableInfo... return False");
+	return False;
+    }
+    *index = rep.drawableTableIndex;
+    *stamp = rep.drawableTableStamp;
+    *X = (int)rep.drawableX;
+    *Y = (int)rep.drawableY;
+    *W = (int)rep.drawableWidth;
+    *H = (int)rep.drawableHeight;
+    *numClipRects = rep.numClipRects;
+    total_rects = *numClipRects;
+
+    *backX = rep.backX;
+    *backY = rep.backY;
+    *numBackClipRects = rep.numBackClipRects;
+    total_rects += *numBackClipRects;
+
+#if 0
+    /* Because of the fix in Xserver/GL/dri/xf86dri.c, this check breaks
+     * backwards compatibility (Because of the >> 2 shift) but the fix
+     * enables multi-threaded apps to work.
+     */
+    if (rep.length !=  ((((SIZEOF(xVA_DRIGetDrawableInfoReply) - 
+		       SIZEOF(xGenericReply) + 
+		       total_rects * sizeof(drm_clip_rect_t)) + 3) & ~3) >> 2)) {
+        _XEatData(dpy, rep.length);
+	UnlockDisplay(dpy);
+	SyncHandle();
+        TRACE("GetDrawableInfo... return False");
+        return False;
+    }
+#endif
+
+    if (*numClipRects) {
+       int len = sizeof(drm_clip_rect_t) * (*numClipRects);
+
+       *pClipRects = (drm_clip_rect_t *)Xcalloc(len, 1);
+       if (*pClipRects) 
+	  _XRead(dpy, (char*)*pClipRects, len);
+    } else {
+        *pClipRects = NULL;
+    }
+
+    if (*numBackClipRects) {
+       int len = sizeof(drm_clip_rect_t) * (*numBackClipRects);
+
+       *pBackClipRects = (drm_clip_rect_t *)Xcalloc(len, 1);
+       if (*pBackClipRects) 
+	  _XRead(dpy, (char*)*pBackClipRects, len);
+    } else {
+        *pBackClipRects = NULL;
+    }
+
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("GetDrawableInfo... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRIGetDeviceInfo(dpy, screen, hFrameBuffer, 
+	fbOrigin, fbSize, fbStride, devPrivateSize, pDevPrivate)
+    Display* dpy;
+    int screen;
+    drm_handle_t * hFrameBuffer;
+    int* fbOrigin;
+    int* fbSize;
+    int* fbStride;
+    int* devPrivateSize;
+    void** pDevPrivate;
+{
+    XExtDisplayInfo *info = find_display (dpy);
+    xVA_DRIGetDeviceInfoReply rep;
+    xVA_DRIGetDeviceInfoReq *req;
+
+    TRACE("GetDeviceInfo...");
+    VA_DRICheckExtension (dpy, info, False);
+
+    LockDisplay(dpy);
+    GetReq(VA_DRIGetDeviceInfo, req);
+    req->reqType = info->codes->major_opcode;
+    req->driReqType = X_VA_DRIGetDeviceInfo;
+    req->screen = screen;
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+        TRACE("GetDeviceInfo... return False");
+	return False;
+    }
+
+    *hFrameBuffer = rep.hFrameBufferLow;
+    if (sizeof(drm_handle_t) == 8) {
+       int shift = 32; /* var to prevent warning on next line */
+       *hFrameBuffer |= ((drm_handle_t) rep.hFrameBufferHigh) << shift;
+    }
+
+    *fbOrigin = rep.framebufferOrigin;
+    *fbSize = rep.framebufferSize;
+    *fbStride = rep.framebufferStride;
+    *devPrivateSize = rep.devPrivateSize;
+
+    if (rep.length) {
+        if (!(*pDevPrivate = (void *)Xcalloc(rep.devPrivateSize, 1))) {
+            _XEatData(dpy, ((rep.devPrivateSize+3) & ~3));
+            UnlockDisplay(dpy);
+            SyncHandle();
+            TRACE("GetDeviceInfo... return False");
+            return False;
+        }
+	_XRead(dpy, (char*)*pDevPrivate, rep.devPrivateSize);
+    } else {
+        *pDevPrivate = NULL;
+    }
+
+    UnlockDisplay(dpy);
+    SyncHandle();
+    TRACE("GetDeviceInfo... return True");
+    return True;
+}
+
+PUBLIC Bool VA_DRIOpenFullScreen(dpy, screen, drawable)
+    Display* dpy;
+    int screen;
+    Drawable drawable;
+{
+    /* This function and the underlying X protocol are deprecated.
+     */
+    (void) dpy;
+    (void) screen;
+    (void) drawable;
+    return False;
+}
+
+PUBLIC Bool VA_DRICloseFullScreen(dpy, screen, drawable)
+    Display* dpy;
+    int screen;
+    Drawable drawable;
+{
+    /* This function and the underlying X protocol are deprecated.
+     */
+    (void) dpy;
+    (void) screen;
+    (void) drawable;
+    return True;
+}
+
+#undef TRACE
+
diff --git a/src/x11/va_dri.h b/src/x11/va_dri.h
new file mode 100644
index 0000000..91f87a2
--- /dev/null
+++ b/src/x11/va_dri.h
@@ -0,0 +1,120 @@
+/* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.8 2002/10/30 12:51:25 alanh Exp $ */
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright 2007 Intel Corporation
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/**
+ * \file xf86dri.h
+ * Protocol numbers and function prototypes for DRI X protocol.
+ *
+ * \author Kevin E. Martin <martin@valinux.com>
+ * \author Jens Owen <jens@tungstengraphics.com>
+ * \author Rickard E. (Rik) Faith <faith@valinux.com>
+ */
+
+#ifndef _VA_DRI_H_
+#define _VA_DRI_H_
+
+#include <X11/Xfuncproto.h>
+#include <xf86drm.h>
+
+#define X_VA_DRIQueryVersion			0
+#define X_VA_DRIQueryDirectRenderingCapable	1
+#define X_VA_DRIOpenConnection			2
+#define X_VA_DRICloseConnection		3
+#define X_VA_DRIGetClientDriverName		4
+#define X_VA_DRICreateContext			5
+#define X_VA_DRIDestroyContext			6
+#define X_VA_DRICreateDrawable			7
+#define X_VA_DRIDestroyDrawable		8
+#define X_VA_DRIGetDrawableInfo		9
+#define X_VA_DRIGetDeviceInfo			10
+#define X_VA_DRIAuthConnection                 11
+#define X_VA_DRIOpenFullScreen                 12   /* Deprecated */
+#define X_VA_DRICloseFullScreen                13   /* Deprecated */
+
+#define VA_DRINumberEvents		0
+
+#define VA_DRIClientNotLocal		0
+#define VA_DRIOperationNotSupported	1
+#define VA_DRINumberErrors		(VA_DRIOperationNotSupported + 1)
+
+typedef unsigned long __DRIid;
+typedef void __DRInativeDisplay;
+
+_XFUNCPROTOBEGIN
+
+Bool VA_DRIQueryExtension( Display *dpy, int *event_base, int *error_base );
+
+Bool VA_DRIQueryVersion( Display *dpy, int *majorVersion, int *minorVersion,
+    int *patchVersion );
+
+Bool VA_DRIQueryDirectRenderingCapable( Display *dpy, int screen,
+    Bool *isCapable );
+
+Bool VA_DRIOpenConnection( Display *dpy, int screen, drm_handle_t *hSAREA,
+    char **busIDString );
+
+Bool VA_DRIAuthConnection( Display *dpy, int screen, drm_magic_t magic );
+
+Bool VA_DRICloseConnection( Display *dpy, int screen );
+
+Bool VA_DRIGetClientDriverName( Display *dpy, int screen,
+    int *ddxDriverMajorVersion, int *ddxDriverMinorVersion,
+    int *ddxDriverPatchVersion, char **clientDriverName );
+
+Bool VA_DRICreateContext( Display *dpy, int screen, Visual *visual,
+    XID *ptr_to_returned_context_id, drm_context_t *hHWContext );
+
+Bool VA_DRICreateContextWithConfig( Display *dpy, int screen, int configID,
+    XID *ptr_to_returned_context_id, drm_context_t *hHWContext );
+
+Bool VA_DRIDestroyContext( __DRInativeDisplay *dpy, int screen,
+    __DRIid context_id );
+
+Bool VA_DRICreateDrawable( __DRInativeDisplay *dpy, int screen,
+    __DRIid drawable, drm_drawable_t *hHWDrawable );
+
+Bool VA_DRIDestroyDrawable( __DRInativeDisplay *dpy, int screen, 
+    __DRIid drawable);
+
+Bool VA_DRIGetDrawableInfo( Display *dpy, int screen, Drawable drawable,
+    unsigned int *index, unsigned int *stamp, 
+    int *X, int *Y, int *W, int *H,
+    int *numClipRects, drm_clip_rect_t ** pClipRects,
+    int *backX, int *backY,
+    int *numBackClipRects, drm_clip_rect_t **pBackClipRects );
+
+Bool VA_DRIGetDeviceInfo( Display *dpy, int screen,
+    drm_handle_t *hFrameBuffer, int *fbOrigin, int *fbSize,
+    int *fbStride, int *devPrivateSize, void **pDevPrivate );
+
+_XFUNCPROTOEND
+
+#endif /* _VA_DRI_H_ */
+
diff --git a/src/x11/va_dri2.c b/src/x11/va_dri2.c
new file mode 100644
index 0000000..c602bba
--- /dev/null
+++ b/src/x11/va_dri2.c
@@ -0,0 +1,307 @@
+/*
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Soft-
+ * ware"), to deal in the Software without restriction, including without
+ * limitation the rights to use, copy, modify, merge, publish, distribute,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, provided that the above copyright
+ * notice(s) and this permission notice appear in all copies of the Soft-
+ * ware and that both the above copyright notice(s) and this permission
+ * notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
+ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
+ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
+ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
+ * MANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder shall
+ * not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization of
+ * the copyright holder.
+ *
+ * Authors:
+ *   Kristian Høgsberg (krh@redhat.com)
+ */
+
+
+#define NEED_REPLIES
+#include <X11/Xlibint.h>
+#include <X11/extensions/Xext.h>
+#include <X11/extensions/extutil.h>
+#include "xf86drm.h"
+#include "va_dri2.h"
+#include "va_dri2str.h"
+#include "va_dri2tokens.h"
+
+#ifndef DRI2DriverDRI
+#define DRI2DriverDRI 0
+#endif
+
+static char va_dri2ExtensionName[] = DRI2_NAME;
+static XExtensionInfo _va_dri2_info_data;
+static XExtensionInfo *va_dri2Info = &_va_dri2_info_data;
+static XEXT_GENERATE_CLOSE_DISPLAY (VA_DRI2CloseDisplay, va_dri2Info)
+static /* const */ XExtensionHooks va_dri2ExtensionHooks = {
+    NULL,				/* create_gc */
+    NULL,				/* copy_gc */
+    NULL,				/* flush_gc */
+    NULL,				/* free_gc */
+    NULL,				/* create_font */
+    NULL,				/* free_font */
+    VA_DRI2CloseDisplay,		/* close_display */
+    NULL,				/* wire_to_event */
+    NULL,				/* event_to_wire */
+    NULL,				/* error */
+    NULL,				/* error_string */
+};
+
+static XEXT_GENERATE_FIND_DISPLAY (DRI2FindDisplay, va_dri2Info, 
+				   va_dri2ExtensionName, 
+				   &va_dri2ExtensionHooks, 
+				   0, NULL)
+
+Bool VA_DRI2QueryExtension(Display *dpy, int *eventBase, int *errorBase)
+{
+    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
+
+    if (XextHasExtension(info)) {
+	*eventBase = info->codes->first_event;
+	*errorBase = info->codes->first_error;
+	return True;
+    }
+
+    return False;
+}
+
+Bool VA_DRI2QueryVersion(Display *dpy, int *major, int *minor)
+{
+    XExtDisplayInfo *info = DRI2FindDisplay (dpy);
+    xDRI2QueryVersionReply rep;
+    xDRI2QueryVersionReq *req;
+
+    XextCheckExtension (dpy, info, va_dri2ExtensionName, False);
+
+    LockDisplay(dpy);
+    GetReq(DRI2QueryVersion, req);
+    req->reqType = info->codes->major_opcode;
+    req->dri2ReqType = X_DRI2QueryVersion;
+    req->majorVersion = DRI2_MAJOR;
+    req->minorVersion = DRI2_MINOR;
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+	return False;
+    }
+    *major = rep.majorVersion;
+    *minor = rep.minorVersion;
+    UnlockDisplay(dpy);
+    SyncHandle();
+
+    return True;
+}
+
+Bool VA_DRI2Connect(Display *dpy, XID window,
+		 char **driverName, char **deviceName)
+{
+    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
+    xDRI2ConnectReply rep;
+    xDRI2ConnectReq *req;
+
+    XextCheckExtension (dpy, info, va_dri2ExtensionName, False);
+
+    LockDisplay(dpy);
+    GetReq(DRI2Connect, req);
+    req->reqType = info->codes->major_opcode;
+    req->dri2ReqType = X_DRI2Connect;
+    req->window = window;
+    req->driverType = DRI2DriverDRI;
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+	return False;
+    }
+
+    if (rep.driverNameLength == 0 && rep.deviceNameLength == 0) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+	return False;
+    }
+
+    *driverName = Xmalloc(rep.driverNameLength + 1);
+    if (*driverName == NULL) {
+	_XEatData(dpy, 
+		  ((rep.driverNameLength + 3) & ~3) +
+		  ((rep.deviceNameLength + 3) & ~3));
+	UnlockDisplay(dpy);
+	SyncHandle();
+	return False;
+    }
+    _XReadPad(dpy, *driverName, rep.driverNameLength);
+    (*driverName)[rep.driverNameLength] = '\0';
+
+    *deviceName = Xmalloc(rep.deviceNameLength + 1);
+    if (*deviceName == NULL) {
+	Xfree(*driverName);
+	_XEatData(dpy, ((rep.deviceNameLength + 3) & ~3));
+	UnlockDisplay(dpy);
+	SyncHandle();
+	return False;
+    }
+    _XReadPad(dpy, *deviceName, rep.deviceNameLength);
+    (*deviceName)[rep.deviceNameLength] = '\0';
+
+    UnlockDisplay(dpy);
+    SyncHandle();
+
+    return True;
+}
+
+Bool VA_DRI2Authenticate(Display *dpy, XID window, drm_magic_t magic)
+{
+    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
+    xDRI2AuthenticateReq *req;
+    xDRI2AuthenticateReply rep;
+
+    XextCheckExtension (dpy, info, va_dri2ExtensionName, False);
+
+    LockDisplay(dpy);
+    GetReq(DRI2Authenticate, req);
+    req->reqType = info->codes->major_opcode;
+    req->dri2ReqType = X_DRI2Authenticate;
+    req->window = window;
+    req->magic = magic;
+
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+	return False;
+    }
+
+    UnlockDisplay(dpy);
+    SyncHandle();
+
+    return rep.authenticated;
+}
+
+void VA_DRI2CreateDrawable(Display *dpy, XID drawable)
+{
+    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
+    xDRI2CreateDrawableReq *req;
+
+    XextSimpleCheckExtension (dpy, info, va_dri2ExtensionName);
+
+    LockDisplay(dpy);
+    GetReq(DRI2CreateDrawable, req);
+    req->reqType = info->codes->major_opcode;
+    req->dri2ReqType = X_DRI2CreateDrawable;
+    req->drawable = drawable;
+    UnlockDisplay(dpy);
+    SyncHandle();
+}
+
+void VA_DRI2DestroyDrawable(Display *dpy, XID drawable)
+{
+    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
+    xDRI2DestroyDrawableReq *req;
+
+    XextSimpleCheckExtension (dpy, info, va_dri2ExtensionName);
+
+    XSync(dpy, False);
+
+    LockDisplay(dpy);
+    GetReq(DRI2DestroyDrawable, req);
+    req->reqType = info->codes->major_opcode;
+    req->dri2ReqType = X_DRI2DestroyDrawable;
+    req->drawable = drawable;
+    UnlockDisplay(dpy);
+    SyncHandle();
+}
+
+VA_DRI2Buffer *VA_DRI2GetBuffers(Display *dpy, XID drawable,
+			   int *width, int *height,
+			   unsigned int *attachments, int count,
+			   int *outCount)
+{
+    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
+    xDRI2GetBuffersReply rep;
+    xDRI2GetBuffersReq *req;
+    VA_DRI2Buffer *buffers;
+    xDRI2Buffer repBuffer;
+    CARD32 *p;
+    int i;
+
+    XextCheckExtension (dpy, info, va_dri2ExtensionName, False);
+
+    LockDisplay(dpy);
+    GetReqExtra(DRI2GetBuffers, count * 4, req);
+    req->reqType = info->codes->major_opcode;
+    req->dri2ReqType = X_DRI2GetBuffers;
+    req->drawable = drawable;
+    req->count = count;
+    p = (CARD32 *) &req[1];
+    for (i = 0; i < count; i++)
+	p[i] = attachments[i];
+
+    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+	UnlockDisplay(dpy);
+	SyncHandle();
+	return NULL;
+    }
+
+    *width = rep.width;
+    *height = rep.height;
+    *outCount = rep.count;
+
+    buffers = Xmalloc(rep.count * sizeof buffers[0]);
+    if (buffers == NULL) {
+	_XEatData(dpy, rep.count * sizeof repBuffer);
+	UnlockDisplay(dpy);
+	SyncHandle();
+	return NULL;
+    }
+
+    for (i = 0; i < rep.count; i++) {
+	_XReadPad(dpy, (char *) &repBuffer, sizeof repBuffer);
+	buffers[i].attachment = repBuffer.attachment;
+	buffers[i].name = repBuffer.name;
+	buffers[i].pitch = repBuffer.pitch;
+	buffers[i].cpp = repBuffer.cpp;
+	buffers[i].flags = repBuffer.flags;
+    }
+
+    UnlockDisplay(dpy);
+    SyncHandle();
+
+    return buffers;
+}
+
+void VA_DRI2CopyRegion(Display *dpy, XID drawable, XserverRegion region,
+		    CARD32 dest, CARD32 src)
+{
+    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
+    xDRI2CopyRegionReq *req;
+    xDRI2CopyRegionReply rep;
+
+    XextSimpleCheckExtension (dpy, info, va_dri2ExtensionName);
+
+    LockDisplay(dpy);
+    GetReq(DRI2CopyRegion, req);
+    req->reqType = info->codes->major_opcode;
+    req->dri2ReqType = X_DRI2CopyRegion;
+    req->drawable = drawable;
+    req->region = region;
+    req->dest = dest;
+    req->src = src;
+
+    _XReply(dpy, (xReply *)&rep, 0, xFalse);
+
+    UnlockDisplay(dpy);
+    SyncHandle();
+}
diff --git a/src/x11/va_dri2.h b/src/x11/va_dri2.h
new file mode 100644
index 0000000..a26a839
--- /dev/null
+++ b/src/x11/va_dri2.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright © 2007,2008 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Soft-
+ * ware"), to deal in the Software without restriction, including without
+ * limitation the rights to use, copy, modify, merge, publish, distribute,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, provided that the above copyright
+ * notice(s) and this permission notice appear in all copies of the Soft-
+ * ware and that both the above copyright notice(s) and this permission
+ * notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
+ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
+ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
+ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
+ * MANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder shall
+ * not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization of
+ * the copyright holder.
+ *
+ * Authors:
+ *   Kristian Høgsberg (krh@redhat.com)
+ */
+
+#ifndef _VA_DRI2_H_
+#define _VA_DRI2_H_
+
+#include <X11/extensions/Xfixes.h>
+#include <X11/Xfuncproto.h>
+#include <xf86drm.h>
+
+typedef struct {
+    unsigned int attachment;
+    unsigned int name;
+    unsigned int pitch;
+    unsigned int cpp;
+    unsigned int flags;
+} VA_DRI2Buffer;
+
+extern Bool
+VA_DRI2QueryExtension(Display *display, int *eventBase, int *errorBase);
+extern Bool
+VA_DRI2QueryVersion(Display *display, int *major, int *minor);
+extern Bool
+VA_DRI2Connect(Display *display, XID window,
+	    char **driverName, char **deviceName);
+extern Bool
+VA_DRI2Authenticate(Display *display, XID window, drm_magic_t magic);
+extern void
+VA_DRI2CreateDrawable(Display *display, XID drawable);
+extern void
+VA_DRI2DestroyDrawable(Display *display, XID handle);
+extern VA_DRI2Buffer *
+VA_DRI2GetBuffers(Display *dpy, XID drawable,
+	       int *width, int *height,
+	       unsigned int *attachments, int count,
+	       int *outCount);
+#if 0
+extern void
+VA_DRI2CopyRegion(Display *dpy, XID drawable, XserverRegion region,
+	       CARD32 dest, CARD32 src);
+#endif
+#endif
diff --git a/src/x11/va_dri2str.h b/src/x11/va_dri2str.h
new file mode 100644
index 0000000..dc3f2d1
--- /dev/null
+++ b/src/x11/va_dri2str.h
@@ -0,0 +1,193 @@
+/*
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Soft-
+ * ware"), to deal in the Software without restriction, including without
+ * limitation the rights to use, copy, modify, merge, publish, distribute,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, provided that the above copyright
+ * notice(s) and this permission notice appear in all copies of the Soft-
+ * ware and that both the above copyright notice(s) and this permission
+ * notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
+ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
+ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
+ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
+ * MANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder shall
+ * not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization of
+ * the copyright holder.
+ *
+ * Authors:
+ *   Kristian Høgsberg (krh@redhat.com)
+ */
+
+#ifndef _DRI2_PROTO_H_
+#define _DRI2_PROTO_H_
+
+#define DRI2_NAME			"DRI2"
+#define DRI2_MAJOR			1
+#define DRI2_MINOR			0
+
+#define DRI2NumberErrors		0
+#define DRI2NumberEvents		0
+#define DRI2NumberRequests		7
+
+#define X_DRI2QueryVersion		0
+#define X_DRI2Connect			1
+#define X_DRI2Authenticate		2
+#define X_DRI2CreateDrawable		3
+#define X_DRI2DestroyDrawable		4
+#define X_DRI2GetBuffers		5
+#define X_DRI2CopyRegion		6
+
+typedef struct {
+    CARD32  attachment B32;
+    CARD32  name B32;
+    CARD32  pitch B32;
+    CARD32  cpp B32;
+    CARD32  flags B32;
+} xDRI2Buffer;
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  majorVersion B32;
+    CARD32  minorVersion B32;
+} xDRI2QueryVersionReq;
+#define sz_xDRI2QueryVersionReq   12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  majorVersion B32;
+    CARD32  minorVersion B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+} xDRI2QueryVersionReply;
+#define sz_xDRI2QueryVersionReply	32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  window B32;
+    CARD32  driverType B32;
+} xDRI2ConnectReq;
+#define sz_xDRI2ConnectReq	12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  driverNameLength B32;
+    CARD32  deviceNameLength B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+} xDRI2ConnectReply;
+#define sz_xDRI2ConnectReply	32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  window B32;
+    CARD32  magic B32;
+} xDRI2AuthenticateReq;
+#define sz_xDRI2AuthenticateReq   12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  authenticated B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+    CARD32  pad6 B32;
+} xDRI2AuthenticateReply;
+#define sz_xDRI2AuthenticateReply	32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+} xDRI2CreateDrawableReq;
+#define sz_xDRI2CreateDrawableReq   8
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+} xDRI2DestroyDrawableReq;
+#define sz_xDRI2DestroyDrawableReq   8
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  count B32;
+} xDRI2GetBuffersReq;
+#define sz_xDRI2GetBuffersReq   12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  width B32;
+    CARD32  height B32;
+    CARD32  count B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+} xDRI2GetBuffersReply;
+#define sz_xDRI2GetBuffersReply	32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  region B32;
+    CARD32  dest B32;
+    CARD32  src B32;
+} xDRI2CopyRegionReq;
+#define sz_xDRI2CopyRegionReq   20
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+    CARD32  pad6 B32;
+    CARD32  pad7 B32;
+} xDRI2CopyRegionReply;
+#define sz_xDRI2CopyRegionReply	32
+
+#endif
diff --git a/src/x11/va_dri2tokens.h b/src/x11/va_dri2tokens.h
new file mode 100644
index 0000000..087159f
--- /dev/null
+++ b/src/x11/va_dri2tokens.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Soft-
+ * ware"), to deal in the Software without restriction, including without
+ * limitation the rights to use, copy, modify, merge, publish, distribute,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, provided that the above copyright
+ * notice(s) and this permission notice appear in all copies of the Soft-
+ * ware and that both the above copyright notice(s) and this permission
+ * notice appear in supporting documentation.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
+ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
+ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
+ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
+ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
+ * MANCE OF THIS SOFTWARE.
+ *
+ * Except as contained in this notice, the name of a copyright holder shall
+ * not be used in advertising or otherwise to promote the sale, use or
+ * other dealings in this Software without prior written authorization of
+ * the copyright holder.
+ *
+ * Authors:
+ *   Kristian Høgsberg (krh@redhat.com)
+ */
+
+#ifndef _DRI2_TOKENS_H_
+#define _DRI2_TOKENS_H_
+
+#define DRI2BufferFrontLeft		0
+#define DRI2BufferBackLeft		1
+#define DRI2BufferFrontRight		2
+#define DRI2BufferBackRight		3
+#define DRI2BufferDepth			4
+#define DRI2BufferStencil		5
+#define DRI2BufferAccum			6
+#define DRI2BufferFakeFrontLeft		7
+#define DRI2BufferFakeFrontRight	8
+
+#define DRI2DriverDRI			0
+
+#endif
diff --git a/src/x11/va_dricommon.c b/src/x11/va_dricommon.c
new file mode 100644
index 0000000..f9c3dfd
--- /dev/null
+++ b/src/x11/va_dricommon.c
@@ -0,0 +1,62 @@
+#include "va_dricommon.h"
+
+static struct dri_drawable *                                                                                                                                                                                   
+do_drawable_hash(VADriverContextP ctx, XID drawable)
+{
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+    int index = drawable % DRAWABLE_HASH_SZ;
+    struct dri_drawable *dri_drawable = dri_state->drawable_hash[index];
+
+    while (dri_drawable) {
+        if (dri_drawable->x_drawable == drawable)
+            return dri_drawable;
+        dri_drawable = dri_drawable->next;
+    }
+
+    dri_drawable = dri_state->createDrawable(ctx, drawable);
+    dri_drawable->x_drawable = drawable;
+    dri_drawable->next = dri_state->drawable_hash[index];
+    dri_state->drawable_hash[index] = dri_drawable;
+
+    return dri_drawable;
+}
+
+void
+free_drawable_hashtable(VADriverContextP ctx)
+{
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+    int i;
+    struct dri_drawable *dri_drawable, *prev;
+
+    for (i = 0; i < DRAWABLE_HASH_SZ; i++) {
+        dri_drawable = dri_state->drawable_hash[i];
+
+        while (dri_drawable) {
+            prev = dri_drawable;
+            dri_drawable = prev->next;
+            dri_state->destroyDrawable(ctx, prev);
+        }
+    }
+}
+
+struct dri_drawable *
+dri_get_drawable(VADriverContextP ctx, XID drawable)
+{
+    return do_drawable_hash(ctx, drawable);
+}
+
+void 
+dri_swap_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable)
+{
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+
+    dri_state->swapBuffer(ctx, dri_drawable);
+}
+
+union dri_buffer *
+dri_get_rendering_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable)
+{
+    struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
+    
+    return dri_state->getRenderingBuffer(ctx, dri_drawable);
+}
diff --git a/src/x11/va_dricommon.h b/src/x11/va_dricommon.h
new file mode 100644
index 0000000..a2a51a6
--- /dev/null
+++ b/src/x11/va_dricommon.h
@@ -0,0 +1,68 @@
+#ifndef _VA_DRICOMMON_H_
+#define _VA_DRICOMMON_H_
+
+#include <X11/Xlib.h>
+
+#include <xf86drm.h>
+#include <drm.h>
+#include <drm_sarea.h>
+
+#include "va_backend.h"
+
+enum
+{
+    VA_NONE = 0,
+    VA_DRI1 = 1,
+    VA_DRI2 = 2
+};
+
+union dri_buffer 
+{
+    struct {
+        unsigned int attachment;
+        unsigned int name;
+        unsigned int pitch;
+        unsigned int cpp;
+        unsigned int flags;
+    } dri2;
+
+    struct {
+    } dri1;
+};
+
+struct dri_drawable 
+{
+    XID x_drawable;
+    int x;
+    int y;
+    unsigned int width;
+    unsigned int height;
+    struct dri_drawable *next;
+};
+
+#define DRAWABLE_HASH_SZ 32
+struct dri_state 
+{
+    int fd;
+    int driConnectedFlag; /* 0: disconnected, 1: DRI, 2: DRI2 */
+    drm_handle_t hSAREA;
+    drm_context_t hwContext;
+    drmAddress pSAREA;
+    XID hwContextID;
+    struct dri_drawable *drawable_hash[DRAWABLE_HASH_SZ];
+
+    struct dri_drawable *(*createDrawable)(VADriverContextP ctx, XID x_drawable);
+    void (*destroyDrawable)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
+    void (*swapBuffer)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
+    union dri_buffer *(*getRenderingBuffer)(VADriverContextP ctx, struct dri_drawable *dri_drawable);
+    void (*close)(VADriverContextP ctx);
+};
+
+Bool isDRI2Connected(VADriverContextP ctx, char **driver_name);
+Bool isDRI1Connected(VADriverContextP ctx, char **driver_name);
+void free_drawable_hashtable(VADriverContextP ctx);
+struct dri_drawable *dri_get_drawable(VADriverContextP ctx, XID drawable);
+void dri_swap_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable);
+union dri_buffer *dri_get_rendering_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable);
+
+#endif /* _VA_DRICOMMON_H_ */
diff --git a/src/x11/va_dristr.h b/src/x11/va_dristr.h
new file mode 100644
index 0000000..3e391de
--- /dev/null
+++ b/src/x11/va_dristr.h
@@ -0,0 +1,344 @@
+/* $XFree86: xc/lib/GL/dri/xf86dristr.h,v 1.10 2002/10/30 12:51:25 alanh Exp $ */
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright 2007 Intel Corporation
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ *   Kevin E. Martin <martin@valinux.com>
+ *   Jens Owen <jens@tungstengraphics.com>
+ *   Rickard E. (Rik) Fiath <faith@valinux.com>
+ *
+ */
+
+#ifndef _VA_DRISTR_H_
+#define _VA_DRISTR_H_
+
+#include "va_dri.h"
+
+#define VA_DRINAME "XFree86-DRI"
+
+/* The DRI version number.  This was originally set to be the same of the
+ * XFree86 version number.  However, this version is really indepedent of
+ * the XFree86 version.
+ *
+ * Version History:
+ *    4.0.0: Original
+ *    4.0.1: Patch to bump clipstamp when windows are destroyed, 28 May 02
+ *    4.1.0: Add transition from single to multi in DRMInfo rec, 24 Jun 02
+ */
+#define VA_DRI_MAJOR_VERSION	4
+#define VA_DRI_MINOR_VERSION	1
+#define VA_DRI_PATCH_VERSION	0
+
+typedef struct _VA_DRIQueryVersion {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRIQueryVersion */
+    CARD16	length B16;
+} xVA_DRIQueryVersionReq;
+#define sz_xVA_DRIQueryVersionReq	4
+
+typedef struct {
+    BYTE	type;			/* X_Reply */
+    BOOL	pad1;
+    CARD16	sequenceNumber B16;
+    CARD32	length B32;
+    CARD16	majorVersion B16;	/* major version of DRI protocol */
+    CARD16	minorVersion B16;	/* minor version of DRI protocol */
+    CARD32	patchVersion B32;       /* patch version of DRI protocol */
+    CARD32	pad3 B32;
+    CARD32	pad4 B32;
+    CARD32	pad5 B32;
+    CARD32	pad6 B32;
+} xVA_DRIQueryVersionReply;
+#define sz_xVA_DRIQueryVersionReply	32
+
+typedef struct _VA_DRIQueryDirectRenderingCapable {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* X_DRIQueryDirectRenderingCapable */
+    CARD16	length B16;
+    CARD32	screen B32;
+} xVA_DRIQueryDirectRenderingCapableReq;
+#define sz_xVA_DRIQueryDirectRenderingCapableReq	8
+
+typedef struct {
+    BYTE	type;			/* X_Reply */
+    BOOL	pad1;
+    CARD16	sequenceNumber B16;
+    CARD32	length B32;
+    BOOL	isCapable;
+    BOOL	pad2;
+    BOOL	pad3;
+    BOOL	pad4;
+    CARD32	pad5 B32;
+    CARD32	pad6 B32;
+    CARD32	pad7 B32;
+    CARD32	pad8 B32;
+    CARD32	pad9 B32;
+} xVA_DRIQueryDirectRenderingCapableReply;
+#define sz_xVA_DRIQueryDirectRenderingCapableReply	32
+
+typedef struct _VA_DRIOpenConnection {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRIOpenConnection */
+    CARD16	length B16;
+    CARD32	screen B32;
+} xVA_DRIOpenConnectionReq;
+#define sz_xVA_DRIOpenConnectionReq	8
+
+typedef struct {
+    BYTE	type;			/* X_Reply */
+    BOOL	pad1;
+    CARD16	sequenceNumber B16;
+    CARD32	length B32;
+    CARD32	hSAREALow B32;
+    CARD32	hSAREAHigh B32;
+    CARD32	busIdStringLength B32;
+    CARD32	pad6 B32;
+    CARD32	pad7 B32;
+    CARD32	pad8 B32;
+} xVA_DRIOpenConnectionReply;
+#define sz_xVA_DRIOpenConnectionReply	32
+
+typedef struct _VA_DRIAuthConnection {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRICloseConnection */
+    CARD16	length B16;
+    CARD32	screen B32;
+    CARD32      magic B32;
+} xVA_DRIAuthConnectionReq;
+#define sz_xVA_DRIAuthConnectionReq	12
+
+typedef struct {
+    BYTE        type;
+    BOOL        pad1;
+    CARD16      sequenceNumber B16;
+    CARD32      length B32;
+    CARD32      authenticated B32;
+    CARD32      pad2 B32;
+    CARD32      pad3 B32;
+    CARD32      pad4 B32;
+    CARD32      pad5 B32;
+    CARD32      pad6 B32;
+} xVA_DRIAuthConnectionReply;
+#define zx_xVA_DRIAuthConnectionReply  32
+
+typedef struct _VA_DRICloseConnection {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRICloseConnection */
+    CARD16	length B16;
+    CARD32	screen B32;
+} xVA_DRICloseConnectionReq;
+#define sz_xVA_DRICloseConnectionReq	8
+
+typedef struct _VA_DRIGetClientDriverName {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRIGetClientDriverName */
+    CARD16	length B16;
+    CARD32	screen B32;
+} xVA_DRIGetClientDriverNameReq;
+#define sz_xVA_DRIGetClientDriverNameReq	8
+
+typedef struct {
+    BYTE	type;			/* X_Reply */
+    BOOL	pad1;
+    CARD16	sequenceNumber B16;
+    CARD32	length B32;
+    CARD32	ddxDriverMajorVersion B32;
+    CARD32	ddxDriverMinorVersion B32;
+    CARD32	ddxDriverPatchVersion B32;
+    CARD32	clientDriverNameLength B32;
+    CARD32	pad5 B32;
+    CARD32	pad6 B32;
+} xVA_DRIGetClientDriverNameReply;
+#define sz_xVA_DRIGetClientDriverNameReply	32
+
+typedef struct _VA_DRICreateContext {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRICreateContext */
+    CARD16	length B16;
+    CARD32	screen B32;
+    CARD32	visual B32;
+    CARD32	context B32;
+} xVA_DRICreateContextReq;
+#define sz_xVA_DRICreateContextReq	16
+
+typedef struct {
+    BYTE	type;			/* X_Reply */
+    BOOL	pad1;
+    CARD16	sequenceNumber B16;
+    CARD32	length B32;
+    CARD32	hHWContext B32;
+    CARD32	pad2 B32;
+    CARD32	pad3 B32;
+    CARD32	pad4 B32;
+    CARD32	pad5 B32;
+    CARD32	pad6 B32;
+} xVA_DRICreateContextReply;
+#define sz_xVA_DRICreateContextReply	32
+
+typedef struct _VA_DRIDestroyContext {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRIDestroyContext */
+    CARD16	length B16;
+    CARD32	screen B32;
+    CARD32	context B32;
+} xVA_DRIDestroyContextReq;
+#define sz_xVA_DRIDestroyContextReq	12
+
+typedef struct _VA_DRICreateDrawable {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRICreateDrawable */
+    CARD16	length B16;
+    CARD32	screen B32;
+    CARD32	drawable B32;
+} xVA_DRICreateDrawableReq;
+#define sz_xVA_DRICreateDrawableReq	12
+
+typedef struct {
+    BYTE	type;			/* X_Reply */
+    BOOL	pad1;
+    CARD16	sequenceNumber B16;
+    CARD32	length B32;
+    CARD32	hHWDrawable B32;
+    CARD32	pad2 B32;
+    CARD32	pad3 B32;
+    CARD32	pad4 B32;
+    CARD32	pad5 B32;
+    CARD32	pad6 B32;
+} xVA_DRICreateDrawableReply;
+#define sz_xVA_DRICreateDrawableReply	32
+
+typedef struct _VA_DRIDestroyDrawable {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRIDestroyDrawable */
+    CARD16	length B16;
+    CARD32	screen B32;
+    CARD32	drawable B32;
+} xVA_DRIDestroyDrawableReq;
+#define sz_xVA_DRIDestroyDrawableReq	12
+
+typedef struct _VA_DRIGetDrawableInfo {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRIGetDrawableInfo */
+    CARD16	length B16;
+    CARD32	screen B32;
+    CARD32	drawable B32;
+} xVA_DRIGetDrawableInfoReq;
+#define sz_xVA_DRIGetDrawableInfoReq	12
+
+typedef struct {
+    BYTE	type;			/* X_Reply */
+    BOOL	pad1;
+    CARD16	sequenceNumber B16;
+    CARD32	length B32;
+    CARD32	drawableTableIndex B32;
+    CARD32	drawableTableStamp B32;
+    INT16	drawableX B16;
+    INT16	drawableY B16;
+    INT16	drawableWidth B16;
+    INT16	drawableHeight B16;
+    CARD32	numClipRects B32;
+    INT16       backX B16;
+    INT16       backY B16;
+    CARD32      numBackClipRects B32;
+} xVA_DRIGetDrawableInfoReply;
+
+#define sz_xVA_DRIGetDrawableInfoReply	36
+
+
+typedef struct _VA_DRIGetDeviceInfo {
+    CARD8	reqType;		/* always DRIReqCode */
+    CARD8	driReqType;		/* always X_DRIGetDeviceInfo */
+    CARD16	length B16;
+    CARD32	screen B32;
+} xVA_DRIGetDeviceInfoReq;
+#define sz_xVA_DRIGetDeviceInfoReq	8
+
+typedef struct {
+    BYTE	type;			/* X_Reply */
+    BOOL	pad1;
+    CARD16	sequenceNumber B16;
+    CARD32	length B32;
+    CARD32	hFrameBufferLow B32;
+    CARD32	hFrameBufferHigh B32;
+    CARD32	framebufferOrigin B32;
+    CARD32	framebufferSize B32;
+    CARD32	framebufferStride B32;
+    CARD32	devPrivateSize B32;
+} xVA_DRIGetDeviceInfoReply;
+#define sz_xVA_DRIGetDeviceInfoReply	32
+
+typedef struct _VA_DRIOpenFullScreen {
+    CARD8       reqType;	/* always DRIReqCode */
+    CARD8       driReqType;	/* always X_DRIOpenFullScreen */
+    CARD16      length B16;
+    CARD32      screen B32;
+    CARD32      drawable B32;
+} xVA_DRIOpenFullScreenReq;
+#define sz_xVA_DRIOpenFullScreenReq    12
+
+typedef struct {
+    BYTE        type;
+    BOOL        pad1;
+    CARD16      sequenceNumber B16;
+    CARD32      length B32;
+    CARD32      isFullScreen B32;
+    CARD32      pad2 B32;
+    CARD32      pad3 B32;
+    CARD32      pad4 B32;
+    CARD32      pad5 B32;
+    CARD32      pad6 B32;
+} xVA_DRIOpenFullScreenReply;
+#define sz_xVA_DRIOpenFullScreenReply  32
+
+typedef struct _VA_DRICloseFullScreen {
+    CARD8       reqType;	/* always DRIReqCode */
+    CARD8       driReqType;	/* always X_DRICloseFullScreen */
+    CARD16      length B16;
+    CARD32      screen B32;
+    CARD32      drawable B32;
+} xVA_DRICloseFullScreenReq;
+#define sz_xVA_DRICloseFullScreenReq   12
+
+typedef struct {
+    BYTE        type;
+    BOOL        pad1;
+    CARD16      sequenceNumber B16;
+    CARD32      length B32;
+    CARD32      pad2 B32;
+    CARD32      pad3 B32;
+    CARD32      pad4 B32;
+    CARD32      pad5 B32;
+    CARD32      pad6 B32;
+    CARD32      pad7 B32;
+} xVA_DRICloseFullScreenReply;
+#define sz_xVA_DRICloseFullScreenReply  32
+
+
+#endif /* _VA_DRISTR_H_ */
diff --git a/src/x11/va_nvctrl.c b/src/x11/va_nvctrl.c
new file mode 100644
index 0000000..b14db47
--- /dev/null
+++ b/src/x11/va_nvctrl.c
@@ -0,0 +1,399 @@
+/*
+ * Copyright (c) 2008 NVIDIA, Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#define _GNU_SOURCE 1
+#include <string.h>
+
+#define NEED_REPLIES
+#include <stdlib.h>
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/extensions/Xext.h>
+#include <X11/extensions/extutil.h>
+#include "va_nvctrl.h"
+
+#define NV_CONTROL_ERRORS 0
+#define NV_CONTROL_EVENTS 5
+#define NV_CONTROL_NAME "NV-CONTROL"
+
+#define NV_CTRL_TARGET_TYPE_X_SCREEN   0
+#define NV_CTRL_TARGET_TYPE_GPU        1
+#define NV_CTRL_TARGET_TYPE_FRAMELOCK  2
+#define NV_CTRL_TARGET_TYPE_VCSC       3 /* Visual Computing System */
+
+#define NV_CTRL_STRING_NVIDIA_DRIVER_VERSION                    3  /* R--G */
+
+#define X_nvCtrlQueryExtension                      0
+#define X_nvCtrlIsNv                                1
+#define X_nvCtrlQueryStringAttribute                4
+
+typedef struct {
+    CARD8 reqType;
+    CARD8 nvReqType;
+    CARD16 length B16;
+} xnvCtrlQueryExtensionReq;
+#define sz_xnvCtrlQueryExtensionReq 4
+
+typedef struct {
+    BYTE type;   /* X_Reply */
+    CARD8 padb1;
+    CARD16 sequenceNumber B16;
+    CARD32 length B32;
+    CARD16 major B16;
+    CARD16 minor B16;
+    CARD32 padl4 B32;
+    CARD32 padl5 B32;
+    CARD32 padl6 B32;
+    CARD32 padl7 B32;
+    CARD32 padl8 B32;
+} xnvCtrlQueryExtensionReply;
+#define sz_xnvCtrlQueryExtensionReply 32
+
+typedef struct {
+    CARD8 reqType;
+    CARD8 nvReqType;
+    CARD16 length B16;
+    CARD32 screen B32;
+} xnvCtrlIsNvReq;
+#define sz_xnvCtrlIsNvReq 8
+
+typedef struct {
+    BYTE type;   /* X_Reply */
+    CARD8 padb1;
+    CARD16 sequenceNumber B16;
+    CARD32 length B32;
+    CARD32 isnv B32;
+    CARD32 padl4 B32;
+    CARD32 padl5 B32;
+    CARD32 padl6 B32;
+    CARD32 padl7 B32;
+    CARD32 padl8 B32;
+} xnvCtrlIsNvReply;
+#define sz_xnvCtrlIsNvReply 32
+
+typedef struct {
+    CARD8 reqType;
+    CARD8 nvReqType;
+    CARD16 length B16;
+    CARD16 target_id B16;    /* X screen number or GPU number */
+    CARD16 target_type B16;  /* X screen or GPU */
+    CARD32 display_mask B32;
+    CARD32 attribute B32;
+} xnvCtrlQueryStringAttributeReq;
+#define sz_xnvCtrlQueryStringAttributeReq 16
+
+typedef struct {
+    BYTE type;
+    BYTE pad0;
+    CARD16 sequenceNumber B16;
+    CARD32 length B32;
+    CARD32 flags B32;
+    CARD32 n B32;    /* Length of string */
+    CARD32 pad4 B32;
+    CARD32 pad5 B32;
+    CARD32 pad6 B32;
+    CARD32 pad7 B32;
+} xnvCtrlQueryStringAttributeReply;
+#define sz_xnvCtrlQueryStringAttributeReply 32
+
+#define NVCTRL_EXT_NEED_CHECK          (XPointer)(~0)
+#define NVCTRL_EXT_NEED_NOTHING        (XPointer)(0)
+#define NVCTRL_EXT_NEED_TARGET_SWAP    (XPointer)(1)
+
+static XExtensionInfo _nvctrl_ext_info_data;
+static XExtensionInfo *nvctrl_ext_info = &_nvctrl_ext_info_data;
+static /* const */ char *nvctrl_extension_name = NV_CONTROL_NAME;
+
+#define XNVCTRLCheckExtension(dpy,i,val) \
+  XextCheckExtension (dpy, i, nvctrl_extension_name, val)
+#define XNVCTRLSimpleCheckExtension(dpy,i) \
+  XextSimpleCheckExtension (dpy, i, nvctrl_extension_name)
+
+static int close_display();
+static /* const */ XExtensionHooks nvctrl_extension_hooks = {
+    NULL,                               /* create_gc */
+    NULL,                               /* copy_gc */
+    NULL,                               /* flush_gc */
+    NULL,                               /* free_gc */
+    NULL,                               /* create_font */
+    NULL,                               /* free_font */
+    close_display,                      /* close_display */
+    NULL,                               /* wire_to_event */
+    NULL,                               /* event_to_wire */
+    NULL,                               /* error */
+    NULL,                               /* error_string */
+};
+
+static XEXT_GENERATE_FIND_DISPLAY (find_display, nvctrl_ext_info,
+                                   nvctrl_extension_name, 
+                                   &nvctrl_extension_hooks,
+                                   NV_CONTROL_EVENTS, NVCTRL_EXT_NEED_CHECK)
+
+static XEXT_GENERATE_CLOSE_DISPLAY (close_display, nvctrl_ext_info)
+
+static Bool XNVCTRLQueryVersion (Display *dpy, int *major, int *minor);
+
+/*
+ * NV-CONTROL versions 1.8 and 1.9 pack the target_type and target_id
+ * fields in reversed order.  In order to talk to one of these servers,
+ * we need to swap these fields.
+ */
+static void XNVCTRLCheckTargetData(Display *dpy, XExtDisplayInfo *info,
+                                   int *target_type, int *target_id)
+{
+    /* Find out what the server's NV-CONTROL version is and
+     * setup for swapping if we need to.
+     */
+    if (info->data == NVCTRL_EXT_NEED_CHECK) {
+        int major, minor;
+
+        if (XNVCTRLQueryVersion(dpy, &major, &minor)) {
+            if (major == 1 &&
+                (minor == 8 || minor == 9)) {
+                info->data = NVCTRL_EXT_NEED_TARGET_SWAP;
+            } else {
+                info->data = NVCTRL_EXT_NEED_NOTHING;
+            }
+        } else {
+            info->data = NVCTRL_EXT_NEED_NOTHING;
+        }
+    }
+
+    /* We need to swap the target_type and target_id */
+    if (info->data == NVCTRL_EXT_NEED_TARGET_SWAP) {
+        int tmp;
+        tmp = *target_type;
+        *target_type = *target_id;
+        *target_id = tmp;
+    }
+}
+
+
+static Bool XNVCTRLQueryExtension (
+    Display *dpy,
+    int *event_basep,
+    int *error_basep
+){
+    XExtDisplayInfo *info = find_display (dpy);
+
+    if (XextHasExtension(info)) {
+        if (event_basep) *event_basep = info->codes->first_event;
+        if (error_basep) *error_basep = info->codes->first_error;
+        return True;
+    } else {
+        return False;
+    }
+}
+
+
+static Bool XNVCTRLQueryVersion (
+    Display *dpy,
+    int *major,
+    int *minor
+){
+    XExtDisplayInfo *info = find_display (dpy);
+    xnvCtrlQueryExtensionReply rep;
+    xnvCtrlQueryExtensionReq   *req;
+
+    if(!XextHasExtension(info))
+        return False;
+
+    XNVCTRLCheckExtension (dpy, info, False);
+
+    LockDisplay (dpy);
+    GetReq (nvCtrlQueryExtension, req);
+    req->reqType = info->codes->major_opcode;
+    req->nvReqType = X_nvCtrlQueryExtension;
+    if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
+        UnlockDisplay (dpy);
+        SyncHandle ();
+        return False;
+    }
+    if (major) *major = rep.major;
+    if (minor) *minor = rep.minor;
+    UnlockDisplay (dpy);
+    SyncHandle ();
+    return True;
+}
+
+
+static Bool XNVCTRLIsNvScreen (
+    Display *dpy,
+    int screen
+){
+    XExtDisplayInfo *info = find_display (dpy);
+    xnvCtrlIsNvReply rep;
+    xnvCtrlIsNvReq   *req;
+    Bool isnv;
+
+    if(!XextHasExtension(info))
+        return False;
+
+    XNVCTRLCheckExtension (dpy, info, False);
+
+    LockDisplay (dpy);
+    GetReq (nvCtrlIsNv, req);
+    req->reqType = info->codes->major_opcode;
+    req->nvReqType = X_nvCtrlIsNv;
+    req->screen = screen;
+    if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
+        UnlockDisplay (dpy);
+        SyncHandle ();
+        return False;
+    }
+    isnv = rep.isnv;
+    UnlockDisplay (dpy);
+    SyncHandle ();
+    return isnv;
+}
+
+
+static Bool XNVCTRLQueryTargetStringAttribute (
+    Display *dpy,
+    int target_type,
+    int target_id,
+    unsigned int display_mask,
+    unsigned int attribute,
+    char **ptr
+){
+    XExtDisplayInfo *info = find_display (dpy);
+    xnvCtrlQueryStringAttributeReply rep;
+    xnvCtrlQueryStringAttributeReq   *req;
+    Bool exists;
+    int length, numbytes, slop;
+
+    if (!ptr) return False;
+
+    if(!XextHasExtension(info))
+        return False;
+
+    XNVCTRLCheckExtension (dpy, info, False);
+    XNVCTRLCheckTargetData(dpy, info, &target_type, &target_id);
+
+    LockDisplay (dpy);
+    GetReq (nvCtrlQueryStringAttribute, req);
+    req->reqType = info->codes->major_opcode;
+    req->nvReqType = X_nvCtrlQueryStringAttribute;
+    req->target_type = target_type;
+    req->target_id = target_id;
+    req->display_mask = display_mask;
+    req->attribute = attribute;
+    if (!_XReply (dpy, (xReply *) &rep, 0, False)) {
+        UnlockDisplay (dpy);
+        SyncHandle ();
+        return False;
+    }
+    length = rep.length;
+    numbytes = rep.n;
+    slop = numbytes & 3;
+    *ptr = (char *) Xmalloc(numbytes);
+    if (! *ptr) {
+        _XEatData(dpy, length);
+        UnlockDisplay (dpy);
+        SyncHandle ();
+        return False;
+    } else {
+        _XRead(dpy, (char *) *ptr, numbytes);
+        if (slop) _XEatData(dpy, 4-slop);
+    }
+    exists = rep.flags;
+    UnlockDisplay (dpy);
+    SyncHandle ();
+    return exists;
+}
+
+static Bool XNVCTRLQueryStringAttribute (
+    Display *dpy,
+    int screen,
+    unsigned int display_mask,
+    unsigned int attribute,
+    char **ptr
+){
+    return XNVCTRLQueryTargetStringAttribute(dpy, NV_CTRL_TARGET_TYPE_X_SCREEN,
+                                             screen, display_mask,
+                                             attribute, ptr);
+}
+
+
+Bool VA_NVCTRLQueryDirectRenderingCapable( Display *dpy, int screen,
+    Bool *isCapable )
+{
+    int event_base;
+    int error_base;
+
+    if (isCapable)
+        *isCapable = False;
+
+    if (!XNVCTRLQueryExtension(dpy, &event_base, &error_base))
+        return False;
+
+    if (isCapable && XNVCTRLIsNvScreen(dpy, screen))
+        *isCapable = True;
+
+    return True;
+}
+
+Bool VA_NVCTRLGetClientDriverName( Display *dpy, int screen,
+    int *ddxDriverMajorVersion, int *ddxDriverMinorVersion,
+    int *ddxDriverPatchVersion, char **clientDriverName )
+{
+    if (ddxDriverMajorVersion)
+        *ddxDriverMajorVersion = 0;
+    if (ddxDriverMinorVersion)
+        *ddxDriverMinorVersion = 0;
+    if (ddxDriverPatchVersion)
+        *ddxDriverPatchVersion = 0;
+    if (clientDriverName)
+        *clientDriverName = NULL;
+
+    char *nvidia_driver_version = NULL;
+    if (!XNVCTRLQueryStringAttribute(dpy, screen, 0, NV_CTRL_STRING_NVIDIA_DRIVER_VERSION, &nvidia_driver_version))
+        return False;
+
+    char *end, *str = nvidia_driver_version;
+    unsigned long v = strtoul(str, &end, 10);
+    if (end && end != str) {
+        if (ddxDriverMajorVersion)
+            *ddxDriverMajorVersion = v;
+        if (*(str = end) == '.') {
+            v = strtoul(str + 1, &end, 10);
+            if (end && end != str && (*end == '.' || *end == '\0')) {
+                if (ddxDriverMinorVersion)
+                    *ddxDriverMinorVersion = v;
+                if (*(str = end) == '.') {
+                    v = strtoul(str + 1, &end, 10);
+                    if (end && end != str && *end == '\0') {
+                        if (ddxDriverPatchVersion)
+                            *ddxDriverPatchVersion = v;
+                    }
+                }
+            }
+        }
+    }
+    Xfree(nvidia_driver_version);
+
+    if (clientDriverName)
+        *clientDriverName = strdup("nvidia");
+
+    return True;
+}
diff --git a/src/x11/va_nvctrl.h b/src/x11/va_nvctrl.h
new file mode 100644
index 0000000..c137b86
--- /dev/null
+++ b/src/x11/va_nvctrl.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2008 NVIDIA, Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef VA_NVCTRLLIB_H
+#define VA_NVCTRLLIB_H
+
+#include <X11/Xlib.h>
+
+Bool VA_NVCTRLQueryDirectRenderingCapable( Display *dpy, int screen,
+    Bool *isCapable );
+
+Bool VA_NVCTRLGetClientDriverName( Display *dpy, int screen,
+    int *ddxDriverMajorVersion, int *ddxDriverMinorVersion,
+    int *ddxDriverPatchVersion, char **clientDriverName );
+
+#endif /* VA_NVCTRLLIB_H */
diff --git a/src/x11/va_x11.c b/src/x11/va_x11.c
new file mode 100644
index 0000000..9de904e
--- /dev/null
+++ b/src/x11/va_x11.c
@@ -0,0 +1,262 @@
+/*
+ * Copyright (c) 2007 Intel Corporation. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#define _GNU_SOURCE 1
+#include "config.h"
+#include "va.h"
+#include "va_backend.h"
+#include "va_x11.h"
+#include "va_dri.h"
+#include "va_dri2.h"
+#include "va_dricommon.h"
+#include "va_nvctrl.h"
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+
+static VADisplayContextP pDisplayContexts = NULL;
+
+static void va_errorMessage(const char *msg, ...)
+{
+    va_list args;
+
+    fprintf(stderr, "libva error: ");
+    va_start(args, msg);
+    vfprintf(stderr, msg, args);
+    va_end(args);
+}
+
+static void va_infoMessage(const char *msg, ...)
+{
+    va_list args;
+
+    fprintf(stderr, "libva: ");
+    va_start(args, msg);
+    vfprintf(stderr, msg, args);
+    va_end(args);
+}
+
+static int va_DisplayContextIsValid (
+    VADisplayContextP pDisplayContext
+)
+{
+    VADisplayContextP ctx = pDisplayContexts;
+
+    while (ctx)
+    {
+	if (ctx == pDisplayContext && pDisplayContext->pDriverContext)
+	    return 1;
+	ctx = ctx->pNext;
+    }
+    return 0;
+}
+
+static void va_DisplayContextDestroy (
+    VADisplayContextP pDisplayContext
+)
+{
+    VADisplayContextP *ctx = &pDisplayContexts;
+
+    /* Throw away pDisplayContext */
+    while (*ctx)
+    {
+	if (*ctx == pDisplayContext)
+	{
+	    *ctx = pDisplayContext->pNext;
+	    pDisplayContext->pNext = NULL;
+	    break;
+	}
+	ctx = &((*ctx)->pNext);
+    }
+    free(pDisplayContext->pDriverContext->dri_state);
+    free(pDisplayContext->pDriverContext);
+    free(pDisplayContext);
+}
+
+
+static VAStatus va_DRI2GetDriverName (
+    VADisplayContextP pDisplayContext,
+    char **driver_name
+)
+{
+    VADriverContextP ctx = pDisplayContext->pDriverContext;
+
+    if (!isDRI2Connected(ctx, driver_name))
+        return VA_STATUS_ERROR_UNKNOWN;
+
+    return VA_STATUS_SUCCESS;
+}
+
+static VAStatus va_DRIGetDriverName (
+    VADisplayContextP pDisplayContext,
+    char **driver_name
+)
+{
+    VADriverContextP ctx = pDisplayContext->pDriverContext;
+
+    if (!isDRI1Connected(ctx, driver_name))
+        return VA_STATUS_ERROR_UNKNOWN;
+
+    return VA_STATUS_SUCCESS;
+}
+
+static VAStatus va_NVCTRL_GetDriverName (
+    VADisplayContextP pDisplayContext,
+    char **driver_name
+)
+{
+    VADriverContextP ctx = pDisplayContext->pDriverContext;
+    VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
+    int direct_capable;
+    int driver_major;
+    int driver_minor;
+    int driver_patch;
+    Bool result = True;
+    char *nvidia_driver_name = NULL;
+
+    if (result)
+    {
+        result = VA_NVCTRLQueryDirectRenderingCapable(ctx->x11_dpy, ctx->x11_screen, &direct_capable);
+        if (!result)
+        {
+            va_errorMessage("VA_NVCTRLQueryDirectRenderingCapable failed\n");
+        }
+    }
+    if (result)
+    {
+        result = direct_capable;
+        if (!result)
+        {
+            va_errorMessage("VA_NVCTRLQueryDirectRenderingCapable returned false\n");
+        }
+    }
+    if (result)
+    {
+        result = VA_NVCTRLGetClientDriverName(ctx->x11_dpy, ctx->x11_screen, &driver_major, &driver_minor,
+                                              &driver_patch, &nvidia_driver_name);
+        if (!result)
+        {
+            va_errorMessage("VA_NVCTRLGetClientDriverName returned false\n");
+        }
+    }
+    if (result)
+    {
+        vaStatus = VA_STATUS_SUCCESS;
+        va_infoMessage("va_NVCTRL_GetDriverName: %d.%d.%d %s (screen %d)\n",
+                       driver_major, driver_minor, driver_patch,
+                       nvidia_driver_name, ctx->x11_screen);
+	if (driver_name)
+            *driver_name = nvidia_driver_name;
+    }
+    return vaStatus;
+}
+
+static VAStatus va_DisplayContextGetDriverName (
+    VADisplayContextP pDisplayContext,
+    char **driver_name
+)
+{
+    VAStatus vaStatus;
+    char *driver_name_env;
+
+    if (driver_name)
+	*driver_name = NULL;
+
+    if ((driver_name_env = getenv("LIBVA_DRIVER_NAME")) != NULL
+        && geteuid() == getuid())
+    {
+        /* don't allow setuid apps to use LIBVA_DRIVER_NAME */
+        *driver_name = strdup(driver_name_env);
+        return VA_STATUS_SUCCESS;
+    }
+
+    vaStatus = va_DRI2GetDriverName(pDisplayContext, driver_name);
+    if (vaStatus != VA_STATUS_SUCCESS)
+        vaStatus = va_DRIGetDriverName(pDisplayContext, driver_name);
+    if (vaStatus != VA_STATUS_SUCCESS)
+        vaStatus = va_NVCTRL_GetDriverName(pDisplayContext, driver_name);
+   
+    return vaStatus;
+}
+
+
+VADisplay vaGetDisplay (
+    Display *native_dpy /* implementation specific */
+)
+{
+  VADisplay dpy = NULL;
+  VADisplayContextP pDisplayContext = pDisplayContexts;
+
+  if (!native_dpy)
+      return NULL;
+
+  while (pDisplayContext)
+  {
+      if (pDisplayContext->pDriverContext &&
+	  pDisplayContext->pDriverContext->x11_dpy == native_dpy)
+      {
+          dpy = (VADisplay)pDisplayContext;
+          break;
+      }
+      pDisplayContext = pDisplayContext->pNext;
+  }
+
+  if (!dpy)
+  {
+      /* create new entry */
+      VADriverContextP pDriverContext;
+      struct dri_state *dri_state;
+      pDisplayContext = calloc(1, sizeof(*pDisplayContext));
+      pDriverContext  = calloc(1, sizeof(*pDriverContext));
+      dri_state       = calloc(1, sizeof(*dri_state));
+      if (pDisplayContext && pDriverContext && dri_state)
+      {
+	  pDriverContext->x11_dpy          = native_dpy;
+	  pDisplayContext->pNext           = pDisplayContexts;
+	  pDisplayContext->pDriverContext  = pDriverContext;
+	  pDisplayContext->vaIsValid       = va_DisplayContextIsValid;
+	  pDisplayContext->vaDestroy       = va_DisplayContextDestroy;
+	  pDisplayContext->vaGetDriverName = va_DisplayContextGetDriverName;
+	  pDisplayContexts                 = pDisplayContext;
+	  pDriverContext->dri_state 	   = dri_state;
+	  dpy                              = (VADisplay)pDisplayContext;
+      }
+      else
+      {
+	  if (pDisplayContext)
+	      free(pDisplayContext);
+	  if (pDriverContext)
+	      free(pDriverContext);
+          if (dri_state)
+              free(dri_state);
+      }
+  }
+  
+  return dpy;
+}
diff --git a/src/x11/va_x11.h b/src/x11/va_x11.h
new file mode 100644
index 0000000..2171ac6
--- /dev/null
+++ b/src/x11/va_x11.h
@@ -0,0 +1,67 @@
+#ifndef _VA_X11_H_
+#define _VA_X11_H_
+
+#ifdef IN_LIBVA
+#include "va.h"
+#else
+#include <va/va.h>
+#endif
+#include <X11/Xlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Returns a suitable VADisplay for VA API
+ */
+VADisplay vaGetDisplay (
+    Display *dpy
+);
+
+/*
+ * Output rendering
+ * Following is the rendering interface for X windows, 
+ * to get the decode output surface to a X drawable
+ * It basically performs a de-interlacing (if needed), 
+ * color space conversion and scaling to the destination
+ * rectangle
+ */
+/* de-interlacing flags for vaPutSurface */
+#define VA_FRAME_PICTURE	0x00000000 
+#define VA_TOP_FIELD		0x00000001
+#define VA_BOTTOM_FIELD		0x00000002
+
+/* 
+ * clears the drawable with background color.
+ * for hardware overlay based implementation this flag
+ * can be used to turn off the overlay
+ */
+#define VA_CLEAR_DRAWABLE	0x00000008 
+
+/* color space conversion flags for vaPutSurface */
+#define VA_SRC_BT601		0x00000010
+#define VA_SRC_BT709		0x00000020
+
+VAStatus vaPutSurface (
+    VADisplay dpy,
+    VASurfaceID surface,	
+    Drawable draw, /* X Drawable */
+    short srcx,
+    short srcy,
+    unsigned short srcw,
+    unsigned short srch,
+    short destx,
+    short desty,
+    unsigned short destw,
+    unsigned short desth,
+    VARectangle *cliprects, /* client supplied destination clip list */
+    unsigned int number_cliprects, /* number of clip rects in the clip list */
+    unsigned int flags /* PutSurface flags */
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VA_X11_H_ */
diff --git a/test/Makefile.am b/test/Makefile.am
index 22e2a5d..58e1677 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -27,13 +27,14 @@
 
 testdir = $(bindir)
 
-AM_CFLAGS = -I$(top_srcdir)/../../include/external/ -I$(top_srcdir)/src -DIN_LIBVA
+AM_CFLAGS = -I$(top_srcdir)/../../include/external/ -I$(top_srcdir)/src -I$(top_srcdir)/src/x11 -DIN_LIBVA
 
 TESTS = $(check_PROGRAMS)
 
-TEST_LIBS = ../src/libva.la
+TEST_LIBS = $(top_srcdir)/src/$(libvabackendlib)
 
-vainfo_LDADD = ../src/libva.la
+vainfo_LDADD = $(top_srcdir)/src/$(libvabackendlib)
+vainfo_DEPENDENCIES = $(top_srcdir)/src/$(libvabackendlib)
 vainfo_SOURCES = vainfo.c
 
 test_01_LDADD = $(TEST_LIBS)
@@ -72,7 +73,7 @@
 test_12_LDADD = $(TEST_LIBS)
 test_12_SOURCES = test_12.c
 
-EXTRA_DIST = test_common.c
+EXTRA_DIST = test_common.c mpeg2-I.jpg mpeg2-I.mpg
 
 valgrind:	$(check_PROGRAMS)
 	for a in $(check_PROGRAMS); do \
diff --git a/test/test.c b/test/test.c
index 41972c7..2e98b12 100644
--- a/test/test.c
+++ b/test/test.c
@@ -22,7 +22,11 @@
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#ifdef IN_LIBVA
 #include <va_x11.h>
+#else
+#include <va/va_x11.h>
+#endif
 
 #include "assert.h"
 #include <stdarg.h>
diff --git a/test/test_12.c b/test/test_12.c
index 9bdc1ef..c9e4db9 100644
--- a/test/test_12.c
+++ b/test/test_12.c
@@ -24,7 +24,12 @@
 
 #define TEST_DESCRIPTION	"Sample MPEG2 VLD Decoding"
 
+#ifdef IN_LIBVA
 #include <va_x11.h>
+#else
+#include <va/va_x11.h>
+#endif
+
 #include "test_common.c"
 
 #include <sys/types.h>
@@ -217,7 +222,7 @@
     va_status = vaEndPicture(va_dpy,vaContext);
     ASSERT( VA_STATUS_SUCCESS == va_status );
 
-    va_status = vaSyncSurface(va_dpy, vaContext, vaSurface);
+    va_status = vaSyncSurface(va_dpy, vaSurface);
     ASSERT( VA_STATUS_SUCCESS == va_status );
     
     win = XCreateSimpleWindow(dpy, RootWindow(dpy, 0), 0, 0,
diff --git a/test/test_common.c b/test/test_common.c
index 6b63748..91774da 100644
--- a/test/test_common.c
+++ b/test/test_common.c
@@ -22,7 +22,11 @@
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#ifdef IN_LIBVA
 #include <va_x11.h>
+#else
+#include <va/va_x11.h>
+#endif
 
 #include "assert.h"
 #include <stdarg.h>
@@ -59,7 +63,7 @@
 
 int main(int argc, const char* argv[])
 {
-  const char *name = rindex(argv[0], '/');
+  const char *name = strrchr(argv[0], '/');
   if (name)
       name++;
   else
diff --git a/test/vainfo.c b/test/vainfo.c
index a886815..79ee055 100644
--- a/test/vainfo.c
+++ b/test/vainfo.c
@@ -22,7 +22,11 @@
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#include <X11/va_x11.h>
+#ifdef IN_LIBVA
+#include <va_x11.h>
+#else
+#include <va/va_x11.h>
+#endif
 
 #include <stdarg.h>
 #include <stdio.h>
@@ -32,7 +36,7 @@
 
 #define CHECK_VASTATUS(va_status,func, ret)                             \
 if (va_status != VA_STATUS_SUCCESS) {                                   \
-    fprintf(stderr,"%s failed with error code %d (%s),exit\n",func, vaErrorStr(va_status)); \
+    fprintf(stderr,"%s failed with error code %d (%s),exit\n",func, va_status, vaErrorStr(va_status)); \
     exit(ret);                                                          \
 }
 
@@ -52,6 +56,7 @@
             case VAProfileVC1Advanced: return "VAProfileVC1Advanced";
             case VAProfileH263Baseline: return "VAProfileH263Baseline";
     }
+    return "<unknown profile>";
 }
 
 
@@ -65,6 +70,7 @@
             case VAEntrypointDeblocking:return "VAEntrypointDeblocking";
             case VAEntrypointEncSlice:return "VAEntrypointEncSlice";
     }
+    return "<unknown entrypoint>";
 }
 
 int main(int argc, const char* argv[])
@@ -75,7 +81,7 @@
   int major_version, minor_version;
   const char *driver;
   const char *display = getenv("DISPLAY");
-  const char *name = rindex(argv[0], '/'); 
+  const char *name = strrchr(argv[0], '/'); 
   VAProfile profile;
   VAEntrypoint entrypoint, entrypoints[10];
   int num_entrypoint;