diff --git a/UefiApplication/UefiApplication.vcxproj b/UefiApplication/UefiApplication.vcxproj
new file mode 100644
index 0000000..9b68bbd
--- /dev/null
+++ b/UefiApplication/UefiApplication.vcxproj
@@ -0,0 +1,39 @@
+
+
+
+
+ Release
+ x64
+
+
+
+ {79D78FD5-8F41-442F-944E-81774DC9DF39}
+ Application
+ false
+ v140
+ true
+
+
+
+
+
+
+
+
+ UefiApplicationEntryPoint.lib;%(AdditionalDependencies)
+ EFI Application
+
+
+ copy /Y "$(TargetDir)$(TargetName).efi" "G:\efi\boot\bootx64.efi"
+ copy /Y "$(TargetDir)$(TargetName).efi" "G:\efi\boot\bootx64.efi"
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UefiApplication/UefiApplication.vcxproj.filters b/UefiApplication/UefiApplication.vcxproj.filters
new file mode 100644
index 0000000..713d075
--- /dev/null
+++ b/UefiApplication/UefiApplication.vcxproj.filters
@@ -0,0 +1,27 @@
+
+
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+
+
+ {ec1e3a7f-36df-44fc-bc0a-f8c440f0ca09}
+
+
+ {8d73de3e-b0e4-4e27-85bd-0f93f438fbaf}
+
+
+
+
+ include
+
+
+
\ No newline at end of file
diff --git a/UefiApplication/imageldr.c b/UefiApplication/imageldr.c
new file mode 100644
index 0000000..cc68bf4
--- /dev/null
+++ b/UefiApplication/imageldr.c
@@ -0,0 +1,23 @@
+#include "imageldr.h"
+
+#include
+#include
+#include
+
+EFI_STATUS ImageLoad( IN EFI_HANDLE ParentHandle, IN EFI_DEVICE_PATH* DevicePath, OUT EFI_HANDLE* ImageHandle )
+{
+ EFI_STATUS status = EFI_NOT_FOUND;
+ // Load image in memory
+ status = gBS->LoadImage( TRUE, ParentHandle, DevicePath, NULL, 0, ImageHandle );
+ if (status != EFI_SUCCESS)
+ {
+ Print( L"[!] LoadImage error = %X\r\n", status );
+ }
+
+ return status;
+}
+
+EFI_STATUS ImageStart( IN EFI_HANDLE ImageHandle )
+{
+ return gBS->StartImage( ImageHandle, (UINTN *)NULL, (CHAR16 **)NULL );
+}
diff --git a/UefiApplication/imageldr.h b/UefiApplication/imageldr.h
new file mode 100644
index 0000000..70e39b9
--- /dev/null
+++ b/UefiApplication/imageldr.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#include
+
+EFI_STATUS ImageLoad( IN EFI_HANDLE ParentHandle, IN EFI_DEVICE_PATH* DevicePath, OUT EFI_HANDLE* ImageHandle );
+
+EFI_STATUS ImageStart( IN EFI_HANDLE ImageHandle );
\ No newline at end of file
diff --git a/UefiApplication/main.c b/UefiApplication/main.c
new file mode 100644
index 0000000..2f6a9d4
--- /dev/null
+++ b/UefiApplication/main.c
@@ -0,0 +1,147 @@
+//
+// Basic UEFI Libraries
+//
+#include
+#include
+#include
+#include
+
+//
+// Boot and Runtime Services
+//
+#include
+#include
+#include
+
+//
+// Protocols
+//
+#include
+
+//
+// Custom Driver Protocol
+//
+#include "../UefiDriver/drvproto.h"
+EFI_GUID gEfiSampleDriverProtocolGuid = EFI_RUNTIME_DRIVER_PROTOCOL_GUID;
+
+//
+// My includes
+//
+#include "imageldr.h"
+
+//
+// Globals
+//
+
+// We run on any UEFI Specification
+extern CONST UINT32 _gUefiDriverRevision = 0;
+// Our name
+CHAR8 *gEfiCallerBaseName = "UefiApplication";
+// Windows Boot Manager x64 image path
+static CHAR16 *gRuntimeDriverImagePath = L"\\EFI\\Boot\\rtdriver.efi";
+
+//
+// Try to find gWindowsBootX64ImagePath by browsing each device
+//
+EFI_STATUS LocateFile( IN CHAR16* ImagePath, OUT EFI_DEVICE_PATH** DevicePath )
+{
+ EFI_FILE_IO_INTERFACE *ioDevice;
+ EFI_FILE_HANDLE handleRoots, bootFile;
+ EFI_HANDLE* handleArray;
+ UINTN nbHandles, i;
+ EFI_STATUS efistatus;
+
+ *DevicePath = (EFI_DEVICE_PATH *)NULL;
+ efistatus = gBS->LocateHandleBuffer( ByProtocol, &gEfiSimpleFileSystemProtocolGuid, NULL, &nbHandles, &handleArray );
+ if (EFI_ERROR( efistatus ))
+ return efistatus;
+
+ Print( L"\r\nNumber of UEFI Filesystem Devices: %d\r\n", nbHandles );
+
+ for (i = 0; i < nbHandles; i++)
+ {
+ efistatus = gBS->HandleProtocol( handleArray[i], &gEfiSimpleFileSystemProtocolGuid, &ioDevice );
+ if (efistatus != EFI_SUCCESS)
+ continue;
+
+ efistatus = ioDevice->OpenVolume( ioDevice, &handleRoots );
+ if (EFI_ERROR( efistatus ))
+ continue;
+
+ efistatus = handleRoots->Open( handleRoots, &bootFile, ImagePath, EFI_FILE_MODE_READ, EFI_FILE_READ_ONLY );
+ if (!EFI_ERROR( efistatus ))
+ {
+ handleRoots->Close( bootFile );
+ *DevicePath = FileDevicePath( handleArray[i], ImagePath );
+ Print( L"\r\nFound file at \'%s\'\r\n", ConvertDevicePathToText( *DevicePath, TRUE, TRUE ) );
+ break;
+ }
+ }
+
+ return efistatus;
+}
+
+EFI_STATUS EFIAPI UefiMain( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE* SystemTable )
+{
+ EFI_STATUS efiStatus;
+ EFI_RUNTIME_DRIVER_PROTOCOL* RuntimeProtocol;
+ EFI_DEVICE_PATH* RuntimeDriverDevicePath = NULL;
+ EFI_HANDLE RuntimeDriverHandle = NULL;
+
+ //
+ // Print stuff out
+ //
+ Print( L"Hello World! My handle is %lx and System Table is at %p\n", ImageHandle, SystemTable );
+
+ //
+ // Locate the runtime driver
+ //
+ efiStatus = LocateFile( gRuntimeDriverImagePath, &RuntimeDriverDevicePath );
+ if (EFI_ERROR( efiStatus ))
+ goto Exit;
+
+ //
+ // Load Runtime Driver into memory
+ //
+ efiStatus = ImageLoad( ImageHandle, RuntimeDriverDevicePath, &RuntimeDriverHandle );
+ if (EFI_ERROR( efiStatus ))
+ goto Exit;
+
+ //
+ // Transfer executon to the Runtime Driver
+ //
+ efiStatus = ImageStart( RuntimeDriverHandle );
+ if (EFI_ERROR( efiStatus ))
+ goto Exit;
+
+ //
+ // Check if the runtime driver is loaded
+ //
+ efiStatus = gBS->LocateProtocol( &gEfiSampleDriverProtocolGuid, NULL, &RuntimeProtocol );
+ if (EFI_ERROR( efiStatus ))
+ goto Exit;
+
+ //
+ // Print the value and exit
+ //
+ Print( L"Runtime driver is loaded: %lx\n", RuntimeProtocol->Value );
+ efiStatus = EFI_SUCCESS;
+
+Exit:
+ if (efiStatus != EFI_SUCCESS)
+ {
+ ErrorPrint( L"UEFI Runtime Driver Loader failed with status: %lx\r\n", efiStatus );
+ }
+
+ return efiStatus;
+}
+
+
+
+EFI_STATUS EFIAPI UefiUnload( IN EFI_HANDLE ImageHandle )
+{
+ //
+ // This code should be compiled out and never called
+ //
+ ASSERT( FALSE );
+}
diff --git a/UefiDriver/UefiDriver.vcxproj b/UefiDriver/UefiDriver.vcxproj
new file mode 100644
index 0000000..b12e3c1
--- /dev/null
+++ b/UefiDriver/UefiDriver.vcxproj
@@ -0,0 +1,78 @@
+
+
+
+
+ Release
+ x64
+
+
+
+ {DF325AB7-67A6-473E-93FF-16955AFBC063}
+ Win32Proj
+ v140
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+ $(EDK_PATH)\MdePkg\Include;$(EDK_PATH)\MdePkg\Include\X64;$(IncludePath)
+
+
+
+
+
+
+ UefiDriverEntryPoint.lib;BaseCryptLib.lib;IntrinsicLib.lib;%(AdditionalDependencies)
+ EFI Runtime
+
+
+ copy /Y "$(TargetDir)$(TargetName).efi" "G:\efi\boot\rtdriver.efi"
+
+
+ copy /Y "$(TargetDir)$(TargetName).efi" "G:\efi\boot\rtdriver.efi"
+
+
+ __UD_STANDALONE__;_UNICODE;UNICODE;%(PreprocessorDefinitions)
+ 4706;4055;4054
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/UefiDriver/UefiDriver.vcxproj.filters b/UefiDriver/UefiDriver.vcxproj.filters
new file mode 100644
index 0000000..3c8fc8e
--- /dev/null
+++ b/UefiDriver/UefiDriver.vcxproj.filters
@@ -0,0 +1,104 @@
+
+
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src\udis86
+
+
+ src\udis86
+
+
+ src\udis86
+
+
+ src
+
+
+ src
+
+
+ src\udis86
+
+
+ src\udis86
+
+
+ src\udis86
+
+
+ src
+
+
+
+
+ include\udis86
+
+
+ include\udis86
+
+
+ include\udis86
+
+
+ include\udis86
+
+
+ include\udis86
+
+
+ include\udis86
+
+
+ include
+
+
+ include
+
+
+ include\udis86
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+ include
+
+
+
+
+ {53d6ef03-38de-42b6-98a7-be4995765f1a}
+
+
+ {2a260963-9c87-4302-a8e0-cb9c63d5f4d9}
+
+
+ {15de1be8-845c-4c4a-96b6-94168d6b0955}
+
+
+ {6870edff-c3a7-4b92-b333-71f1f7a77f76}
+
+
+
+
+ src
+
+
+
\ No newline at end of file
diff --git a/UefiDriver/drv.h b/UefiDriver/drv.h
new file mode 100644
index 0000000..099ddad
--- /dev/null
+++ b/UefiDriver/drv.h
@@ -0,0 +1,91 @@
+//
+// Basic UEFI Libraries
+//
+#include
+#include
+#include
+#include
+
+//
+// Boot and Runtime Services
+//
+#include
+#include
+
+//
+// PCI Protocol
+//
+#include
+#include
+
+//
+// Custom Driver Protocol
+//
+#include "drvproto.h"
+
+//
+// Device Extension for our Device
+//
+#define DEVICE_EXTENSION_SIGNATURE SIGNATURE_32('R','T','D','R')
+#define DEVICE_EXTENSION_FROM_PROTOCOL(a) CR(a, DEVICE_EXTENSION, DeviceProtocol, DEVICE_EXTENSION_SIGNATURE)
+typedef struct _DEVICE_EXTENSION
+{
+ UINTN Signature;
+ EFI_RUNTIME_DRIVER_PROTOCOL DeviceProtocol;
+ EFI_HANDLE DeviceHandle;
+ EFI_PCI_IO_PROTOCOL* PciIo;
+} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
+
+//
+// Name Routines
+//
+EFI_STATUS
+EFIAPI
+RuntimeComponentNameGetControllerName (
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,
+ IN EFI_HANDLE ControllerHandle,
+ IN EFI_HANDLE ChildHandle OPTIONAL,
+ IN CHAR8 *Language,
+ OUT CHAR16 **ControllerName
+);
+
+EFI_STATUS
+EFIAPI
+RuntimeComponentNameGetDriverName (
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,
+ IN CHAR8 *Language,
+ OUT CHAR16 **DriverName
+);
+
+//
+// PnP Routines
+//
+EFI_STATUS
+EFIAPI
+RuntimeDriverSupported (
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,
+ IN EFI_HANDLE Controller,
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
+);
+
+EFI_STATUS
+EFIAPI
+RuntimeDriverStart (
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,
+ IN EFI_HANDLE Controller,
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
+);
+
+EFI_STATUS
+EFIAPI
+RuntimeDriverStop (
+ IN EFI_DRIVER_BINDING_PROTOCOL* This,
+ IN EFI_HANDLE Controller,
+ IN UINTN NumberOfChildren,
+ IN EFI_HANDLE* ChildHandleBuffer
+);
+
+extern EFI_DRIVER_BINDING_PROTOCOL gDriverBindingProtocol;
+extern EFI_COMPONENT_NAME2_PROTOCOL gComponentName2Protocol;
+extern EFI_COMPONENT_NAME_PROTOCOL gComponentNameProtocol;
+
diff --git a/UefiDriver/drvmain.c b/UefiDriver/drvmain.c
new file mode 100644
index 0000000..fbc8b58
--- /dev/null
+++ b/UefiDriver/drvmain.c
@@ -0,0 +1,289 @@
+#include "drv.h"
+
+//
+// Libraries
+//
+#include
+#include
+
+//
+// Protocols
+//
+#include
+
+//
+// Our includes
+//
+#include "utils.h"
+#include "pe.h"
+#include "imageldr.h"
+#include "hook.h"
+
+//
+// We support unload (but deny it)
+//
+const UINT8 _gDriverUnloadImageCount = 1;
+
+//
+// We require at least UEFI 2.0
+//
+const UINT32 _gUefiDriverRevision = 0x200;
+const UINT32 _gDxeRevision = 0x200;
+
+//
+// Our name
+//
+CHAR8 *gEfiCallerBaseName = "UefiDriver";
+
+// Title
+static CHAR16 *gTitle = L"-= Dude719s UEFI bootkit Runtime Dirver =-\r\n";
+static CHAR16 *gWindowsBootX64ImagePath = L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi";
+static EFI_HANDLE gWindowsImagehandle;
+
+
+//VOID EFIAPI hkOslArchTransferToKernel( VOID* KernelParams, VOID* KiSystemStartup )
+//{
+// // Clear the screen
+// //gST->ConOut->ClearScreen( gST->ConOut );
+// //Print( L"KiSystemStartup = %lx\r\n", KiSystemStartup );
+// //UtilWaitForKey( );
+//
+// OslArchTransferToKernelHook( KernelParams, KernelParams );
+//
+// //oOslArchTransferToKernel( KernelParams, KiSystemStartup );
+//}
+
+//
+// Our ImgArchEfiStartBootApplication hook which takes the winload Image Base as a parameter so we can patch the kernel
+//
+EFI_STATUS EFIAPI hkImgArchEfiStartBootApplication( VOID* Parameters, VOID* ImageBase, UINT32 ImageSize, UINT8 BootOption, UINT64* SomeReturnValue )
+{
+ PIMAGE_NT_HEADERS NtHdr = NULL;
+
+ // Clear the screen
+ gST->ConOut->ClearScreen( gST->ConOut );
+
+ Print( L"Inside ImgArchEfiStartBootApplication\r\n" );
+
+ Print( L"ImageBase = %lx\r\n", ImageBase );
+ Print( L"ImageSize = %lx\r\n", ImageSize );
+
+ NtHdr = ImageNtHeader( ImageBase );
+ if (NtHdr != NULL)
+ {
+ EFI_STATUS EfiStatus = EFI_SUCCESS;
+ UINT8* Found = NULL;
+
+ VOID* ArchpChildAppEntryRoutine = (VOID*)((UINT8*)ImageBase + HEADER_VAL_T( NtHdr, AddressOfEntryPoint ));
+ Print( L"ArchpChildAppEntryRoutine = %lx\r\n", ArchpChildAppEntryRoutine );
+
+ // Find right location to patch
+ EfiStatus = UtilFindPattern( sigOslArchTransferToKernel, 0xCC, sizeof( sigOslArchTransferToKernel ), ImageBase, (UINT32)ImageSize, (VOID**)&Found );
+ if (!EFI_ERROR( EfiStatus ))
+ {
+ Print( L"Found OslArchTransferToKernel call at %lx\r\n", Found );
+
+ //Print( L"hkOslArchTransferToKernel at %lx\r\n", hkOslArchTransferToKernel );
+ //UtilDisassembleCode( (UINT8*)hkOslArchTransferToKernel, (UINTN)hkOslArchTransferToKernel, 20 );
+ oOslArchTransferToKernel = (tOslArchTransferToKernel)UtilCallAddress( Found );
+ Print( L"Original OslArchTransferToKernel at %lx\r\n", oOslArchTransferToKernel );
+ Print( L"OslArchTransferToKernelHook at %lx\r\n", &OslArchTransferToKernelHook );
+
+ // Backup original function bytes before patching
+ OslArchTransferToKernelPatchLocation = (VOID*)Found;
+ CopyMem( (VOID*)OslArchTransferToKernelBackup, (VOID*)Found, 5 );
+ //Print( L"Backup:\r\n" );
+ //UtilDisassembleCode( (UINT8*)Found, (UINTN)Found, 5 );
+
+ // Do patching
+ *(UINT8*)Found = 0xE8;
+ *(UINT32*)(Found + 1) = UtilCalcRelativeCallOffset( (VOID*)Found, (VOID*)&OslArchTransferToKernelHook ); //(UINT32)(((UINTN)&OslArchTransferToKernelHook) - ((UINTN)Found + 1 + sizeof( UINT32 )));
+
+ // Display patched code
+ //Print( L"Patched:\r\n" );
+ //UtilDisassembleCode( (UINT8*)Found, (UINTN)Found, 5 );
+
+ Print( L"OslArchTransferToKernelHook:\r\n" );
+ UtilDisassembleCode( (UINT8*)&OslArchTransferToKernelHook, (VOID*)&OslArchTransferToKernelHook, 20 );
+ }
+ else
+ {
+ Print( L"\r\nImgArchEfiStartBootApplication error, failed to find SetOslEntryPoint patch location. Status: %lx\r\n", EfiStatus );
+ }
+ }
+
+ // Restore original bytes to call
+ CopyMem( ImgArchEfiStartBootApplicationPatchLocation, ImgArchEfiStartBootApplicationBackup, 5 );
+ //Print( L"ImgArchEfiStartBootApplication original = %lx\r\n", oImgArchEfiStartBootApplication );
+ //UtilDisassembleCode( (UINT8*)ImgArchEfiStartBootApplicationPatchLocation, (UINTN)ImgArchEfiStartBootApplicationPatchLocation, 8 );
+
+ Print( L"Press any key to continue..." );
+ UtilWaitForKey( );
+
+ // Clear screen
+ gST->ConOut->ClearScreen( gST->ConOut );
+
+ return oImgArchEfiStartBootApplication( Parameters, ImageBase, ImageSize, BootOption, SomeReturnValue );
+}
+
+//
+// Patch the Windows Boot Manager (bootmgfw.efi)
+//
+EFI_STATUS PatchWindowsBootManager( IN VOID* LocalImageBase, IN EFI_HANDLE BootMgrHandle )
+{
+ EFI_STATUS EfiStatus = EFI_SUCCESS;
+ EFI_LOADED_IMAGE *BootMgrImage = NULL;
+ UINT8* Found = NULL;
+
+ // Get Windows Boot Manager memory mapping data
+ EfiStatus = gBS->HandleProtocol( BootMgrHandle, &gEfiLoadedImageProtocolGuid, (void **)&BootMgrImage );
+ if (EFI_ERROR( EfiStatus ))
+ {
+ ErrorPrint( L"\r\nPatchWindowsBootManager error, failed to get Loaded Image info. Status: %lx\r\n", EfiStatus );
+ return EfiStatus;
+ }
+
+ // Print Windows Boot Manager image info
+ UtilPrintLoadedImageInfo( BootMgrImage );
+
+ // Find right location to patch
+ EfiStatus = UtilFindPattern(
+ sigImgArchEfiStartBootApplicationCall,
+ 0xCC,
+ sizeof( sigImgArchEfiStartBootApplicationCall ),
+ BootMgrImage->ImageBase,
+ (UINT32)BootMgrImage->ImageSize,
+ (VOID**)&Found
+ );
+ if (!EFI_ERROR( EfiStatus ))
+ {
+ // Found address, now let's do our patching
+ UINT32 NewCallRelative = 0;
+
+ Print( L"Found ImgArchEfiStartBootApplication call at %lx\n", Found );
+
+ // Save original call
+ oImgArchEfiStartBootApplication = (tImgArchEfiStartBootApplication)UtilCallAddress( Found );
+ // Backup original bytes and patch location before patching
+ ImgArchEfiStartBootApplicationPatchLocation = (VOID*)Found;
+ CopyMem( ImgArchEfiStartBootApplicationBackup, ImgArchEfiStartBootApplicationPatchLocation, 5 );
+ // Patch call to jump to our hkImgArchEfiStartBootApplication hook
+ NewCallRelative = UtilCalcRelativeCallOffset( (VOID*)Found, (VOID*)&hkImgArchEfiStartBootApplication );
+ //Found
+ *(UINT8*)Found = 0xE8; // Write call opcode
+ *(UINT32*)(Found + 1) = NewCallRelative; // Write the new relative call offset
+ }
+ else
+ {
+ ErrorPrint( L"\r\nPatchWindowsBootManager error, failed to find Archpx64TransferTo64BitApplicationAsm patch location. Status: %lx\r\n", EfiStatus );
+ }
+
+ return EfiStatus;
+}
+
+//
+// Try to find gWindowsBootX64ImagePath by browsing each device
+//
+EFI_STATUS LocateWindowsBootManager( EFI_DEVICE_PATH** LoaderDevicePath )
+{
+ EFI_FILE_IO_INTERFACE *ioDevice;
+ EFI_FILE_HANDLE handleRoots, bootFile;
+ EFI_HANDLE* handleArray;
+ UINTN nbHandles, i;
+ EFI_STATUS efistatus;
+
+ *LoaderDevicePath = (EFI_DEVICE_PATH *)NULL;
+ efistatus = gBS->LocateHandleBuffer( ByProtocol, &gEfiSimpleFileSystemProtocolGuid, NULL, &nbHandles, &handleArray );
+ if (EFI_ERROR( efistatus ))
+ return efistatus;
+
+ Print( L"\r\nNumber of UEFI Filesystem Devices: %d\r\n", nbHandles );
+
+ for (i = 0; i < nbHandles; i++)
+ {
+ efistatus = gBS->HandleProtocol( handleArray[i], &gEfiSimpleFileSystemProtocolGuid, &ioDevice );
+ if (efistatus != EFI_SUCCESS)
+ continue;
+
+ efistatus = ioDevice->OpenVolume( ioDevice, &handleRoots );
+ if (EFI_ERROR( efistatus ))
+ continue;
+
+ efistatus = handleRoots->Open( handleRoots, &bootFile, gWindowsBootX64ImagePath, EFI_FILE_MODE_READ, EFI_FILE_READ_ONLY );
+ if (!EFI_ERROR( efistatus ))
+ {
+ handleRoots->Close( bootFile );
+ *LoaderDevicePath = FileDevicePath( handleArray[i], gWindowsBootX64ImagePath );
+ Print( L"\r\nFound Windows x64 bootmgfw.efi file at \'%s\'\r\n", ConvertDevicePathToText( *LoaderDevicePath, TRUE, TRUE ) );
+ break;
+ }
+ }
+
+ return efistatus;
+}
+
+//
+// Main entry point
+//
+EFI_STATUS EFIAPI UefiMain( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable )
+{
+ EFI_STATUS efiStatus;
+ EFI_LOADED_IMAGE* Image;
+ EFI_DEVICE_PATH* WinBootMgrDevicePath;
+
+ // Clear screen
+ gST->ConOut->ClearScreen( gST->ConOut );
+
+ //
+ // Install required driver binding components
+ //
+ efiStatus = EfiLibInstallDriverBindingComponentName2( ImageHandle, SystemTable, &gDriverBindingProtocol, ImageHandle, &gComponentNameProtocol, &gComponentName2Protocol );
+ if (EFI_ERROR( efiStatus ))
+ goto Exit;
+
+ Print( gTitle );
+ Print( L"\r\nRuntime Driver handle is %lx and System Table is at %p\r\n", ImageHandle, SystemTable );
+
+ efiStatus = gBS->HandleProtocol( ImageHandle, &gEfiLoadedImageProtocolGuid, &Image );
+ if (EFI_ERROR( efiStatus ))
+ goto Exit;
+
+ UtilPrintLoadedImageInfo( Image );
+
+ Print( L"\r\nLocating Windows UEFI Boot Manager...\r\n" );
+ efiStatus = LocateWindowsBootManager( &WinBootMgrDevicePath );
+ if (EFI_ERROR( efiStatus ))
+ goto Exit;
+
+ efiStatus = ImageLoad( ImageHandle, WinBootMgrDevicePath, &gWindowsImagehandle );
+ if (EFI_ERROR( efiStatus ))
+ goto Exit;
+
+ Print( L"\r\nPatching Windows Boot Manager...\r\n" );
+
+ efiStatus = PatchWindowsBootManager( Image->ImageBase, gWindowsImagehandle );
+ if (EFI_ERROR( efiStatus ))
+ goto Exit;
+
+ Print( L"\r\nSuccessfully patched Windows Boot Manager!\r\n" );
+
+ //Print( L"\r\nPress any key to load Windows...\r\n" );
+ //UtilWaitForKey( );
+
+ efiStatus = ImageStart( gWindowsImagehandle );
+ if (EFI_ERROR( efiStatus ))
+ goto Exit;
+
+Exit:
+ return efiStatus;
+}
+
+
+//
+// Unload the driver
+//
+EFI_STATUS EFIAPI UefiUnload( IN EFI_HANDLE ImageHandle )
+{
+ // Disable unloading
+ return EFI_ACCESS_DENIED;
+}
\ No newline at end of file
diff --git a/UefiDriver/drvname.c b/UefiDriver/drvname.c
new file mode 100644
index 0000000..59c673c
--- /dev/null
+++ b/UefiDriver/drvname.c
@@ -0,0 +1,111 @@
+#include "drv.h"
+
+//
+// EFI Component Name Protocol
+//
+EFI_COMPONENT_NAME_PROTOCOL gComponentNameProtocol =
+{
+ RuntimeComponentNameGetDriverName,
+ RuntimeComponentNameGetControllerName,
+ "eng"
+};
+
+//
+// EFI Component Name 2 Protocol
+//
+EFI_COMPONENT_NAME2_PROTOCOL gComponentName2Protocol =
+{
+ (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)RuntimeComponentNameGetDriverName,
+ (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)RuntimeComponentNameGetControllerName,
+ "en"
+};
+
+//
+// Internationalized names for the driver
+//
+EFI_UNICODE_STRING_TABLE gDriverNameTable[] =
+{
+ {
+ "eng;en",
+ L"Runtime Driver"
+ },
+ {NULL, NULL}
+};
+
+//
+// Internationalized names for the device
+//
+EFI_UNICODE_STRING_TABLE gDeviceNameTable[] =
+{
+ {
+ "eng;en",
+ L"Runtime Device"
+ },
+ {NULL, NULL}
+};
+
+EFI_STATUS
+EFIAPI
+RuntimeComponentNameGetDriverName (
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,
+ IN CHAR8 *Language,
+ OUT CHAR16 **DriverName
+ )
+{
+ //
+ // Find a matching string in the driver name string table
+ //
+ return LookupUnicodeString2(Language,
+ This->SupportedLanguages,
+ gDriverNameTable,
+ DriverName,
+ This == &gComponentNameProtocol);
+}
+
+EFI_STATUS
+EFIAPI
+RuntimeComponentNameGetControllerName (
+ IN EFI_COMPONENT_NAME_PROTOCOL *This,
+ IN EFI_HANDLE ControllerHandle,
+ IN EFI_HANDLE ChildHandle OPTIONAL,
+ IN CHAR8 *Language,
+ OUT CHAR16 **ControllerName
+ )
+{
+ EFI_STATUS efiStatus;
+
+ //
+ // We don't currently support names for our child devices
+ //
+ if (ChildHandle != NULL)
+ {
+ efiStatus = EFI_UNSUPPORTED;
+ goto Exit;
+ }
+
+ //
+ // Make sure that this is a device we support
+ //
+ efiStatus = EfiTestManagedDevice(ControllerHandle,
+ gDriverBindingProtocol.DriverBindingHandle,
+ &gEfiPciIoProtocolGuid);
+ if (EFI_ERROR(efiStatus))
+ {
+ goto Exit;
+ }
+
+ //
+ // Find a matching string in the device name string table
+ //
+ efiStatus = LookupUnicodeString2(Language,
+ This->SupportedLanguages,
+ gDeviceNameTable,
+ ControllerName,
+ This == &gComponentNameProtocol);
+
+Exit:
+ //
+ // Return back to DXE
+ //
+ return efiStatus;
+}
diff --git a/UefiDriver/drvpnp.c b/UefiDriver/drvpnp.c
new file mode 100644
index 0000000..1abda5b
--- /dev/null
+++ b/UefiDriver/drvpnp.c
@@ -0,0 +1,331 @@
+#include "drv.h"
+
+//
+// EFI Driver Binding Protocol
+//
+EFI_DRIVER_BINDING_PROTOCOL gDriverBindingProtocol =
+{
+ RuntimeDriverSupported,
+ RuntimeDriverStart,
+ RuntimeDriverStop,
+ 10,
+ NULL,
+ NULL
+};
+
+//
+// Our custom GUID
+//
+EFI_GUID gEfiRuntimeDriverProtocolGuid = EFI_RUNTIME_DRIVER_PROTOCOL_GUID;
+
+EFI_STATUS
+EFIAPI
+RuntimeDriverSupported(
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,
+ IN EFI_HANDLE Controller,
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
+)
+{
+ EFI_STATUS efiStatus;
+ EFI_PCI_IO_PROTOCOL* pciIo;
+
+ //
+ // Assume failure
+ //
+ pciIo = NULL;
+ efiStatus = EFI_UNSUPPORTED;
+
+ //
+ // Make sure the controller has a device path (meaning it could be hardware
+ // or an image)
+ //
+ efiStatus = gBS->OpenProtocol( Controller,
+ &gEfiDevicePathProtocolGuid,
+ NULL,
+ This->DriverBindingHandle,
+ Controller,
+ EFI_OPEN_PROTOCOL_TEST_PROTOCOL );
+ if (EFI_ERROR( efiStatus ))
+ {
+ goto Exit;
+ }
+
+ //
+ // Make sure the controller implements a PCI I/O protocol. Otherwise, this
+ // is not a PCI device
+ //
+ efiStatus = gBS->OpenProtocol( Controller,
+ &gEfiPciIoProtocolGuid,
+ (VOID**)&pciIo,
+ This->DriverBindingHandle,
+ Controller,
+ EFI_OPEN_PROTOCOL_BY_DRIVER );
+ if (EFI_ERROR( efiStatus ))
+ {
+ pciIo = NULL;
+ goto Exit;
+ }
+
+ //
+ // Attach to all PCI devices
+ //
+ efiStatus = EFI_SUCCESS;
+
+Exit:
+ //
+ // If we had a PCI I/O protocol open, close it now to avoid a leak
+ //
+ if (pciIo != NULL)
+ {
+ gBS->CloseProtocol( Controller,
+ &gEfiPciIoProtocolGuid,
+ This->DriverBindingHandle,
+ Controller );
+ }
+
+ //
+ // Return back to DXE
+ //
+ return efiStatus;
+}
+
+EFI_STATUS
+EFIAPI
+RuntimeDriverStop(
+ IN EFI_DRIVER_BINDING_PROTOCOL* This,
+ IN EFI_HANDLE Controller,
+ IN UINTN NumberOfChildren,
+ IN EFI_HANDLE* ChildHandleBuffer
+)
+{
+ EFI_STATUS efiStatus;
+ BOOLEAN allChildrenStopped;
+ UINTN i;
+ PDEVICE_EXTENSION deviceExtension;
+ PEFI_RUNTIME_DRIVER_PROTOCOL RuntimeDriverProtocol;
+
+ //
+ // Complete all outstanding transactions to Controller.
+ // Don't allow any new transaction to Controller to be started.
+ //
+ if (NumberOfChildren == 0)
+ {
+ efiStatus = gBS->CloseProtocol( Controller,
+ &gEfiPciIoProtocolGuid,
+ This->DriverBindingHandle,
+ Controller );
+ goto Exit;
+ }
+
+ //
+ // Enumerate all children
+ //
+ allChildrenStopped = TRUE;
+ for (i = 0; i < NumberOfChildren; i++)
+ {
+ //
+ // Children should have our protocol installed
+ //
+ efiStatus = gBS->OpenProtocol( ChildHandleBuffer[i],
+ &gEfiRuntimeDriverProtocolGuid,
+ (VOID**)&RuntimeDriverProtocol,
+ This->DriverBindingHandle,
+ Controller,
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL );
+ if (EFI_ERROR( efiStatus ))
+ {
+ allChildrenStopped = FALSE;
+ continue;
+ }
+
+ //
+ // Get the device extension for this child device
+ //
+ deviceExtension = DEVICE_EXTENSION_FROM_PROTOCOL( RuntimeDriverProtocol );
+
+ //
+ // Close the PCI I/O protocol off the child device
+ //
+ efiStatus = gBS->CloseProtocol( Controller,
+ &gEfiPciIoProtocolGuid,
+ This->DriverBindingHandle,
+ ChildHandleBuffer[i] );
+ if (EFI_ERROR( efiStatus ))
+ {
+ allChildrenStopped = FALSE;
+ continue;
+ }
+
+ //
+ // Uninstall our own protocol off this child device
+ //
+ efiStatus = gBS->UninstallMultipleProtocolInterfaces( ChildHandleBuffer[i],
+ &gEfiRuntimeDriverProtocolGuid,
+ &deviceExtension->DeviceProtocol,
+ NULL );
+ if (EFI_ERROR( efiStatus ))
+ {
+ allChildrenStopped = FALSE;
+ continue;
+ }
+
+ //
+ // Free our device extension
+ //
+ FreePool( deviceExtension );
+ }
+
+ //
+ // If any errors happened, then fail the stop request.
+ // Otherwise, return success.
+ //
+ if (allChildrenStopped == FALSE)
+ {
+ efiStatus = EFI_DEVICE_ERROR;
+ }
+ else
+ {
+ efiStatus = EFI_SUCCESS;
+ }
+
+Exit:
+ //
+ // Return back to DXE
+ //
+ return efiStatus;
+}
+
+EFI_STATUS
+EFIAPI
+RuntimeDriverStart(
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,
+ IN EFI_HANDLE Controller,
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
+)
+{
+ EFI_STATUS efiStatus;
+ EFI_PCI_IO_PROTOCOL* pciIo, childPciIo;
+ PDEVICE_EXTENSION deviceExtension;
+
+ //
+ // Assume failure
+ //
+ pciIo = NULL;
+ deviceExtension = NULL;
+
+ //
+ // Open the PCI I/O protocol. We know this should succeed because our
+ // supported routine already tried this.
+ //
+ efiStatus = gBS->OpenProtocol( Controller,
+ &gEfiPciIoProtocolGuid,
+ (VOID**)&pciIo,
+ This->DriverBindingHandle,
+ Controller,
+ EFI_OPEN_PROTOCOL_BY_DRIVER );
+ if (EFI_ERROR( efiStatus ))
+ {
+ pciIo = NULL;
+ ASSERT_EFI_ERROR( efiStatus );
+ goto Exit;
+ }
+
+ //
+ // Allocate the device extension
+ //
+ deviceExtension = AllocateZeroPool( sizeof( *deviceExtension ) );
+ if (deviceExtension == NULL)
+ {
+ efiStatus = EFI_OUT_OF_RESOURCES;
+ goto Exit;
+ }
+
+ //
+ // Fill out the key fields
+ //
+ deviceExtension->PciIo = pciIo;
+ deviceExtension->Signature = DEVICE_EXTENSION_SIGNATURE;
+ deviceExtension->DeviceHandle = NULL;
+
+ //
+ // Fill out custom protocol value
+ //
+ deviceExtension->DeviceProtocol.Value = This->DriverBindingHandle;
+
+ //
+ // Install our custom protocol on top of a new device handle
+ //
+ efiStatus = gBS->InstallMultipleProtocolInterfaces( &deviceExtension->DeviceHandle,
+ &gEfiRuntimeDriverProtocolGuid,
+ &deviceExtension->DeviceProtocol,
+ NULL );
+ if (EFI_ERROR( efiStatus ))
+ {
+ goto Exit;
+ }
+
+ //
+ // Bind the PCI I/O protocol between our new device handle and the controller
+ //
+ efiStatus = gBS->OpenProtocol( Controller,
+ &gEfiPciIoProtocolGuid,
+ (VOID**)&childPciIo,
+ This->DriverBindingHandle,
+ deviceExtension->DeviceHandle,
+ EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER );
+ if (EFI_ERROR( efiStatus ))
+ {
+ goto Exit;
+ }
+
+ //
+ // We're all done successfully
+ //
+ efiStatus = EFI_SUCCESS;
+
+Exit:
+ //
+ // Do cleanup in case of error
+ //
+ if (EFI_ERROR( efiStatus ))
+ {
+ //
+ // First check if a device extension was allocated
+ //
+ if (deviceExtension != NULL)
+ {
+ //
+ // If a device handle was created, then uninstall the custom protocol
+ //
+ if (deviceExtension->DeviceHandle != NULL)
+ {
+ gBS->UninstallMultipleProtocolInterfaces( &deviceExtension->DeviceHandle,
+ &gEfiRuntimeDriverProtocolGuid,
+ &deviceExtension->DeviceProtocol,
+ NULL );
+ }
+
+ //
+ // Free the device extension
+ //
+ FreePool( deviceExtension );
+ }
+
+ //
+ // Check if we obtained a PCI I/O protocol
+ //
+ if (pciIo != NULL)
+ {
+ //
+ // Close it so that we don't leak it
+ //
+ gBS->CloseProtocol( Controller, &gEfiPciIoProtocolGuid, This->DriverBindingHandle, Controller );
+ }
+ }
+
+ //
+ // All done, return to DXE
+ //
+ return efiStatus;
+}
+
diff --git a/UefiDriver/drvproto.h b/UefiDriver/drvproto.h
new file mode 100644
index 0000000..95010f9
--- /dev/null
+++ b/UefiDriver/drvproto.h
@@ -0,0 +1,18 @@
+#include
+
+//
+// Custom Protocol GUID
+//
+#define EFI_RUNTIME_DRIVER_PROTOCOL_GUID \
+ { \
+ 0xd487ddb4, 0x008b, 0x11d9, {0xaf, 0xdc, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d } \
+ }
+extern EFI_GUID gEfiRuntimeDriverProtocolGuid;
+
+//
+// Custom Protocol Definition
+//
+typedef struct _EFI_RUNTIME_DRIVER_PROTOCOL
+{
+ EFI_HANDLE Value;
+} EFI_RUNTIME_DRIVER_PROTOCOL, *PEFI_RUNTIME_DRIVER_PROTOCOL;
diff --git a/UefiDriver/hook.asm b/UefiDriver/hook.asm
new file mode 100644
index 0000000..2b9782e
--- /dev/null
+++ b/UefiDriver/hook.asm
@@ -0,0 +1,145 @@
+; ++
+;
+; Copyright (c) dude719. All rights reserved.
+;
+; Module:
+;
+; hooks.asm
+;
+; Summary:
+;
+; This module implements a hook for OslLoadImage in winload.efi
+;
+; Environment:
+;
+; UEFI firmware
+;
+; --
+
+;*********************************************************************
+; Public symbols
+; Saved OslArchTransferToKernel location and bytes from before the patch
+public OslArchTransferToKernelBackup
+public OslArchTransferToKernelPatchLocation
+
+;*********************************************************************
+; .data section
+.DATA
+
+ALIGN 16
+
+; Original OslArchTransferToKernel address
+extern oOslArchTransferToKernel:dq
+; Saved OslArchTransferToKernel bytes from before the patch
+OslArchTransferToKernelBackup db 5 dup(0)
+OslArchTransferToKernelPatchLocation dq 0
+
+; UEFI System Table for printing to console
+extern gST:dq
+
+extern UtilWaitForKey:proc
+extern Print:proc
+
+; Test string for PrintString
+TestString dw "A","S","M"," ","T","E","S","T", 000Dh, 000Ah, 0000h
+
+
+
+;*********************************************************************
+; .text section
+.CODE
+
+;*********************************************************************
+; EFI_STATUS
+; PrintString(
+; IN CHAR16* Str
+; );
+;*********************************************************************
+PrintString PROC
+ sub rsp, 30h
+ mov rdx, rcx ; Str
+ mov rax, gST
+ mov r8, [rax + 40h]
+ mov rcx, r8
+ call qword ptr [r8 + 8h]
+ add rsp, 30h
+ ret
+PrintString ENDP
+
+PrintStringTest PROC
+ lea rcx, TestString
+ call PrintString
+ ret
+PrintStringTest ENDP
+
+
+; ; Search image base
+; and rdx, 0FFFFFFFFFFFFF000h
+;get_imagebase:
+; cmp word ptr [rdx], 05A4Dh
+; je get_imagesize
+; sub rdx, 01000h
+; jmp get_imagebase
+;
+; ; Search for NX flag pattern in image
+;get_imagesize:
+; mov ecx, dword ptr[rdx+03Ch] ; get e_lfanew from DOS headers
+; mov ebx, dword ptr[rdx+rcx+050h] ; get sizeOfImage from OptionialHeader in PE
+
+;
+; Our OslArchTransferToKernelHook hook
+;
+; VOID __fastcall OslArchTransferToKernel(VOID *KernelParams, VOID *KiSystemStartup)
+;
+OslArchTransferToKernelHook PROC
+ ; Save registers to do our kernel patching
+ push r15
+ push r14
+ push r13
+ push r12
+ push r11
+ push r10
+ push r9
+ push r8
+ push rbp
+ push rdi
+ push rsi
+ push rdx ; rdx is a pointer to KiSystemStartup
+ push rcx ; rcx is a pointer to kernel loading paramters
+ push rbx
+ push rax
+ pushfq
+ mov rbp, rsp
+ and rsp, 0FFFFFFFFFFFFFFF0h ; align stack to 16 bytes
+
+ ; Before we do anything lets restore the original function bytes
+restore_bytes:
+ lea rsi, OslArchTransferToKernelBackup
+ mov rdi, OslArchTransferToKernelPatchLocation
+ mov rcx, 5 ; our patch size was 5 bytes
+ rep movsb byte ptr [rdi], byte ptr [rsi] ; restore bytes
+
+ mov rsp, rbp
+ popfq
+ pop rax
+ pop rbx
+ pop rcx
+ pop rdx
+ pop rsi
+ pop rdi
+ pop rbp
+ pop r8
+ pop r9
+ pop r10
+ pop r11
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+
+ ; jump to original
+ jmp qword ptr [oOslArchTransferToKernel]
+
+OslArchTransferToKernelHook ENDP
+
+END
\ No newline at end of file
diff --git a/UefiDriver/hook.h b/UefiDriver/hook.h
new file mode 100644
index 0000000..0f481a0
--- /dev/null
+++ b/UefiDriver/hook.h
@@ -0,0 +1,23 @@
+#pragma once
+
+//
+// Implemented in hook.asm
+//
+EFI_STATUS PrintString( IN CHAR16* Str );
+EFI_STATUS PrintTestString( VOID );
+
+//
+// ImgArchEfiStartBootApplication hook
+//
+typedef EFI_STATUS( EFIAPI *tImgArchEfiStartBootApplication )(VOID* Parameters, VOID* ImageBase, UINT32 ImageSize, UINT8 BootOption, UINT64* SomeReturnValue);
+static UINT8 sigImgArchEfiStartBootApplicationCall[] = { 0xE8, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xCE, 0x8B, 0xD8, 0xE8, 0xCC, 0xCC, 0xCC, 0xCC, 0x41 };
+VOID* ImgArchEfiStartBootApplicationPatchLocation = NULL;
+UINT8 ImgArchEfiStartBootApplicationBackup[5] = { 0 };
+tImgArchEfiStartBootApplication oImgArchEfiStartBootApplication = NULL;
+
+typedef VOID( EFIAPI *tOslArchTransferToKernel )(VOID *KernelParams, VOID *KiSystemStartup);
+static UINT8 sigOslArchTransferToKernel[] = { 0xE8, 0xCC, 0xCC, 0xCC, 0xCC, 0xEB, 0xFE }; //48 8B 45 A8 33 FF
+extern VOID* OslArchTransferToKernelPatchLocation;
+extern UINT8 OslArchTransferToKernelBackup[5];
+tOslArchTransferToKernel oOslArchTransferToKernel = NULL;
+extern VOID* OslArchTransferToKernelHook;
\ No newline at end of file
diff --git a/UefiDriver/imageldr.c b/UefiDriver/imageldr.c
new file mode 100644
index 0000000..cc68bf4
--- /dev/null
+++ b/UefiDriver/imageldr.c
@@ -0,0 +1,23 @@
+#include "imageldr.h"
+
+#include
+#include
+#include
+
+EFI_STATUS ImageLoad( IN EFI_HANDLE ParentHandle, IN EFI_DEVICE_PATH* DevicePath, OUT EFI_HANDLE* ImageHandle )
+{
+ EFI_STATUS status = EFI_NOT_FOUND;
+ // Load image in memory
+ status = gBS->LoadImage( TRUE, ParentHandle, DevicePath, NULL, 0, ImageHandle );
+ if (status != EFI_SUCCESS)
+ {
+ Print( L"[!] LoadImage error = %X\r\n", status );
+ }
+
+ return status;
+}
+
+EFI_STATUS ImageStart( IN EFI_HANDLE ImageHandle )
+{
+ return gBS->StartImage( ImageHandle, (UINTN *)NULL, (CHAR16 **)NULL );
+}
diff --git a/UefiDriver/imageldr.h b/UefiDriver/imageldr.h
new file mode 100644
index 0000000..70e39b9
--- /dev/null
+++ b/UefiDriver/imageldr.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#include
+
+EFI_STATUS ImageLoad( IN EFI_HANDLE ParentHandle, IN EFI_DEVICE_PATH* DevicePath, OUT EFI_HANDLE* ImageHandle );
+
+EFI_STATUS ImageStart( IN EFI_HANDLE ImageHandle );
\ No newline at end of file
diff --git a/UefiDriver/pe.c b/UefiDriver/pe.c
new file mode 100644
index 0000000..3d1dbbd
--- /dev/null
+++ b/UefiDriver/pe.c
@@ -0,0 +1,24 @@
+#include "pe.h"
+
+PIMAGE_DOS_HEADER ImageDosHeader( IN VOID* ImageBase )
+{
+ PIMAGE_DOS_HEADER ImageDosHeader = (PIMAGE_DOS_HEADER)(ImageBase);
+ if (!ImageDosHeader)
+ return NULL;
+ if (ImageDosHeader->e_magic != IMAGE_DOS_SIGNATURE)
+ return NULL;
+ return ImageDosHeader;
+}
+
+PIMAGE_NT_HEADERS ImageNtHeader( IN VOID* ImageBase )
+{
+ PIMAGE_DOS_HEADER ImageDosHdr;
+ PIMAGE_NT_HEADERS ImageNtHdr;
+ ImageDosHdr = ImageDosHeader( ImageBase );
+ if (!ImageDosHdr)
+ return NULL;
+ ImageNtHdr = (PIMAGE_NT_HEADERS)((UINT8*)ImageBase + ImageDosHdr->e_lfanew);
+ if (ImageNtHdr->Signature != IMAGE_NT_SIGNATURE)
+ return NULL;
+ return ImageNtHdr;
+}
\ No newline at end of file
diff --git a/UefiDriver/pe.h b/UefiDriver/pe.h
new file mode 100644
index 0000000..63b5ae5
--- /dev/null
+++ b/UefiDriver/pe.h
@@ -0,0 +1,16 @@
+#pragma once
+
+#include "pestructs.h"
+
+#define IMAGE32(hdr) (hdr->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC)
+#define IMAGE64(hdr) (hdr->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC)
+
+#define IMAGE_SIZE(hdr) (IMAGE64(hdr) ? ((PIMAGE_NT_HEADERS64)hdr)->OptionalHeader.SizeOfImage : ((PIMAGE_NT_HEADERS32)hdr)->OptionalHeader.SizeOfImage)
+
+#define HEADER_VAL_T(hdr, val) (IMAGE64(hdr) ? ((PIMAGE_NT_HEADERS64)hdr)->OptionalHeader.val : ((PIMAGE_NT_HEADERS32)hdr)->OptionalHeader.val)
+#define THUNK_VAL_T(hdr, ptr, val) (IMAGE64(hdr) ? ((PIMAGE_THUNK_DATA64)ptr)->val : ((PIMAGE_THUNK_DATA32)ptr)->val)
+#define DATA_DIRECTORY(hdr, idx) (IMAGE64(hdr) ? &(((PIMAGE_OPTIONAL_HEADER64)&(hdr->OptionalHeader))->DataDirectory[idx]) : &(((PIMAGE_OPTIONAL_HEADER32)&(hdr->OptionalHeader))->DataDirectory[idx]))
+
+PIMAGE_DOS_HEADER ImageDosHeader( IN VOID* ImageBase );
+
+PIMAGE_NT_HEADERS ImageNtHeader( IN VOID* ImageBase );
\ No newline at end of file
diff --git a/UefiDriver/pestructs.h b/UefiDriver/pestructs.h
new file mode 100644
index 0000000..f94fa38
--- /dev/null
+++ b/UefiDriver/pestructs.h
@@ -0,0 +1,453 @@
+#pragma once
+
+#define IMAGE_DOS_SIGNATURE 0x5A4D // MZ
+#define IMAGE_NT_SIGNATURE 0x00004550 // PE00
+
+#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b
+#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
+
+#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
+
+#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory
+#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory
+#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory
+#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory
+#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory
+#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table
+#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory
+// IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // (X86 usage)
+#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7 // Architecture Specific Data
+#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // RVA of GP
+#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory
+#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory
+#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 // Bound Import Directory in headers
+#define IMAGE_DIRECTORY_ENTRY_IAT 12 // Import Address Table
+#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 // Delay Load Import Descriptors
+#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 // COM Runtime descriptor
+
+#define IMAGE_REL_BASED_ABSOLUTE 0
+#define IMAGE_REL_BASED_HIGH 1
+#define IMAGE_REL_BASED_LOW 2
+#define IMAGE_REL_BASED_HIGHLOW 3
+#define IMAGE_REL_BASED_HIGHADJ 4
+#define IMAGE_REL_BASED_MIPS_JMPADDR 5
+#define IMAGE_REL_BASED_SECTION 6
+#define IMAGE_REL_BASED_REL32 7
+#define IMAGE_REL_BASED_MIPS_JMPADDR16 9
+#define IMAGE_REL_BASED_IA64_IMM64 9
+#define IMAGE_REL_BASED_DIR64 10
+
+#define IMAGE_SIZEOF_BASE_RELOCATION 8
+
+#ifndef IMR_RELTYPE
+#define IMR_RELTYPE(x) ((x >> 12) & 0xF)
+#endif
+
+#ifndef IMR_RELOFFSET
+#define IMR_RELOFFSET(x) (x & 0xFFF)
+#endif
+
+
+#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file.
+#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved external references).
+#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file.
+#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file.
+#define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010 // Aggressively trim working set
+#define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 // App can handle >2gb addresses
+#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed.
+#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine.
+#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file
+#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 // If Image is on removable media, copy and run from the swap file.
+#define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 // If Image is on Net, copy and run from the swap file.
+#define IMAGE_FILE_SYSTEM 0x1000 // System File.
+#define IMAGE_FILE_DLL 0x2000 // File is a DLL.
+#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 // File should only be run on a UP machine
+#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed.
+
+#define IMAGE_FILE_MACHINE_UNKNOWN 0
+#define IMAGE_FILE_MACHINE_I386 0x014c // Intel 386.
+#define IMAGE_FILE_MACHINE_R3000 0x0162 // MIPS little-endian, 0x160 big-endian
+#define IMAGE_FILE_MACHINE_R4000 0x0166 // MIPS little-endian
+#define IMAGE_FILE_MACHINE_R10000 0x0168 // MIPS little-endian
+#define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169 // MIPS little-endian WCE v2
+#define IMAGE_FILE_MACHINE_ALPHA 0x0184 // Alpha_AXP
+#define IMAGE_FILE_MACHINE_SH3 0x01a2 // SH3 little-endian
+#define IMAGE_FILE_MACHINE_SH3DSP 0x01a3
+#define IMAGE_FILE_MACHINE_SH3E 0x01a4 // SH3E little-endian
+#define IMAGE_FILE_MACHINE_SH4 0x01a6 // SH4 little-endian
+#define IMAGE_FILE_MACHINE_SH5 0x01a8 // SH5
+#define IMAGE_FILE_MACHINE_ARM 0x01c0 // ARM Little-Endian
+#define IMAGE_FILE_MACHINE_THUMB 0x01c2 // ARM Thumb/Thumb-2 Little-Endian
+#define IMAGE_FILE_MACHINE_ARMNT 0x01c4 // ARM Thumb-2 Little-Endian
+#define IMAGE_FILE_MACHINE_AM33 0x01d3
+#define IMAGE_FILE_MACHINE_POWERPC 0x01F0 // IBM PowerPC Little-Endian
+#define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1
+#define IMAGE_FILE_MACHINE_IA64 0x0200 // Intel 64
+#define IMAGE_FILE_MACHINE_MIPS16 0x0266 // MIPS
+#define IMAGE_FILE_MACHINE_ALPHA64 0x0284 // ALPHA64
+#define IMAGE_FILE_MACHINE_MIPSFPU 0x0366 // MIPS
+#define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 // MIPS
+#define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64
+#define IMAGE_FILE_MACHINE_TRICORE 0x0520 // Infineon
+#define IMAGE_FILE_MACHINE_CEF 0x0CEF
+#define IMAGE_FILE_MACHINE_EBC 0x0EBC // EFI Byte Code
+#define IMAGE_FILE_MACHINE_AMD64 0x8664 // AMD64 (K8)
+#define IMAGE_FILE_MACHINE_M32R 0x9041 // M32R little-endian
+#define IMAGE_FILE_MACHINE_CEE 0xC0EE
+
+#define IMAGE_ORDINAL_FLAG64 0x8000000000000000
+#define IMAGE_ORDINAL_FLAG32 0x80000000
+#define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffff)
+#define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff)
+#define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64) != 0)
+#define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32) != 0)
+
+//
+// Section characteristics.
+//
+// IMAGE_SCN_TYPE_REG 0x00000000 // Reserved.
+// IMAGE_SCN_TYPE_DSECT 0x00000001 // Reserved.
+// IMAGE_SCN_TYPE_NOLOAD 0x00000002 // Reserved.
+// IMAGE_SCN_TYPE_GROUP 0x00000004 // Reserved.
+#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 // Reserved.
+// IMAGE_SCN_TYPE_COPY 0x00000010 // Reserved.
+
+#define IMAGE_SCN_CNT_CODE 0x00000020 // Section contains code.
+#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 // Section contains initialized data.
+#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 // Section contains uninitialized data.
+
+#define IMAGE_SCN_LNK_OTHER 0x00000100 // Reserved.
+#define IMAGE_SCN_LNK_INFO 0x00000200 // Section contains comments or some other type of information.
+// IMAGE_SCN_TYPE_OVER 0x00000400 // Reserved.
+#define IMAGE_SCN_LNK_REMOVE 0x00000800 // Section contents will not become part of image.
+#define IMAGE_SCN_LNK_COMDAT 0x00001000 // Section contents comdat.
+// 0x00002000 // Reserved.
+// IMAGE_SCN_MEM_PROTECTED - Obsolete 0x00004000
+#define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000 // Reset speculative exceptions handling bits in the TLB entries for this section.
+#define IMAGE_SCN_GPREL 0x00008000 // Section content can be accessed relative to GP
+#define IMAGE_SCN_MEM_FARDATA 0x00008000
+// IMAGE_SCN_MEM_SYSHEAP - Obsolete 0x00010000
+#define IMAGE_SCN_MEM_PURGEABLE 0x00020000
+#define IMAGE_SCN_MEM_16BIT 0x00020000
+#define IMAGE_SCN_MEM_LOCKED 0x00040000
+#define IMAGE_SCN_MEM_PRELOAD 0x00080000
+
+#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 //
+#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 //
+#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 //
+#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 //
+#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default alignment if no others are specified.
+#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 //
+#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 //
+#define IMAGE_SCN_ALIGN_128BYTES 0x00800000 //
+#define IMAGE_SCN_ALIGN_256BYTES 0x00900000 //
+#define IMAGE_SCN_ALIGN_512BYTES 0x00A00000 //
+#define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000 //
+#define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000 //
+#define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000 //
+#define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000 //
+// Unused 0x00F00000
+#define IMAGE_SCN_ALIGN_MASK 0x00F00000
+
+#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 // Section contains extended relocations.
+#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 // Section can be discarded.
+#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 // Section is not cachable.
+#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 // Section is not pageable.
+#define IMAGE_SCN_MEM_SHARED 0x10000000 // Section is shareable.
+#define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable.
+#define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable.
+#define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable.
+
+
+typedef struct _IMAGE_FILE_HEADER // Size=20
+{
+ UINT16 Machine;
+ UINT16 NumberOfSections;
+ UINT32 TimeDateStamp;
+ UINT32 PointerToSymbolTable;
+ UINT32 NumberOfSymbols;
+ UINT16 SizeOfOptionalHeader;
+ UINT16 Characteristics;
+} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
+
+#define IMAGE_SIZEOF_SHORT_NAME 8
+typedef struct _IMAGE_SECTION_HEADER
+{
+ UINT8 Name[IMAGE_SIZEOF_SHORT_NAME];
+ union
+ {
+ UINT32 PhysicalAddress;
+ UINT32 VirtualSize;
+ } Misc;
+ UINT32 VirtualAddress;
+ UINT32 SizeOfRawData;
+ UINT32 PointerToRawData;
+ UINT32 PointerToRelocations;
+ UINT32 PointerToLinenumbers;
+ UINT16 NumberOfRelocations;
+ UINT16 NumberOfLinenumbers;
+ UINT32 Characteristics;
+} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
+
+typedef struct _IMAGE_DATA_DIRECTORY
+{
+ UINT32 VirtualAddress;
+ UINT32 Size;
+} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
+
+//
+// Optional header format.
+//
+
+typedef struct _IMAGE_OPTIONAL_HEADER32
+{
+ UINT16 Magic;
+ UINT8 MajorLinkerVersion;
+ UINT8 MinorLinkerVersion;
+ UINT32 SizeOfCode;
+ UINT32 SizeOfInitializedData;
+ UINT32 SizeOfUninitializedData;
+ UINT32 AddressOfEntryPoint;
+ UINT32 BaseOfCode;
+ UINT32 BaseOfData;
+ UINT32 ImageBase;
+ UINT32 SectionAlignment;
+ UINT32 FileAlignment;
+ UINT16 MajorOperatingSystemVersion;
+ UINT16 MinorOperatingSystemVersion;
+ UINT16 MajorImageVersion;
+ UINT16 MinorImageVersion;
+ UINT16 MajorSubsystemVersion;
+ UINT16 MinorSubsystemVersion;
+ UINT32 Win32VersionValue;
+ UINT32 SizeOfImage;
+ UINT32 SizeOfHeaders;
+ UINT32 CheckSum;
+ UINT16 Subsystem;
+ UINT16 DllCharacteristics;
+ UINT32 SizeOfStackReserve;
+ UINT32 SizeOfStackCommit;
+ UINT32 SizeOfHeapReserve;
+ UINT32 SizeOfHeapCommit;
+ UINT32 LoaderFlags;
+ UINT32 NumberOfRvaAndSizes;
+ struct _IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
+
+typedef struct _IMAGE_ROM_OPTIONAL_HEADER
+{
+ UINT16 Magic;
+ UINT8 MajorLinkerVersion;
+ UINT8 MinorLinkerVersion;
+ UINT32 SizeOfCode;
+ UINT32 SizeOfInitializedData;
+ UINT32 SizeOfUninitializedData;
+ UINT32 AddressOfEntryPoint;
+ UINT32 BaseOfCode;
+ UINT32 BaseOfData;
+ UINT32 BaseOfBss;
+ UINT32 GprMask;
+ UINT32 CprMask[4];
+ UINT32 GpValue;
+} IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER;
+
+typedef struct _IMAGE_OPTIONAL_HEADER64
+{
+ UINT16 Magic;
+ UINT8 MajorLinkerVersion;
+ UINT8 MinorLinkerVersion;
+ UINT32 SizeOfCode;
+ UINT32 SizeOfInitializedData;
+ UINT32 SizeOfUninitializedData;
+ UINT32 AddressOfEntryPoint;
+ UINT32 BaseOfCode;
+ UINT64 ImageBase;
+ UINT32 SectionAlignment;
+ UINT32 FileAlignment;
+ UINT16 MajorOperatingSystemVersion;
+ UINT16 MinorOperatingSystemVersion;
+ UINT16 MajorImageVersion;
+ UINT16 MinorImageVersion;
+ UINT16 MajorSubsystemVersion;
+ UINT16 MinorSubsystemVersion;
+ UINT32 Win32VersionValue;
+ UINT32 SizeOfImage;
+ UINT32 SizeOfHeaders;
+ UINT32 CheckSum;
+ UINT16 Subsystem;
+ UINT16 DllCharacteristics;
+ UINT64 SizeOfStackReserve;
+ UINT64 SizeOfStackCommit;
+ UINT64 SizeOfHeapReserve;
+ UINT64 SizeOfHeapCommit;
+ UINT32 LoaderFlags;
+ UINT32 NumberOfRvaAndSizes;
+ struct _IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64;
+
+typedef struct _IMAGE_DOS_HEADER
+{ // DOS .EXE header
+ UINT16 e_magic; // 0x0 // Magic number
+ UINT16 e_cblp; // 0x2 // Bytes on last page of file
+ UINT16 e_cp; // 0x4 // Pages in file
+ UINT16 e_crlc; // 0x6 // Relocations
+ UINT16 e_cparhdr; // 0x8 // Size of header in paragraphs
+ UINT16 e_minalloc; // 0xA // Minimum extra paragraphs needed
+ UINT16 e_maxalloc; // 0xC // Maximum extra paragraphs needed
+ UINT16 e_ss; // 0xE // Initial (relative) SS value
+ UINT16 e_sp; // 0x10 // Initial SP value
+ UINT16 e_csum; // 0x12 // Checksum
+ UINT16 e_ip; // 0x14 // Initial IP value
+ UINT16 e_cs; // 0x16 // Initial (relative) CS value
+ UINT16 e_lfarlc; // 0x18 // File address of relocation table
+ UINT16 e_ovno; // 0x1A // Overlay number
+ UINT16 e_res[4]; // 0x1C // Reserved words
+ UINT16 e_oemid; // 0x24 // OEM identifier (for e_oeminfo)
+ UINT16 e_oeminfo; // 0x26 // OEM information; e_oemid specific
+ UINT16 e_res2[10]; // 0x28 // Reserved words
+ INT32 e_lfanew; // 0x3C // File address of new exe header
+} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
+
+typedef struct _IMAGE_NT_HEADERS64
+{
+ UINT32 Signature; // 0x0
+ struct _IMAGE_FILE_HEADER FileHeader; // 0x4
+ struct _IMAGE_OPTIONAL_HEADER64 OptionalHeader; // 0x18
+} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64;
+
+typedef struct _IMAGE_NT_HEADERS
+{
+ UINT32 Signature; // 0x0
+ struct _IMAGE_FILE_HEADER FileHeader; // 0x4
+ struct _IMAGE_OPTIONAL_HEADER32 OptionalHeader; // 0x18
+} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
+
+#ifdef _WIN64
+typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS;
+#else
+typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
+#endif
+
+typedef struct _IMAGE_EXPORT_DIRECTORY
+{
+ UINT32 Characteristics;
+ UINT32 TimeDateStamp;
+ UINT16 MajorVersion;
+ UINT16 MinorVersion;
+ UINT32 Name;
+ UINT32 Base;
+ UINT32 NumberOfFunctions;
+ UINT32 NumberOfNames;
+ UINT32 AddressOfFunctions; // RVA from base of image
+ UINT32 AddressOfNames; // RVA from base of image
+ UINT32 AddressOfNameOrdinals; // RVA from base of image
+} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
+
+typedef struct _IMAGE_BASE_RELOCATION
+{
+ UINT32 VirtualAddress;
+ UINT32 SizeOfBlock;
+ // UINT16 TypeOffset[1];
+} IMAGE_BASE_RELOCATION;
+typedef IMAGE_BASE_RELOCATION __unaligned *PIMAGE_BASE_RELOCATION;
+
+typedef struct _IMAGE_IMPORT_BY_NAME
+{
+ UINT16 Hint;
+ char Name[1];
+} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
+
+// warning C4201: nonstandard extension used : nameless struct/union
+#pragma warning (disable : 4201)
+
+typedef struct _IMAGE_IMPORT_DESCRIPTOR
+{
+ union
+ {
+ UINT32 Characteristics; // 0 for terminating null import descriptor
+ UINT32 OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
+ };
+ UINT32 TimeDateStamp; // 0 if not bound,
+ // -1 if bound, and real date\time stamp
+ // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
+ // O.W. date/time stamp of DLL bound to (Old BIND)
+
+ UINT32 ForwarderChain; // -1 if no forwarders
+ UINT32 Name;
+ UINT32 FirstThunk; // RVA to IAT (if bound this IAT has actual addresses)
+} IMAGE_IMPORT_DESCRIPTOR;
+typedef IMAGE_IMPORT_DESCRIPTOR __unaligned *PIMAGE_IMPORT_DESCRIPTOR;
+
+typedef struct _IMAGE_THUNK_DATA64
+{
+ union
+ {
+ UINT64 ForwarderString; // PBYTE
+ UINT64 Function; // PULONG
+ UINT64 Ordinal;
+ UINT64 AddressOfData; // PIMAGE_IMPORT_BY_NAME
+ } u1;
+} IMAGE_THUNK_DATA64;
+typedef IMAGE_THUNK_DATA64 * PIMAGE_THUNK_DATA64;
+typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA;
+
+typedef struct _IMAGE_THUNK_DATA32
+{
+ union
+ {
+ UINT32 ForwarderString; // PBYTE
+ UINT32 Function; // PULONG
+ UINT32 Ordinal;
+ UINT32 AddressOfData; // PIMAGE_IMPORT_BY_NAME
+ } u1;
+} IMAGE_THUNK_DATA32;
+typedef IMAGE_THUNK_DATA32 * PIMAGE_THUNK_DATA32;
+
+
+//
+// Thread Local Storage
+//
+
+typedef VOID( EFIAPI *PIMAGE_TLS_CALLBACK )(VOID* DllHandle, UINT32 Reason, VOID* Reserved);
+
+typedef struct _IMAGE_TLS_DIRECTORY64
+{
+ UINT64 StartAddressOfRawData;
+ UINT64 EndAddressOfRawData;
+ UINT64 AddressOfIndex; // PULONG
+ UINT64 AddressOfCallBacks; // PIMAGE_TLS_CALLBACK *;
+ UINT32 SizeOfZeroFill;
+ union
+ {
+ UINT32 Characteristics;
+ struct
+ {
+ UINT32 Reserved0 : 20;
+ UINT32 Alignment : 4;
+ UINT32 Reserved1 : 8;
+ };
+ };
+
+} IMAGE_TLS_DIRECTORY64;
+typedef IMAGE_TLS_DIRECTORY64 * PIMAGE_TLS_DIRECTORY64;
+
+typedef struct _IMAGE_TLS_DIRECTORY32
+{
+ UINT32 StartAddressOfRawData;
+ UINT32 EndAddressOfRawData;
+ UINT32 AddressOfIndex; // PULONG
+ UINT32 AddressOfCallBacks; // PIMAGE_TLS_CALLBACK *
+ UINT32 SizeOfZeroFill;
+ union
+ {
+ UINT32 Characteristics;
+ struct
+ {
+ UINT32 Reserved0 : 20;
+ UINT32 Alignment : 4;
+ UINT32 Reserved1 : 8;
+ };
+ };
+
+} IMAGE_TLS_DIRECTORY32;
+typedef IMAGE_TLS_DIRECTORY32 * PIMAGE_TLS_DIRECTORY32;
\ No newline at end of file
diff --git a/UefiDriver/udis86/._INSTALL b/UefiDriver/udis86/._INSTALL
new file mode 100644
index 0000000..70b67a6
Binary files /dev/null and b/UefiDriver/udis86/._INSTALL differ
diff --git a/UefiDriver/udis86/INSTALL b/UefiDriver/udis86/INSTALL
new file mode 100644
index 0000000..5458714
--- /dev/null
+++ b/UefiDriver/udis86/INSTALL
@@ -0,0 +1,234 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006 Free Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/UefiDriver/udis86/Makefile.am b/UefiDriver/udis86/Makefile.am
new file mode 100644
index 0000000..62a62f5
--- /dev/null
+++ b/UefiDriver/udis86/Makefile.am
@@ -0,0 +1,38 @@
+ACLOCAL_AMFLAGS = -I build/m4
+
+SUBDIRS = scripts libudis86 udcli docs tests
+
+MAINTAINERCLEANFILES = \
+ Makefile.in \
+ configure \
+ config.h.in \
+ config.h.in~ \
+ missing \
+ aclocal.m4 \
+ build/config.guess \
+ build/config.sub \
+ build/compile \
+ build/config.guess \
+ build/config.sub \
+ build/depcomp \
+ build/install-sh \
+ build/ltmain.sh \
+ build/missing
+
+include_ladir = ${includedir}
+include_la_HEADERS = udis86.h
+
+.PHONY: libudis86 udcli tests docs
+
+libudis86:
+ $(MAKE) -C $@
+
+udcli: libudis86
+ $(MAKE) -C $@
+
+tests: check
+
+maintainer-clean-local:
+ -rm -rf build/m4
+ -rm -rf build
+ -rm -rf autom4te.cache
diff --git a/UefiDriver/udis86/Makefile.in b/UefiDriver/udis86/Makefile.in
new file mode 100644
index 0000000..2821bd2
--- /dev/null
+++ b/UefiDriver/udis86/Makefile.in
@@ -0,0 +1,870 @@
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/configure $(am__configure_deps) \
+ $(srcdir)/config.h.in $(include_la_HEADERS) INSTALL README \
+ build/compile build/config.guess build/config.sub \
+ build/install-sh build/missing build/ltmain.sh \
+ $(top_srcdir)/build/compile $(top_srcdir)/build/config.guess \
+ $(top_srcdir)/build/config.sub $(top_srcdir)/build/install-sh \
+ $(top_srcdir)/build/ltmain.sh $(top_srcdir)/build/missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/build/m4/libtool.m4 \
+ $(top_srcdir)/build/m4/ltoptions.m4 \
+ $(top_srcdir)/build/m4/ltsugar.m4 \
+ $(top_srcdir)/build/m4/ltversion.m4 \
+ $(top_srcdir)/build/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/ax_compare_version.m4 \
+ $(top_srcdir)/m4/ax_prog_sphinx_version.m4 \
+ $(top_srcdir)/m4/ax_prog_yasm_version.m4 \
+ $(top_srcdir)/m4/ax_with_prog.m4 \
+ $(top_srcdir)/m4/ax_with_python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(include_ladir)"
+HEADERS = $(include_la_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+ $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = -I build/m4
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SPHINX_BUILD = @SPHINX_BUILD@
+SPHINX_VERSION = @SPHINX_VERSION@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YASM = @YASM@
+YASM_VERSION = @YASM_VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = scripts libudis86 udcli docs tests
+MAINTAINERCLEANFILES = \
+ Makefile.in \
+ configure \
+ config.h.in \
+ config.h.in~ \
+ missing \
+ aclocal.m4 \
+ build/config.guess \
+ build/config.sub \
+ build/compile \
+ build/config.guess \
+ build/config.sub \
+ build/depcomp \
+ build/install-sh \
+ build/ltmain.sh \
+ build/missing
+
+include_ladir = ${includedir}
+include_la_HEADERS = udis86.h
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @if test ! -f $@; then rm -f stamp-h1; else :; fi
+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+install-include_laHEADERS: $(include_la_HEADERS)
+ @$(NORMAL_INSTALL)
+ @list='$(include_la_HEADERS)'; test -n "$(include_ladir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(include_ladir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(include_ladir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(include_ladir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_ladir)" || exit $$?; \
+ done
+
+uninstall-include_laHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(include_la_HEADERS)'; test -n "$(include_ladir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(include_ladir)'; $(am__uninstall_files_from_dir)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__post_remove_distdir)
+
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__post_remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(HEADERS) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(include_ladir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-include_laHEADERS
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-include_laHEADERS
+
+.MAKE: $(am__recursive_targets) all install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--refresh check check-am clean clean-cscope clean-generic \
+ clean-libtool cscope cscopelist-am ctags ctags-am dist \
+ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
+ dist-xz dist-zip distcheck distclean distclean-generic \
+ distclean-hdr distclean-libtool distclean-tags distcleancheck \
+ distdir distuninstallcheck dvi dvi-am html html-am info \
+ info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-include_laHEADERS \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-include_laHEADERS
+
+
+.PHONY: libudis86 udcli tests docs
+
+libudis86:
+ $(MAKE) -C $@
+
+udcli: libudis86
+ $(MAKE) -C $@
+
+tests: check
+
+maintainer-clean-local:
+ -rm -rf build/m4
+ -rm -rf build
+ -rm -rf autom4te.cache
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/UefiDriver/udis86/README b/UefiDriver/udis86/README
new file mode 100644
index 0000000..03eaee5
--- /dev/null
+++ b/UefiDriver/udis86/README
@@ -0,0 +1,91 @@
+Udis86
+======
+
+Udis86 is a disassembler for the x86 and x86-64 class of instruction set
+architectures. It consists of a C library called libudis86 which
+provides a clean and simple interface to decode a stream of raw binary
+data, and to inspect the disassembled instructions in a structured
+manner.
+
+
+LICENSE
+-------
+
+Udis86 is distributed under the terms of the 2-clause "Simplified BSD
+License". A copy of the license is included with the source in LICENSE.
+
+
+libudis86
+---------
+
+ o Supports all x86 and x86-64 (AMD64) General purpose and
+ System instructions.
+ o Supported ISA extensions:
+ - MMX, FPU (x87), AMD 3DNow
+ - SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AES,
+ - AMD-V, INTEL-VMX, SMX
+ o Instructions are defined in an XML document, with opcode
+ tables generated for performance.
+ o Supports output in both INTEL (NASM) as well as AT&T (GNU as) style
+ assembly language syntax.
+ o Supports a variety of input methods: Files, Memory Buffers, and
+ Function Callback hooks.
+ o Re-entrant, no dynamic memory allocation.
+ o Fully documented API
+
+
+ -- EXAMPLE -----------------------------------------------------------
+
+ ud_t u;
+
+ ud_init(&u);
+ ud_set_input_file(&u, stdin);
+ ud_set_mode(&u, 64);
+ ud_set_syntax(&u, UD_SYN_INTEL);
+
+ while (ud_disassemble(&u)) {
+ printf("\t%s\n", ud_insn_asm(&ud_obj));
+ }
+
+ ----------------------------------------------------------------------
+
+
+udcli
+-----
+
+udcli is a small command-line tool for your quick disassembly needs.
+
+ -- EXAMPLE -----------------------------------------------------------
+
+ $ echo "65 67 89 87 76 65 54 56 78 89 09 00 90" | udcli -32 -x
+ 0000000080000800 656789877665 mov [gs:bx+0x6576], eax
+ 0000000080000806 54 push esp
+ 0000000080000807 56 push esi
+ 0000000080000808 7889 js 0x80000793
+ 000000008000080a 0900 or [eax], eax
+ 000000008000080c 90 nop
+
+ ----------------------------------------------------------------------
+
+
+Documentation
+-------------
+
+The libudis86 api is fully documented. The package distribution contains
+a Texinfo file which can be installed by invoking "make install-info".
+You can also find an online html version of the documentation available
+at http://udis86.sourceforge.net/.
+
+
+Autotools Build
+---------------
+
+You need autotools if building from sources cloned form version control
+system, or if you need to regenerate the build system. The wrapper
+script 'autogen.sh' is provided that'll generate the build system.
+
+
+AUTHOR
+------
+
+Udis86 is written and maintained by Vivek Thampi (vivek.mt@gmail.com).
diff --git a/UefiDriver/udis86/aclocal.m4 b/UefiDriver/udis86/aclocal.m4
new file mode 100644
index 0000000..2b4a857
--- /dev/null
+++ b/UefiDriver/udis86/aclocal.m4
@@ -0,0 +1,1038 @@
+# generated automatically by aclocal 1.13.1 -*- Autoconf -*-
+
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.13'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.13.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.13.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
+ [$1], [CXX], [depcc="$CXX" am_compiler_list=],
+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+ [$1], [UPC], [depcc="$UPC" am_compiler_list=],
+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+ [--enable-dependency-tracking],
+ [do not reject slow dependency extractors])
+AS_HELP_STRING(
+ [--disable-dependency-tracking],
+ [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named 'Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running 'make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each '.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+ [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+#
+#
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES([CC])],
+ [m4_define([AC_PROG_CC],
+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES([CXX])],
+ [m4_define([AC_PROG_CXX],
+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+ [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+ alias in your environment])
+ fi
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+ [--enable-silent-rules],
+ [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+ [--disable-silent-rules],
+ [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of '-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([build/m4/libtool.m4])
+m4_include([build/m4/ltoptions.m4])
+m4_include([build/m4/ltsugar.m4])
+m4_include([build/m4/ltversion.m4])
+m4_include([build/m4/lt~obsolete.m4])
diff --git a/UefiDriver/udis86/config.h.in b/UefiDriver/udis86/config.h.in
new file mode 100644
index 0000000..7626fbd
--- /dev/null
+++ b/UefiDriver/udis86/config.h.in
@@ -0,0 +1,71 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_ASSERT_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STDIO_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
diff --git a/UefiDriver/udis86/configure b/UefiDriver/udis86/configure
new file mode 100644
index 0000000..09f9727
--- /dev/null
+++ b/UefiDriver/udis86/configure
@@ -0,0 +1,15030 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for udis86 1.7.2.
+#
+# Report bugs to .
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and vivek.mt@gmail.com
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 &1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='udis86'
+PACKAGE_TARNAME='udis86'
+PACKAGE_VERSION='1.7.2'
+PACKAGE_STRING='udis86 1.7.2'
+PACKAGE_BUGREPORT='vivek.mt@gmail.com'
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include
+#ifdef HAVE_SYS_TYPES_H
+# include
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include
+#endif
+#ifdef STDC_HEADERS
+# include
+# include
+#else
+# ifdef HAVE_STDLIB_H
+# include
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include
+# endif
+# include
+#endif
+#ifdef HAVE_STRINGS_H
+# include
+#endif
+#ifdef HAVE_INTTYPES_H
+# include
+#endif
+#ifdef HAVE_STDINT_H
+# include
+#endif
+#ifdef HAVE_UNISTD_H
+# include
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+HAVE_SPHINX_DOC_FALSE
+HAVE_SPHINX_DOC_TRUE
+SPHINX_VERSION
+SPHINX_BUILD
+HAVE_YASM_FALSE
+HAVE_YASM_TRUE
+YASM_VERSION
+YASM
+PYTHON
+CPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+RANLIB
+ac_ct_AR
+AR
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+LIBTOOL
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+TARGET_WINDOWS_FALSE
+TARGET_WINDOWS_TRUE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+OBJDUMP
+DLLTOOL
+AS
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+ACLOCAL_AMFLAGS
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+enable_dependency_tracking
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+with_python
+with_yasm
+with_sphinx_build
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+PYTHON
+YASM
+SPHINX_BUILD'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures udis86 1.7.2 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/udis86]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of udis86 1.7.2:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-silent-rules less verbose build output (undo: "make V=1")
+ --disable-silent-rules verbose build output (undo: "make V=0")
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+ speeds up one-time build
+ --enable-shared[=PKGS] build shared libraries [default=no]
+ --enable-static[=PKGS] build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-sysroot=DIR Search for dependent libraries within DIR
+ (or the compiler's sysroot if not specified).
+ --with-python=[[PATH]]
+ absolute path to python executable
+ --with-yasm=[[PATH]] absolute path to yasm executable
+ --with-sphinx-build=[[PATH]]
+ absolute path to sphinx-build executable
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L if you have libraries in a
+ nonstandard directory
+ LIBS libraries to pass to the linker, e.g. -l
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if
+ you have headers in a nonstandard directory
+ CPP C preprocessor
+ PYTHON Absolute path to python executable
+ YASM Absolute path to yasm executable
+ SPHINX_BUILD
+ Absolute path to sphinx-build executable
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to .
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+udis86 configure 1.7.2
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case declares $2.
+ For example, HP-UX 11i declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer to if __STDC__ is defined, since
+ exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include
+#else
+# include
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## --------------------------------- ##
+## Report this to vivek.mt@gmail.com ##
+## --------------------------------- ##"
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by udis86 $as_me 1.7.2, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+ac_aux_dir=
+for ac_dir in build "$srcdir"/build; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in build \"$srcdir\"/build" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+
+
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_compare_version.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+#
+# DESCRIPTION
+#
+# This macro compares two version strings. Due to the various number of
+# minor-version numbers that can exist, and the fact that string
+# comparisons are not compatible with numeric comparisons, this is not
+# necessarily trivial to do in a autoconf script. This macro makes doing
+# these comparisons easy.
+#
+# The six basic comparisons are available, as well as checking equality
+# limited to a certain number of minor-version levels.
+#
+# The operator OP determines what type of comparison to do, and can be one
+# of:
+#
+# eq - equal (test A == B)
+# ne - not equal (test A != B)
+# le - less than or equal (test A <= B)
+# ge - greater than or equal (test A >= B)
+# lt - less than (test A < B)
+# gt - greater than (test A > B)
+#
+# Additionally, the eq and ne operator can have a number after it to limit
+# the test to that number of minor versions.
+#
+# eq0 - equal up to the length of the shorter version
+# ne0 - not equal up to the length of the shorter version
+# eqN - equal up to N sub-version levels
+# neN - not equal up to N sub-version levels
+#
+# When the condition is true, shell commands ACTION-IF-TRUE are run,
+# otherwise shell commands ACTION-IF-FALSE are run. The environment
+# variable 'ax_compare_version' is always set to either 'true' or 'false'
+# as well.
+#
+# Examples:
+#
+# AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8])
+# AX_COMPARE_VERSION([3.15],[lt],[3.15.8])
+#
+# would both be true.
+#
+# AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8])
+# AX_COMPARE_VERSION([3.15],[gt],[3.15.8])
+#
+# would both be false.
+#
+# AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8])
+#
+# would be true because it is only comparing two minor versions.
+#
+# AX_COMPARE_VERSION([3.15.7],[eq0],[3.15])
+#
+# would be true because it is only comparing the lesser number of minor
+# versions of the two values.
+#
+# Note: The characters that separate the version numbers do not matter. An
+# empty string is the same as version 0. OP is evaluated by autoconf, not
+# configure, so must be a string, not a variable.
+#
+# The author would like to acknowledge Guido Draheim whose advice about
+# the m4_case and m4_ifvaln functions make this macro only include the
+# portions necessary to perform the specific comparison specified by the
+# OP argument in the final configure script.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Tim Toolan
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 11
+
+
+# SYNOPSIS
+#
+# AX_PROG_SPHINX_VERSION([VERSION],[ACTION-IF-TRUE],[ACTION-IF-FALSE])
+#
+# DESCRIPTION
+#
+# Makes sure that sphinx-build supports the version indicated. If true
+# the shell commands in ACTION-IF-TRUE are executed. If not the shell
+# commands in ACTION-IF-FALSE are run. Note if $SPHINX_BUILD is not set
+# (for example by running AX_WITH_PROG) the macro will fail.
+#
+# Example:
+#
+# AX_WITH_PROG(SPHINX_BUILD,sphinx-build)
+# AX_PROG_SPHINX([1.1.1],[ ... ],[ ... ])
+#
+# LICENSE
+#
+# ax_prog_python_version.m4
+#
+# Copyright (c) 2009 Francesco Salvestrini
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+#
+# ax_prog_sphinx_version.m4
+#
+# Copyright (c) 2013 Vivek Thampi
+
+
+
+
+# SYNOPSIS
+#
+# AX_PROG_YASM_VERSION([VERSION],[ACTION-IF-TRUE],[ACTION-IF-FALSE])
+#
+# DESCRIPTION
+#
+# Makes sure that yasm supports the version indicated. If true
+# the shell commands in ACTION-IF-TRUE are executed. If not the shell
+# commands in ACTION-IF-FALSE are run. Note if $YASM is not set
+# (for example by running AX_WITH_PROG) the macro will fail.
+#
+# Example:
+#
+# AX_WITH_PROG(YASM,yasm)
+# AX_PROG_YASM_VERSION([1.1.1],[ ... ],[ ... ])
+#
+# LICENSE
+#
+# ax_prog_python_version.m4
+#
+# Copyright (c) 2009 Francesco Salvestrini
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+#
+# ax_prog_yasm_version.m4
+#
+# Copyright (c) 2013 Vivek Thampi
+
+
+
+
+# ===========================================================================
+# http://www.nongnu.org/autoconf-archive/ax_with_prog.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_WITH_PROG([VARIABLE],[program],[VALUE-IF-NOT-FOUND],[PATH])
+#
+# DESCRIPTION
+#
+# Locates an installed program binary, placing the result in the precious
+# variable VARIABLE. Accepts a present VARIABLE, then --with-program, and
+# failing that searches for program in the given path (which defaults to
+# the system path). If program is found, VARIABLE is set to the full path
+# of the binary; if it is not found VARIABLE is set to VALUE-IF-NOT-FOUND
+# if provided, unchanged otherwise.
+#
+# A typical example could be the following one:
+#
+# AX_WITH_PROG(PERL,perl)
+#
+# NOTE: This macro is based upon the original AX_WITH_PYTHON macro from
+# Dustin J. Mitchell .
+#
+# LICENSE
+#
+# Copyright (c) 2008 Francesco Salvestrini
+# Copyright (c) 2008 Dustin J. Mitchell
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved.
+
+
+
+# ===========================================================================
+# http://www.nongnu.org/autoconf-archive/ax_with_python.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_WITH_PYTHON([VALUE-IF-NOT-FOUND],[PATH])
+#
+# DESCRIPTION
+#
+# Locates an installed Python binary, placing the result in the precious
+# variable $PYTHON. Accepts a present $PYTHON, then --with-python, and
+# failing that searches for python in the given path (which defaults to
+# the system path). If python is found, $PYTHON is set to the full path of
+# the binary; if it is not found $PYTHON is set to VALUE-IF-NOT-FOUND if
+# provided, unchanged otherwise.
+#
+# A typical use could be the following one:
+#
+# AX_WITH_PYTHON
+#
+# LICENSE
+#
+# Copyright (c) 2008 Francesco Salvestrini
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved.
+
+
+
+
+# Make sure $ACLOCAL_FLAGS are used during a rebuild.
+ACLOCAL_AMFLAGS="-I $ac_macro_dir \${ACLOCAL_FLAGS}"
+
+
+#
+# Determine the build host; we notify automake of Windows
+# builds, so it can pass proper parameters for building
+# DLLs to the linker.
+#
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+case "$host_os" in
+ mingw32* )
+ TARGET_OS=windows
+ enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AS"; then
+ ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AS="${ac_tool_prefix}as"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+ ac_ct_AS=$AS
+ # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AS"; then
+ ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AS="as"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AS" = x; then
+ AS="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AS=$ac_ct_AS
+ fi
+else
+ AS="$ac_cv_prog_AS"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+ ;;
+esac
+
+test -z "$AS" && AS=as
+
+
+
+
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+ ;;
+esac
+
+# Initialize the automake subsystem.
+am__api_version='1.13'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+ alias in your environment" "$LINENO" 5
+ fi
+ if test "$2" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='udis86'
+ VERSION='1.7.2'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+#
+#
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+#
+# In case we have a Windows build, we pass a
+# TARGET_WINDOWS conditional to automake.
+#
+ if test "$TARGET_OS" = windows; then
+ TARGET_WINDOWS_TRUE=
+ TARGET_WINDOWS_FALSE='#'
+else
+ TARGET_WINDOWS_TRUE='#'
+ TARGET_WINDOWS_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+#include
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+# Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=no
+fi
+
+
+
+
+
+
+
+
+
+case `pwd` in
+ *\ * | *\ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.2'
+macro_revision='1.3337'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO ""
+}
+
+case "$ECHO" in
+ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 &5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 &5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in dumpbin "link -dump"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in dumpbin "link -dump"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ os2*)
+ # The test takes a long time on OS/2.
+ lt_cv_sys_max_cmd_len=8192
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,b/c, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+ ;;
+ esac
+ ;;
+ *-*-cygwin* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+ ;;
+ *-*-cygwin* )
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+ * ) # otherwise, assume *nix
+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+ ;;
+ esac
+ ;;
+ * ) # unhandled hosts (and "normal" native builds)
+ lt_cv_to_host_file_cmd=func_convert_file_noop
+ ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+ *-*-mingw* )
+ case $build in
+ *-*-mingw* ) # actually msys
+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+ ;;
+ esac
+ ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ if test "$GCC" != yes; then
+ reload_cmds=false
+ fi
+ ;;
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+haiku*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[3-9]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+ case $host_os in
+ mingw* | pw32*)
+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+ want_nocaseglob=yes
+ else
+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+ fi
+ ;;
+ esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DLLTOOL" = x; then
+ DLLTOOL="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DLLTOOL=$ac_ct_DLLTOOL
+ fi
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+ # two different shell functions defined in ltmain.sh
+ # decide which to use based on capabilities of $DLLTOOL
+ case `$DLLTOOL --help 2>&1` in
+ *--identify-strict*)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+ ;;
+ *)
+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+ ;;
+ esac
+ ;;
+*)
+ # fallback: assume linklib IS sharedlib
+ lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ar_at_file=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ echo conftest.$ac_objext > conftest.lst
+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -eq 0; then
+ # Ensure the archiver fails upon bogus file names.
+ rm -f conftest.$ac_objext libconftest.a
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+ (eval $lt_ar_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if test "$ac_status" -ne 0; then
+ lt_cv_ar_at_file=@
+ fi
+ fi
+ rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK '"\
+" {last_section=section; section=\$ 3};"\
+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+ relocations are performed -- see ld's documentation on pseudo-relocs. */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data. */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+LT_DLSYM_CONST struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_globsym_save_LIBS=$LIBS
+ lt_globsym_save_CFLAGS=$CFLAGS
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS=$lt_globsym_save_LIBS
+ CFLAGS=$lt_globsym_save_CFLAGS
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+ nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+ withval=$with_sysroot;
+else
+ with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+ if test "$GCC" = yes; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+ ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_cc_needs_belf=yes
+else
+ lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*)
+ case $host in
+ i?86-*-solaris*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ sparc*-*-solaris*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+ LD="${LD-ld}_sol2"
+ fi
+ ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MANIFEST_TOOL"; then
+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+ # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_MANIFEST_TOOL"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_MANIFEST_TOOL" = x; then
+ MANIFEST_TOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+ fi
+else
+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_path_mainfest_tool=no
+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+ cat conftest.err >&5
+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+ lt_cv_path_mainfest_tool=yes
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+ MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_NMEDIT="nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LIPO"; then
+ ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+ ac_ct_LIPO=$LIPO
+ # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_LIPO"; then
+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_LIPO="lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_LIPO" = x; then
+ LIPO=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LIPO=$ac_ct_LIPO
+ fi
+else
+ LIPO="$ac_cv_prog_LIPO"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL"; then
+ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+ ac_ct_OTOOL=$OTOOL
+ # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL"; then
+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OTOOL="otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL" = x; then
+ OTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL=$ac_ct_OTOOL
+ fi
+else
+ OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL64"; then
+ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+ ac_ct_OTOOL64=$OTOOL64
+ # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL64"; then
+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OTOOL64="otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL64" = x; then
+ OTOOL64=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL64=$ac_ct_OTOOL64
+ fi
+else
+ OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ # If there is a non-empty error log, and "single_module"
+ # appears in it, assume the flag caused a linker warning
+ if test -s conftest.err && $GREP single_module conftest.err; then
+ cat conftest.err >&5
+ # Otherwise, if the output was created with a 0 exit code from
+ # the compiler, it worked.
+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_ld_exported_symbols_list=yes
+else
+ lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
+ echo "$RANLIB libconftest.a" >&5
+ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -s conftest.err && $GREP force_load conftest.err; then
+ cat conftest.err >&5
+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer to if __STDC__ is defined, since
+ # exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include
+#else
+# include
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer to if __STDC__ is defined, since
+ # exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include
+#else
+# include
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+#include
+#include
+#include
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include
+#include
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+
+
+
+ enable_dlopen=no
+
+
+
+
+ # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+ withval=$with_pic; lt_p=${PACKAGE-default}
+ case $withval in
+ yes|no) pic_mode=$withval ;;
+ *)
+ pic_mode=default
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for lt_pkg in $withval; do
+ IFS="$lt_save_ifs"
+ if test "X$lt_pkg" = "X$lt_p"; then
+ pic_mode=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+ # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ case $cc_basename in
+ nvcc*)
+ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+ *)
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+
+
+
+
+
+ lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ lt_prog_compiler_static=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ lt_prog_compiler_wl='-Xlinker '
+ if test -n "$lt_prog_compiler_pic"; then
+ lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+ fi
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
+ nagfor*)
+ # NAG Fortran compiler
+ lt_prog_compiler_wl='-Wl,-Wl,,'
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-qpic'
+ lt_prog_compiler_static='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ *Sun\ F* | *Sun*Fortran*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Qoption ld '
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ *Intel*\ [CF]*Compiler*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ *Portland\ Group*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ always_export_symbols=no
+ archive_cmds=
+ archive_expsym_cmds=
+ compiler_needs_object=no
+ enable_shared_with_static_runtimes=no
+ export_dynamic_flag_spec=
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic=no
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_separator=
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+ link_all_deplibs=unknown
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+ old_archive_from_expsyms_cmds=
+ thread_safe_flag_spec=
+ whole_archive_flag_spec=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test "$with_gnu_ld" = yes; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+ *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test "$lt_use_gnu_ld_interface" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ export_dynamic_flag_spec='${wl}--export-all-symbols'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ haiku*)
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ link_all_deplibs=yes
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=' $pic_flag'
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global
+ # defined symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ file_list_spec='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ export_dynamic_flag_spec='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ if test "${lt_cv_aix_libpath+set}" = set; then
+ aix_libpath=$lt_cv_aix_libpath
+else
+ if ${lt_cv_aix_libpath_+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+ lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\([^ ]*\) *$/\1/
+ p
+ }
+ }'
+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ # Check for a 64-bit object if we didn't find anything.
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test -z "$lt_cv_aix_libpath_"; then
+ lt_cv_aix_libpath_="/usr/lib:/lib"
+ fi
+
+fi
+
+ aix_libpath=$lt_cv_aix_libpath_
+fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ fi
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ case $cc_basename in
+ cl*)
+ # Native MSVC
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ file_list_spec='@'
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+ else
+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ fi~
+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+ linknames='
+ # The linker will not automatically build a static lib if we build a DLL.
+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+ enable_shared_with_static_runtimes=yes
+ exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+ # Don't use ranlib
+ old_postinstall_cmds='chmod 644 $oldlib'
+ postlink_cmds='lt_outputfile="@OUTPUT@"~
+ lt_tool_outputfile="@TOOL_OUTPUT@"~
+ case $lt_outputfile in
+ *.exe|*.EXE) ;;
+ *)
+ lt_outputfile="$lt_outputfile.exe"
+ lt_tool_outputfile="$lt_tool_outputfile.exe"
+ ;;
+ esac~
+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+ $RM "$lt_outputfile.manifest";
+ fi'
+ ;;
+ *)
+ # Assume MSVC wrapper
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ enable_shared_with_static_runtimes=yes
+ ;;
+ esac
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+ else
+ whole_archive_flag_spec=''
+ fi
+ link_all_deplibs=yes
+ allow_undefined_flag="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+ else
+ ld_shlibs=no
+ fi
+
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2.*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler__b=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -b"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler__b=yes
+ fi
+ else
+ lt_cv_prog_compiler__b=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ # This should be the same for all languages, so no per-tag cache variable.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_irix_exported_symbol=yes
+else
+ lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+ if test "$lt_cv_irix_exported_symbol" = yes; then
+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ fi
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ inherit_rpath=yes
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ hardcode_direct_absolute=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-R,$libdir'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ lt_cv_archive_cmds_need_lc=no
+ else
+ lt_cv_archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+ *) lt_sed_strip_eq="s,=/,/,g" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib.so
+ # instead of lib.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$cc_basename in
+ yes,*)
+ # gcc
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ ;;
+
+ *,cl*)
+ # Native MSVC
+ libname_spec='$name'
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ library_names_spec='${libname}.dll.lib'
+
+ case $build_os in
+ mingw*)
+ sys_lib_search_path_spec=
+ lt_save_ifs=$IFS
+ IFS=';'
+ for lt_path in $LIB
+ do
+ IFS=$lt_save_ifs
+ # Let DOS variable expansion print the short 8.3 style file name.
+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+ done
+ IFS=$lt_save_ifs
+ # Convert to MSYS style.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+ ;;
+ cygwin*)
+ # Convert to unix form, then to dos form, then back to unix form
+ # but this time dos style (no spaces!) so that the unix form looks
+ # like /cygdrive/c/PROGRA~1:/cygdr...
+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ *)
+ sys_lib_search_path_spec="$LIB"
+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH.
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ # FIXME: find the short name or the path components, as spaces are
+ # common. (e.g. "Program Files" -> "PROGRA~1")
+ ;;
+ esac
+
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+ dynamic_linker='Win32 link.exe'
+ ;;
+
+ *)
+ # Assume MSVC wrapper
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ dynamic_linker='Win32 ld.exe'
+ ;;
+ esac
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[23].*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2.*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[3-9]*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+fi
+
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux # correct to gnu/linux during the next big refactor
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux # correct to gnu/linux during the next big refactor
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+ test -n "$runpath_var" ||
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+ test "$inherit_rpath" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+
+
+
+
+ if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+ lt_cv_dlopen="shl_load"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_shl_load=yes
+else
+ ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_svld_dlopen=yes
+else
+ ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_dld_link=yes
+else
+ ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include
+#endif
+
+#include
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include
+#endif
+
+#include
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ # Report which library types will actually be built
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+# Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=yes
+fi
+
+
+
+
+
+
+if test "x$CC" != xcc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ if test "x$CC" != xcc; then
+ # Test first that cc exists at all.
+ if { ac_try='cc -c conftest.$ac_ext >&5'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+ rm -f conftest2.*
+ if { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } &&
+ test -f conftest2.$ac_objext && { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; };
+ then
+ # cc works too.
+ :
+ else
+ # cc exists but doesn't like -o.
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ fi
+ fi
+ fi
+else
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+
+
+
+# If this is a gnu compiler, pass -Wall
+if test "$ac_cv_c_compiler_gnu" = "yes"; then
+ CFLAGS="$CFLAGS -Wall"
+fi
+
+# Look for python
+
+
+
+
+
+
+
+
+
+
+
+ if test -z "$PYTHON"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether python executable path has been provided" >&5
+$as_echo_n "checking whether python executable path has been provided... " >&6; }
+
+# Check whether --with-python was given.
+if test "${with_python+set}" = set; then :
+ withval=$with_python;
+ if test "$withval" != yes -a "$withval" != no; then :
+
+ PYTHON="$withval"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+
+else
+
+ PYTHON=""
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ if test "$withval" != no; then :
+
+ # Extract the first word of "python", so it can be a program name with args.
+set dummy python; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PYTHON in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+fi
+
+fi
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ # Extract the first word of "python", so it can be a program name with args.
+set dummy python; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PYTHON in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+fi
+
+
+fi
+
+
+
+
+
+
+
+if test "x$PYTHON" = "x"; then
+ as_fn_error $? "Python not found. Use --with-python to specify path to python binary " "$LINENO" 5
+fi
+
+# Yasm (>= 1.2.0) for testing
+
+
+
+
+
+
+
+
+
+
+ if test -z "$YASM"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yasm executable path has been provided" >&5
+$as_echo_n "checking whether yasm executable path has been provided... " >&6; }
+
+# Check whether --with-yasm was given.
+if test "${with_yasm+set}" = set; then :
+ withval=$with_yasm;
+ if test "$withval" != yes -a "$withval" != no; then :
+
+ YASM="$withval"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YASM" >&5
+$as_echo "$YASM" >&6; }
+
+else
+
+ YASM=""
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ if test "$withval" != no; then :
+
+ # Extract the first word of "yasm", so it can be a program name with args.
+set dummy yasm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_YASM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $YASM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_YASM="$YASM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_YASM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+YASM=$ac_cv_path_YASM
+if test -n "$YASM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YASM" >&5
+$as_echo "$YASM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+fi
+
+fi
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ # Extract the first word of "yasm", so it can be a program name with args.
+set dummy yasm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_YASM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $YASM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_YASM="$YASM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_YASM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+YASM=$ac_cv_path_YASM
+if test -n "$YASM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YASM" >&5
+$as_echo "$YASM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+fi
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+ if test -n "$YASM"; then :
+
+ ax_yasm_version="1.2.0"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yasm version" >&5
+$as_echo_n "checking for yasm version... " >&6; }
+
+ yasm_version=`$YASM --version 2>&1 | $GREP "^yasm " | $SED -e 's/^.* \([0-9]*\.[0-9]*\.[0-9]*\)/\1/'`
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $yasm_version" >&5
+$as_echo "$yasm_version" >&6; }
+
+ YASM_VERSION=$yasm_version
+
+
+
+
+
+ # Used to indicate true or false condition
+ ax_compare_version=false
+
+ # Convert the two version strings to be compared into a format that
+ # allows a simple string comparison. The end result is that a version
+ # string of the form 1.12.5-r617 will be converted to the form
+ # 0001001200050617. In other words, each number is zero padded to four
+ # digits, and non digits are removed.
+
+ ax_compare_version_A=`echo "$ax_yasm_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+ -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+ -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+ -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+ -e 's/[^0-9]//g'`
+
+
+ ax_compare_version_B=`echo "$yasm_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+ -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+ -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+ -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+ -e 's/[^0-9]//g'`
+
+
+ ax_compare_version=`echo "x$ax_compare_version_A
+x$ax_compare_version_B" | sed 's/^ *//' | sort | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"`
+
+
+
+ if test "$ax_compare_version" = "true" ; then
+
+ :
+ ac_have_yasm_version=1
+
+ else
+ :
+
+
+ fi
+
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find the yasm" >&5
+$as_echo "$as_me: WARNING: could not find the yasm" >&2;}
+
+
+fi
+
+ if test -n "$ac_have_yasm_version"; then
+ HAVE_YASM_TRUE=
+ HAVE_YASM_FALSE='#'
+else
+ HAVE_YASM_TRUE='#'
+ HAVE_YASM_FALSE=
+fi
+
+
+# Sphinx (>= 1.1.3) for documentation
+
+
+
+
+
+
+
+
+
+
+ if test -z "$SPHINX_BUILD"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sphinx-build executable path has been provided" >&5
+$as_echo_n "checking whether sphinx-build executable path has been provided... " >&6; }
+
+# Check whether --with-sphinx-build was given.
+if test "${with_sphinx_build+set}" = set; then :
+ withval=$with_sphinx_build;
+ if test "$withval" != yes -a "$withval" != no; then :
+
+ SPHINX_BUILD="$withval"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SPHINX_BUILD" >&5
+$as_echo "$SPHINX_BUILD" >&6; }
+
+else
+
+ SPHINX_BUILD=""
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ if test "$withval" != no; then :
+
+ # Extract the first word of "sphinx-build", so it can be a program name with args.
+set dummy sphinx-build; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SPHINX_BUILD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SPHINX_BUILD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SPHINX_BUILD="$SPHINX_BUILD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SPHINX_BUILD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SPHINX_BUILD=$ac_cv_path_SPHINX_BUILD
+if test -n "$SPHINX_BUILD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SPHINX_BUILD" >&5
+$as_echo "$SPHINX_BUILD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+fi
+
+fi
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ # Extract the first word of "sphinx-build", so it can be a program name with args.
+set dummy sphinx-build; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SPHINX_BUILD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SPHINX_BUILD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SPHINX_BUILD="$SPHINX_BUILD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SPHINX_BUILD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SPHINX_BUILD=$ac_cv_path_SPHINX_BUILD
+if test -n "$SPHINX_BUILD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SPHINX_BUILD" >&5
+$as_echo "$SPHINX_BUILD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+fi
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+ if test -n "$SPHINX_BUILD"; then :
+
+ ax_sphinx_version="1.1.3"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sphinx version" >&5
+$as_echo_n "checking for sphinx version... " >&6; }
+
+ sphinx_version=`$SPHINX_BUILD -h 2>&1 | $GREP "^Sphinx v" | $SED -e 's/^.* v\([0-9]*\.[0-9]*\.[0-9]*\)/\1/'`
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sphinx_version" >&5
+$as_echo "$sphinx_version" >&6; }
+
+ SPHINX_VERSION=$sphinx_version
+
+
+
+
+
+ # Used to indicate true or false condition
+ ax_compare_version=false
+
+ # Convert the two version strings to be compared into a format that
+ # allows a simple string comparison. The end result is that a version
+ # string of the form 1.12.5-r617 will be converted to the form
+ # 0001001200050617. In other words, each number is zero padded to four
+ # digits, and non digits are removed.
+
+ ax_compare_version_A=`echo "$ax_sphinx_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+ -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+ -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+ -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+ -e 's/[^0-9]//g'`
+
+
+ ax_compare_version_B=`echo "$sphinx_version" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+ -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
+ -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
+ -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
+ -e 's/[^0-9]//g'`
+
+
+ ax_compare_version=`echo "x$ax_compare_version_A
+x$ax_compare_version_B" | sed 's/^ *//' | sort | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"`
+
+
+
+ if test "$ax_compare_version" = "true" ; then
+
+ :
+ ac_have_sphinx_version=1
+
+ else
+ :
+
+
+ fi
+
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find the sphinx documentation tool" >&5
+$as_echo "$as_me: WARNING: could not find the sphinx documentation tool" >&2;}
+
+
+fi
+
+ if test -n "$ac_have_sphinx_version"; then
+ HAVE_SPHINX_DOC_TRUE=
+ HAVE_SPHINX_DOC_FALSE='#'
+else
+ HAVE_SPHINX_DOC_TRUE='#'
+ HAVE_SPHINX_DOC_FALSE=
+fi
+
+
+for ac_header in assert.h stdio.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ac_config_files="$ac_config_files Makefile scripts/Makefile libudis86/Makefile udcli/Makefile tests/Makefile docs/Makefile docs/manual/Makefile docs/x86/Makefile tests/difftest.sh"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${TARGET_WINDOWS_TRUE}" && test -z "${TARGET_WINDOWS_FALSE}"; then
+ as_fn_error $? "conditional \"TARGET_WINDOWS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_YASM_TRUE}" && test -z "${HAVE_YASM_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_YASM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_SPHINX_DOC_TRUE}" && test -z "${HAVE_SPHINX_DOC_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_SPHINX_DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by udis86 $as_me 1.7.2, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to ."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+udis86 config.status 1.7.2
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in AS \
+DLLTOOL \
+OBJDUMP \
+SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'
+
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
+ "libudis86/Makefile") CONFIG_FILES="$CONFIG_FILES libudis86/Makefile" ;;
+ "udcli/Makefile") CONFIG_FILES="$CONFIG_FILES udcli/Makefile" ;;
+ "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+ "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
+ "docs/manual/Makefile") CONFIG_FILES="$CONFIG_FILES docs/manual/Makefile" ;;
+ "docs/x86/Makefile") CONFIG_FILES="$CONFIG_FILES docs/x86/Makefile" ;;
+ "tests/difftest.sh") CONFIG_FILES="$CONFIG_FILES tests/difftest.sh" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' >$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' >$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$ac_tmp/config.h" "$ac_file" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error $? "could not create -" "$LINENO" 5
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named 'Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running 'make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "libtool":C)
+
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags=""
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Assembler program.
+AS=$lt_AS
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$lt_OBJDUMP
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ if test x"$xsi_shell" = xyes; then
+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\ case ${1} in\
+\ */*) func_dirname_result="${1%/*}${2}" ;;\
+\ * ) func_dirname_result="${3}" ;;\
+\ esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\ func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\ case ${1} in\
+\ */*) func_dirname_result="${1%/*}${2}" ;;\
+\ * ) func_dirname_result="${3}" ;;\
+\ esac\
+\ func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\ # positional parameters, so assign one to ordinary parameter first.\
+\ func_stripname_result=${3}\
+\ func_stripname_result=${func_stripname_result#"${1}"}\
+\ func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\ func_split_long_opt_name=${1%%=*}\
+\ func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\ func_split_short_opt_arg=${1#??}\
+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\ case ${1} in\
+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\ *) func_lo2o_result=${1} ;;\
+\ esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+ func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+ func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+ func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+ sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+ eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\ func_quote_for_eval "${2}"\
+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+ # Save a `func_append' function call where possible by direct use of '+='
+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+else
+ # Save a `func_append' function call even when '+=' is not available
+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+ && mv -f "$cfgfile.tmp" "$cfgfile" \
+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+ test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/UefiDriver/udis86/configure.ac b/UefiDriver/udis86/configure.ac
new file mode 100644
index 0000000..9cdadf2
--- /dev/null
+++ b/UefiDriver/udis86/configure.ac
@@ -0,0 +1,83 @@
+#
+# udis86 autoconf
+#
+AC_PREREQ(2.59)
+AC_INIT([udis86], [1.7.2], [vivek.mt@gmail.com])
+AC_CONFIG_HEADERS(config.h)
+AC_CONFIG_AUX_DIR(build)
+AC_CONFIG_MACRO_DIR([build/m4])
+
+m4_include([m4/ax_compare_version.m4])
+m4_include([m4/ax_prog_sphinx_version.m4])
+m4_include([m4/ax_prog_yasm_version.m4])
+m4_include([m4/ax_with_prog.m4])
+m4_include([m4/ax_with_python.m4])
+
+# Make sure $ACLOCAL_FLAGS are used during a rebuild.
+AC_SUBST([ACLOCAL_AMFLAGS], ["-I $ac_macro_dir \${ACLOCAL_FLAGS}"])
+
+#
+# Determine the build host; we notify automake of Windows
+# builds, so it can pass proper parameters for building
+# DLLs to the linker.
+#
+AC_CANONICAL_HOST
+
+case "$host_os" in
+ mingw32* )
+ TARGET_OS=windows
+ AC_LIBTOOL_WIN32_DLL
+ ;;
+esac
+
+# Initialize the automake subsystem.
+AM_INIT_AUTOMAKE([1.11 -Wall -Wno-portability -Wno-extra-portability -Werror foreign])
+
+#
+# In case we have a Windows build, we pass a
+# TARGET_WINDOWS conditional to automake.
+#
+AM_CONDITIONAL(TARGET_WINDOWS, test "$TARGET_OS" = windows)
+
+AC_PROG_CC
+AC_DISABLE_SHARED
+AC_PROG_LIBTOOL
+AC_ENABLE_SHARED
+AM_PROG_CC_C_O
+
+# If this is a gnu compiler, pass -Wall
+if test "$ac_cv_c_compiler_gnu" = "yes"; then
+ CFLAGS="$CFLAGS -Wall"
+fi
+
+# Look for python
+AX_WITH_PYTHON
+if test "x$PYTHON" = "x"; then
+ AC_MSG_ERROR( [Python not found. Use --with-python to specify path to python binary] )
+fi
+
+# Yasm (>= 1.2.0) for testing
+AX_WITH_PROG(YASM,yasm)
+AX_PROG_YASM_VERSION([1.2.0],[ac_have_yasm_version=1],[])
+AM_CONDITIONAL(HAVE_YASM, [test -n "$ac_have_yasm_version"])
+
+# Sphinx (>= 1.1.3) for documentation
+AX_WITH_PROG(SPHINX_BUILD,sphinx-build)
+AX_PROG_SPHINX([1.1.3],[ac_have_sphinx_version=1],[])
+AM_CONDITIONAL(HAVE_SPHINX_DOC, [test -n "$ac_have_sphinx_version"])
+
+AC_CHECK_HEADERS([assert.h stdio.h])
+
+AC_CONFIG_FILES([
+ Makefile
+ scripts/Makefile
+ libudis86/Makefile
+ udcli/Makefile
+ tests/Makefile
+ docs/Makefile
+ docs/manual/Makefile
+ docs/x86/Makefile
+ tests/difftest.sh
+])
+
+AC_OUTPUT
diff --git a/UefiDriver/udis86/docs/Makefile.am b/UefiDriver/udis86/docs/Makefile.am
new file mode 100644
index 0000000..7d8b0da
--- /dev/null
+++ b/UefiDriver/udis86/docs/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = x86 manual
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/UefiDriver/udis86/docs/Makefile.in b/UefiDriver/udis86/docs/Makefile.in
new file mode 100644
index 0000000..c47e548
--- /dev/null
+++ b/UefiDriver/udis86/docs/Makefile.in
@@ -0,0 +1,590 @@
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = docs
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/build/m4/libtool.m4 \
+ $(top_srcdir)/build/m4/ltoptions.m4 \
+ $(top_srcdir)/build/m4/ltsugar.m4 \
+ $(top_srcdir)/build/m4/ltversion.m4 \
+ $(top_srcdir)/build/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/ax_compare_version.m4 \
+ $(top_srcdir)/m4/ax_prog_sphinx_version.m4 \
+ $(top_srcdir)/m4/ax_prog_yasm_version.m4 \
+ $(top_srcdir)/m4/ax_with_prog.m4 \
+ $(top_srcdir)/m4/ax_with_python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SPHINX_BUILD = @SPHINX_BUILD@
+SPHINX_VERSION = @SPHINX_VERSION@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YASM = @YASM@
+YASM_VERSION = @YASM_VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = x86 manual
+MAINTAINERCLEANFILES = Makefile.in
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign docs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-libtool cscopelist-am ctags \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags tags-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/UefiDriver/udis86/docs/manual/Makefile.am b/UefiDriver/udis86/docs/manual/Makefile.am
new file mode 100644
index 0000000..595dbe1
--- /dev/null
+++ b/UefiDriver/udis86/docs/manual/Makefile.am
@@ -0,0 +1,56 @@
+docdir = ${datadir}/docs/udis86/manual
+
+rst_sources = \
+ index.rst \
+ getstarted.rst \
+ libudis86.rst
+
+#
+# The official distribution only contains the rst files. So users
+# may generate documentation using Sphinx if they wish to.
+#
+EXTRA_DIST = \
+ $(rst_sources) \
+ udis86.info \
+ conf.py \
+ static
+
+MAINTAINERCLEANFILES = \
+ Makefile.in \
+ udis86.info
+
+if HAVE_SPHINX_DOC
+
+html-local:
+ $(SPHINX_BUILD) -c $(srcdir) -b html $(srcdir) $(builddir)/html
+
+udis86.info: $(rst_sources)
+ $(SPHINX_BUILD) -E -c $(srcdir) -b texinfo $(srcdir) $(builddir)/texinfo
+ $(MAKEINFO) --no-split $(builddir)/texinfo/udis86.texi
+
+check-local: html-local
+
+else
+
+udis86.info: $(rst_sources)
+html-local udis86.info:
+ @echo ""
+ @echo "------------------------------------------------------------------"
+ @echo ""
+ @echo " Please make sure you have Sphinx (sphinx-doc.org) version 1.1.3"
+ @echo " or above, to be able to build documentation."
+ @echo ""
+ @echo " You can also find documentation at http://udis86.sourceforge.net/"
+ @echo ""
+ @echo "------------------------------------------------------------------"
+ @echo ""
+ @exit 1
+
+endif
+
+install-info-local: udis86.info
+ install-info --info-dir=$(infodir) $<
+
+clean-local:
+ -rm -rf $(builddir)/html
+ -rm -rf $(builddir)/texinfo $(builddir)/udis86.info
diff --git a/UefiDriver/udis86/docs/manual/Makefile.in b/UefiDriver/udis86/docs/manual/Makefile.in
new file mode 100644
index 0000000..a1c8c04
--- /dev/null
+++ b/UefiDriver/udis86/docs/manual/Makefile.in
@@ -0,0 +1,461 @@
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = docs/manual
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/build/m4/libtool.m4 \
+ $(top_srcdir)/build/m4/ltoptions.m4 \
+ $(top_srcdir)/build/m4/ltsugar.m4 \
+ $(top_srcdir)/build/m4/ltversion.m4 \
+ $(top_srcdir)/build/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/ax_compare_version.m4 \
+ $(top_srcdir)/m4/ax_prog_sphinx_version.m4 \
+ $(top_srcdir)/m4/ax_prog_yasm_version.m4 \
+ $(top_srcdir)/m4/ax_with_prog.m4 \
+ $(top_srcdir)/m4/ax_with_python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SPHINX_BUILD = @SPHINX_BUILD@
+SPHINX_VERSION = @SPHINX_VERSION@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YASM = @YASM@
+YASM_VERSION = @YASM_VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = ${datadir}/docs/udis86/manual
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+rst_sources = \
+ index.rst \
+ getstarted.rst \
+ libudis86.rst
+
+
+#
+# The official distribution only contains the rst files. So users
+# may generate documentation using Sphinx if they wish to.
+#
+EXTRA_DIST = \
+ $(rst_sources) \
+ udis86.info \
+ conf.py \
+ static
+
+MAINTAINERCLEANFILES = \
+ Makefile.in \
+ udis86.info
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/manual/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign docs/manual/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+@HAVE_SPHINX_DOC_FALSE@check-local:
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+@HAVE_SPHINX_DOC_FALSE@html-local:
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am: html-local
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am: install-info-local
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool clean-local cscopelist-am ctags-am distclean \
+ distclean-generic distclean-libtool distdir dvi dvi-am html \
+ html-am html-local info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-info-local install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+
+@HAVE_SPHINX_DOC_TRUE@html-local:
+@HAVE_SPHINX_DOC_TRUE@ $(SPHINX_BUILD) -c $(srcdir) -b html $(srcdir) $(builddir)/html
+
+@HAVE_SPHINX_DOC_TRUE@udis86.info: $(rst_sources)
+@HAVE_SPHINX_DOC_TRUE@ $(SPHINX_BUILD) -E -c $(srcdir) -b texinfo $(srcdir) $(builddir)/texinfo
+@HAVE_SPHINX_DOC_TRUE@ $(MAKEINFO) --no-split $(builddir)/texinfo/udis86.texi
+
+@HAVE_SPHINX_DOC_TRUE@check-local: html-local
+
+@HAVE_SPHINX_DOC_FALSE@udis86.info: $(rst_sources)
+@HAVE_SPHINX_DOC_FALSE@html-local udis86.info:
+@HAVE_SPHINX_DOC_FALSE@ @echo ""
+@HAVE_SPHINX_DOC_FALSE@ @echo "------------------------------------------------------------------"
+@HAVE_SPHINX_DOC_FALSE@ @echo ""
+@HAVE_SPHINX_DOC_FALSE@ @echo " Please make sure you have Sphinx (sphinx-doc.org) version 1.1.3"
+@HAVE_SPHINX_DOC_FALSE@ @echo " or above, to be able to build documentation."
+@HAVE_SPHINX_DOC_FALSE@ @echo ""
+@HAVE_SPHINX_DOC_FALSE@ @echo " You can also find documentation at http://udis86.sourceforge.net/"
+@HAVE_SPHINX_DOC_FALSE@ @echo ""
+@HAVE_SPHINX_DOC_FALSE@ @echo "------------------------------------------------------------------"
+@HAVE_SPHINX_DOC_FALSE@ @echo ""
+@HAVE_SPHINX_DOC_FALSE@ @exit 1
+
+install-info-local: udis86.info
+ install-info --info-dir=$(infodir) $<
+
+clean-local:
+ -rm -rf $(builddir)/html
+ -rm -rf $(builddir)/texinfo $(builddir)/udis86.info
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/UefiDriver/udis86/docs/manual/conf.py b/UefiDriver/udis86/docs/manual/conf.py
new file mode 100644
index 0000000..2871b4c
--- /dev/null
+++ b/UefiDriver/udis86/docs/manual/conf.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+import sys, os
+
+source_suffix = '.rst'
+master_doc = 'index'
+project = u'udis86'
+copyright = u'2013, Vivek Thampi'
+version = '1.7'
+release = '1.7.1'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+pygments_style = 'sphinx'
+html_theme = 'pyramid'
+html_theme_options = { "nosidebar" : True }
+html_static_path = ['static']
+html_style = "udis86.css"
+htmlhelp_basename = 'udis86doc'
+
+latex_documents = [
+ ('index', 'udis86.tex', u'udis86 Documentation',
+ u'Vivek Thampi', 'manual'),
+]
+
+man_pages = [
+ ('index', 'udis86', u'udis86 Documentation',
+ [u'Vivek Thampi'], 1)
+]
+
+texinfo_documents = [
+ ('index', 'udis86', u'udis86 Documentation',
+ u'Vivek Thampi', 'udis86', 'Disassembler library for x86.',
+ 'Miscellaneous', True),
+]
diff --git a/UefiDriver/udis86/docs/manual/getstarted.rst b/UefiDriver/udis86/docs/manual/getstarted.rst
new file mode 100644
index 0000000..54b4c5e
--- /dev/null
+++ b/UefiDriver/udis86/docs/manual/getstarted.rst
@@ -0,0 +1,57 @@
+Getting Started
+===============
+
+
+Building and Installing udis86
+------------------------------
+
+udis86 is developed for unix-like environments, and like most software,
+the basic steps towards building and installing it are as follows.
+
+.. code::
+
+ $ ./configure
+ $ make
+ $ make install
+
+Depending on your choice of install location, you may need to have root
+privileges to do an install. The install scripts copy the necessary header
+and library files to appropriate locations in your system.
+
+
+Interfacing with libudis86: A Quick Example
+-------------------------------------------
+
+The following is an example of a program that interfaces with libudis86
+and uses the API to generate assembly language output for 64-bit code,
+input from STDIN.
+
+.. code-block:: c
+
+ #include
+ #include
+
+ int main()
+ {
+ ud_t ud_obj;
+
+ ud_init(&ud_obj);
+ ud_set_input_file(&ud_obj, stdin);
+ ud_set_mode(&ud_obj, 64);
+ ud_set_syntax(&ud_obj, UD_SYN_INTEL);
+
+ while (ud_disassemble(&ud_obj)) {
+ printf("\t%s\n", ud_insn_asm(&ud_obj));
+ }
+
+ return 0;
+ }
+
+To compile the program (using gcc):
+
+.. code::
+
+ $ gcc -ludis86 example.c -o example
+
+This example should give you an idea of how this library can be used. The
+following sections describe, in detail, the complete API of libudis86.
diff --git a/UefiDriver/udis86/docs/manual/index.rst b/UefiDriver/udis86/docs/manual/index.rst
new file mode 100644
index 0000000..1e5db0f
--- /dev/null
+++ b/UefiDriver/udis86/docs/manual/index.rst
@@ -0,0 +1,27 @@
+.. udis86 documentation master file
+
+Welcome to udis86's documentation!
+==================================
+
+Udis86 is a disassembler engine that decodes a stream of binary
+machine code bytes as opcodes defined in the x86 and x86-64 class
+of Instruction Set Archictures. The core component of this project
+is libudis86 which provides a clean and simple interface to
+disassemble binary code, and to inspect the disassembly to various
+degrees of detail. The library is designed to aid software
+projects that entail analysis and manipulation of all flavors of
+x86 binary code.
+
+
+.. toctree::
+ :maxdepth: 3
+
+ getstarted
+ libudis86
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/UefiDriver/udis86/docs/manual/libudis86.rst b/UefiDriver/udis86/docs/manual/libudis86.rst
new file mode 100644
index 0000000..67e1085
--- /dev/null
+++ b/UefiDriver/udis86/docs/manual/libudis86.rst
@@ -0,0 +1,531 @@
+libudis86
+=========
+
+libudis86 is a disassembler library for the x86 architecture, including support
+for the newer 64bit variants (IA32e, amd64, etc.) It provides you the ability
+to decode a stream of bytes as x86 instructions, inspect various bits
+of information about those instructions and even translate to human readable
+assembly language format.
+
+.. default-domain:: c
+
+.. contents::
+
+
+ud_t: udis86 object
+-------------------
+
+libudis86 is reentrant, and to maintain that property it does not use static
+data. All data related to the disassembly are stored in a single object, called
+the udis86 object :type:`ud_t`.
+
+.. c:type:: ud_t
+
+ A structure encapsulating udis86 disassembler state.
+
+To use libudis86 you must create an instance of this object,
+
+.. code-block:: c
+
+ ud_t ud_obj;
+
+and initialize it,
+
+.. code-block:: c
+
+ ud_init(&ud_obj);
+
+You can create multiple such objects and use with the library, each one
+an independent disassembler.
+
+
+Setup Machine State
+-------------------
+
+The decode semantics of a sequence of bytes depends on the target machine state
+for which they are being disassembled. In x86, this means the current effective
+processor mode (16, 32 or 64bits), the current program counter (ip/eip/rip), and
+sometimes, the processor vendor. By default, libudis86 is initialized to be in
+32 bit disassembly mode, program counter at 0, and vendor being :code:`UD_VENDOR_ANY`.
+The following functions allow you to override these default to suit your needs.
+
+.. c:function:: void ud_set_mode(ud_t*, uint8_t mode_bits)
+
+ Sets the mode of disassembly. Possible values are 16, 32, and 64. By
+ default, the library works in 32bit mode.
+
+.. c:function:: void ud_set_pc(ud_t*, uint64_t pc)
+
+ Sets the program counter (IP/EIP/RIP). This changes the offset of the
+ assembly output generated, with direct effect on branch instructions.
+
+.. c:function:: void ud_set_vendor(ud_t*, unsigned vendor)
+
+ Sets the vendor of whose instruction to choose from. This is only useful
+ for selecting the VMX or SVM instruction sets at which point INTEL and AMD
+ have diverged significantly. At a later stage, support for a more granular
+ selection of instruction sets maybe added.
+
+ * :code:`UD_VENDOR_INTEL` - for INTEL instruction set.
+ * :code:`UD_VENDOR_ATT` - for AMD instruction set.
+ * :code:`UD_VENDOR_ANY` - for any valid instruction in either INTEL or AMD.
+
+
+Setup Input
+-----------
+
+libudis86 provides three ways in which you can input binary data: as a fixed
+sized memory buffer, a standard library FILE object, or as a callback function.
+By default, a :type:`ud_t` object is initialized to read input from :code:`STDIN`.
+
+.. c:function:: void ud_set_input_buffer(ud_t*, unsigned char* buffer, size_t size)
+
+ Sets the input source for the library to a `buffer` of `size` bytes.
+
+.. c:function:: void ud_set_input_file(ud_t*, FILE* filep)
+
+ Sets the input source to a file pointed to by a given standard library
+ :code:`FILE` pointer. Note that libudis86 does not perform any checks,
+ and assumes that the file pointer is properly initialized and open for
+ reading.
+
+.. c:function:: void ud_set_input_hook(ud_t* ud_obj, int (*hook)(ud_t *ud_obj))
+
+ Sets a pointer to a function, to callback for input. The callback is invoked
+ each time libudis86 needs the next byte in the input stream. To single
+ end-of-input, this callback must return the constant :code:`UD_EOI`.
+
+ .. seealso:: :func:`ud_set_user_opaque_data`, :func:`ud_set_user_opaque_data`
+
+.. c:function:: void ud_input_skip(ud_t*, size_t n);
+
+ Skips ahead `n` number of bytes in the input stream.
+
+
+.. c:function:: int ud_input_end(const ud_t*);
+
+ Test for end of input. You can use this function to test if udis86
+ has exhausted the input.
+
+At the end of input, udis86 stops disassembly. If you want to restart or
+reset the source of input, you must again invoke one of the above functions.
+
+Sometimes you may want to associate custom data with a udis86 object, that you
+can use with the input callback function, or even in different parts of your
+own project as you pass the object around. You can use the following two
+functions to achieve this.
+
+.. c:function:: void ud_set_user_opaque_data(ud_t* ud_obj, void* opaque)
+
+ Associates a pointer with the udis86 object to be retrieved and used in
+ client functions, such as the input hook callback function.
+
+.. c:function:: void* ud_get_user_opaque_data(const ud_t* ud_obj)
+
+ Returns any pointer associated with the udis86 object, using the
+ :func:`ud_set_user_opaque_data` function.
+
+
+Setup Translation
+-----------------
+
+libudis86 can translate the decoded instruction into one of two assembly
+language dialects: the INTEL syntax (such as those found in NASM and YASM) and
+the other which resembles GNU Assembler (AT&T style) syntax. By default, this
+is set to INTEL like syntax. You can override the default or specify your own
+translator using the following function.
+
+.. c:function:: void ud_set_syntax(ud_t*, void (*translator)(ud_t*))
+
+ Sets the function that translates the intermediate decode information to
+ a human readable form. There are two inbuilt translators,
+
+ - :code:`UD_SYN_INTEL` for INTEL (NASM-like) syntax. (default)
+ - :code:`UD_SYN_ATT` for AT&T (GAS-like) syntax.
+
+ If you do not want libudis86 to translate, you can pass :code:`NULL` to the
+ function, with no more translations thereafter. This is useful when you
+ only want to identify chunks of code and then create the assembly output if
+ needed, or when you are only interested in examining the instructions and
+ do not want to waste cycles generating the assembly language output.
+
+ If you want to create your own translator, you can specify a pointer to your
+ own function. This function must accept a single parameter, the udis86 object
+ :type:`ud_t`, and it will be invoked everytime an instruction is decoded.
+
+
+Disassemble
+-----------
+
+With target state and input source set up, you can now disassemble. At the core
+of libudis86 api is the function :c:func:`ud_disassemble` which does this.
+libudis86 exposes decoded instructions in an intermediate form meant to be
+useful for programs that want to examine them. This intermediate form is
+available using functions and fields of :type:`ud_t` as described below.
+
+
+.. c:function:: unsigned int ud_disassemble(ud_t*)
+
+ Disassembles the next instruction in the input stream.
+
+ :returns: the number of bytes disassembled. A 0 indicates end of input.
+
+ Note, to restart disassembly after the end of input, you must call one of
+ the input setting functions with a new source of input.
+
+ A common use-case pattern for this function is in a loop::
+
+ while (ud_disassemble(&ud_obj)) {
+ /*
+ * use or print decode info.
+ */
+ }
+
+For each successful invocation of :c:func:`ud_disassemble`, you can use the
+following functions to get information about the disassembled instruction.
+
+
+.. c:function:: unsigned int ud_insn_len(const ud_t* u)
+
+ Returns the number of bytes disassembled.
+
+.. c:function:: uint64_t ud_insn_off(const ud_t*)
+
+ Returns the offset of the disassembled instruction in terms of the
+ program counter value specified initially.
+
+ .. seealso:: :func:`ud_set_pc`
+
+.. c:function:: const char* ud_insn_hex(ud_t*)
+
+ Returns pointer to a character string holding the hexadecimal
+ representation of the disassembled bytes.
+
+.. c:function:: const uint8_t* ud_insn_ptr(const ud_t* u)
+
+ Returns pointer to the buffer holding the instruction bytes. Use
+ :func:`ud_insn_len` to determine the size of this buffer.
+
+.. c:function:: const char* ud_insn_asm(const ud_t* u)
+
+ If the syntax is specified, returns pointer to the character string holding
+ assembly language representation of the disassembled instruction.
+
+.. c:function:: const ud_operand_t* ud_insn_opr(const ud_t* u, unsigned int n)
+
+ Returns a reference (:type:`ud_operand_t`) to the nth (starting with 0)
+ operand of the instruction. If the instruction does not have such an
+ operand, the function returns :code:`NULL`.
+
+.. c:function:: enum ud_mnemonic_code ud_insn_mnemonic(const ud_t *u)
+
+ .. versionadded:: 1.7.2
+
+ Returns the instruction mnemonic in the form of an enumerated constant
+ (:code:`enum ud_mnemonic_code`). As a convention all mnemonic constants
+ are composed by prefixing standard instruction mnemonics with :code:`UD_I`.
+ For example, the enumerations for :code:`mov`, :code:`xor` and :code:`jmp`
+ are :code:`UD_Imov`, :code:`UD_Ixor`, and :code:`UD_Ijmp`, respectively.::
+
+ ud_disassemble(&ud_obj);
+
+ switch (ud_insn_mnemonic(ud_obj)) {
+ case UD_Imov: printf("mov!"); break;
+ case UD_Ixor: printf("xor!"); break;
+ case UD_Ijmp: printf("jmp!"); break;
+ /*...*/
+ }
+
+ Prior to version 1.7.2, the way to access the mnemonic was by a field of
+ :code:`ud_t`, :c:member:`ud_t.mnemonc`. This field is now deprecated and
+ may not be supported in the future.
+
+ .. seealso:: :func:`ud_lookup_mnemonic`
+
+.. c:function:: const char* ud_const lookup_mnemonic(enum ud_mnemonic_code)
+
+ Returns a pointer to a character string corresponding to the given
+ mnemonic code. Returns a :code:`NULL` if the code is invalid.
+
+Inspect Operands
+----------------
+
+An intermediate representation of instruction operands is available in the
+form of :type:`ud_operand_t`. You can retrieve the nth operand of a
+disassembled instruction using the function :func:`ud_insn_opr`.
+
+.. c:type:: ud_operand_t
+
+ The operand type, represents a single operand of an instruction. It
+ contains the following fields.
+
+ - :c:member:`size `
+ - :c:member:`type `
+ - :c:member:`base `
+ - :c:member:`index `
+ - :c:member:`scale `
+ - :c:member:`offset `
+ - :c:member:`lval `
+
+.. c:member:: unsigned ud_operand_t.size
+
+ Size of the operand in number of bits.
+
+.. c:member:: enum ud_operand_type ud_operand_t.type
+
+ Type of the operand. Possible values are,
+
+ .. c:var:: UD_OP_MEM
+
+ A memory operand. The intermediate form normalizes all memory address
+ equations to the scale-index-base form. The address equation is
+ available in,
+
+ - :member:`base ` - base register as an enumerated
+ constant of type :type:`enum ud_type`. Maybe :code:`UD_NONE`, in which
+ case the memory addressing form does not include a base register.
+ - :member:`index ` - index register as an enumerated
+ constant of type :type:`enum ud_type`. Maybe :code:`UD_NONE`, in which
+ case the memory addressing form does not include an index register.
+ - :member:`scale ` - an integer value by which
+ the index register must be scaled. Maybe 0, denoting the absence of
+ a scale component in the address.
+ - :member:`offset ` - An integer value, which if
+ non-zero represents the size of the displacement offset, and is one
+ of 8, 16, 32, and 64. The value is available in
+ :member:`lval `.
+
+ .. c:var:: UD_OP_PTR
+
+ A segment:offset pointer operand. The :member:`size `
+ field can have two values, 32 (for 16:16 seg:off) and 48 (for 16:32 seg:off).
+ The pointer value is available in :member:`lval `
+ (as :member:`lval.ptr.seg` and :member:`lval.ptr.off`)
+
+ .. c:var:: UD_OP_IMM
+
+ An Immediate operand. Value available in :member:`lval `.
+
+ .. c:var:: UD_OP_JIMM
+
+ An Immediate operand to a branch instruction (relative offsets). Value
+ available in :member:`lval `.
+
+ .. c:var:: UD_OP_CONST
+
+ Implicit constant operand. Value available in :member:`lval `.
+
+ .. c:var:: UD_OP_REG
+
+ A register operand. The specific register is available in the
+ :member:`base ` field as an enumerated constant of type
+ :type:`enum ud_type`.
+
+
+.. c:member:: enum ud_register ud_operand_t.base
+
+ Contains an enumerated constant of type :type:`enum ud_type` representing
+ a :data:`register ` operand or the base of a :data:`memory `
+ operand.
+
+.. c:member:: enum ud_register ud_operand_t.index
+
+ Contains an enumerated constant of type :type:`enum ud_type` representing
+ the index register of a :data:`memory ` operand.
+
+.. c:member:: unsigned ud_operand_t.scale
+
+ Contains the scale component of a :data:`memory ` address operand.
+
+.. c:member:: unsigned ud_operand_t.offset
+
+ Contains the size of the displacement component of a :data:`memory
+ ` address operand. The displacement itself is given by
+ :member:`lval `.
+
+.. c:member:: ud_lval_t ud_operand_t.lval
+
+ A union data structure that aggregates integer fields of different sizes,
+ storing values depending on the :member:`type ` and
+ :member:`size ` of the operand.
+
+ .. c:member:: lval.sbyte
+
+ Signed Byte
+
+ .. c:member:: lval.ubyte
+
+ Unsigned Byte
+
+ .. c:member:: lval.sword
+
+ Signed Word
+
+ .. c:member:: lval.uword
+
+ Unsigned Word
+
+ .. c:member:: lval.sdword
+
+ Signed Double Word
+
+ .. c:member:: lval.udword
+
+ Unsigned Double Word
+
+ .. c:member:: lval.sqword
+
+ Signed Quad Word
+
+ .. c:member:: lval.uqword
+
+ Unsigned Quad Word
+
+ .. c:member:: lval.ptr.seg
+
+ Pointer Segment in Segment:Offset
+
+ .. c:member:: lval.ptr.off
+
+ Pointer Offset in Segment:Offset
+
+.. c:type:: enum ud_type
+
+ Instruction Pointer
+
+ .. code-block:: c
+
+ UD_R_RIP
+
+ 8-Bit Registers
+
+ .. code-block:: c
+
+ UD_NONE,
+
+ UD_R_AL, UD_R_CL, UD_R_DL, UD_R_BL,
+ UD_R_AH, UD_R_CH, UD_R_DH, UD_R_BH,
+ UD_R_SPL, UD_R_BPL, UD_R_SIL, UD_R_DIL,
+ UD_R_R8B, UD_R_R9B, UD_R_R10B, UD_R_R11B,
+ UD_R_R12B, UD_R_R13B, UD_R_R14B, UD_R_R15B,
+
+ 16-Bit General Purporse Registers
+
+ .. code-block:: c
+
+ UD_R_AX, UD_R_CX, UD_R_DX, UD_R_BX,
+ UD_R_SP, UD_R_BP, UD_R_SI, UD_R_DI,
+ UD_R_R8W, UD_R_R9W, UD_R_R10W, UD_R_R11W,
+ UD_R_R12W, UD_R_R13W, UD_R_R14W, UD_R_R15W,
+
+ 32-Bit General Purporse Registers:
+
+ .. code-block:: c
+
+ UD_R_EAX, UD_R_ECX, UD_R_EDX, UD_R_EBX,
+ UD_R_ESP, UD_R_EBP, UD_R_ESI, UD_R_EDI,
+ UD_R_R8D, UD_R_R9D, UD_R_R10D, UD_R_R11D,
+ UD_R_R12D, UD_R_R13D, UD_R_R14D, UD_R_R15D,
+
+ 64-Bit General Purporse Registers:
+
+ .. code-block:: c
+
+ UD_R_RAX, UD_R_RCX, UD_R_RDX, UD_R_RBX,
+ UD_R_RSP, UD_R_RBP, UD_R_RSI, UD_R_RDI,
+ UD_R_R8, UD_R_R9, UD_R_R10, UD_R_R11,
+ UD_R_R12, UD_R_R13, UD_R_R14, UD_R_R15,
+
+ Segment Registers:
+
+ .. code-block:: c
+
+ UD_R_ES, UD_R_CS, UD_R_SS, UD_R_DS,
+ UD_R_FS, UD_R_GS,
+
+ Control Registers:
+
+ .. code-block:: c
+
+ UD_R_CR0, UD_R_CR1, UD_R_CR2, UD_R_CR3,
+ UD_R_CR4, UD_R_CR5, UD_R_CR6, UD_R_CR7,
+ UD_R_CR8, UD_R_CR9, UD_R_CR10, UD_R_CR11,
+ UD_R_CR12, UD_R_CR13, UD_R_CR14, UD_R_CR15,
+
+ Debug Registers:
+
+ .. code-block:: c
+
+ UD_R_DR0, UD_R_DR1, UD_R_DR2, UD_R_DR3,
+ UD_R_DR4, UD_R_DR5, UD_R_DR6, UD_R_DR7,
+ UD_R_DR8, UD_R_DR9, UD_R_DR10, UD_R_DR11,
+ UD_R_DR12, UD_R_DR13, UD_R_DR14, UD_R_DR15,
+
+ MMX Registers:
+
+ .. code-block:: c
+
+ UD_R_MM0, UD_R_MM1, UD_R_MM2, UD_R_MM3,
+ UD_R_MM4, UD_R_MM5, UD_R_MM6, UD_R_MM7,
+
+ FPU Registers:
+
+ .. code-block:: c
+
+ UD_R_ST0, UD_R_ST1, UD_R_ST2, UD_R_ST3,
+ UD_R_ST4, UD_R_ST5, UD_R_ST6, UD_R_ST7,
+
+ SSE Registers:
+
+ .. code-block:: c
+
+ UD_R_XMM0, UD_R_XMM1, UD_R_XMM2, UD_R_XMM3,
+ UD_R_XMM4, UD_R_XMM5, UD_R_XMM6, UD_R_XMM7,
+ UD_R_XMM8, UD_R_XMM9, UD_R_XMM10, UD_R_XMM11,
+ UD_R_XMM12, UD_R_XMM13, UD_R_XMM14, UD_R_XMM15,
+
+
+Inspect Prefixes
+----------------
+
+Prefix bytes that affect the disassembly of the instruction are availabe in the
+following fields, each of which corressponds to a particular type or class of
+prefixes.
+
+.. c:member:: uint8_t ud_t.pfx_rex
+
+ 64-bit mode REX prefix
+
+.. c:member:: uint8_t ud_t.pfx_rex
+
+ 64-bit mode REX prefix
+
+.. c:member:: uint8_t ud_t.pfx_seg
+
+ Segment register prefix
+
+.. c:member:: uint8_t ud_t.pfx_opr
+
+ Operand-size prefix (66h)
+
+.. c:member:: uint8_t ud_t.pfx_adr
+
+ Address-size prefix (67h)
+
+.. c:member:: uint8_t ud_t.pfx_lock
+
+ Lock prefix
+
+.. c:member:: uint8_t ud_t.pfx_rep
+
+ Rep prefix
+
+.. c:member:: uint8_t ud_t.pfx_repe
+
+ Repe prefix
+
+.. c:member:: uint8_t ud_t.pfx_repne
+
+ Repne prefix
+
+These fields default to :code:`UD_NONE` if the respective prefixes were not found.
diff --git a/UefiDriver/udis86/docs/manual/static/udis86.css b/UefiDriver/udis86/docs/manual/static/udis86.css
new file mode 100644
index 0000000..d0dc128
--- /dev/null
+++ b/UefiDriver/udis86/docs/manual/static/udis86.css
@@ -0,0 +1,115 @@
+/* override pyramid */
+
+@import url("pyramid.css");
+
+body {
+ background-color: #eee;
+ background-color: #e8ecef;
+}
+
+pre {
+ background-color: #e8ecef;
+ border: 1px solid #bbb;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+}
+
+div.body {
+ border: 1px solid #bbb;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ color: black;
+}
+
+div.related,
+div.document {
+ width: 840px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+div.related ul {
+ padding-left: 8px;
+}
+
+div.footer a,
+div.footer {
+ color: #000;
+ font-weight: bold;
+}
+
+div.footer {
+ margin-top: 40px;
+ background-color: #ddd;
+}
+
+/*
+div.body {
+ margin-left: auto;
+ margin-right: auto;
+ width: 720px;
+}*/
+
+body,
+div.body,
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ font-family: Arial, "Helvetica Neue", Arial, Helvetica, "sans-serif";
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ font-weight: bold;
+}
+
+code,
+.function dt,
+.member dt,
+.type dt,
+.var dt,
+.function tt.descname,
+.member tt.descname,
+.var tt.descname,
+.type tt.descname,
+pre {
+ font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+ font-size: 1em;
+ padding-bottom: 6px;
+}
+
+.function dt
+{
+ font-size: 1em;
+ padding-bottom: 6px;
+}
+
+.function tt.descname {
+ font-size: 1em;
+}
+
+a .pre,
+div.related a,
+a {
+ text-decoration: none;
+ color: #444;
+ border-bottom: 1px solid #eee;
+}
+
+a .pre {
+ font-weight: bold;
+}
+
+a:hover .pre,
+a:hover, div.toctree-wrapper a:hover, .indextable a:hover, #indices-and-tables a:hover {
+ text-decoration: none;
+ color: #111;
+ border-bottom: 1px solid #111;
+}
diff --git a/UefiDriver/udis86/docs/manual/udis86.info b/UefiDriver/udis86/docs/manual/udis86.info
new file mode 100644
index 0000000..205c78f
--- /dev/null
+++ b/UefiDriver/udis86/docs/manual/udis86.info
@@ -0,0 +1,848 @@
+This is udis86.info, produced by makeinfo version 4.8 from
+./texinfo/udis86.texi.
+
+Generated by Sphinx 1.1.3.
+INFO-DIR-SECTION Miscellaneous
+START-INFO-DIR-ENTRY
+* udis86: (udis86.info). Disassembler library for x86.
+END-INFO-DIR-ENTRY
+
+ udis86 1.7.1, September 01, 2013
+
+ Vivek Thampi
+
+ Copyright (C) 2013, Vivek Thampi
+
+
+File: udis86.info, Node: Top, Next: Getting Started, Up: (dir)
+
+udis86 Documentation
+********************
+
+ udis86 1.7.1, September 01, 2013
+
+ Vivek Thampi
+
+ Copyright (C) 2013, Vivek Thampi
+
+* Menu:
+
+* Getting Started::
+* libudis86::
+* Index::
+
+ --- The Detailed Node Listing ---
+
+Getting Started
+
+* Building and Installing udis86::
+* Interfacing with libudis86; A Quick Example: Interfacing with libudis86 A Quick Example.
+
+libudis86
+
+* ud_t; udis86 object: ud_t udis86 object.
+* Setup Machine State::
+* Setup Input::
+* Setup Translation::
+* Disassemble::
+* Inspect Operands::
+* Inspect Prefixes::
+
+
+File: udis86.info, Node: Getting Started, Next: libudis86, Prev: Top, Up: Top
+
+1 Getting Started
+*****************
+
+* Menu:
+
+* Building and Installing udis86::
+* Interfacing with libudis86; A Quick Example: Interfacing with libudis86 A Quick Example.
+
+
+File: udis86.info, Node: Building and Installing udis86, Next: Interfacing with libudis86 A Quick Example, Up: Getting Started
+
+1.1 Building and Installing udis86
+==================================
+
+udis86 is developed for unix-like environments, and like most software,
+the basic steps towards building and installing it are as follows.
+
+ $ ./configure
+ $ make
+ $ make install
+
+Depending on your choice of install location, you may need to have root
+privileges to do an install. The install scripts copy the necessary
+header and library files to appropriate locations in your system.
+
+
+File: udis86.info, Node: Interfacing with libudis86 A Quick Example, Prev: Building and Installing udis86, Up: Getting Started
+
+1.2 Interfacing with libudis86: A Quick Example
+===============================================
+
+The following is an example of a program that interfaces with libudis86
+and uses the API to generate assembly language output for 64-bit code,
+input from STDIN.
+
+ #include
+ #include
+
+ int main()
+ {
+ ud_t ud_obj;
+
+ ud_init(&ud_obj);
+ ud_set_input_file(&ud_obj, stdin);
+ ud_set_mode(&ud_obj, 64);
+ ud_set_syntax(&ud_obj, UD_SYN_INTEL);
+
+ while (ud_disassemble(&ud_obj)) {
+ printf("\t%s\n", ud_insn_asm(&ud_obj));
+ }
+
+ return 0;
+ }
+
+To compile the program (using gcc):
+
+ $ gcc -ludis86 example.c -o example
+
+This example should give you an idea of how this library can be used.
+The following sections describe, in detail, the complete API of
+libudis86.
+
+
+File: udis86.info, Node: libudis86, Next: Index, Prev: Getting Started, Up: Top
+
+2 libudis86
+***********
+
+libudis86 is a disassembler library for the x86 architecture, including
+support for the newer 64bit variants (IA32e, amd64, etc.) It provides
+you the ability to decode a stream of bytes as x86 instructions,
+inspect various bits of information about those instructions and even
+translate to human readable assembly language format.
+
+* Menu:
+
+* ud_t; udis86 object: ud_t udis86 object.
+* Setup Machine State::
+* Setup Input::
+* Setup Translation::
+* Disassemble::
+* Inspect Operands::
+* Inspect Prefixes::
+
+
+File: udis86.info, Node: ud_t udis86 object, Next: Setup Machine State, Up: libudis86
+
+2.1 ud_t: udis86 object
+=======================
+
+libudis86 is reentrant, and to maintain that property it does not use
+static data. All data related to the disassembly are stored in a single
+object, called the udis86 object *note ud_t: 8.
+
+ -- C Type: ud_t
+ A structure encapsulating udis86 disassembler state.
+
+ To use libudis86 you must create an instance of this object,
+
+ ud_t ud_obj;
+
+and initialize it,
+
+ ud_init(&ud_obj);
+
+You can create multiple such objects and use with the library, each one
+an independent disassembler.
+
+
+File: udis86.info, Node: Setup Machine State, Next: Setup Input, Prev: ud_t udis86 object, Up: libudis86
+
+2.2 Setup Machine State
+=======================
+
+The decode semantics of a sequence of bytes depends on the target
+machine state for which they are being disassembled. In x86, this means
+the current effective processor mode (16, 32 or 64bits), the current
+program counter (ip/eip/rip), and sometimes, the processor vendor. By
+default, libudis86 is initialized to be in 32 bit disassembly mode,
+program counter at 0, and vendor being `UD_VENDOR_ANY'. The following
+functions allow you to override these default to suit your needs.
+
+ -- C Function: void ud_set_mode (ud_t*, uint8_t mode_bits)
+ Sets the mode of disassembly. Possible values are 16, 32, and 64.
+ By default, the library works in 32bit mode.
+
+ -- C Function: void ud_set_pc (ud_t*, uint64_t pc)
+ Sets the program counter (IP/EIP/RIP). This changes the offset of
+ the assembly output generated, with direct effect on branch
+ instructions.
+
+ -- C Function: void ud_set_vendor (ud_t*, unsigned vendor)
+ Sets the vendor of whose instruction to choose from. This is only
+ useful for selecting the VMX or SVM instruction sets at which
+ point INTEL and AMD have diverged significantly. At a later stage,
+ support for a more granular selection of instruction sets maybe
+ added.
+
+ * `UD_VENDOR_INTEL' - for INTEL instruction set.
+
+ * `UD_VENDOR_ATT' - for AMD instruction set.
+
+ * `UD_VENDOR_ANY' - for any valid instruction in either INTEL
+ or AMD.
+
+
+File: udis86.info, Node: Setup Input, Next: Setup Translation, Prev: Setup Machine State, Up: libudis86
+
+2.3 Setup Input
+===============
+
+libudis86 provides three ways in which you can input binary data: as a
+fixed sized memory buffer, a standard library FILE object, or as a
+callback function. By default, a *note ud_t: 8. object is initialized
+to read input from `STDIN'.
+
+ -- C Function: void ud_set_input_buffer (ud_t*, unsigned char* buffer,
+ size_t size)
+ Sets the input source for the library to a `buffer' of `size'
+ bytes.
+
+ -- C Function: void ud_set_input_file (ud_t*, FILE* filep)
+ Sets the input source to a file pointed to by a given standard
+ library `FILE' pointer. Note that libudis86 does not perform any
+ checks, and assumes that the file pointer is properly initialized
+ and open for reading.
+
+ -- C Function: void ud_set_input_hook (ud_t* ud_obj, int
+ (*hook)(ud_t *ud_obj))
+ Sets a pointer to a function, to callback for input. The callback
+ is invoked each time libudis86 needs the next byte in the input
+ stream. To single end-of-input, this callback must return the
+ constant `UD_EOI'.
+
+See also
+........
+
+ *note ud_set_user_opaque_data(): 11, *note
+ud_set_user_opaque_data(): 11.
+
+ -- C Function: void ud_input_skip(ud_t*, size_t n);
+ Skips ahead `n' number of bytes in the input stream.
+
+ -- C Function: int ud_input_end(const ud_t*);
+ Test for end of input. You can use this function to test if udis86
+ has exhausted the input.
+
+ At the end of input, udis86 stops disassembly. If you want to restart
+or reset the source of input, you must again invoke one of the above
+functions.
+
+ Sometimes you may want to associate custom data with a udis86 object,
+that you can use with the input callback function, or even in different
+parts of your own project as you pass the object around. You can use
+the following two functions to achieve this.
+
+ -- C Function: void ud_set_user_opaque_data (ud_t* ud_obj,
+ void* opaque)
+ Associates a pointer with the udis86 object to be retrieved and
+ used in client functions, such as the input hook callback function.
+
+ -- C Function: void* ud_get_user_opaque_data (const ud_t* ud_obj)
+ Returns any pointer associated with the udis86 object, using the
+ *note ud_set_user_opaque_data(): 11. function.
+
+
+File: udis86.info, Node: Setup Translation, Next: Disassemble, Prev: Setup Input, Up: libudis86
+
+2.4 Setup Translation
+=====================
+
+libudis86 can translate the decoded instruction into one of two assembly
+language dialects: the INTEL syntax (such as those found in NASM and
+YASM) and the other which resembles GNU Assembler (AT&T style) syntax.
+By default, this is set to INTEL like syntax. You can override the
+default or specify your own translator using the following function.
+
+ -- C Function: void ud_set_syntax (ud_t*, void (*translator)(ud_t*))
+ Sets the function that translates the intermediate decode
+ information to a human readable form. There are two inbuilt
+ translators,
+
+ - `UD_SYN_INTEL' for INTEL (NASM-like) syntax. (default)
+
+ - `UD_SYN_ATT' for AT&T (GAS-like) syntax.
+
+ If you do not want libudis86 to translate, you can pass `NULL' to
+ the function, with no more translations thereafter. This is useful
+ when you only want to identify chunks of code and then create the
+ assembly output if needed, or when you are only interested in
+ examining the instructions and do not want to waste cycles
+ generating the assembly language output.
+
+ If you want to create your own translator, you can specify a
+ pointer to your own function. This function must accept a single
+ parameter, the udis86 object *note ud_t: 8, and it will be invoked
+ everytime an instruction is decoded.
+
+
+File: udis86.info, Node: Disassemble, Next: Inspect Operands, Prev: Setup Translation, Up: libudis86
+
+2.5 Disassemble
+===============
+
+With target state and input source set up, you can now disassemble. At
+the core of libudis86 api is the function *note ud_disassemble(): 16.
+which does this. libudis86 exposes decoded instructions in an
+intermediate form meant to be useful for programs that want to examine
+them. This intermediate form is available using functions and fields of
+*note ud_t: 8. as described below.
+
+ -- C Function: unsigned int ud_disassemble (ud_t*)
+ Disassembles the next instruction in the input stream.
+
+ Returns: the number of bytes disassembled. A 0 indicates end
+ of input.
+
+ Note, to restart disassembly after the end of input, you must call
+ one of the input setting functions with a new source of input.
+
+ A common use-case pattern for this function is in a loop:
+
+ while (ud_disassemble(&ud_obj)) {
+ /*
+ * use or print decode info.
+ */
+ }
+
+
+
+ For each successful invocation of *note ud_disassemble(): 16, you can
+use the following functions to get information about the disassembled
+instruction.
+
+ -- C Function: unsigned int ud_insn_len (const ud_t* u)
+ Returns the number of bytes disassembled.
+
+ -- C Function: uint64_t ud_insn_off (const ud_t*)
+ Returns the offset of the disassembled instruction in terms of the
+ program counter value specified initially.
+
+See also
+........
+
+ *note ud_set_pc(): b.
+
+ -- C Function: const char* ud_insn_hex (ud_t*)
+ Returns pointer to a character string holding the hexadecimal
+ representation of the disassembled bytes.
+
+ -- C Function: const uint8_t* ud_insn_ptr (const ud_t* u)
+ Returns pointer to the buffer holding the instruction bytes. Use
+ *note ud_insn_len(): 17. to determine the size of this buffer.
+
+ -- C Function: const char* ud_insn_asm (const ud_t* u)
+ If the syntax is specified, returns pointer to the character
+ string holding assembly language representation of the
+ disassembled instruction.
+
+ -- C Function: const ud_operand_t* ud_insn_opr (const ud_t* u,
+ unsigned int n)
+ Returns a reference (*note ud_operand_t: 1d.) to the nth (starting
+ with 0) operand of the instruction. If the instruction does not
+ have such an operand, the function returns `NULL'.
+
+ -- C Function: enum ud_mnemonic_code ud_insn_mnemonic (const ud_t *u)
+ New in version 1.7.2.
+
+ Returns the instruction mnemonic in the form of an enumerated
+ constant (`enum ud_mnemonic_code'). As a convention all mnemonic
+ constants are composed by prefixing standard instruction mnemonics
+ with `UD_I'. For example, the enumerations for `mov', `xor' and
+ `jmp' are `UD_Imov', `UD_Ixor', and `UD_Ijmp', respectively.:
+
+ ud_disassemble(&ud_obj);
+
+ switch (ud_insn_mnemonic(ud_obj)) {
+ case UD_Imov: printf("mov!"); break;
+ case UD_Ixor: printf("xor!"); break;
+ case UD_Ijmp: printf("jmp!"); break;
+ /*...*/
+ }
+
+ Prior to version 1.7.2, the way to access the mnemonic was by a
+ field of `ud_t', `ud_t.mnemonc'. This field is now deprecated and
+ may not be supported in the future.
+
+See also
+........
+
+ `ud_lookup_mnemonic()'
+
+ -- C Function: const char* ud_const lookup_mnemonic
+ (enum ud_mnemonic_code)
+ Returns a pointer to a character string corresponding to the given
+ mnemonic code. Returns a `NULL' if the code is invalid.
+
+
+File: udis86.info, Node: Inspect Operands, Next: Inspect Prefixes, Prev: Disassemble, Up: libudis86
+
+2.6 Inspect Operands
+====================
+
+An intermediate representation of instruction operands is available in
+the form of *note ud_operand_t: 1d. You can retrieve the nth operand of
+a disassembled instruction using the function *note ud_insn_opr(): 1c.
+
+ -- C Type: ud_operand_t
+ The operand type, represents a single operand of an instruction. It
+ contains the following fields.
+
+ - *note size: 21.
+
+ - *note type: 22.
+
+ - *note base: 23.
+
+ - *note index: 24.
+
+ - *note scale: 25.
+
+ - *note offset: 26.
+
+ - *note lval: 27.
+
+ -- C Member: unsigned ud_operand_t.size
+ Size of the operand in number of bits.
+
+ -- C Member: enum ud_operand_type ud_operand_t.type
+ Type of the operand. Possible values are,
+
+ -- C Variable: UD_OP_MEM
+ A memory operand. The intermediate form normalizes all memory
+ address equations to the scale-index-base form. The address
+ equation is available in,
+
+ - *note base: 23. - base register as an enumerated
+ constant of type `enum ud_type'. Maybe `UD_NONE', in
+ which case the memory addressing form does not include a
+ base register.
+
+ - *note index: 24. - index register as an enumerated
+ constant of type `enum ud_type'. Maybe `UD_NONE', in
+ which case the memory addressing form does not include
+ an index register.
+
+ - *note scale: 24. - an integer value by which the index
+ register must be scaled. Maybe 0, denoting the absence of
+ a scale component in the address.
+
+ - *note offset: 26. - An integer value, which if non-zero
+ represents the size of the displacement offset, and is
+ one of 8, 16, 32, and 64. The value is available in
+ *note lval: 27.
+
+ -- C Variable: UD_OP_PTR
+ A segment:offset pointer operand. The *note size: 21. field
+ can have two values, 32 (for 16:16 seg:off) and 48 (for 16:32
+ seg:off). The pointer value is available in *note lval: 27.
+ (as *note lval.ptr.seg: 2a. and *note lval.ptr.off: 2b.)
+
+ -- C Variable: UD_OP_IMM
+ An Immediate operand. Value available in *note lval: 27.
+
+ -- C Variable: UD_OP_JIMM
+ An Immediate operand to a branch instruction (relative
+ offsets). Value available in *note lval: 27.
+
+ -- C Variable: UD_OP_CONST
+ Implicit constant operand. Value available in *note lval: 27.
+
+ -- C Variable: UD_OP_REG
+ A register operand. The specific register is available in the
+ *note base: 23. field as an enumerated constant of type `enum
+ ud_type'.
+
+ -- C Member: enum ud_register ud_operand_t.base
+ Contains an enumerated constant of type `enum ud_type' representing
+ a *note register: 2f. operand or the base of a *note memory: 28.
+ operand.
+
+ -- C Member: enum ud_register ud_operand_t.index
+ Contains an enumerated constant of type `enum ud_type' representing
+ the index register of a *note memory: 28. operand.
+
+ -- C Member: unsigned ud_operand_t.scale
+ Contains the scale component of a *note memory: 28. address
+ operand.
+
+ -- C Member: unsigned ud_operand_t.offset
+ Contains the size of the displacement component of a *note memory:
+ 28. address operand. The displacement itself is given by *note
+ lval: 27.
+
+ -- C Member: ud_lval_t ud_operand_t.lval
+ A union data structure that aggregates integer fields of different
+ sizes, storing values depending on the *note type: 22. and *note
+ size: 21. of the operand.
+
+ -- C Member: lval.sbyte
+ Signed Byte
+
+ -- C Member: lval.ubyte
+ Unsigned Byte
+
+ -- C Member: lval.sword
+ Signed Word
+
+ -- C Member: lval.uword
+ Unsigned Word
+
+ -- C Member: lval.sdword
+ Signed Double Word
+
+ -- C Member: lval.udword
+ Unsigned Double Word
+
+ -- C Member: lval.sqword
+ Signed Quad Word
+
+ -- C Member: lval.uqword
+ Unsigned Quad Word
+
+ -- C Member: lval.ptr.seg
+ Pointer Segment in Segment:Offset
+
+ -- C Member: lval.ptr.off
+ Pointer Offset in Segment:Offset
+
+ -- C Type: enum ud_type
+ Instruction Pointer
+
+ UD_R_RIP
+
+ 8-Bit Registers
+
+ UD_NONE,
+
+ UD_R_AL, UD_R_CL, UD_R_DL, UD_R_BL,
+ UD_R_AH, UD_R_CH, UD_R_DH, UD_R_BH,
+ UD_R_SPL, UD_R_BPL, UD_R_SIL, UD_R_DIL,
+ UD_R_R8B, UD_R_R9B, UD_R_R10B, UD_R_R11B,
+ UD_R_R12B, UD_R_R13B, UD_R_R14B, UD_R_R15B,
+
+ 16-Bit General Purporse Registers
+
+ UD_R_AX, UD_R_CX, UD_R_DX, UD_R_BX,
+ UD_R_SP, UD_R_BP, UD_R_SI, UD_R_DI,
+ UD_R_R8W, UD_R_R9W, UD_R_R10W, UD_R_R11W,
+ UD_R_R12W, UD_R_R13W, UD_R_R14W, UD_R_R15W,
+
+ 32-Bit General Purporse Registers:
+
+ UD_R_EAX, UD_R_ECX, UD_R_EDX, UD_R_EBX,
+ UD_R_ESP, UD_R_EBP, UD_R_ESI, UD_R_EDI,
+ UD_R_R8D, UD_R_R9D, UD_R_R10D, UD_R_R11D,
+ UD_R_R12D, UD_R_R13D, UD_R_R14D, UD_R_R15D,
+
+ 64-Bit General Purporse Registers:
+
+ UD_R_RAX, UD_R_RCX, UD_R_RDX, UD_R_RBX,
+ UD_R_RSP, UD_R_RBP, UD_R_RSI, UD_R_RDI,
+ UD_R_R8, UD_R_R9, UD_R_R10, UD_R_R11,
+ UD_R_R12, UD_R_R13, UD_R_R14, UD_R_R15,
+
+ Segment Registers:
+
+ UD_R_ES, UD_R_CS, UD_R_SS, UD_R_DS,
+ UD_R_FS, UD_R_GS,
+
+ Control Registers:
+
+ UD_R_CR0, UD_R_CR1, UD_R_CR2, UD_R_CR3,
+ UD_R_CR4, UD_R_CR5, UD_R_CR6, UD_R_CR7,
+ UD_R_CR8, UD_R_CR9, UD_R_CR10, UD_R_CR11,
+ UD_R_CR12, UD_R_CR13, UD_R_CR14, UD_R_CR15,
+
+ Debug Registers:
+
+ UD_R_DR0, UD_R_DR1, UD_R_DR2, UD_R_DR3,
+ UD_R_DR4, UD_R_DR5, UD_R_DR6, UD_R_DR7,
+ UD_R_DR8, UD_R_DR9, UD_R_DR10, UD_R_DR11,
+ UD_R_DR12, UD_R_DR13, UD_R_DR14, UD_R_DR15,
+
+ MMX Registers:
+
+ UD_R_MM0, UD_R_MM1, UD_R_MM2, UD_R_MM3,
+ UD_R_MM4, UD_R_MM5, UD_R_MM6, UD_R_MM7,
+
+ FPU Registers:
+
+ UD_R_ST0, UD_R_ST1, UD_R_ST2, UD_R_ST3,
+ UD_R_ST4, UD_R_ST5, UD_R_ST6, UD_R_ST7,
+
+ SSE Registers:
+
+ UD_R_XMM0, UD_R_XMM1, UD_R_XMM2, UD_R_XMM3,
+ UD_R_XMM4, UD_R_XMM5, UD_R_XMM6, UD_R_XMM7,
+ UD_R_XMM8, UD_R_XMM9, UD_R_XMM10, UD_R_XMM11,
+ UD_R_XMM12, UD_R_XMM13, UD_R_XMM14, UD_R_XMM15,
+
+
+
+
+File: udis86.info, Node: Inspect Prefixes, Prev: Inspect Operands, Up: libudis86
+
+2.7 Inspect Prefixes
+====================
+
+Prefix bytes that affect the disassembly of the instruction are
+availabe in the following fields, each of which corressponds to a
+particular type or class of prefixes.
+
+ -- C Member: uint8_t ud_t.pfx_rex
+ 64-bit mode REX prefix
+
+ -- C Member: uint8_t ud_t.pfx_rex
+ 64-bit mode REX prefix
+
+ -- C Member: uint8_t ud_t.pfx_seg
+ Segment register prefix
+
+ -- C Member: uint8_t ud_t.pfx_opr
+ Operand-size prefix (66h)
+
+ -- C Member: uint8_t ud_t.pfx_adr
+ Address-size prefix (67h)
+
+ -- C Member: uint8_t ud_t.pfx_lock
+ Lock prefix
+
+ -- C Member: uint8_t ud_t.pfx_rep
+ Rep prefix
+
+ -- C Member: uint8_t ud_t.pfx_repe
+ Repe prefix
+
+ -- C Member: uint8_t ud_t.pfx_repne
+ Repne prefix
+
+ These fields default to `UD_NONE' if the respective prefixes were not
+found.
+
+
+File: udis86.info, Node: Index, Prev: libudis86, Up: Top
+
+Index
+*****
+
+ [index ]
+* Menu:
+
+* lookup_mnemonic (C function): Disassemble. (line 94)
+* lval.ptr.off (C member): Inspect Operands. (line 129)
+* lval.ptr.seg (C member): Inspect Operands. (line 126)
+* lval.sbyte (C member): Inspect Operands. (line 102)
+* lval.sdword (C member): Inspect Operands. (line 114)
+* lval.sqword (C member): Inspect Operands. (line 120)
+* lval.sword (C member): Inspect Operands. (line 108)
+* lval.ubyte (C member): Inspect Operands. (line 105)
+* lval.udword (C member): Inspect Operands. (line 117)
+* lval.uqword (C member): Inspect Operands. (line 123)
+* lval.uword (C member): Inspect Operands. (line 111)
+* ud_disassemble (C function): Disassemble. (line 13)
+* ud_get_user_opaque_data (C function): Setup Input. (line 56)
+* ud_insn_asm (C function): Disassemble. (line 56)
+* ud_insn_hex (C function): Disassemble. (line 48)
+* ud_insn_len (C function): Disassemble. (line 36)
+* ud_insn_mnemonic (C function): Disassemble. (line 67)
+* ud_insn_off (C function): Disassemble. (line 39)
+* ud_insn_opr (C function): Disassemble. (line 61)
+* ud_insn_ptr (C function): Disassemble. (line 52)
+* UD_OP_CONST (C variable): Inspect Operands. (line 71)
+* UD_OP_IMM (C variable): Inspect Operands. (line 64)
+* UD_OP_JIMM (C variable): Inspect Operands. (line 67)
+* UD_OP_MEM (C variable): Inspect Operands. (line 34)
+* UD_OP_PTR (C variable): Inspect Operands. (line 58)
+* UD_OP_REG (C variable): Inspect Operands. (line 74)
+* ud_operand_t (C type): Inspect Operands. (line 10)
+* ud_operand_t.base (C member): Inspect Operands. (line 79)
+* ud_operand_t.index (C member): Inspect Operands. (line 84)
+* ud_operand_t.lval (C member): Inspect Operands. (line 97)
+* ud_operand_t.offset (C member): Inspect Operands. (line 92)
+* ud_operand_t.scale (C member): Inspect Operands. (line 88)
+* ud_operand_t.size (C member): Inspect Operands. (line 28)
+* ud_operand_t.type (C member): Inspect Operands. (line 31)
+* ud_set_input_buffer (C function): Setup Input. (line 11)
+* ud_set_input_file (C function): Setup Input. (line 16)
+* ud_set_input_hook (C function): Setup Input. (line 22)
+* ud_set_mode (C function): Setup Machine State. (line 14)
+* ud_set_pc (C function): Setup Machine State. (line 18)
+* ud_set_syntax (C function): Setup Translation. (line 12)
+* ud_set_user_opaque_data (C function): Setup Input. (line 51)
+* ud_set_vendor (C function): Setup Machine State. (line 23)
+* ud_t (C type): ud_t udis86 object. (line 10)
+* ud_t.pfx_adr (C member): Inspect Prefixes. (line 22)
+* ud_t.pfx_lock (C member): Inspect Prefixes. (line 25)
+* ud_t.pfx_opr (C member): Inspect Prefixes. (line 19)
+* ud_t.pfx_rep (C member): Inspect Prefixes. (line 28)
+* ud_t.pfx_repe (C member): Inspect Prefixes. (line 31)
+* ud_t.pfx_repne (C member): Inspect Prefixes. (line 34)
+* ud_t.pfx_rex (C member): Inspect Prefixes. (line 10)
+* ud_t.pfx_seg (C member): Inspect Prefixes. (line 16)
+* ud_type (C type): Inspect Operands. (line 132)
+
+
+
+Tag Table:
+Node: Top334
+Ref: index doc543
+Ref: 0543
+Node: Getting Started952
+Ref: getstarted getting-started1037
+Ref: 11037
+Ref: getstarted doc1037
+Ref: 21037
+Node: Building and Installing udis861210
+Ref: getstarted building-and-installing-udis861343
+Ref: 31343
+Node: Interfacing with libudis86 A Quick Example1810
+Ref: getstarted interfacing-with-libudis86-a-quick-example1943
+Ref: 41943
+Node: libudis862797
+Ref: libudis86 libudis862884
+Ref: 52884
+Ref: libudis86 doc2884
+Ref: 62884
+Node: ud_t udis86 object3414
+Ref: libudis86 ud-t-udis86-object3506
+Ref: 73506
+Ref: libudis86 ud_t3746
+Ref: 83746
+Node: Setup Machine State4049
+Ref: libudis86 setup-machine-state4161
+Ref: 94161
+Ref: libudis86 ud_set_mode4693
+Ref: a4693
+Ref: libudis86 ud_set_pc4875
+Ref: b4875
+Ref: libudis86 ud_set_vendor5083
+Ref: c5083
+Node: Setup Input5636
+Ref: libudis86 setup-input5747
+Ref: d5747
+Ref: libudis86 ud_set_input_buffer6018
+Ref: e6018
+Ref: libudis86 ud_set_input_file6193
+Ref: f6193
+Ref: libudis86 ud_set_input_hook6490
+Ref: 106490
+Ref: libudis86 ud_set_user_opaque_data7586
+Ref: 117586
+Ref: libudis86 ud_get_user_opaque_data7813
+Ref: 127813
+Node: Setup Translation8003
+Ref: libudis86 setup-translation8106
+Ref: 138106
+Ref: libudis86 ud_set_syntax8501
+Ref: 148501
+Node: Disassemble9479
+Ref: libudis86 disassemble9587
+Ref: 159587
+Ref: libudis86 ud_disassemble10003
+Ref: 1610003
+Ref: libudis86 ud_insn_len10701
+Ref: 1710701
+Ref: libudis86 ud_insn_off10806
+Ref: 1810806
+Ref: libudis86 ud_insn_hex11025
+Ref: 1911025
+Ref: libudis86 ud_insn_ptr11188
+Ref: 1a11188
+Ref: libudis86 ud_insn_asm11386
+Ref: 1b11386
+Ref: libudis86 ud_insn_opr11600
+Ref: 1c11600
+Ref: libudis86 ud_insn_mnemonic11888
+Ref: 1e11888
+Ref: libudis86 lookup_mnemonic12822
+Ref: 1f12822
+Node: Inspect Operands13043
+Ref: libudis86 inspect-operands13150
+Ref: 2013150
+Ref: libudis86 ud_operand_t13408
+Ref: 1d13408
+Ref: libudis86 ud_operand_t size13736
+Ref: 2113736
+Ref: libudis86 ud_operand_t type13822
+Ref: 2213822
+Ref: libudis86 UD_OP_MEM13923
+Ref: 2813923
+Ref: libudis86 UD_OP_PTR15040
+Ref: 2915040
+Ref: libudis86 UD_OP_IMM15353
+Ref: 2c15353
+Ref: libudis86 UD_OP_JIMM15452
+Ref: 2d15452
+Ref: libudis86 UD_OP_CONST15605
+Ref: 2e15605
+Ref: libudis86 UD_OP_REG15711
+Ref: 2f15711
+Ref: libudis86 ud_operand_t base15907
+Ref: 2315907
+Ref: libudis86 ud_operand_t index16114
+Ref: 2416114
+Ref: libudis86 ud_operand_t scale16294
+Ref: 2516294
+Ref: libudis86 ud_operand_t offset16416
+Ref: 2616416
+Ref: libudis86 ud_operand_t lval16615
+Ref: 2716615
+Ref: libudis86 lval sbyte16831
+Ref: 3016831
+Ref: libudis86 lval ubyte16884
+Ref: 3116884
+Ref: libudis86 lval sword16939
+Ref: 3216939
+Ref: libudis86 lval uword16992
+Ref: 3316992
+Ref: libudis86 lval sdword17047
+Ref: 3417047
+Ref: libudis86 lval udword17108
+Ref: 3517108
+Ref: libudis86 lval sqword17171
+Ref: 3617171
+Ref: libudis86 lval uqword17230
+Ref: 3717230
+Ref: libudis86 lval ptr seg17291
+Ref: 2a17291
+Ref: libudis86 lval ptr off17368
+Ref: 2b17368
+Ref: libudis86 ud_type17444
+Ref: 3817444
+Node: Inspect Prefixes19736
+Ref: libudis86 inspect-prefixes19823
+Ref: 3919823
+Ref: libudis86 ud_t pfx_rex20035
+Ref: 3a20035
+Ref: libudis86 ud_t pfx_seg20163
+Ref: 3b20163
+Ref: libudis86 ud_t pfx_opr20228
+Ref: 3c20228
+Ref: libudis86 ud_t pfx_adr20295
+Ref: 3d20295
+Ref: libudis86 ud_t pfx_lock20362
+Ref: 3e20362
+Ref: libudis86 ud_t pfx_rep20416
+Ref: 3f20416
+Ref: libudis86 ud_t pfx_repe20468
+Ref: 4020468
+Ref: libudis86 ud_t pfx_repne20522
+Ref: 4120522
+Node: Index20658
+
+End Tag Table
diff --git a/UefiDriver/udis86/libudis86/Makefile.am b/UefiDriver/udis86/libudis86/Makefile.am
new file mode 100644
index 0000000..ca84b9c
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/Makefile.am
@@ -0,0 +1,52 @@
+#
+# -- udis86/libudis86
+#
+
+PYTHON = @PYTHON@
+OPTABLE = @top_srcdir@/docs/x86/optable.xml
+
+MAINTAINERCLEANFILES = Makefile.in
+
+lib_LTLIBRARIES = libudis86.la
+
+libudis86_la_SOURCES = \
+ itab.c \
+ decode.c \
+ syn.c \
+ syn-intel.c \
+ syn-att.c \
+ udis86.c \
+ udint.h \
+ syn.h \
+ decode.h
+
+include_ladir = ${includedir}/libudis86
+include_la_HEADERS = \
+ types.h \
+ extern.h \
+ itab.h
+
+
+BUILT_SOURCES = \
+ itab.c \
+ itab.h
+
+#
+# DLLs may not contain undefined symbol references.
+# We have the linker check this explicitly.
+#
+if TARGET_WINDOWS
+libudis86_la_LDFLAGS = -no-undefined -version-info 0:0:0
+endif
+
+itab.c itab.h: $(OPTABLE) \
+ $(top_srcdir)/scripts/ud_itab.py \
+ $(top_srcdir)/scripts/ud_opcode.py \
+ $(top_srcdir)/scripts/ud_optable.py
+ $(PYTHON) $(top_srcdir)/scripts/ud_itab.py $(OPTABLE) $(srcdir)
+
+
+clean-local:
+ rm -rf $(BUILT_SOURCES)
+
+maintainer-clean-local:
diff --git a/UefiDriver/udis86/libudis86/Makefile.in b/UefiDriver/udis86/libudis86/Makefile.in
new file mode 100644
index 0000000..b0840ed
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/Makefile.in
@@ -0,0 +1,692 @@
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#
+# -- udis86/libudis86
+#
+
+
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libudis86
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/build/depcomp $(include_la_HEADERS)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/build/m4/libtool.m4 \
+ $(top_srcdir)/build/m4/ltoptions.m4 \
+ $(top_srcdir)/build/m4/ltsugar.m4 \
+ $(top_srcdir)/build/m4/ltversion.m4 \
+ $(top_srcdir)/build/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/ax_compare_version.m4 \
+ $(top_srcdir)/m4/ax_prog_sphinx_version.m4 \
+ $(top_srcdir)/m4/ax_prog_yasm_version.m4 \
+ $(top_srcdir)/m4/ax_with_prog.m4 \
+ $(top_srcdir)/m4/ax_with_python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(include_ladir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libudis86_la_LIBADD =
+am_libudis86_la_OBJECTS = itab.lo decode.lo syn.lo syn-intel.lo \
+ syn-att.lo udis86.lo
+libudis86_la_OBJECTS = $(am_libudis86_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+libudis86_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libudis86_la_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libudis86_la_SOURCES)
+DIST_SOURCES = $(libudis86_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+HEADERS = $(include_la_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SPHINX_BUILD = @SPHINX_BUILD@
+SPHINX_VERSION = @SPHINX_VERSION@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YASM = @YASM@
+YASM_VERSION = @YASM_VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+OPTABLE = @top_srcdir@/docs/x86/optable.xml
+MAINTAINERCLEANFILES = Makefile.in
+lib_LTLIBRARIES = libudis86.la
+libudis86_la_SOURCES = \
+ itab.c \
+ decode.c \
+ syn.c \
+ syn-intel.c \
+ syn-att.c \
+ udis86.c \
+ udint.h \
+ syn.h \
+ decode.h
+
+include_ladir = ${includedir}/libudis86
+include_la_HEADERS = \
+ types.h \
+ extern.h \
+ itab.h
+
+BUILT_SOURCES = \
+ itab.c \
+ itab.h
+
+
+#
+# DLLs may not contain undefined symbol references.
+# We have the linker check this explicitly.
+#
+@TARGET_WINDOWS_TRUE@libudis86_la_LDFLAGS = -no-undefined -version-info 0:0:0
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libudis86/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign libudis86/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+ }
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+libudis86.la: $(libudis86_la_OBJECTS) $(libudis86_la_DEPENDENCIES) $(EXTRA_libudis86_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libudis86_la_LINK) -rpath $(libdir) $(libudis86_la_OBJECTS) $(libudis86_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decode.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/itab.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syn-att.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syn-intel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syn.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udis86.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-include_laHEADERS: $(include_la_HEADERS)
+ @$(NORMAL_INSTALL)
+ @list='$(include_la_HEADERS)'; test -n "$(include_ladir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(include_ladir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(include_ladir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(include_ladir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_ladir)" || exit $$?; \
+ done
+
+uninstall-include_laHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(include_la_HEADERS)'; test -n "$(include_ladir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(include_ladir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(include_ladir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-include_laHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-include_laHEADERS uninstall-libLTLIBRARIES
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool clean-local cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am \
+ install-include_laHEADERS install-info install-info-am \
+ install-libLTLIBRARIES install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic maintainer-clean-local mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-include_laHEADERS uninstall-libLTLIBRARIES
+
+
+itab.c itab.h: $(OPTABLE) \
+ $(top_srcdir)/scripts/ud_itab.py \
+ $(top_srcdir)/scripts/ud_opcode.py \
+ $(top_srcdir)/scripts/ud_optable.py
+ $(PYTHON) $(top_srcdir)/scripts/ud_itab.py $(OPTABLE) $(srcdir)
+
+clean-local:
+ rm -rf $(BUILT_SOURCES)
+
+maintainer-clean-local:
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/UefiDriver/udis86/libudis86/decode.c b/UefiDriver/udis86/libudis86/decode.c
new file mode 100644
index 0000000..cccf2ab
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/decode.c
@@ -0,0 +1,1232 @@
+/* udis86 - libudis86/decode.c
+ *
+ * Copyright (c) 2002-2009 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "udint.h"
+#include "types.h"
+#include "decode.h"
+
+#ifndef __UD_STANDALONE__
+# include
+#endif /* __UD_STANDALONE__ */
+
+/* The max number of prefixes to an instruction */
+#define MAX_PREFIXES 15
+
+/* rex prefix bits */
+#define REX_W(r) ( ( 0xF & ( r ) ) >> 3 )
+#define REX_R(r) ( ( 0x7 & ( r ) ) >> 2 )
+#define REX_X(r) ( ( 0x3 & ( r ) ) >> 1 )
+#define REX_B(r) ( ( 0x1 & ( r ) ) >> 0 )
+#define REX_PFX_MASK(n) ( ( P_REXW(n) << 3 ) | \
+ ( P_REXR(n) << 2 ) | \
+ ( P_REXX(n) << 1 ) | \
+ ( P_REXB(n) << 0 ) )
+
+/* scable-index-base bits */
+#define SIB_S(b) ( ( b ) >> 6 )
+#define SIB_I(b) ( ( ( b ) >> 3 ) & 7 )
+#define SIB_B(b) ( ( b ) & 7 )
+
+/* modrm bits */
+#define MODRM_REG(b) ( ( ( b ) >> 3 ) & 7 )
+#define MODRM_NNN(b) ( ( ( b ) >> 3 ) & 7 )
+#define MODRM_MOD(b) ( ( ( b ) >> 6 ) & 3 )
+#define MODRM_RM(b) ( ( b ) & 7 )
+
+static int decode_ext( struct ud *u, uint16_t ptr );
+
+enum reg_class
+{ /* register classes */
+ REGCLASS_GPR,
+ REGCLASS_MMX,
+ REGCLASS_CR,
+ REGCLASS_DB,
+ REGCLASS_SEG,
+ REGCLASS_XMM
+};
+
+ /*
+ * inp_start
+ * Should be called before each de-code operation.
+ */
+static void
+inp_start( struct ud *u )
+{
+ u->inp_ctr = 0;
+}
+
+
+static uint8_t
+inp_next( struct ud *u )
+{
+ if (u->inp_end == 0)
+ {
+ if (u->inp_buf != NULL)
+ {
+ if (u->inp_buf_index < u->inp_buf_size)
+ {
+ u->inp_ctr++;
+ return (u->inp_curr = u->inp_buf[u->inp_buf_index++]);
+ }
+ }
+ else
+ {
+ int c;
+ if ((c = u->inp_hook( u )) != UD_EOI)
+ {
+ u->inp_curr = (uint8_t)c;
+ u->inp_sess[u->inp_ctr++] = u->inp_curr;
+ return u->inp_curr;
+ }
+ }
+ }
+ u->inp_end = 1;
+ UDERR( u, "byte expected, eoi received\n" );
+ return 0;
+}
+
+static uint8_t
+inp_curr( struct ud *u )
+{
+ return u->inp_curr;
+}
+
+
+/*
+ * inp_uint8
+ * int_uint16
+ * int_uint32
+ * int_uint64
+ * Load little-endian values from input
+ */
+static uint8_t
+inp_uint8( struct ud* u )
+{
+ return inp_next( u );
+}
+
+static uint16_t
+inp_uint16( struct ud* u )
+{
+ uint16_t r, ret;
+
+ ret = inp_next( u );
+ r = inp_next( u );
+ return ret | (r << 8);
+}
+
+static uint32_t
+inp_uint32( struct ud* u )
+{
+ uint32_t r, ret;
+
+ ret = inp_next( u );
+ r = inp_next( u );
+ ret = ret | (r << 8);
+ r = inp_next( u );
+ ret = ret | (r << 16);
+ r = inp_next( u );
+ return ret | (r << 24);
+}
+
+static uint64_t
+inp_uint64( struct ud* u )
+{
+ uint64_t r, ret;
+
+ ret = inp_next( u );
+ r = inp_next( u );
+ ret = ret | (r << 8);
+ r = inp_next( u );
+ ret = ret | (r << 16);
+ r = inp_next( u );
+ ret = ret | (r << 24);
+ r = inp_next( u );
+ ret = ret | (r << 32);
+ r = inp_next( u );
+ ret = ret | (r << 40);
+ r = inp_next( u );
+ ret = ret | (r << 48);
+ r = inp_next( u );
+ return ret | (r << 56);
+}
+
+
+static inline int
+eff_opr_mode( int dis_mode, int rex_w, int pfx_opr )
+{
+ if (dis_mode == 64)
+ {
+ return rex_w ? 64 : (pfx_opr ? 16 : 32);
+ }
+ else if (dis_mode == 32)
+ {
+ return pfx_opr ? 16 : 32;
+ }
+ else
+ {
+ UD_ASSERT( dis_mode == 16 );
+ return pfx_opr ? 32 : 16;
+ }
+}
+
+
+static inline int
+eff_adr_mode( int dis_mode, int pfx_adr )
+{
+ if (dis_mode == 64)
+ {
+ return pfx_adr ? 32 : 64;
+ }
+ else if (dis_mode == 32)
+ {
+ return pfx_adr ? 16 : 32;
+ }
+ else
+ {
+ UD_ASSERT( dis_mode == 16 );
+ return pfx_adr ? 32 : 16;
+ }
+}
+
+
+/*
+ * decode_prefixes
+ *
+ * Extracts instruction prefixes.
+ */
+static int
+decode_prefixes( struct ud *u )
+{
+ int done = 0;
+ uint8_t curr = 0;
+ uint8_t last = 0;
+ UD_RETURN_ON_ERROR( u );
+
+ do
+ {
+ last = curr;
+ curr = inp_next( u );
+ UD_RETURN_ON_ERROR( u );
+ if (u->inp_ctr == MAX_INSN_LENGTH)
+ {
+ UD_RETURN_WITH_ERROR( u, "max instruction length" );
+ }
+
+ switch (curr)
+ {
+ case 0x2E:
+ u->pfx_seg = UD_R_CS;
+ break;
+ case 0x36:
+ u->pfx_seg = UD_R_SS;
+ break;
+ case 0x3E:
+ u->pfx_seg = UD_R_DS;
+ break;
+ case 0x26:
+ u->pfx_seg = UD_R_ES;
+ break;
+ case 0x64:
+ u->pfx_seg = UD_R_FS;
+ break;
+ case 0x65:
+ u->pfx_seg = UD_R_GS;
+ break;
+ case 0x67: /* adress-size override prefix */
+ u->pfx_adr = 0x67;
+ break;
+ case 0xF0:
+ u->pfx_lock = 0xF0;
+ break;
+ case 0x66:
+ u->pfx_opr = 0x66;
+ break;
+ case 0xF2:
+ u->pfx_str = 0xf2;
+ break;
+ case 0xF3:
+ u->pfx_str = 0xf3;
+ break;
+ default:
+ /* consume if rex */
+ done = (u->dis_mode == 64 && (curr & 0xF0) == 0x40) ? 0 : 1;
+ break;
+ }
+ } while (!done);
+ /* rex prefixes in 64bit mode, must be the last prefix */
+ if (u->dis_mode == 64 && (last & 0xF0) == 0x40)
+ {
+ u->pfx_rex = last;
+ }
+ return 0;
+}
+
+
+static inline unsigned int modrm( struct ud * u )
+{
+ if (!u->have_modrm)
+ {
+ u->modrm = inp_next( u );
+ u->have_modrm = 1;
+ }
+ return u->modrm;
+}
+
+
+static unsigned int
+resolve_operand_size( const struct ud * u, unsigned int s )
+{
+ switch (s)
+ {
+ case SZ_V:
+ return (u->opr_mode);
+ case SZ_Z:
+ return (u->opr_mode == 16) ? 16 : 32;
+ case SZ_Y:
+ return (u->opr_mode == 16) ? 32 : u->opr_mode;
+ case SZ_RDQ:
+ return (u->dis_mode == 64) ? 64 : 32;
+ default:
+ return s;
+ }
+}
+
+
+static int resolve_mnemonic( struct ud* u )
+{
+ /* resolve 3dnow weirdness. */
+ if (u->mnemonic == UD_I3dnow)
+ {
+ u->mnemonic = ud_itab[u->le->table[inp_curr( u )]].mnemonic;
+ }
+ /* SWAPGS is only valid in 64bits mode */
+ if (u->mnemonic == UD_Iswapgs && u->dis_mode != 64)
+ {
+ UDERR( u, "swapgs invalid in 64bits mode\n" );
+ return -1;
+ }
+
+ if (u->mnemonic == UD_Ixchg)
+ {
+ if ((u->operand[0].type == UD_OP_REG && u->operand[0].base == UD_R_AX &&
+ u->operand[1].type == UD_OP_REG && u->operand[1].base == UD_R_AX) ||
+ (u->operand[0].type == UD_OP_REG && u->operand[0].base == UD_R_EAX &&
+ u->operand[1].type == UD_OP_REG && u->operand[1].base == UD_R_EAX))
+ {
+ u->operand[0].type = UD_NONE;
+ u->operand[1].type = UD_NONE;
+ u->mnemonic = UD_Inop;
+ }
+ }
+
+ if (u->mnemonic == UD_Inop && u->pfx_repe)
+ {
+ u->pfx_repe = 0;
+ u->mnemonic = UD_Ipause;
+ }
+ return 0;
+}
+
+
+/* -----------------------------------------------------------------------------
+ * decode_a()- Decodes operands of the type seg:offset
+ * -----------------------------------------------------------------------------
+ */
+static void
+decode_a( struct ud* u, struct ud_operand *op )
+{
+ if (u->opr_mode == 16)
+ {
+/* seg16:off16 */
+ op->type = UD_OP_PTR;
+ op->size = 32;
+ op->lval.ptr.off = inp_uint16( u );
+ op->lval.ptr.seg = inp_uint16( u );
+ }
+ else
+ {
+ /* seg16:off32 */
+ op->type = UD_OP_PTR;
+ op->size = 48;
+ op->lval.ptr.off = inp_uint32( u );
+ op->lval.ptr.seg = inp_uint16( u );
+ }
+}
+
+/* -----------------------------------------------------------------------------
+ * decode_gpr() - Returns decoded General Purpose Register
+ * -----------------------------------------------------------------------------
+ */
+static enum ud_type
+decode_gpr( register struct ud* u, unsigned int s, unsigned char rm )
+{
+ switch (s)
+ {
+ case 64:
+ return UD_R_RAX + rm;
+ case 32:
+ return UD_R_EAX + rm;
+ case 16:
+ return UD_R_AX + rm;
+ case 8:
+ if (u->dis_mode == 64 && u->pfx_rex)
+ {
+ if (rm >= 4)
+ return UD_R_SPL + (rm - 4);
+ return UD_R_AL + rm;
+ }
+ else return UD_R_AL + rm;
+ case 0:
+ /* invalid size in case of a decode error */
+ UD_ASSERT( u->error );
+ return UD_NONE;
+ default:
+ UD_ASSERT( !"invalid operand size" );
+ return UD_NONE;
+ }
+}
+
+static void
+decode_reg( struct ud *u,
+ struct ud_operand *opr,
+ int type,
+ int num,
+ int size )
+{
+ int reg;
+ size = resolve_operand_size( u, size );
+ switch (type)
+ {
+ case REGCLASS_GPR: reg = decode_gpr( u, size, (unsigned char)num ); break;
+ case REGCLASS_MMX: reg = UD_R_MM0 + (num & 7); break;
+ case REGCLASS_XMM: reg = UD_R_XMM0 + num; break;
+ case REGCLASS_CR: reg = UD_R_CR0 + num; break;
+ case REGCLASS_DB: reg = UD_R_DR0 + num; break;
+ case REGCLASS_SEG:
+ {
+/*
+ * Only 6 segment registers, anything else is an error.
+ */
+ if ((num & 7) > 5)
+ {
+ UDERR( u, "invalid segment register value\n" );
+ return;
+ }
+ else
+ {
+ reg = UD_R_ES + (num & 7);
+ }
+ break;
+ }
+ default:
+ UD_ASSERT( !"invalid register type" );
+ return;
+ }
+ opr->type = UD_OP_REG;
+ opr->base = reg;
+ opr->size = (uint8_t)size;
+}
+
+
+/*
+ * decode_imm
+ *
+ * Decode Immediate values.
+ */
+static void
+decode_imm( struct ud* u, unsigned int size, struct ud_operand *op )
+{
+ op->size = (uint8_t)resolve_operand_size( u, size );
+ op->type = UD_OP_IMM;
+
+ switch (op->size)
+ {
+ case 8: op->lval.sbyte = inp_uint8( u ); break;
+ case 16: op->lval.uword = inp_uint16( u ); break;
+ case 32: op->lval.udword = inp_uint32( u ); break;
+ case 64: op->lval.uqword = inp_uint64( u ); break;
+ default: return;
+ }
+}
+
+
+/*
+ * decode_mem_disp
+ *
+ * Decode mem address displacement.
+ */
+static void
+decode_mem_disp( struct ud* u, unsigned int size, struct ud_operand *op )
+{
+ switch (size)
+ {
+ case 8:
+ op->offset = 8;
+ op->lval.ubyte = inp_uint8( u );
+ break;
+ case 16:
+ op->offset = 16;
+ op->lval.uword = inp_uint16( u );
+ break;
+ case 32:
+ op->offset = 32;
+ op->lval.udword = inp_uint32( u );
+ break;
+ case 64:
+ op->offset = 64;
+ op->lval.uqword = inp_uint64( u );
+ break;
+ default:
+ return;
+ }
+}
+
+
+/*
+ * decode_modrm_reg
+ *
+ * Decodes reg field of mod/rm byte
+ *
+ */
+static inline void
+decode_modrm_reg( struct ud *u,
+ struct ud_operand *operand,
+ unsigned int type,
+ unsigned int size )
+{
+ uint8_t reg = (REX_R( u->pfx_rex ) << 3) | MODRM_REG( modrm( u ) );
+ decode_reg( u, operand, type, reg, size );
+}
+
+
+/*
+ * decode_modrm_rm
+ *
+ * Decodes rm field of mod/rm byte
+ *
+ */
+static void
+decode_modrm_rm( struct ud *u,
+ struct ud_operand *op,
+ unsigned char type, /* register type */
+ unsigned int size ) /* operand size */
+
+{
+ size_t offset = 0;
+ unsigned char mod, rm;
+
+ /* get mod, r/m and reg fields */
+ mod = MODRM_MOD( modrm( u ) );
+ rm = (REX_B( u->pfx_rex ) << 3) | MODRM_RM( modrm( u ) );
+
+ /*
+ * If mod is 11b, then the modrm.rm specifies a register.
+ *
+ */
+ if (mod == 3)
+ {
+ decode_reg( u, op, type, rm, size );
+ return;
+ }
+
+ /*
+ * !11b => Memory Address
+ */
+ op->type = UD_OP_MEM;
+ op->size = (uint8_t)resolve_operand_size( u, size );
+
+ if (u->adr_mode == 64)
+ {
+ op->base = UD_R_RAX + rm;
+ if (mod == 1)
+ {
+ offset = 8;
+ }
+ else if (mod == 2)
+ {
+ offset = 32;
+ }
+ else if (mod == 0 && (rm & 7) == 5)
+ {
+ op->base = UD_R_RIP;
+ offset = 32;
+ }
+ else
+ {
+ offset = 0;
+ }
+ /*
+ * Scale-Index-Base (SIB)
+ */
+ if ((rm & 7) == 4)
+ {
+ inp_next( u );
+
+ op->scale = (1 << SIB_S( inp_curr( u ) )) & ~1;
+ op->index = UD_R_RAX + (SIB_I( inp_curr( u ) ) | (REX_X( u->pfx_rex ) << 3));
+ op->base = UD_R_RAX + (SIB_B( inp_curr( u ) ) | (REX_B( u->pfx_rex ) << 3));
+
+ /* special conditions for base reference */
+ if (op->index == UD_R_RSP)
+ {
+ op->index = UD_NONE;
+ op->scale = UD_NONE;
+ }
+
+ if (op->base == UD_R_RBP || op->base == UD_R_R13)
+ {
+ if (mod == 0)
+ {
+ op->base = UD_NONE;
+ }
+ if (mod == 1)
+ {
+ offset = 8;
+ }
+ else
+ {
+ offset = 32;
+ }
+ }
+ }
+ }
+ else if (u->adr_mode == 32)
+ {
+ op->base = UD_R_EAX + rm;
+ if (mod == 1)
+ {
+ offset = 8;
+ }
+ else if (mod == 2)
+ {
+ offset = 32;
+ }
+ else if (mod == 0 && rm == 5)
+ {
+ op->base = UD_NONE;
+ offset = 32;
+ }
+ else
+ {
+ offset = 0;
+ }
+
+ /* Scale-Index-Base (SIB) */
+ if ((rm & 7) == 4)
+ {
+ inp_next( u );
+
+ op->scale = (1 << SIB_S( inp_curr( u ) )) & ~1;
+ op->index = UD_R_EAX + (SIB_I( inp_curr( u ) ) | (REX_X( u->pfx_rex ) << 3));
+ op->base = UD_R_EAX + (SIB_B( inp_curr( u ) ) | (REX_B( u->pfx_rex ) << 3));
+
+ if (op->index == UD_R_ESP)
+ {
+ op->index = UD_NONE;
+ op->scale = UD_NONE;
+ }
+
+ /* special condition for base reference */
+ if (op->base == UD_R_EBP)
+ {
+ if (mod == 0)
+ {
+ op->base = UD_NONE;
+ }
+ if (mod == 1)
+ {
+ offset = 8;
+ }
+ else
+ {
+ offset = 32;
+ }
+ }
+ }
+ }
+ else
+ {
+ const unsigned int bases[] = { UD_R_BX, UD_R_BX, UD_R_BP, UD_R_BP,
+ UD_R_SI, UD_R_DI, UD_R_BP, UD_R_BX };
+ const unsigned int indices[] = { UD_R_SI, UD_R_DI, UD_R_SI, UD_R_DI,
+ UD_NONE, UD_NONE, UD_NONE, UD_NONE };
+ op->base = bases[rm & 7];
+ op->index = indices[rm & 7];
+ if (mod == 0 && rm == 6)
+ {
+ offset = 16;
+ op->base = UD_NONE;
+ }
+ else if (mod == 1)
+ {
+ offset = 8;
+ }
+ else if (mod == 2)
+ {
+ offset = 16;
+ }
+ }
+
+ if (offset)
+ {
+ decode_mem_disp( u, (unsigned int)offset, op );
+ }
+}
+
+
+/*
+ * decode_moffset
+ * Decode offset-only memory operand
+ */
+static void
+decode_moffset( struct ud *u, unsigned int size, struct ud_operand *opr )
+{
+ opr->type = UD_OP_MEM;
+ opr->size = (uint8_t)resolve_operand_size( u, size );
+ decode_mem_disp( u, u->adr_mode, opr );
+}
+
+
+/* -----------------------------------------------------------------------------
+ * decode_operands() - Disassembles Operands.
+ * -----------------------------------------------------------------------------
+ */
+static int
+decode_operand( struct ud *u,
+ struct ud_operand *operand,
+ enum ud_operand_code type,
+ unsigned int size )
+{
+ operand->_oprcode = type;
+
+ switch (type)
+ {
+ case OP_A:
+ decode_a( u, operand );
+ break;
+ case OP_MR:
+ decode_modrm_rm( u, operand, REGCLASS_GPR,
+ MODRM_MOD( modrm( u ) ) == 3 ?
+ Mx_reg_size( size ) : Mx_mem_size( size ) );
+ break;
+ case OP_F:
+ u->br_far = 1;
+ /* intended fall through */
+ case OP_M:
+ if (MODRM_MOD( modrm( u ) ) == 3)
+ {
+ UDERR( u, "expected modrm.mod != 3\n" );
+ }
+ /* intended fall through */
+ case OP_E:
+ decode_modrm_rm( u, operand, REGCLASS_GPR, size );
+ break;
+ case OP_G:
+ decode_modrm_reg( u, operand, REGCLASS_GPR, size );
+ break;
+ case OP_sI:
+ case OP_I:
+ decode_imm( u, size, operand );
+ break;
+ case OP_I1:
+ operand->type = UD_OP_CONST;
+ operand->lval.udword = 1;
+ break;
+ case OP_N:
+ if (MODRM_MOD( modrm( u ) ) != 3)
+ {
+ UDERR( u, "expected modrm.mod == 3\n" );
+ }
+ /* intended fall through */
+ case OP_Q:
+ decode_modrm_rm( u, operand, REGCLASS_MMX, size );
+ break;
+ case OP_P:
+ decode_modrm_reg( u, operand, REGCLASS_MMX, size );
+ break;
+ case OP_U:
+ if (MODRM_MOD( modrm( u ) ) != 3)
+ {
+ UDERR( u, "expected modrm.mod == 3\n" );
+ }
+ /* intended fall through */
+ case OP_W:
+ decode_modrm_rm( u, operand, REGCLASS_XMM, size );
+ break;
+ case OP_V:
+ decode_modrm_reg( u, operand, REGCLASS_XMM, size );
+ break;
+ case OP_MU:
+ decode_modrm_rm( u, operand, REGCLASS_XMM,
+ MODRM_MOD( modrm( u ) ) == 3 ?
+ Mx_reg_size( size ) : Mx_mem_size( size ) );
+ break;
+ case OP_S:
+ decode_modrm_reg( u, operand, REGCLASS_SEG, size );
+ break;
+ case OP_O:
+ decode_moffset( u, size, operand );
+ break;
+ case OP_R0:
+ case OP_R1:
+ case OP_R2:
+ case OP_R3:
+ case OP_R4:
+ case OP_R5:
+ case OP_R6:
+ case OP_R7:
+ decode_reg( u, operand, REGCLASS_GPR,
+ (REX_B( u->pfx_rex ) << 3) | (type - OP_R0), size );
+ break;
+ case OP_AL:
+ case OP_AX:
+ case OP_eAX:
+ case OP_rAX:
+ decode_reg( u, operand, REGCLASS_GPR, 0, size );
+ break;
+ case OP_CL:
+ case OP_CX:
+ case OP_eCX:
+ decode_reg( u, operand, REGCLASS_GPR, 1, size );
+ break;
+ case OP_DL:
+ case OP_DX:
+ case OP_eDX:
+ decode_reg( u, operand, REGCLASS_GPR, 2, size );
+ break;
+ case OP_ES:
+ case OP_CS:
+ case OP_DS:
+ case OP_SS:
+ case OP_FS:
+ case OP_GS:
+ /* in 64bits mode, only fs and gs are allowed */
+ if (u->dis_mode == 64)
+ {
+ if (type != OP_FS && type != OP_GS)
+ {
+ UDERR( u, "invalid segment register in 64bits\n" );
+ }
+ }
+ operand->type = UD_OP_REG;
+ operand->base = (type - OP_ES) + UD_R_ES;
+ operand->size = 16;
+ break;
+ case OP_J:
+ decode_imm( u, size, operand );
+ operand->type = UD_OP_JIMM;
+ break;
+ case OP_R:
+ if (MODRM_MOD( modrm( u ) ) != 3)
+ {
+ UDERR( u, "expected modrm.mod == 3\n" );
+ }
+ decode_modrm_rm( u, operand, REGCLASS_GPR, size );
+ break;
+ case OP_C:
+ decode_modrm_reg( u, operand, REGCLASS_CR, size );
+ break;
+ case OP_D:
+ decode_modrm_reg( u, operand, REGCLASS_DB, size );
+ break;
+ case OP_I3:
+ operand->type = UD_OP_CONST;
+ operand->lval.sbyte = 3;
+ break;
+ case OP_ST0:
+ case OP_ST1:
+ case OP_ST2:
+ case OP_ST3:
+ case OP_ST4:
+ case OP_ST5:
+ case OP_ST6:
+ case OP_ST7:
+ operand->type = UD_OP_REG;
+ operand->base = (type - OP_ST0) + UD_R_ST0;
+ operand->size = 80;
+ break;
+ default:
+ break;
+ }
+ return 0;
+}
+
+
+/*
+ * decode_operands
+ *
+ * Disassemble upto 3 operands of the current instruction being
+ * disassembled. By the end of the function, the operand fields
+ * of the ud structure will have been filled.
+ */
+static int
+decode_operands( struct ud* u )
+{
+ decode_operand( u, &u->operand[0],
+ u->itab_entry->operand1.type,
+ u->itab_entry->operand1.size );
+ decode_operand( u, &u->operand[1],
+ u->itab_entry->operand2.type,
+ u->itab_entry->operand2.size );
+ decode_operand( u, &u->operand[2],
+ u->itab_entry->operand3.type,
+ u->itab_entry->operand3.size );
+ return 0;
+}
+
+/* -----------------------------------------------------------------------------
+ * clear_insn() - clear instruction structure
+ * -----------------------------------------------------------------------------
+ */
+static void
+clear_insn( register struct ud* u )
+{
+ u->error = 0;
+ u->pfx_seg = 0;
+ u->pfx_opr = 0;
+ u->pfx_adr = 0;
+ u->pfx_lock = 0;
+ u->pfx_repne = 0;
+ u->pfx_rep = 0;
+ u->pfx_repe = 0;
+ u->pfx_rex = 0;
+ u->pfx_str = 0;
+ u->mnemonic = UD_Inone;
+ u->itab_entry = NULL;
+ u->have_modrm = 0;
+ u->br_far = 0;
+
+ memset( &u->operand[0], 0, sizeof( struct ud_operand ) );
+ memset( &u->operand[1], 0, sizeof( struct ud_operand ) );
+ memset( &u->operand[2], 0, sizeof( struct ud_operand ) );
+}
+
+
+static inline int
+resolve_pfx_str( struct ud* u )
+{
+ if (u->pfx_str == 0xf3)
+ {
+ if (P_STR( u->itab_entry->prefix ))
+ {
+ u->pfx_rep = 0xf3;
+ }
+ else
+ {
+ u->pfx_repe = 0xf3;
+ }
+ }
+ else if (u->pfx_str == 0xf2)
+ {
+ u->pfx_repne = 0xf3;
+ }
+ return 0;
+}
+
+
+static int
+resolve_mode( struct ud* u )
+{
+ int default64;
+ /* if in error state, bail out */
+ if (u->error) return -1;
+
+ /* propagate prefix effects */
+ if (u->dis_mode == 64)
+ { /* set 64bit-mode flags */
+
+/* Check validity of instruction m64 */
+ if (P_INV64( u->itab_entry->prefix ))
+ {
+ UDERR( u, "instruction invalid in 64bits\n" );
+ return -1;
+ }
+
+ /* effective rex prefix is the effective mask for the
+ * instruction hard-coded in the opcode map.
+ */
+ u->pfx_rex = (u->pfx_rex & 0x40) |
+ (u->pfx_rex & REX_PFX_MASK( u->itab_entry->prefix ));
+
+/* whether this instruction has a default operand size of
+ * 64bit, also hardcoded into the opcode map.
+ */
+ default64 = P_DEF64( u->itab_entry->prefix );
+ /* calculate effective operand size */
+ if (REX_W( u->pfx_rex ))
+ {
+ u->opr_mode = 64;
+ }
+ else if (u->pfx_opr)
+ {
+ u->opr_mode = 16;
+ }
+ else
+ {
+ /* unless the default opr size of instruction is 64,
+ * the effective operand size in the absence of rex.w
+ * prefix is 32.
+ */
+ u->opr_mode = default64 ? 64 : 32;
+ }
+
+ /* calculate effective address size */
+ u->adr_mode = (u->pfx_adr) ? 32 : 64;
+ }
+ else if (u->dis_mode == 32)
+ { /* set 32bit-mode flags */
+ u->opr_mode = (u->pfx_opr) ? 16 : 32;
+ u->adr_mode = (u->pfx_adr) ? 16 : 32;
+ }
+ else if (u->dis_mode == 16)
+ { /* set 16bit-mode flags */
+ u->opr_mode = (u->pfx_opr) ? 32 : 16;
+ u->adr_mode = (u->pfx_adr) ? 32 : 16;
+ }
+
+ return 0;
+}
+
+
+static inline int
+decode_insn( struct ud *u, uint16_t ptr )
+{
+ UD_ASSERT( (ptr & 0x8000) == 0 );
+ u->itab_entry = &ud_itab[ptr];
+ u->mnemonic = u->itab_entry->mnemonic;
+ return (resolve_pfx_str( u ) == 0 &&
+ resolve_mode( u ) == 0 &&
+ decode_operands( u ) == 0 &&
+ resolve_mnemonic( u ) == 0) ? 0 : -1;
+}
+
+
+/*
+ * decode_3dnow()
+ *
+ * Decoding 3dnow is a little tricky because of its strange opcode
+ * structure. The final opcode disambiguation depends on the last
+ * byte that comes after the operands have been decoded. Fortunately,
+ * all 3dnow instructions have the same set of operand types. So we
+ * go ahead and decode the instruction by picking an arbitrarily chosen
+ * valid entry in the table, decode the operands, and read the final
+ * byte to resolve the menmonic.
+ */
+static inline int
+decode_3dnow( struct ud* u )
+{
+ uint16_t ptr;
+ UD_ASSERT( u->le->type == UD_TAB__OPC_3DNOW );
+ UD_ASSERT( u->le->table[0xc] != 0 );
+ decode_insn( u, u->le->table[0xc] );
+ inp_next( u );
+ if (u->error)
+ {
+ return -1;
+ }
+ ptr = u->le->table[inp_curr( u )];
+ UD_ASSERT( (ptr & 0x8000) == 0 );
+ u->mnemonic = ud_itab[ptr].mnemonic;
+ return 0;
+}
+
+
+static int
+decode_ssepfx( struct ud *u )
+{
+ uint8_t idx;
+ uint8_t pfx;
+
+ /*
+ * String prefixes (f2, f3) take precedence over operand
+ * size prefix (66).
+ */
+ pfx = u->pfx_str;
+ if (pfx == 0)
+ {
+ pfx = u->pfx_opr;
+ }
+ idx = ((pfx & 0xf) + 1) / 2;
+ if (u->le->table[idx] == 0)
+ {
+ idx = 0;
+ }
+ if (idx && u->le->table[idx] != 0)
+ {
+/*
+ * "Consume" the prefix as a part of the opcode, so it is no
+ * longer exported as an instruction prefix.
+ */
+ u->pfx_str = 0;
+ if (pfx == 0x66)
+ {
+/*
+ * consume "66" only if it was used for decoding, leaving
+ * it to be used as an operands size override for some
+ * simd instructions.
+ */
+ u->pfx_opr = 0;
+ }
+ }
+ return decode_ext( u, u->le->table[idx] );
+}
+
+
+/*
+ * decode_ext()
+ *
+ * Decode opcode extensions (if any)
+ */
+static int
+decode_ext( struct ud *u, uint16_t ptr )
+{
+ uint8_t idx = 0;
+ if ((ptr & 0x8000) == 0)
+ {
+ return decode_insn( u, ptr );
+ }
+ u->le = &ud_lookup_table_list[(~0x8000 & ptr)];
+ if (u->le->type == UD_TAB__OPC_3DNOW)
+ {
+ return decode_3dnow( u );
+ }
+
+ switch (u->le->type)
+ {
+ case UD_TAB__OPC_MOD:
+ /* !11 = 0, 11 = 1 */
+ idx = (MODRM_MOD( modrm( u ) ) + 1) / 4;
+ break;
+ /* disassembly mode/operand size/address size based tables.
+ * 16 = 0,, 32 = 1, 64 = 2
+ */
+ case UD_TAB__OPC_MODE:
+ idx = u->dis_mode != 64 ? 0 : 1;
+ break;
+ case UD_TAB__OPC_OSIZE:
+ idx = (uint8_t)eff_opr_mode( u->dis_mode, REX_W( u->pfx_rex ), u->pfx_opr ) / 32;
+ break;
+ case UD_TAB__OPC_ASIZE:
+ idx = (uint8_t)eff_adr_mode( u->dis_mode, u->pfx_adr ) / 32;
+ break;
+ case UD_TAB__OPC_X87:
+ idx = (uint8_t)(modrm( u ) - 0xC0);
+ break;
+ case UD_TAB__OPC_VENDOR:
+ if (u->vendor == UD_VENDOR_ANY)
+ {
+/* choose a valid entry */
+ idx = (u->le->table[idx] != 0) ? 0 : 1;
+ }
+ else if (u->vendor == UD_VENDOR_AMD)
+ {
+ idx = 0;
+ }
+ else
+ {
+ idx = 1;
+ }
+ break;
+ case UD_TAB__OPC_RM:
+ idx = MODRM_RM( modrm( u ) );
+ break;
+ case UD_TAB__OPC_REG:
+ idx = MODRM_REG( modrm( u ) );
+ break;
+ case UD_TAB__OPC_SSE:
+ return decode_ssepfx( u );
+ default:
+ UD_ASSERT( !"not reached" );
+ break;
+ }
+
+ return decode_ext( u, u->le->table[idx] );
+}
+
+
+static int
+decode_opcode( struct ud *u )
+{
+ uint16_t ptr;
+ UD_ASSERT( u->le->type == UD_TAB__OPC_TABLE );
+ UD_RETURN_ON_ERROR( u );
+ u->primary_opcode = inp_curr( u );
+ ptr = u->le->table[inp_curr( u )];
+ if (ptr & 0x8000)
+ {
+ u->le = &ud_lookup_table_list[ptr & ~0x8000];
+ if (u->le->type == UD_TAB__OPC_TABLE)
+ {
+ inp_next( u );
+ return decode_opcode( u );
+ }
+ }
+ return decode_ext( u, ptr );
+}
+
+
+/* =============================================================================
+ * ud_decode() - Instruction decoder. Returns the number of bytes decoded.
+ * =============================================================================
+ */
+unsigned int
+ud_decode( struct ud *u )
+{
+ inp_start( u );
+ clear_insn( u );
+ u->le = &ud_lookup_table_list[0];
+ u->error = decode_prefixes( u ) == -1 ||
+ decode_opcode( u ) == -1 ||
+ u->error;
+/* Handle decode error. */
+ if (u->error)
+ {
+/* clear out the decode data. */
+ clear_insn( u );
+ /* mark the sequence of bytes as invalid. */
+ u->itab_entry = &ud_itab[0]; /* entry 0 is invalid */
+ u->mnemonic = u->itab_entry->mnemonic;
+ }
+
+ /* maybe this stray segment override byte
+ * should be spewed out?
+ */
+ if (!P_SEG( u->itab_entry->prefix ) &&
+ u->operand[0].type != UD_OP_MEM &&
+ u->operand[1].type != UD_OP_MEM)
+ u->pfx_seg = 0;
+
+ u->insn_offset = u->pc; /* set offset of instruction */
+ u->asm_buf_fill = 0; /* set translation buffer index to 0 */
+ u->pc += u->inp_ctr; /* move program counter by bytes decoded */
+
+ /* return number of bytes disassembled. */
+ return (unsigned int)u->inp_ctr;
+}
+
+/*
+vim: set ts=2 sw=2 expandtab
+*/
diff --git a/UefiDriver/udis86/libudis86/decode.h b/UefiDriver/udis86/libudis86/decode.h
new file mode 100644
index 0000000..a7362c8
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/decode.h
@@ -0,0 +1,195 @@
+/* udis86 - libudis86/decode.h
+ *
+ * Copyright (c) 2002-2009 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef UD_DECODE_H
+#define UD_DECODE_H
+
+#include "types.h"
+#include "itab.h"
+
+#define MAX_INSN_LENGTH 15
+
+/* itab prefix bits */
+#define P_none ( 0 )
+#define P_cast ( 1 << 0 )
+#define P_CAST(n) ( ( n >> 0 ) & 1 )
+#define P_rexb ( 1 << 1 )
+#define P_REXB(n) ( ( n >> 1 ) & 1 )
+#define P_inv64 ( 1 << 4 )
+#define P_INV64(n) ( ( n >> 4 ) & 1 )
+#define P_rexw ( 1 << 5 )
+#define P_REXW(n) ( ( n >> 5 ) & 1 )
+#define P_def64 ( 1 << 7 )
+#define P_DEF64(n) ( ( n >> 7 ) & 1 )
+#define P_rexr ( 1 << 8 )
+#define P_REXR(n) ( ( n >> 8 ) & 1 )
+#define P_oso ( 1 << 9 )
+#define P_OSO(n) ( ( n >> 9 ) & 1 )
+#define P_aso ( 1 << 10 )
+#define P_ASO(n) ( ( n >> 10 ) & 1 )
+#define P_rexx ( 1 << 11 )
+#define P_REXX(n) ( ( n >> 11 ) & 1 )
+#define P_ImpAddr ( 1 << 12 )
+#define P_IMPADDR(n) ( ( n >> 12 ) & 1 )
+#define P_seg ( 1 << 13 )
+#define P_SEG(n) ( ( n >> 13 ) & 1 )
+#define P_str ( 1 << 14 )
+#define P_STR(n) ( ( n >> 14 ) & 1 )
+#define P_strz ( 1 << 15 )
+#define P_STR_ZF(n) ( ( n >> 15 ) & 1 )
+
+/* operand type constants -- order is important! */
+
+enum ud_operand_code {
+ OP_NONE,
+
+ OP_A, OP_E, OP_M, OP_G,
+ OP_I, OP_F,
+
+ OP_R0, OP_R1, OP_R2, OP_R3,
+ OP_R4, OP_R5, OP_R6, OP_R7,
+
+ OP_AL, OP_CL, OP_DL,
+ OP_AX, OP_CX, OP_DX,
+ OP_eAX, OP_eCX, OP_eDX,
+ OP_rAX, OP_rCX, OP_rDX,
+
+ OP_ES, OP_CS, OP_SS, OP_DS,
+ OP_FS, OP_GS,
+
+ OP_ST0, OP_ST1, OP_ST2, OP_ST3,
+ OP_ST4, OP_ST5, OP_ST6, OP_ST7,
+
+ OP_J, OP_S, OP_O,
+ OP_I1, OP_I3, OP_sI,
+
+ OP_V, OP_W, OP_Q, OP_P,
+ OP_U, OP_N, OP_MU,
+
+ OP_R, OP_C, OP_D,
+
+ OP_MR
+} UD_ATTR_PACKED;
+
+
+/* operand size constants */
+
+enum ud_operand_size {
+ SZ_NA = 0,
+ SZ_Z = 1,
+ SZ_V = 2,
+ SZ_RDQ = 7,
+
+ /* the following values are used as is,
+ * and thus hard-coded. changing them
+ * will break internals
+ */
+ SZ_B = 8,
+ SZ_W = 16,
+ SZ_D = 32,
+ SZ_Q = 64,
+ SZ_T = 80,
+ SZ_O = 128,
+
+ SZ_Y = 17,
+
+ /*
+ * complex size types, that encode sizes for operands
+ * of type MR (memory or register), for internal use
+ * only. Id space 256 and above.
+ */
+ SZ_BD = (SZ_B << 8) | SZ_D,
+ SZ_BV = (SZ_B << 8) | SZ_V,
+ SZ_WD = (SZ_W << 8) | SZ_D,
+ SZ_WV = (SZ_W << 8) | SZ_V,
+ SZ_WY = (SZ_W << 8) | SZ_Y,
+ SZ_DY = (SZ_D << 8) | SZ_Y,
+ SZ_WO = (SZ_W << 8) | SZ_O,
+ SZ_DO = (SZ_D << 8) | SZ_O,
+ SZ_QO = (SZ_Q << 8) | SZ_O,
+
+} UD_ATTR_PACKED;
+
+
+/* resolve complex size type.
+ */
+static inline enum ud_operand_size
+Mx_mem_size(enum ud_operand_size size)
+{
+ return (size >> 8) & 0xff;
+}
+
+static inline enum ud_operand_size
+Mx_reg_size(enum ud_operand_size size)
+{
+ return size & 0xff;
+}
+
+/* A single operand of an entry in the instruction table.
+ * (internal use only)
+ */
+struct ud_itab_entry_operand
+{
+ enum ud_operand_code type;
+ enum ud_operand_size size;
+};
+
+
+/* A single entry in an instruction table.
+ *(internal use only)
+ */
+struct ud_itab_entry
+{
+ enum ud_mnemonic_code mnemonic;
+ struct ud_itab_entry_operand operand1;
+ struct ud_itab_entry_operand operand2;
+ struct ud_itab_entry_operand operand3;
+ uint32_t prefix;
+};
+
+struct ud_lookup_table_list_entry {
+ const uint16_t *table;
+ enum ud_table_type type;
+ const char *meta;
+};
+
+
+
+static inline int
+ud_opcode_field_sext(uint8_t primary_opcode)
+{
+ return (primary_opcode & 0x02) != 0;
+}
+
+extern struct ud_itab_entry ud_itab[];
+extern struct ud_lookup_table_list_entry ud_lookup_table_list[];
+
+#endif /* UD_DECODE_H */
+
+/* vim:cindent
+ * vim:expandtab
+ * vim:ts=4
+ * vim:sw=4
+ */
diff --git a/UefiDriver/udis86/libudis86/extern.h b/UefiDriver/udis86/libudis86/extern.h
new file mode 100644
index 0000000..ae9f82f
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/extern.h
@@ -0,0 +1,105 @@
+/* udis86 - libudis86/extern.h
+ *
+ * Copyright (c) 2002-2009, 2013 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef UD_EXTERN_H
+#define UD_EXTERN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "types.h"
+
+/* ============================= PUBLIC API ================================= */
+
+extern void ud_init(struct ud*);
+
+extern void ud_set_mode(struct ud*, uint8_t);
+
+extern void ud_set_pc(struct ud*, uint64_t);
+
+extern void ud_set_input_hook(struct ud*, int (*)(struct ud*));
+
+extern void ud_set_input_buffer(struct ud*, const uint8_t*, size_t);
+
+#ifndef __UD_STANDALONE__
+extern void ud_set_input_file(struct ud*, FILE*);
+#endif /* __UD_STANDALONE__ */
+
+extern void ud_set_vendor(struct ud*, unsigned);
+
+extern void ud_set_syntax(struct ud*, void (*)(struct ud*));
+
+extern void ud_input_skip(struct ud*, size_t);
+
+extern int ud_input_end(const struct ud*);
+
+extern unsigned int ud_decode(struct ud*);
+
+extern unsigned int ud_disassemble(struct ud*);
+
+extern void ud_translate_intel(struct ud*);
+
+extern void ud_translate_att(struct ud*);
+
+extern const char* ud_insn_asm(const struct ud* u);
+
+extern const uint8_t* ud_insn_ptr(const struct ud* u);
+
+extern uint64_t ud_insn_off(const struct ud*);
+
+extern const char* ud_insn_hex(struct ud*);
+
+extern unsigned int ud_insn_len(const struct ud* u);
+
+extern const struct ud_operand* ud_insn_opr(const struct ud *u, unsigned int n);
+
+extern int ud_opr_is_sreg(const struct ud_operand *opr);
+
+extern int ud_opr_is_gpr(const struct ud_operand *opr);
+
+extern enum ud_mnemonic_code ud_insn_mnemonic(const struct ud *u);
+
+extern const char* ud_lookup_mnemonic(enum ud_mnemonic_code c);
+
+extern void ud_set_user_opaque_data(struct ud*, void*);
+
+extern void* ud_get_user_opaque_data(const struct ud*);
+
+extern uint64_t ud_insn_sext_imm(const struct ud*, const struct ud_operand*);
+
+extern void ud_set_asm_buffer(struct ud *u, char *buf, size_t size);
+
+extern void ud_set_sym_resolver(struct ud *u,
+ const char* (*resolver)(struct ud*,
+ uint64_t addr,
+ int64_t *offset));
+
+/* ========================================================================== */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* UD_EXTERN_H */
diff --git a/UefiDriver/udis86/libudis86/itab.c b/UefiDriver/udis86/libudis86/itab.c
new file mode 100644
index 0000000..a3d0634
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/itab.c
@@ -0,0 +1,8401 @@
+/* itab.c -- generated by udis86:scripts/ud_itab.py, do no edit */
+#include "decode.h"
+
+#define GROUP(n) (0x8000 | (n))
+
+
+static const uint16_t ud_itab__1[] = {
+ /* 0 */ 7, 0,
+};
+
+static const uint16_t ud_itab__2[] = {
+ /* 0 */ 8, 0,
+};
+
+static const uint16_t ud_itab__3[] = {
+ /* 0 */ 15, 0,
+};
+
+static const uint16_t ud_itab__6[] = {
+ /* 0 */ 16, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__7[] = {
+ /* 0 */ 17, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__8[] = {
+ /* 0 */ 18, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__9[] = {
+ /* 0 */ 19, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__10[] = {
+ /* 0 */ 20, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__11[] = {
+ /* 0 */ 21, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__5[] = {
+ /* 0 */ GROUP(6), GROUP(7), GROUP(8), GROUP(9),
+ /* 4 */ GROUP(10), GROUP(11), 0, 0,
+};
+
+static const uint16_t ud_itab__15[] = {
+ /* 0 */ 22, 0,
+};
+
+static const uint16_t ud_itab__14[] = {
+ /* 0 */ GROUP(15), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__17[] = {
+ /* 0 */ 23, 0,
+};
+
+static const uint16_t ud_itab__16[] = {
+ /* 0 */ GROUP(17), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__19[] = {
+ /* 0 */ 24, 0,
+};
+
+static const uint16_t ud_itab__18[] = {
+ /* 0 */ GROUP(19), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__21[] = {
+ /* 0 */ 25, 0,
+};
+
+static const uint16_t ud_itab__20[] = {
+ /* 0 */ GROUP(21), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__23[] = {
+ /* 0 */ 26, 0,
+};
+
+static const uint16_t ud_itab__22[] = {
+ /* 0 */ GROUP(23), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__25[] = {
+ /* 0 */ 27, 0,
+};
+
+static const uint16_t ud_itab__24[] = {
+ /* 0 */ GROUP(25), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__27[] = {
+ /* 0 */ 28, 0,
+};
+
+static const uint16_t ud_itab__26[] = {
+ /* 0 */ GROUP(27), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__13[] = {
+ /* 0 */ GROUP(14), GROUP(16), GROUP(18), GROUP(20),
+ /* 4 */ GROUP(22), 0, GROUP(24), GROUP(26),
+};
+
+static const uint16_t ud_itab__32[] = {
+ /* 0 */ 0, 29, 0,
+};
+
+static const uint16_t ud_itab__31[] = {
+ /* 0 */ 0, GROUP(32),
+};
+
+static const uint16_t ud_itab__30[] = {
+ /* 0 */ GROUP(31), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__35[] = {
+ /* 0 */ 0, 30, 0,
+};
+
+static const uint16_t ud_itab__34[] = {
+ /* 0 */ 0, GROUP(35),
+};
+
+static const uint16_t ud_itab__33[] = {
+ /* 0 */ GROUP(34), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__38[] = {
+ /* 0 */ 0, 31, 0,
+};
+
+static const uint16_t ud_itab__37[] = {
+ /* 0 */ 0, GROUP(38),
+};
+
+static const uint16_t ud_itab__36[] = {
+ /* 0 */ GROUP(37), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__41[] = {
+ /* 0 */ 0, 32, 0,
+};
+
+static const uint16_t ud_itab__40[] = {
+ /* 0 */ 0, GROUP(41),
+};
+
+static const uint16_t ud_itab__39[] = {
+ /* 0 */ GROUP(40), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__29[] = {
+ /* 0 */ 0, GROUP(30), GROUP(33), GROUP(36),
+ /* 4 */ GROUP(39), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__44[] = {
+ /* 0 */ 0, 33,
+};
+
+static const uint16_t ud_itab__43[] = {
+ /* 0 */ GROUP(44), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__46[] = {
+ /* 0 */ 0, 34,
+};
+
+static const uint16_t ud_itab__45[] = {
+ /* 0 */ GROUP(46), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__42[] = {
+ /* 0 */ GROUP(43), GROUP(45), 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__49[] = {
+ /* 0 */ 0, 35,
+};
+
+static const uint16_t ud_itab__48[] = {
+ /* 0 */ GROUP(49), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__51[] = {
+ /* 0 */ 0, 36,
+};
+
+static const uint16_t ud_itab__50[] = {
+ /* 0 */ GROUP(51), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__47[] = {
+ /* 0 */ GROUP(48), GROUP(50), 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__55[] = {
+ /* 0 */ 37, 0, 0,
+};
+
+static const uint16_t ud_itab__54[] = {
+ /* 0 */ 0, GROUP(55),
+};
+
+static const uint16_t ud_itab__53[] = {
+ /* 0 */ GROUP(54), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__58[] = {
+ /* 0 */ 38, 0, 0,
+};
+
+static const uint16_t ud_itab__57[] = {
+ /* 0 */ 0, GROUP(58),
+};
+
+static const uint16_t ud_itab__56[] = {
+ /* 0 */ GROUP(57), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__61[] = {
+ /* 0 */ 39, 0, 0,
+};
+
+static const uint16_t ud_itab__60[] = {
+ /* 0 */ 0, GROUP(61),
+};
+
+static const uint16_t ud_itab__59[] = {
+ /* 0 */ GROUP(60), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__64[] = {
+ /* 0 */ 40, 0, 0,
+};
+
+static const uint16_t ud_itab__63[] = {
+ /* 0 */ 0, GROUP(64),
+};
+
+static const uint16_t ud_itab__62[] = {
+ /* 0 */ GROUP(63), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__67[] = {
+ /* 0 */ 41, 0, 0,
+};
+
+static const uint16_t ud_itab__66[] = {
+ /* 0 */ 0, GROUP(67),
+};
+
+static const uint16_t ud_itab__65[] = {
+ /* 0 */ GROUP(66), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__70[] = {
+ /* 0 */ 42, 0, 0,
+};
+
+static const uint16_t ud_itab__69[] = {
+ /* 0 */ 0, GROUP(70),
+};
+
+static const uint16_t ud_itab__68[] = {
+ /* 0 */ GROUP(69), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__73[] = {
+ /* 0 */ 43, 0, 0,
+};
+
+static const uint16_t ud_itab__72[] = {
+ /* 0 */ 0, GROUP(73),
+};
+
+static const uint16_t ud_itab__71[] = {
+ /* 0 */ GROUP(72), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__76[] = {
+ /* 0 */ 44, 0, 0,
+};
+
+static const uint16_t ud_itab__75[] = {
+ /* 0 */ 0, GROUP(76),
+};
+
+static const uint16_t ud_itab__74[] = {
+ /* 0 */ GROUP(75), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__52[] = {
+ /* 0 */ GROUP(53), GROUP(56), GROUP(59), GROUP(62),
+ /* 4 */ GROUP(65), GROUP(68), GROUP(71), GROUP(74),
+};
+
+static const uint16_t ud_itab__78[] = {
+ /* 0 */ 0, 45,
+};
+
+static const uint16_t ud_itab__77[] = {
+ /* 0 */ GROUP(78), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__80[] = {
+ /* 0 */ 0, 46,
+};
+
+static const uint16_t ud_itab__79[] = {
+ /* 0 */ GROUP(80), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__83[] = {
+ /* 0 */ 0, 47,
+};
+
+static const uint16_t ud_itab__82[] = {
+ /* 0 */ GROUP(83), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__86[] = {
+ /* 0 */ 48, 0, 0,
+};
+
+static const uint16_t ud_itab__85[] = {
+ /* 0 */ 0, GROUP(86),
+};
+
+static const uint16_t ud_itab__84[] = {
+ /* 0 */ GROUP(85), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__81[] = {
+ /* 0 */ GROUP(82), GROUP(84), 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__28[] = {
+ /* 0 */ GROUP(29), GROUP(42), GROUP(47), GROUP(52),
+ /* 4 */ GROUP(77), 0, GROUP(79), GROUP(81),
+};
+
+static const uint16_t ud_itab__12[] = {
+ /* 0 */ GROUP(13), GROUP(28),
+};
+
+static const uint16_t ud_itab__87[] = {
+ /* 0 */ 49, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__88[] = {
+ /* 0 */ 50, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__89[] = {
+ /* 0 */ 51, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__90[] = {
+ /* 0 */ 52, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__91[] = {
+ /* 0 */ 53, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__92[] = {
+ /* 0 */ 54, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__93[] = {
+ /* 0 */ 55, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__94[] = {
+ /* 0 */ 56, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__96[] = {
+ /* 0 */ 57, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__97[] = {
+ /* 0 */ 58, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__98[] = {
+ /* 0 */ 59, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__99[] = {
+ /* 0 */ 60, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__100[] = {
+ /* 0 */ 61, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__101[] = {
+ /* 0 */ 62, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__102[] = {
+ /* 0 */ 63, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__103[] = {
+ /* 0 */ 64, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__95[] = {
+ /* 0 */ GROUP(96), GROUP(97), GROUP(98), GROUP(99),
+ /* 4 */ GROUP(100), GROUP(101), GROUP(102), GROUP(103),
+};
+
+static const uint16_t ud_itab__104[] = {
+ /* 0 */ 65, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__105[] = {
+ /* 0 */ 0, 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+ /* 8 */ 0, 0, 0, 0,
+ /* c */ 66, 67, 0, 0,
+ /* 10 */ 0, 0, 0, 0,
+ /* 14 */ 0, 0, 0, 0,
+ /* 18 */ 0, 0, 0, 0,
+ /* 1c */ 68, 69, 0, 0,
+ /* 20 */ 0, 0, 0, 0,
+ /* 24 */ 0, 0, 0, 0,
+ /* 28 */ 0, 0, 0, 0,
+ /* 2c */ 0, 0, 0, 0,
+ /* 30 */ 0, 0, 0, 0,
+ /* 34 */ 0, 0, 0, 0,
+ /* 38 */ 0, 0, 0, 0,
+ /* 3c */ 0, 0, 0, 0,
+ /* 40 */ 0, 0, 0, 0,
+ /* 44 */ 0, 0, 0, 0,
+ /* 48 */ 0, 0, 0, 0,
+ /* 4c */ 0, 0, 0, 0,
+ /* 50 */ 0, 0, 0, 0,
+ /* 54 */ 0, 0, 0, 0,
+ /* 58 */ 0, 0, 0, 0,
+ /* 5c */ 0, 0, 0, 0,
+ /* 60 */ 0, 0, 0, 0,
+ /* 64 */ 0, 0, 0, 0,
+ /* 68 */ 0, 0, 0, 0,
+ /* 6c */ 0, 0, 0, 0,
+ /* 70 */ 0, 0, 0, 0,
+ /* 74 */ 0, 0, 0, 0,
+ /* 78 */ 0, 0, 0, 0,
+ /* 7c */ 0, 0, 0, 0,
+ /* 80 */ 0, 0, 0, 0,
+ /* 84 */ 0, 0, 0, 0,
+ /* 88 */ 0, 0, 70, 0,
+ /* 8c */ 0, 0, 71, 0,
+ /* 90 */ 72, 0, 0, 0,
+ /* 94 */ 73, 0, 74, 75,
+ /* 98 */ 0, 0, 76, 0,
+ /* 9c */ 0, 0, 77, 0,
+ /* a0 */ 78, 0, 0, 0,
+ /* a4 */ 79, 0, 80, 81,
+ /* a8 */ 0, 0, 82, 0,
+ /* ac */ 0, 0, 83, 0,
+ /* b0 */ 84, 0, 0, 0,
+ /* b4 */ 85, 0, 86, 87,
+ /* b8 */ 0, 0, 0, 88,
+ /* bc */ 0, 0, 0, 89,
+ /* c0 */ 0, 0, 0, 0,
+ /* c4 */ 0, 0, 0, 0,
+ /* c8 */ 0, 0, 0, 0,
+ /* cc */ 0, 0, 0, 0,
+ /* d0 */ 0, 0, 0, 0,
+ /* d4 */ 0, 0, 0, 0,
+ /* d8 */ 0, 0, 0, 0,
+ /* dc */ 0, 0, 0, 0,
+ /* e0 */ 0, 0, 0, 0,
+ /* e4 */ 0, 0, 0, 0,
+ /* e8 */ 0, 0, 0, 0,
+ /* ec */ 0, 0, 0, 0,
+ /* f0 */ 0, 0, 0, 0,
+ /* f4 */ 0, 0, 0, 0,
+ /* f8 */ 0, 0, 0, 0,
+ /* fc */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__106[] = {
+ /* 0 */ 90, 91, 92, 93,
+};
+
+static const uint16_t ud_itab__107[] = {
+ /* 0 */ 94, 95, 96, 97,
+};
+
+static const uint16_t ud_itab__110[] = {
+ /* 0 */ 98, 0,
+};
+
+static const uint16_t ud_itab__111[] = {
+ /* 0 */ 99, 0,
+};
+
+static const uint16_t ud_itab__112[] = {
+ /* 0 */ 100, 0,
+};
+
+static const uint16_t ud_itab__113[] = {
+ /* 0 */ 101, 0,
+};
+
+static const uint16_t ud_itab__109[] = {
+ /* 0 */ GROUP(110), GROUP(111), GROUP(112), GROUP(113),
+};
+
+static const uint16_t ud_itab__115[] = {
+ /* 0 */ 0, 102,
+};
+
+static const uint16_t ud_itab__116[] = {
+ /* 0 */ 0, 103,
+};
+
+static const uint16_t ud_itab__117[] = {
+ /* 0 */ 0, 104,
+};
+
+static const uint16_t ud_itab__114[] = {
+ /* 0 */ GROUP(115), GROUP(116), GROUP(117), 0,
+};
+
+static const uint16_t ud_itab__108[] = {
+ /* 0 */ GROUP(109), GROUP(114),
+};
+
+static const uint16_t ud_itab__118[] = {
+ /* 0 */ 105, 0, 0, 106,
+};
+
+static const uint16_t ud_itab__119[] = {
+ /* 0 */ 107, 0, 0, 108,
+};
+
+static const uint16_t ud_itab__120[] = {
+ /* 0 */ 109, 0, 0, 110,
+};
+
+static const uint16_t ud_itab__123[] = {
+ /* 0 */ 111, 0,
+};
+
+static const uint16_t ud_itab__124[] = {
+ /* 0 */ 112, 0,
+};
+
+static const uint16_t ud_itab__125[] = {
+ /* 0 */ 113, 0,
+};
+
+static const uint16_t ud_itab__122[] = {
+ /* 0 */ GROUP(123), 0, GROUP(124), GROUP(125),
+};
+
+static const uint16_t ud_itab__127[] = {
+ /* 0 */ 0, 114,
+};
+
+static const uint16_t ud_itab__128[] = {
+ /* 0 */ 0, 115,
+};
+
+static const uint16_t ud_itab__126[] = {
+ /* 0 */ GROUP(127), 0, GROUP(128), 0,
+};
+
+static const uint16_t ud_itab__121[] = {
+ /* 0 */ GROUP(122), GROUP(126),
+};
+
+static const uint16_t ud_itab__129[] = {
+ /* 0 */ 116, 0, 0, 117,
+};
+
+static const uint16_t ud_itab__131[] = {
+ /* 0 */ 118, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__132[] = {
+ /* 0 */ 119, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__133[] = {
+ /* 0 */ 120, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__134[] = {
+ /* 0 */ 121, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__130[] = {
+ /* 0 */ GROUP(131), GROUP(132), GROUP(133), GROUP(134),
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__135[] = {
+ /* 0 */ 122, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__136[] = {
+ /* 0 */ 123, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__137[] = {
+ /* 0 */ 124, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__138[] = {
+ /* 0 */ 125, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__139[] = {
+ /* 0 */ 126, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__140[] = {
+ /* 0 */ 127, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__141[] = {
+ /* 0 */ 128, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__142[] = {
+ /* 0 */ 129, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__143[] = {
+ /* 0 */ 130, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__144[] = {
+ /* 0 */ 131, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__145[] = {
+ /* 0 */ 132, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__146[] = {
+ /* 0 */ 133, 0, 0, 134,
+};
+
+static const uint16_t ud_itab__147[] = {
+ /* 0 */ 135, 0, 0, 136,
+};
+
+static const uint16_t ud_itab__148[] = {
+ /* 0 */ 137, 138, 139, 140,
+};
+
+static const uint16_t ud_itab__149[] = {
+ /* 0 */ 141, 0, 0, 142,
+};
+
+static const uint16_t ud_itab__150[] = {
+ /* 0 */ 143, 144, 145, 146,
+};
+
+static const uint16_t ud_itab__151[] = {
+ /* 0 */ 147, 148, 149, 150,
+};
+
+static const uint16_t ud_itab__152[] = {
+ /* 0 */ 151, 0, 0, 152,
+};
+
+static const uint16_t ud_itab__153[] = {
+ /* 0 */ 153, 0, 0, 154,
+};
+
+static const uint16_t ud_itab__154[] = {
+ /* 0 */ 155, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__155[] = {
+ /* 0 */ 156, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__156[] = {
+ /* 0 */ 157, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__157[] = {
+ /* 0 */ 158, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__160[] = {
+ /* 0 */ 0, 160, 0,
+};
+
+static const uint16_t ud_itab__159[] = {
+ /* 0 */ 159, GROUP(160),
+};
+
+static const uint16_t ud_itab__158[] = {
+ /* 0 */ GROUP(159), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__163[] = {
+ /* 0 */ 0, 162, 0,
+};
+
+static const uint16_t ud_itab__162[] = {
+ /* 0 */ 161, GROUP(163),
+};
+
+static const uint16_t ud_itab__161[] = {
+ /* 0 */ GROUP(162), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__164[] = {
+ /* 0 */ 163, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__166[] = {
+ /* 0 */ 164, 0, 0, 165,
+};
+
+static const uint16_t ud_itab__167[] = {
+ /* 0 */ 166, 0, 0, 167,
+};
+
+static const uint16_t ud_itab__168[] = {
+ /* 0 */ 168, 0, 0, 169,
+};
+
+static const uint16_t ud_itab__169[] = {
+ /* 0 */ 170, 0, 0, 171,
+};
+
+static const uint16_t ud_itab__170[] = {
+ /* 0 */ 172, 0, 0, 173,
+};
+
+static const uint16_t ud_itab__171[] = {
+ /* 0 */ 174, 0, 0, 175,
+};
+
+static const uint16_t ud_itab__172[] = {
+ /* 0 */ 176, 0, 0, 177,
+};
+
+static const uint16_t ud_itab__173[] = {
+ /* 0 */ 178, 0, 0, 179,
+};
+
+static const uint16_t ud_itab__174[] = {
+ /* 0 */ 180, 0, 0, 181,
+};
+
+static const uint16_t ud_itab__175[] = {
+ /* 0 */ 182, 0, 0, 183,
+};
+
+static const uint16_t ud_itab__176[] = {
+ /* 0 */ 184, 0, 0, 185,
+};
+
+static const uint16_t ud_itab__177[] = {
+ /* 0 */ 186, 0, 0, 187,
+};
+
+static const uint16_t ud_itab__178[] = {
+ /* 0 */ 0, 0, 0, 188,
+};
+
+static const uint16_t ud_itab__179[] = {
+ /* 0 */ 0, 0, 0, 189,
+};
+
+static const uint16_t ud_itab__180[] = {
+ /* 0 */ 0, 0, 0, 190,
+};
+
+static const uint16_t ud_itab__181[] = {
+ /* 0 */ 0, 0, 0, 191,
+};
+
+static const uint16_t ud_itab__182[] = {
+ /* 0 */ 192, 0, 0, 193,
+};
+
+static const uint16_t ud_itab__183[] = {
+ /* 0 */ 194, 0, 0, 195,
+};
+
+static const uint16_t ud_itab__184[] = {
+ /* 0 */ 196, 0, 0, 197,
+};
+
+static const uint16_t ud_itab__185[] = {
+ /* 0 */ 0, 0, 0, 198,
+};
+
+static const uint16_t ud_itab__186[] = {
+ /* 0 */ 0, 0, 0, 199,
+};
+
+static const uint16_t ud_itab__187[] = {
+ /* 0 */ 0, 0, 0, 200,
+};
+
+static const uint16_t ud_itab__188[] = {
+ /* 0 */ 0, 0, 0, 201,
+};
+
+static const uint16_t ud_itab__189[] = {
+ /* 0 */ 0, 0, 0, 202,
+};
+
+static const uint16_t ud_itab__190[] = {
+ /* 0 */ 0, 0, 0, 203,
+};
+
+static const uint16_t ud_itab__191[] = {
+ /* 0 */ 0, 0, 0, 204,
+};
+
+static const uint16_t ud_itab__192[] = {
+ /* 0 */ 0, 0, 0, 205,
+};
+
+static const uint16_t ud_itab__193[] = {
+ /* 0 */ 0, 0, 0, 206,
+};
+
+static const uint16_t ud_itab__194[] = {
+ /* 0 */ 0, 0, 0, 207,
+};
+
+static const uint16_t ud_itab__195[] = {
+ /* 0 */ 0, 0, 0, 208,
+};
+
+static const uint16_t ud_itab__196[] = {
+ /* 0 */ 0, 0, 0, 209,
+};
+
+static const uint16_t ud_itab__197[] = {
+ /* 0 */ 0, 0, 0, 210,
+};
+
+static const uint16_t ud_itab__198[] = {
+ /* 0 */ 0, 0, 0, 211,
+};
+
+static const uint16_t ud_itab__199[] = {
+ /* 0 */ 0, 0, 0, 212,
+};
+
+static const uint16_t ud_itab__200[] = {
+ /* 0 */ 0, 0, 0, 213,
+};
+
+static const uint16_t ud_itab__201[] = {
+ /* 0 */ 0, 0, 0, 214,
+};
+
+static const uint16_t ud_itab__202[] = {
+ /* 0 */ 0, 0, 0, 215,
+};
+
+static const uint16_t ud_itab__203[] = {
+ /* 0 */ 0, 0, 0, 216,
+};
+
+static const uint16_t ud_itab__204[] = {
+ /* 0 */ 0, 0, 0, 217,
+};
+
+static const uint16_t ud_itab__205[] = {
+ /* 0 */ 0, 0, 0, 218,
+};
+
+static const uint16_t ud_itab__206[] = {
+ /* 0 */ 0, 0, 0, 219,
+};
+
+static const uint16_t ud_itab__207[] = {
+ /* 0 */ 0, 0, 0, 220,
+};
+
+static const uint16_t ud_itab__208[] = {
+ /* 0 */ 0, 0, 0, 221,
+};
+
+static const uint16_t ud_itab__209[] = {
+ /* 0 */ 0, 0, 0, 222,
+};
+
+static const uint16_t ud_itab__210[] = {
+ /* 0 */ 0, 0, 0, 223,
+};
+
+static const uint16_t ud_itab__211[] = {
+ /* 0 */ 0, 0, 0, 224,
+};
+
+static const uint16_t ud_itab__214[] = {
+ /* 0 */ 0, 225, 0,
+};
+
+static const uint16_t ud_itab__213[] = {
+ /* 0 */ 0, GROUP(214),
+};
+
+static const uint16_t ud_itab__212[] = {
+ /* 0 */ 0, 0, 0, GROUP(213),
+};
+
+static const uint16_t ud_itab__217[] = {
+ /* 0 */ 0, 226, 0,
+};
+
+static const uint16_t ud_itab__216[] = {
+ /* 0 */ 0, GROUP(217),
+};
+
+static const uint16_t ud_itab__215[] = {
+ /* 0 */ 0, 0, 0, GROUP(216),
+};
+
+static const uint16_t ud_itab__218[] = {
+ /* 0 */ 0, 0, 0, 227,
+};
+
+static const uint16_t ud_itab__219[] = {
+ /* 0 */ 0, 0, 0, 228,
+};
+
+static const uint16_t ud_itab__220[] = {
+ /* 0 */ 0, 0, 0, 229,
+};
+
+static const uint16_t ud_itab__221[] = {
+ /* 0 */ 0, 0, 0, 230,
+};
+
+static const uint16_t ud_itab__222[] = {
+ /* 0 */ 0, 0, 0, 231,
+};
+
+static const uint16_t ud_itab__223[] = {
+ /* 0 */ 232, 233, 0, 0,
+};
+
+static const uint16_t ud_itab__224[] = {
+ /* 0 */ 234, 235, 0, 0,
+};
+
+static const uint16_t ud_itab__165[] = {
+ /* 0 */ GROUP(166), GROUP(167), GROUP(168), GROUP(169),
+ /* 4 */ GROUP(170), GROUP(171), GROUP(172), GROUP(173),
+ /* 8 */ GROUP(174), GROUP(175), GROUP(176), GROUP(177),
+ /* c */ 0, 0, 0, 0,
+ /* 10 */ GROUP(178), 0, 0, 0,
+ /* 14 */ GROUP(179), GROUP(180), 0, GROUP(181),
+ /* 18 */ 0, 0, 0, 0,
+ /* 1c */ GROUP(182), GROUP(183), GROUP(184), 0,
+ /* 20 */ GROUP(185), GROUP(186), GROUP(187), GROUP(188),
+ /* 24 */ GROUP(189), GROUP(190), 0, 0,
+ /* 28 */ GROUP(191), GROUP(192), GROUP(193), GROUP(194),
+ /* 2c */ 0, 0, 0, 0,
+ /* 30 */ GROUP(195), GROUP(196), GROUP(197), GROUP(198),
+ /* 34 */ GROUP(199), GROUP(200), 0, GROUP(201),
+ /* 38 */ GROUP(202), GROUP(203), GROUP(204), GROUP(205),
+ /* 3c */ GROUP(206), GROUP(207), GROUP(208), GROUP(209),
+ /* 40 */ GROUP(210), GROUP(211), 0, 0,
+ /* 44 */ 0, 0, 0, 0,
+ /* 48 */ 0, 0, 0, 0,
+ /* 4c */ 0, 0, 0, 0,
+ /* 50 */ 0, 0, 0, 0,
+ /* 54 */ 0, 0, 0, 0,
+ /* 58 */ 0, 0, 0, 0,
+ /* 5c */ 0, 0, 0, 0,
+ /* 60 */ 0, 0, 0, 0,
+ /* 64 */ 0, 0, 0, 0,
+ /* 68 */ 0, 0, 0, 0,
+ /* 6c */ 0, 0, 0, 0,
+ /* 70 */ 0, 0, 0, 0,
+ /* 74 */ 0, 0, 0, 0,
+ /* 78 */ 0, 0, 0, 0,
+ /* 7c */ 0, 0, 0, 0,
+ /* 80 */ GROUP(212), GROUP(215), 0, 0,
+ /* 84 */ 0, 0, 0, 0,
+ /* 88 */ 0, 0, 0, 0,
+ /* 8c */ 0, 0, 0, 0,
+ /* 90 */ 0, 0, 0, 0,
+ /* 94 */ 0, 0, 0, 0,
+ /* 98 */ 0, 0, 0, 0,
+ /* 9c */ 0, 0, 0, 0,
+ /* a0 */ 0, 0, 0, 0,
+ /* a4 */ 0, 0, 0, 0,
+ /* a8 */ 0, 0, 0, 0,
+ /* ac */ 0, 0, 0, 0,
+ /* b0 */ 0, 0, 0, 0,
+ /* b4 */ 0, 0, 0, 0,
+ /* b8 */ 0, 0, 0, 0,
+ /* bc */ 0, 0, 0, 0,
+ /* c0 */ 0, 0, 0, 0,
+ /* c4 */ 0, 0, 0, 0,
+ /* c8 */ 0, 0, 0, 0,
+ /* cc */ 0, 0, 0, 0,
+ /* d0 */ 0, 0, 0, 0,
+ /* d4 */ 0, 0, 0, 0,
+ /* d8 */ 0, 0, 0, GROUP(218),
+ /* dc */ GROUP(219), GROUP(220), GROUP(221), GROUP(222),
+ /* e0 */ 0, 0, 0, 0,
+ /* e4 */ 0, 0, 0, 0,
+ /* e8 */ 0, 0, 0, 0,
+ /* ec */ 0, 0, 0, 0,
+ /* f0 */ GROUP(223), GROUP(224), 0, 0,
+ /* f4 */ 0, 0, 0, 0,
+ /* f8 */ 0, 0, 0, 0,
+ /* fc */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__226[] = {
+ /* 0 */ 0, 0, 0, 236,
+};
+
+static const uint16_t ud_itab__227[] = {
+ /* 0 */ 0, 0, 0, 237,
+};
+
+static const uint16_t ud_itab__228[] = {
+ /* 0 */ 0, 0, 0, 238,
+};
+
+static const uint16_t ud_itab__229[] = {
+ /* 0 */ 0, 0, 0, 239,
+};
+
+static const uint16_t ud_itab__230[] = {
+ /* 0 */ 0, 0, 0, 240,
+};
+
+static const uint16_t ud_itab__231[] = {
+ /* 0 */ 0, 0, 0, 241,
+};
+
+static const uint16_t ud_itab__232[] = {
+ /* 0 */ 0, 0, 0, 242,
+};
+
+static const uint16_t ud_itab__233[] = {
+ /* 0 */ 243, 0, 0, 244,
+};
+
+static const uint16_t ud_itab__234[] = {
+ /* 0 */ 0, 0, 0, 245,
+};
+
+static const uint16_t ud_itab__235[] = {
+ /* 0 */ 0, 0, 0, 246,
+};
+
+static const uint16_t ud_itab__237[] = {
+ /* 0 */ 247, 248, 249,
+};
+
+static const uint16_t ud_itab__236[] = {
+ /* 0 */ 0, 0, 0, GROUP(237),
+};
+
+static const uint16_t ud_itab__238[] = {
+ /* 0 */ 0, 0, 0, 250,
+};
+
+static const uint16_t ud_itab__239[] = {
+ /* 0 */ 0, 0, 0, 251,
+};
+
+static const uint16_t ud_itab__240[] = {
+ /* 0 */ 0, 0, 0, 252,
+};
+
+static const uint16_t ud_itab__242[] = {
+ /* 0 */ 253, 254, 255,
+};
+
+static const uint16_t ud_itab__241[] = {
+ /* 0 */ 0, 0, 0, GROUP(242),
+};
+
+static const uint16_t ud_itab__243[] = {
+ /* 0 */ 0, 0, 0, 256,
+};
+
+static const uint16_t ud_itab__244[] = {
+ /* 0 */ 0, 0, 0, 257,
+};
+
+static const uint16_t ud_itab__245[] = {
+ /* 0 */ 0, 0, 0, 258,
+};
+
+static const uint16_t ud_itab__246[] = {
+ /* 0 */ 0, 0, 0, 259,
+};
+
+static const uint16_t ud_itab__247[] = {
+ /* 0 */ 0, 0, 0, 260,
+};
+
+static const uint16_t ud_itab__248[] = {
+ /* 0 */ 0, 0, 0, 261,
+};
+
+static const uint16_t ud_itab__249[] = {
+ /* 0 */ 0, 0, 0, 262,
+};
+
+static const uint16_t ud_itab__250[] = {
+ /* 0 */ 0, 0, 0, 263,
+};
+
+static const uint16_t ud_itab__251[] = {
+ /* 0 */ 0, 0, 0, 264,
+};
+
+static const uint16_t ud_itab__225[] = {
+ /* 0 */ 0, 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+ /* 8 */ GROUP(226), GROUP(227), GROUP(228), GROUP(229),
+ /* c */ GROUP(230), GROUP(231), GROUP(232), GROUP(233),
+ /* 10 */ 0, 0, 0, 0,
+ /* 14 */ GROUP(234), GROUP(235), GROUP(236), GROUP(238),
+ /* 18 */ 0, 0, 0, 0,
+ /* 1c */ 0, 0, 0, 0,
+ /* 20 */ GROUP(239), GROUP(240), GROUP(241), 0,
+ /* 24 */ 0, 0, 0, 0,
+ /* 28 */ 0, 0, 0, 0,
+ /* 2c */ 0, 0, 0, 0,
+ /* 30 */ 0, 0, 0, 0,
+ /* 34 */ 0, 0, 0, 0,
+ /* 38 */ 0, 0, 0, 0,
+ /* 3c */ 0, 0, 0, 0,
+ /* 40 */ GROUP(243), GROUP(244), GROUP(245), 0,
+ /* 44 */ GROUP(246), 0, 0, 0,
+ /* 48 */ 0, 0, 0, 0,
+ /* 4c */ 0, 0, 0, 0,
+ /* 50 */ 0, 0, 0, 0,
+ /* 54 */ 0, 0, 0, 0,
+ /* 58 */ 0, 0, 0, 0,
+ /* 5c */ 0, 0, 0, 0,
+ /* 60 */ GROUP(247), GROUP(248), GROUP(249), GROUP(250),
+ /* 64 */ 0, 0, 0, 0,
+ /* 68 */ 0, 0, 0, 0,
+ /* 6c */ 0, 0, 0, 0,
+ /* 70 */ 0, 0, 0, 0,
+ /* 74 */ 0, 0, 0, 0,
+ /* 78 */ 0, 0, 0, 0,
+ /* 7c */ 0, 0, 0, 0,
+ /* 80 */ 0, 0, 0, 0,
+ /* 84 */ 0, 0, 0, 0,
+ /* 88 */ 0, 0, 0, 0,
+ /* 8c */ 0, 0, 0, 0,
+ /* 90 */ 0, 0, 0, 0,
+ /* 94 */ 0, 0, 0, 0,
+ /* 98 */ 0, 0, 0, 0,
+ /* 9c */ 0, 0, 0, 0,
+ /* a0 */ 0, 0, 0, 0,
+ /* a4 */ 0, 0, 0, 0,
+ /* a8 */ 0, 0, 0, 0,
+ /* ac */ 0, 0, 0, 0,
+ /* b0 */ 0, 0, 0, 0,
+ /* b4 */ 0, 0, 0, 0,
+ /* b8 */ 0, 0, 0, 0,
+ /* bc */ 0, 0, 0, 0,
+ /* c0 */ 0, 0, 0, 0,
+ /* c4 */ 0, 0, 0, 0,
+ /* c8 */ 0, 0, 0, 0,
+ /* cc */ 0, 0, 0, 0,
+ /* d0 */ 0, 0, 0, 0,
+ /* d4 */ 0, 0, 0, 0,
+ /* d8 */ 0, 0, 0, 0,
+ /* dc */ 0, 0, 0, GROUP(251),
+ /* e0 */ 0, 0, 0, 0,
+ /* e4 */ 0, 0, 0, 0,
+ /* e8 */ 0, 0, 0, 0,
+ /* ec */ 0, 0, 0, 0,
+ /* f0 */ 0, 0, 0, 0,
+ /* f4 */ 0, 0, 0, 0,
+ /* f8 */ 0, 0, 0, 0,
+ /* fc */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__252[] = {
+ /* 0 */ 265, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__253[] = {
+ /* 0 */ 266, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__254[] = {
+ /* 0 */ 267, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__255[] = {
+ /* 0 */ 268, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__256[] = {
+ /* 0 */ 269, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__257[] = {
+ /* 0 */ 270, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__258[] = {
+ /* 0 */ 271, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__259[] = {
+ /* 0 */ 272, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__260[] = {
+ /* 0 */ 273, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__261[] = {
+ /* 0 */ 274, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__262[] = {
+ /* 0 */ 275, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__263[] = {
+ /* 0 */ 276, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__264[] = {
+ /* 0 */ 277, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__265[] = {
+ /* 0 */ 278, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__266[] = {
+ /* 0 */ 279, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__267[] = {
+ /* 0 */ 280, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__268[] = {
+ /* 0 */ 281, 0, 0, 282,
+};
+
+static const uint16_t ud_itab__269[] = {
+ /* 0 */ 283, 284, 285, 286,
+};
+
+static const uint16_t ud_itab__270[] = {
+ /* 0 */ 287, 0, 288, 0,
+};
+
+static const uint16_t ud_itab__271[] = {
+ /* 0 */ 289, 0, 290, 0,
+};
+
+static const uint16_t ud_itab__272[] = {
+ /* 0 */ 291, 0, 0, 292,
+};
+
+static const uint16_t ud_itab__273[] = {
+ /* 0 */ 293, 0, 0, 294,
+};
+
+static const uint16_t ud_itab__274[] = {
+ /* 0 */ 295, 0, 0, 296,
+};
+
+static const uint16_t ud_itab__275[] = {
+ /* 0 */ 297, 0, 0, 298,
+};
+
+static const uint16_t ud_itab__276[] = {
+ /* 0 */ 299, 300, 301, 302,
+};
+
+static const uint16_t ud_itab__277[] = {
+ /* 0 */ 303, 304, 305, 306,
+};
+
+static const uint16_t ud_itab__278[] = {
+ /* 0 */ 307, 308, 309, 310,
+};
+
+static const uint16_t ud_itab__279[] = {
+ /* 0 */ 311, 0, 312, 313,
+};
+
+static const uint16_t ud_itab__280[] = {
+ /* 0 */ 314, 315, 316, 317,
+};
+
+static const uint16_t ud_itab__281[] = {
+ /* 0 */ 318, 319, 320, 321,
+};
+
+static const uint16_t ud_itab__282[] = {
+ /* 0 */ 322, 323, 324, 325,
+};
+
+static const uint16_t ud_itab__283[] = {
+ /* 0 */ 326, 327, 328, 329,
+};
+
+static const uint16_t ud_itab__284[] = {
+ /* 0 */ 330, 0, 0, 331,
+};
+
+static const uint16_t ud_itab__285[] = {
+ /* 0 */ 332, 0, 0, 333,
+};
+
+static const uint16_t ud_itab__286[] = {
+ /* 0 */ 334, 0, 0, 335,
+};
+
+static const uint16_t ud_itab__287[] = {
+ /* 0 */ 336, 0, 0, 337,
+};
+
+static const uint16_t ud_itab__288[] = {
+ /* 0 */ 338, 0, 0, 339,
+};
+
+static const uint16_t ud_itab__289[] = {
+ /* 0 */ 340, 0, 0, 341,
+};
+
+static const uint16_t ud_itab__290[] = {
+ /* 0 */ 342, 0, 0, 343,
+};
+
+static const uint16_t ud_itab__291[] = {
+ /* 0 */ 344, 0, 0, 345,
+};
+
+static const uint16_t ud_itab__292[] = {
+ /* 0 */ 346, 0, 0, 347,
+};
+
+static const uint16_t ud_itab__293[] = {
+ /* 0 */ 348, 0, 0, 349,
+};
+
+static const uint16_t ud_itab__294[] = {
+ /* 0 */ 350, 0, 0, 351,
+};
+
+static const uint16_t ud_itab__295[] = {
+ /* 0 */ 352, 0, 0, 353,
+};
+
+static const uint16_t ud_itab__296[] = {
+ /* 0 */ 0, 0, 0, 354,
+};
+
+static const uint16_t ud_itab__297[] = {
+ /* 0 */ 0, 0, 0, 355,
+};
+
+static const uint16_t ud_itab__298[] = {
+ /* 0 */ 356, 0, 0, 357,
+};
+
+static const uint16_t ud_itab__299[] = {
+ /* 0 */ 358, 0, 359, 360,
+};
+
+static const uint16_t ud_itab__300[] = {
+ /* 0 */ 361, 362, 363, 364,
+};
+
+static const uint16_t ud_itab__302[] = {
+ /* 0 */ 365, 0, 0, 366,
+};
+
+static const uint16_t ud_itab__303[] = {
+ /* 0 */ 367, 0, 0, 368,
+};
+
+static const uint16_t ud_itab__304[] = {
+ /* 0 */ 369, 0, 0, 370,
+};
+
+static const uint16_t ud_itab__301[] = {
+ /* 0 */ 0, 0, GROUP(302), 0,
+ /* 4 */ GROUP(303), 0, GROUP(304), 0,
+};
+
+static const uint16_t ud_itab__306[] = {
+ /* 0 */ 371, 0, 0, 372,
+};
+
+static const uint16_t ud_itab__307[] = {
+ /* 0 */ 373, 0, 0, 374,
+};
+
+static const uint16_t ud_itab__308[] = {
+ /* 0 */ 375, 0, 0, 376,
+};
+
+static const uint16_t ud_itab__305[] = {
+ /* 0 */ 0, 0, GROUP(306), 0,
+ /* 4 */ GROUP(307), 0, GROUP(308), 0,
+};
+
+static const uint16_t ud_itab__310[] = {
+ /* 0 */ 377, 0, 0, 378,
+};
+
+static const uint16_t ud_itab__311[] = {
+ /* 0 */ 0, 0, 0, 379,
+};
+
+static const uint16_t ud_itab__312[] = {
+ /* 0 */ 380, 0, 0, 381,
+};
+
+static const uint16_t ud_itab__313[] = {
+ /* 0 */ 0, 0, 0, 382,
+};
+
+static const uint16_t ud_itab__309[] = {
+ /* 0 */ 0, 0, GROUP(310), GROUP(311),
+ /* 4 */ 0, 0, GROUP(312), GROUP(313),
+};
+
+static const uint16_t ud_itab__314[] = {
+ /* 0 */ 383, 0, 0, 384,
+};
+
+static const uint16_t ud_itab__315[] = {
+ /* 0 */ 385, 0, 0, 386,
+};
+
+static const uint16_t ud_itab__316[] = {
+ /* 0 */ 387, 0, 0, 388,
+};
+
+static const uint16_t ud_itab__317[] = {
+ /* 0 */ 389, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__319[] = {
+ /* 0 */ 0, 390, 0,
+};
+
+static const uint16_t ud_itab__318[] = {
+ /* 0 */ GROUP(319), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__321[] = {
+ /* 0 */ 0, 391, 0,
+};
+
+static const uint16_t ud_itab__320[] = {
+ /* 0 */ GROUP(321), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__322[] = {
+ /* 0 */ 0, 392, 0, 393,
+};
+
+static const uint16_t ud_itab__323[] = {
+ /* 0 */ 0, 394, 0, 395,
+};
+
+static const uint16_t ud_itab__324[] = {
+ /* 0 */ 396, 0, 397, 398,
+};
+
+static const uint16_t ud_itab__325[] = {
+ /* 0 */ 399, 0, 400, 401,
+};
+
+static const uint16_t ud_itab__326[] = {
+ /* 0 */ 402, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__327[] = {
+ /* 0 */ 403, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__328[] = {
+ /* 0 */ 404, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__329[] = {
+ /* 0 */ 405, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__330[] = {
+ /* 0 */ 406, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__331[] = {
+ /* 0 */ 407, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__332[] = {
+ /* 0 */ 408, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__333[] = {
+ /* 0 */ 409, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__334[] = {
+ /* 0 */ 410, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__335[] = {
+ /* 0 */ 411, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__336[] = {
+ /* 0 */ 412, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__337[] = {
+ /* 0 */ 413, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__338[] = {
+ /* 0 */ 414, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__339[] = {
+ /* 0 */ 415, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__340[] = {
+ /* 0 */ 416, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__341[] = {
+ /* 0 */ 417, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__342[] = {
+ /* 0 */ 418, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__343[] = {
+ /* 0 */ 419, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__344[] = {
+ /* 0 */ 420, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__345[] = {
+ /* 0 */ 421, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__346[] = {
+ /* 0 */ 422, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__347[] = {
+ /* 0 */ 423, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__348[] = {
+ /* 0 */ 424, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__349[] = {
+ /* 0 */ 425, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__350[] = {
+ /* 0 */ 426, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__351[] = {
+ /* 0 */ 427, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__352[] = {
+ /* 0 */ 428, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__353[] = {
+ /* 0 */ 429, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__354[] = {
+ /* 0 */ 430, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__355[] = {
+ /* 0 */ 431, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__356[] = {
+ /* 0 */ 432, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__357[] = {
+ /* 0 */ 433, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__358[] = {
+ /* 0 */ 434, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__359[] = {
+ /* 0 */ 435, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__360[] = {
+ /* 0 */ 436, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__361[] = {
+ /* 0 */ 437, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__362[] = {
+ /* 0 */ 438, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__363[] = {
+ /* 0 */ 439, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__368[] = {
+ /* 0 */ 0, 440,
+};
+
+static const uint16_t ud_itab__367[] = {
+ /* 0 */ GROUP(368), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__366[] = {
+ /* 0 */ GROUP(367), 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__371[] = {
+ /* 0 */ 0, 441,
+};
+
+static const uint16_t ud_itab__370[] = {
+ /* 0 */ GROUP(371), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__369[] = {
+ /* 0 */ GROUP(370), 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__374[] = {
+ /* 0 */ 0, 442,
+};
+
+static const uint16_t ud_itab__373[] = {
+ /* 0 */ GROUP(374), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__372[] = {
+ /* 0 */ GROUP(373), 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__365[] = {
+ /* 0 */ GROUP(366), GROUP(369), GROUP(372), 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__364[] = {
+ /* 0 */ 0, GROUP(365),
+};
+
+static const uint16_t ud_itab__379[] = {
+ /* 0 */ 0, 443,
+};
+
+static const uint16_t ud_itab__378[] = {
+ /* 0 */ GROUP(379), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__377[] = {
+ /* 0 */ GROUP(378), 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__382[] = {
+ /* 0 */ 0, 444,
+};
+
+static const uint16_t ud_itab__381[] = {
+ /* 0 */ GROUP(382), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__380[] = {
+ /* 0 */ GROUP(381), 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__385[] = {
+ /* 0 */ 0, 445,
+};
+
+static const uint16_t ud_itab__384[] = {
+ /* 0 */ GROUP(385), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__383[] = {
+ /* 0 */ GROUP(384), 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__388[] = {
+ /* 0 */ 0, 446,
+};
+
+static const uint16_t ud_itab__387[] = {
+ /* 0 */ GROUP(388), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__386[] = {
+ /* 0 */ GROUP(387), 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__391[] = {
+ /* 0 */ 0, 447,
+};
+
+static const uint16_t ud_itab__390[] = {
+ /* 0 */ GROUP(391), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__389[] = {
+ /* 0 */ GROUP(390), 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__394[] = {
+ /* 0 */ 0, 448,
+};
+
+static const uint16_t ud_itab__393[] = {
+ /* 0 */ GROUP(394), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__392[] = {
+ /* 0 */ GROUP(393), 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__376[] = {
+ /* 0 */ GROUP(377), GROUP(380), GROUP(383), GROUP(386),
+ /* 4 */ GROUP(389), GROUP(392), 0, 0,
+};
+
+static const uint16_t ud_itab__375[] = {
+ /* 0 */ 0, GROUP(376),
+};
+
+static const uint16_t ud_itab__395[] = {
+ /* 0 */ 449, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__396[] = {
+ /* 0 */ 450, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__397[] = {
+ /* 0 */ 451, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__398[] = {
+ /* 0 */ 452, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__399[] = {
+ /* 0 */ 453, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__400[] = {
+ /* 0 */ 454, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__404[] = {
+ /* 0 */ 455, 0,
+};
+
+static const uint16_t ud_itab__403[] = {
+ /* 0 */ GROUP(404), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__406[] = {
+ /* 0 */ 456, 0,
+};
+
+static const uint16_t ud_itab__405[] = {
+ /* 0 */ GROUP(406), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__408[] = {
+ /* 0 */ 457, 0,
+};
+
+static const uint16_t ud_itab__407[] = {
+ /* 0 */ GROUP(408), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__410[] = {
+ /* 0 */ 458, 0,
+};
+
+static const uint16_t ud_itab__409[] = {
+ /* 0 */ GROUP(410), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__412[] = {
+ /* 0 */ 459, 0,
+};
+
+static const uint16_t ud_itab__411[] = {
+ /* 0 */ GROUP(412), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__414[] = {
+ /* 0 */ 460, 0,
+};
+
+static const uint16_t ud_itab__413[] = {
+ /* 0 */ GROUP(414), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__416[] = {
+ /* 0 */ 461, 0,
+};
+
+static const uint16_t ud_itab__415[] = {
+ /* 0 */ GROUP(416), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__402[] = {
+ /* 0 */ GROUP(403), GROUP(405), GROUP(407), GROUP(409),
+ /* 4 */ GROUP(411), GROUP(413), 0, GROUP(415),
+};
+
+static const uint16_t ud_itab__420[] = {
+ /* 0 */ 0, 462,
+};
+
+static const uint16_t ud_itab__419[] = {
+ /* 0 */ GROUP(420), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__422[] = {
+ /* 0 */ 0, 463,
+};
+
+static const uint16_t ud_itab__421[] = {
+ /* 0 */ GROUP(422), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__424[] = {
+ /* 0 */ 0, 464,
+};
+
+static const uint16_t ud_itab__423[] = {
+ /* 0 */ GROUP(424), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__426[] = {
+ /* 0 */ 0, 465,
+};
+
+static const uint16_t ud_itab__425[] = {
+ /* 0 */ GROUP(426), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__428[] = {
+ /* 0 */ 0, 466,
+};
+
+static const uint16_t ud_itab__427[] = {
+ /* 0 */ GROUP(428), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__430[] = {
+ /* 0 */ 0, 467,
+};
+
+static const uint16_t ud_itab__429[] = {
+ /* 0 */ GROUP(430), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__432[] = {
+ /* 0 */ 0, 468,
+};
+
+static const uint16_t ud_itab__431[] = {
+ /* 0 */ GROUP(432), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__434[] = {
+ /* 0 */ 0, 469,
+};
+
+static const uint16_t ud_itab__433[] = {
+ /* 0 */ GROUP(434), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__418[] = {
+ /* 0 */ GROUP(419), GROUP(421), GROUP(423), GROUP(425),
+ /* 4 */ GROUP(427), GROUP(429), GROUP(431), GROUP(433),
+};
+
+static const uint16_t ud_itab__437[] = {
+ /* 0 */ 0, 470,
+};
+
+static const uint16_t ud_itab__436[] = {
+ /* 0 */ GROUP(437), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__439[] = {
+ /* 0 */ 0, 471,
+};
+
+static const uint16_t ud_itab__438[] = {
+ /* 0 */ GROUP(439), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__441[] = {
+ /* 0 */ 0, 472,
+};
+
+static const uint16_t ud_itab__440[] = {
+ /* 0 */ GROUP(441), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__443[] = {
+ /* 0 */ 0, 473,
+};
+
+static const uint16_t ud_itab__442[] = {
+ /* 0 */ GROUP(443), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__445[] = {
+ /* 0 */ 0, 474,
+};
+
+static const uint16_t ud_itab__444[] = {
+ /* 0 */ GROUP(445), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__447[] = {
+ /* 0 */ 0, 475,
+};
+
+static const uint16_t ud_itab__446[] = {
+ /* 0 */ GROUP(447), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__449[] = {
+ /* 0 */ 0, 476,
+};
+
+static const uint16_t ud_itab__448[] = {
+ /* 0 */ GROUP(449), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__451[] = {
+ /* 0 */ 0, 477,
+};
+
+static const uint16_t ud_itab__450[] = {
+ /* 0 */ GROUP(451), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__435[] = {
+ /* 0 */ GROUP(436), GROUP(438), GROUP(440), GROUP(442),
+ /* 4 */ GROUP(444), GROUP(446), GROUP(448), GROUP(450),
+};
+
+static const uint16_t ud_itab__454[] = {
+ /* 0 */ 0, 478,
+};
+
+static const uint16_t ud_itab__453[] = {
+ /* 0 */ GROUP(454), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__456[] = {
+ /* 0 */ 0, 479,
+};
+
+static const uint16_t ud_itab__455[] = {
+ /* 0 */ GROUP(456), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__458[] = {
+ /* 0 */ 0, 480,
+};
+
+static const uint16_t ud_itab__457[] = {
+ /* 0 */ GROUP(458), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__460[] = {
+ /* 0 */ 0, 481,
+};
+
+static const uint16_t ud_itab__459[] = {
+ /* 0 */ GROUP(460), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__462[] = {
+ /* 0 */ 0, 482,
+};
+
+static const uint16_t ud_itab__461[] = {
+ /* 0 */ GROUP(462), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__464[] = {
+ /* 0 */ 0, 483,
+};
+
+static const uint16_t ud_itab__463[] = {
+ /* 0 */ GROUP(464), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__466[] = {
+ /* 0 */ 0, 484,
+};
+
+static const uint16_t ud_itab__465[] = {
+ /* 0 */ GROUP(466), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__468[] = {
+ /* 0 */ 0, 485,
+};
+
+static const uint16_t ud_itab__467[] = {
+ /* 0 */ GROUP(468), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__452[] = {
+ /* 0 */ GROUP(453), GROUP(455), GROUP(457), GROUP(459),
+ /* 4 */ GROUP(461), GROUP(463), GROUP(465), GROUP(467),
+};
+
+static const uint16_t ud_itab__417[] = {
+ /* 0 */ 0, 0, 0, 0,
+ /* 4 */ 0, GROUP(418), GROUP(435), GROUP(452),
+};
+
+static const uint16_t ud_itab__401[] = {
+ /* 0 */ GROUP(402), GROUP(417),
+};
+
+static const uint16_t ud_itab__469[] = {
+ /* 0 */ 486, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__470[] = {
+ /* 0 */ 487, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__471[] = {
+ /* 0 */ 488, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__472[] = {
+ /* 0 */ 489, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__473[] = {
+ /* 0 */ 490, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__474[] = {
+ /* 0 */ 491, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__475[] = {
+ /* 0 */ 492, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__476[] = {
+ /* 0 */ 493, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__477[] = {
+ /* 0 */ 494, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__478[] = {
+ /* 0 */ 0, 0, 495, 0,
+};
+
+static const uint16_t ud_itab__480[] = {
+ /* 0 */ 496, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__481[] = {
+ /* 0 */ 497, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__482[] = {
+ /* 0 */ 498, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__483[] = {
+ /* 0 */ 499, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__479[] = {
+ /* 0 */ 0, 0, 0, 0,
+ /* 4 */ GROUP(480), GROUP(481), GROUP(482), GROUP(483),
+};
+
+static const uint16_t ud_itab__484[] = {
+ /* 0 */ 500, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__485[] = {
+ /* 0 */ 501, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__486[] = {
+ /* 0 */ 502, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__487[] = {
+ /* 0 */ 503, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__488[] = {
+ /* 0 */ 504, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__489[] = {
+ /* 0 */ 505, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__490[] = {
+ /* 0 */ 506, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__491[] = {
+ /* 0 */ 507, 508, 509, 510,
+};
+
+static const uint16_t ud_itab__492[] = {
+ /* 0 */ 511, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__493[] = {
+ /* 0 */ 512, 0, 0, 513,
+};
+
+static const uint16_t ud_itab__494[] = {
+ /* 0 */ 514, 0, 0, 515,
+};
+
+static const uint16_t ud_itab__495[] = {
+ /* 0 */ 516, 0, 0, 517,
+};
+
+static const uint16_t ud_itab__498[] = {
+ /* 0 */ 518, 519, 520,
+};
+
+static const uint16_t ud_itab__497[] = {
+ /* 0 */ GROUP(498), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__500[] = {
+ /* 0 */ 0, 521, 0,
+};
+
+static const uint16_t ud_itab__501[] = {
+ /* 0 */ 0, 522, 0,
+};
+
+static const uint16_t ud_itab__502[] = {
+ /* 0 */ 0, 523, 0,
+};
+
+static const uint16_t ud_itab__499[] = {
+ /* 0 */ GROUP(500), 0, GROUP(501), GROUP(502),
+};
+
+static const uint16_t ud_itab__504[] = {
+ /* 0 */ 0, 524, 0,
+};
+
+static const uint16_t ud_itab__503[] = {
+ /* 0 */ GROUP(504), 0, 0, 0,
+};
+
+static const uint16_t ud_itab__496[] = {
+ /* 0 */ 0, GROUP(497), 0, 0,
+ /* 4 */ 0, 0, GROUP(499), GROUP(503),
+};
+
+static const uint16_t ud_itab__505[] = {
+ /* 0 */ 525, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__506[] = {
+ /* 0 */ 526, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__507[] = {
+ /* 0 */ 527, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__508[] = {
+ /* 0 */ 528, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__509[] = {
+ /* 0 */ 529, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__510[] = {
+ /* 0 */ 530, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__511[] = {
+ /* 0 */ 531, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__512[] = {
+ /* 0 */ 532, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__513[] = {
+ /* 0 */ 0, 533, 0, 534,
+};
+
+static const uint16_t ud_itab__514[] = {
+ /* 0 */ 535, 0, 0, 536,
+};
+
+static const uint16_t ud_itab__515[] = {
+ /* 0 */ 537, 0, 0, 538,
+};
+
+static const uint16_t ud_itab__516[] = {
+ /* 0 */ 539, 0, 0, 540,
+};
+
+static const uint16_t ud_itab__517[] = {
+ /* 0 */ 541, 0, 0, 542,
+};
+
+static const uint16_t ud_itab__518[] = {
+ /* 0 */ 543, 0, 0, 544,
+};
+
+static const uint16_t ud_itab__519[] = {
+ /* 0 */ 0, 545, 546, 547,
+};
+
+static const uint16_t ud_itab__520[] = {
+ /* 0 */ 548, 0, 0, 549,
+};
+
+static const uint16_t ud_itab__521[] = {
+ /* 0 */ 550, 0, 0, 551,
+};
+
+static const uint16_t ud_itab__522[] = {
+ /* 0 */ 552, 0, 0, 553,
+};
+
+static const uint16_t ud_itab__523[] = {
+ /* 0 */ 554, 0, 0, 555,
+};
+
+static const uint16_t ud_itab__524[] = {
+ /* 0 */ 556, 0, 0, 557,
+};
+
+static const uint16_t ud_itab__525[] = {
+ /* 0 */ 558, 0, 0, 559,
+};
+
+static const uint16_t ud_itab__526[] = {
+ /* 0 */ 560, 0, 0, 561,
+};
+
+static const uint16_t ud_itab__527[] = {
+ /* 0 */ 562, 0, 0, 563,
+};
+
+static const uint16_t ud_itab__528[] = {
+ /* 0 */ 564, 0, 0, 565,
+};
+
+static const uint16_t ud_itab__529[] = {
+ /* 0 */ 566, 0, 0, 567,
+};
+
+static const uint16_t ud_itab__530[] = {
+ /* 0 */ 568, 0, 0, 569,
+};
+
+static const uint16_t ud_itab__531[] = {
+ /* 0 */ 570, 0, 0, 571,
+};
+
+static const uint16_t ud_itab__532[] = {
+ /* 0 */ 572, 0, 0, 573,
+};
+
+static const uint16_t ud_itab__533[] = {
+ /* 0 */ 574, 0, 0, 575,
+};
+
+static const uint16_t ud_itab__534[] = {
+ /* 0 */ 576, 0, 0, 577,
+};
+
+static const uint16_t ud_itab__535[] = {
+ /* 0 */ 0, 578, 579, 580,
+};
+
+static const uint16_t ud_itab__536[] = {
+ /* 0 */ 581, 0, 0, 582,
+};
+
+static const uint16_t ud_itab__537[] = {
+ /* 0 */ 583, 0, 0, 584,
+};
+
+static const uint16_t ud_itab__538[] = {
+ /* 0 */ 585, 0, 0, 586,
+};
+
+static const uint16_t ud_itab__539[] = {
+ /* 0 */ 587, 0, 0, 588,
+};
+
+static const uint16_t ud_itab__540[] = {
+ /* 0 */ 589, 0, 0, 590,
+};
+
+static const uint16_t ud_itab__541[] = {
+ /* 0 */ 591, 0, 0, 592,
+};
+
+static const uint16_t ud_itab__542[] = {
+ /* 0 */ 593, 0, 0, 594,
+};
+
+static const uint16_t ud_itab__543[] = {
+ /* 0 */ 595, 0, 0, 596,
+};
+
+static const uint16_t ud_itab__544[] = {
+ /* 0 */ 597, 0, 0, 598,
+};
+
+static const uint16_t ud_itab__545[] = {
+ /* 0 */ 0, 599, 0, 0,
+};
+
+static const uint16_t ud_itab__546[] = {
+ /* 0 */ 600, 0, 0, 601,
+};
+
+static const uint16_t ud_itab__547[] = {
+ /* 0 */ 602, 0, 0, 603,
+};
+
+static const uint16_t ud_itab__548[] = {
+ /* 0 */ 604, 0, 0, 605,
+};
+
+static const uint16_t ud_itab__549[] = {
+ /* 0 */ 606, 0, 0, 607,
+};
+
+static const uint16_t ud_itab__550[] = {
+ /* 0 */ 608, 0, 0, 609,
+};
+
+static const uint16_t ud_itab__551[] = {
+ /* 0 */ 610, 0, 0, 611,
+};
+
+static const uint16_t ud_itab__554[] = {
+ /* 0 */ 0, 612,
+};
+
+static const uint16_t ud_itab__555[] = {
+ /* 0 */ 0, 613,
+};
+
+static const uint16_t ud_itab__553[] = {
+ /* 0 */ GROUP(554), 0, 0, GROUP(555),
+};
+
+static const uint16_t ud_itab__552[] = {
+ /* 0 */ 0, GROUP(553),
+};
+
+static const uint16_t ud_itab__556[] = {
+ /* 0 */ 614, 0, 0, 615,
+};
+
+static const uint16_t ud_itab__557[] = {
+ /* 0 */ 616, 0, 0, 617,
+};
+
+static const uint16_t ud_itab__558[] = {
+ /* 0 */ 618, 0, 0, 619,
+};
+
+static const uint16_t ud_itab__559[] = {
+ /* 0 */ 620, 0, 0, 621,
+};
+
+static const uint16_t ud_itab__560[] = {
+ /* 0 */ 622, 0, 0, 623,
+};
+
+static const uint16_t ud_itab__561[] = {
+ /* 0 */ 624, 0, 0, 625,
+};
+
+static const uint16_t ud_itab__562[] = {
+ /* 0 */ 626, 0, 0, 627,
+};
+
+static const uint16_t ud_itab__4[] = {
+ /* 0 */ GROUP(5), GROUP(12), GROUP(87), GROUP(88),
+ /* 4 */ 0, GROUP(89), GROUP(90), GROUP(91),
+ /* 8 */ GROUP(92), GROUP(93), 0, GROUP(94),
+ /* c */ 0, GROUP(95), GROUP(104), GROUP(105),
+ /* 10 */ GROUP(106), GROUP(107), GROUP(108), GROUP(118),
+ /* 14 */ GROUP(119), GROUP(120), GROUP(121), GROUP(129),
+ /* 18 */ GROUP(130), GROUP(135), GROUP(136), GROUP(137),
+ /* 1c */ GROUP(138), GROUP(139), GROUP(140), GROUP(141),
+ /* 20 */ GROUP(142), GROUP(143), GROUP(144), GROUP(145),
+ /* 24 */ 0, 0, 0, 0,
+ /* 28 */ GROUP(146), GROUP(147), GROUP(148), GROUP(149),
+ /* 2c */ GROUP(150), GROUP(151), GROUP(152), GROUP(153),
+ /* 30 */ GROUP(154), GROUP(155), GROUP(156), GROUP(157),
+ /* 34 */ GROUP(158), GROUP(161), 0, GROUP(164),
+ /* 38 */ GROUP(165), 0, GROUP(225), 0,
+ /* 3c */ 0, 0, 0, 0,
+ /* 40 */ GROUP(252), GROUP(253), GROUP(254), GROUP(255),
+ /* 44 */ GROUP(256), GROUP(257), GROUP(258), GROUP(259),
+ /* 48 */ GROUP(260), GROUP(261), GROUP(262), GROUP(263),
+ /* 4c */ GROUP(264), GROUP(265), GROUP(266), GROUP(267),
+ /* 50 */ GROUP(268), GROUP(269), GROUP(270), GROUP(271),
+ /* 54 */ GROUP(272), GROUP(273), GROUP(274), GROUP(275),
+ /* 58 */ GROUP(276), GROUP(277), GROUP(278), GROUP(279),
+ /* 5c */ GROUP(280), GROUP(281), GROUP(282), GROUP(283),
+ /* 60 */ GROUP(284), GROUP(285), GROUP(286), GROUP(287),
+ /* 64 */ GROUP(288), GROUP(289), GROUP(290), GROUP(291),
+ /* 68 */ GROUP(292), GROUP(293), GROUP(294), GROUP(295),
+ /* 6c */ GROUP(296), GROUP(297), GROUP(298), GROUP(299),
+ /* 70 */ GROUP(300), GROUP(301), GROUP(305), GROUP(309),
+ /* 74 */ GROUP(314), GROUP(315), GROUP(316), GROUP(317),
+ /* 78 */ GROUP(318), GROUP(320), 0, 0,
+ /* 7c */ GROUP(322), GROUP(323), GROUP(324), GROUP(325),
+ /* 80 */ GROUP(326), GROUP(327), GROUP(328), GROUP(329),
+ /* 84 */ GROUP(330), GROUP(331), GROUP(332), GROUP(333),
+ /* 88 */ GROUP(334), GROUP(335), GROUP(336), GROUP(337),
+ /* 8c */ GROUP(338), GROUP(339), GROUP(340), GROUP(341),
+ /* 90 */ GROUP(342), GROUP(343), GROUP(344), GROUP(345),
+ /* 94 */ GROUP(346), GROUP(347), GROUP(348), GROUP(349),
+ /* 98 */ GROUP(350), GROUP(351), GROUP(352), GROUP(353),
+ /* 9c */ GROUP(354), GROUP(355), GROUP(356), GROUP(357),
+ /* a0 */ GROUP(358), GROUP(359), GROUP(360), GROUP(361),
+ /* a4 */ GROUP(362), GROUP(363), GROUP(364), GROUP(375),
+ /* a8 */ GROUP(395), GROUP(396), GROUP(397), GROUP(398),
+ /* ac */ GROUP(399), GROUP(400), GROUP(401), GROUP(469),
+ /* b0 */ GROUP(470), GROUP(471), GROUP(472), GROUP(473),
+ /* b4 */ GROUP(474), GROUP(475), GROUP(476), GROUP(477),
+ /* b8 */ GROUP(478), 0, GROUP(479), GROUP(484),
+ /* bc */ GROUP(485), GROUP(486), GROUP(487), GROUP(488),
+ /* c0 */ GROUP(489), GROUP(490), GROUP(491), GROUP(492),
+ /* c4 */ GROUP(493), GROUP(494), GROUP(495), GROUP(496),
+ /* c8 */ GROUP(505), GROUP(506), GROUP(507), GROUP(508),
+ /* cc */ GROUP(509), GROUP(510), GROUP(511), GROUP(512),
+ /* d0 */ GROUP(513), GROUP(514), GROUP(515), GROUP(516),
+ /* d4 */ GROUP(517), GROUP(518), GROUP(519), GROUP(520),
+ /* d8 */ GROUP(521), GROUP(522), GROUP(523), GROUP(524),
+ /* dc */ GROUP(525), GROUP(526), GROUP(527), GROUP(528),
+ /* e0 */ GROUP(529), GROUP(530), GROUP(531), GROUP(532),
+ /* e4 */ GROUP(533), GROUP(534), GROUP(535), GROUP(536),
+ /* e8 */ GROUP(537), GROUP(538), GROUP(539), GROUP(540),
+ /* ec */ GROUP(541), GROUP(542), GROUP(543), GROUP(544),
+ /* f0 */ GROUP(545), GROUP(546), GROUP(547), GROUP(548),
+ /* f4 */ GROUP(549), GROUP(550), GROUP(551), GROUP(552),
+ /* f8 */ GROUP(556), GROUP(557), GROUP(558), GROUP(559),
+ /* fc */ GROUP(560), GROUP(561), GROUP(562), 0,
+};
+
+static const uint16_t ud_itab__563[] = {
+ /* 0 */ 634, 0,
+};
+
+static const uint16_t ud_itab__564[] = {
+ /* 0 */ 635, 0,
+};
+
+static const uint16_t ud_itab__565[] = {
+ /* 0 */ 642, 0,
+};
+
+static const uint16_t ud_itab__566[] = {
+ /* 0 */ 643, 0,
+};
+
+static const uint16_t ud_itab__567[] = {
+ /* 0 */ 650, 0,
+};
+
+static const uint16_t ud_itab__568[] = {
+ /* 0 */ 657, 0,
+};
+
+static const uint16_t ud_itab__569[] = {
+ /* 0 */ 664, 0,
+};
+
+static const uint16_t ud_itab__570[] = {
+ /* 0 */ 671, 0,
+};
+
+static const uint16_t ud_itab__572[] = {
+ /* 0 */ 704, 0,
+};
+
+static const uint16_t ud_itab__573[] = {
+ /* 0 */ 705, 0,
+};
+
+static const uint16_t ud_itab__571[] = {
+ /* 0 */ GROUP(572), GROUP(573), 0,
+};
+
+static const uint16_t ud_itab__575[] = {
+ /* 0 */ 706, 0,
+};
+
+static const uint16_t ud_itab__576[] = {
+ /* 0 */ 707, 0,
+};
+
+static const uint16_t ud_itab__574[] = {
+ /* 0 */ GROUP(575), GROUP(576), 0,
+};
+
+static const uint16_t ud_itab__577[] = {
+ /* 0 */ 708, 0,
+};
+
+static const uint16_t ud_itab__578[] = {
+ /* 0 */ 709, 710,
+};
+
+static const uint16_t ud_itab__579[] = {
+ /* 0 */ 716, 717, 0,
+};
+
+static const uint16_t ud_itab__580[] = {
+ /* 0 */ 719, 720, 0,
+};
+
+static const uint16_t ud_itab__581[] = {
+ /* 0 */ 737, 738, 739, 740,
+ /* 4 */ 741, 742, 743, 744,
+};
+
+static const uint16_t ud_itab__582[] = {
+ /* 0 */ 745, 746, 747, 748,
+ /* 4 */ 749, 750, 751, 752,
+};
+
+static const uint16_t ud_itab__584[] = {
+ /* 0 */ 753, 0,
+};
+
+static const uint16_t ud_itab__585[] = {
+ /* 0 */ 754, 0,
+};
+
+static const uint16_t ud_itab__586[] = {
+ /* 0 */ 755, 0,
+};
+
+static const uint16_t ud_itab__587[] = {
+ /* 0 */ 756, 0,
+};
+
+static const uint16_t ud_itab__588[] = {
+ /* 0 */ 757, 0,
+};
+
+static const uint16_t ud_itab__589[] = {
+ /* 0 */ 758, 0,
+};
+
+static const uint16_t ud_itab__590[] = {
+ /* 0 */ 759, 0,
+};
+
+static const uint16_t ud_itab__591[] = {
+ /* 0 */ 760, 0,
+};
+
+static const uint16_t ud_itab__583[] = {
+ /* 0 */ GROUP(584), GROUP(585), GROUP(586), GROUP(587),
+ /* 4 */ GROUP(588), GROUP(589), GROUP(590), GROUP(591),
+};
+
+static const uint16_t ud_itab__592[] = {
+ /* 0 */ 761, 762, 763, 764,
+ /* 4 */ 765, 766, 767, 768,
+};
+
+static const uint16_t ud_itab__593[] = {
+ /* 0 */ 780, 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__594[] = {
+ /* 0 */ 789, 790, 791,
+};
+
+static const uint16_t ud_itab__595[] = {
+ /* 0 */ 792, 793, 794,
+};
+
+static const uint16_t ud_itab__596[] = {
+ /* 0 */ 795, 0,
+};
+
+static const uint16_t ud_itab__598[] = {
+ /* 0 */ 797, 798,
+};
+
+static const uint16_t ud_itab__599[] = {
+ /* 0 */ 799, 800,
+};
+
+static const uint16_t ud_itab__600[] = {
+ /* 0 */ 0, 801,
+};
+
+static const uint16_t ud_itab__597[] = {
+ /* 0 */ GROUP(598), GROUP(599), GROUP(600),
+};
+
+static const uint16_t ud_itab__602[] = {
+ /* 0 */ 802, 0,
+};
+
+static const uint16_t ud_itab__603[] = {
+ /* 0 */ 803, 804,
+};
+
+static const uint16_t ud_itab__604[] = {
+ /* 0 */ 0, 805,
+};
+
+static const uint16_t ud_itab__601[] = {
+ /* 0 */ GROUP(602), GROUP(603), GROUP(604),
+};
+
+static const uint16_t ud_itab__605[] = {
+ /* 0 */ 813, 814, 815,
+};
+
+static const uint16_t ud_itab__606[] = {
+ /* 0 */ 817, 818, 819,
+};
+
+static const uint16_t ud_itab__607[] = {
+ /* 0 */ 823, 824, 825,
+};
+
+static const uint16_t ud_itab__608[] = {
+ /* 0 */ 827, 828, 829,
+};
+
+static const uint16_t ud_itab__609[] = {
+ /* 0 */ 831, 832, 833,
+};
+
+static const uint16_t ud_itab__610[] = {
+ /* 0 */ 850, 851, 852, 853,
+ /* 4 */ 854, 855, 856, 857,
+};
+
+static const uint16_t ud_itab__611[] = {
+ /* 0 */ 858, 859, 860, 861,
+ /* 4 */ 862, 863, 864, 865,
+};
+
+static const uint16_t ud_itab__612[] = {
+ /* 0 */ 868, 0,
+};
+
+static const uint16_t ud_itab__613[] = {
+ /* 0 */ 869, 0,
+};
+
+static const uint16_t ud_itab__614[] = {
+ /* 0 */ 870, 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__615[] = {
+ /* 0 */ 871, 0, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__616[] = {
+ /* 0 */ 878, 0,
+};
+
+static const uint16_t ud_itab__617[] = {
+ /* 0 */ 879, 880, 881,
+};
+
+static const uint16_t ud_itab__618[] = {
+ /* 0 */ 882, 883, 884, 885,
+ /* 4 */ 886, 887, 888, 889,
+};
+
+static const uint16_t ud_itab__619[] = {
+ /* 0 */ 890, 891, 892, 893,
+ /* 4 */ 894, 895, 896, 897,
+};
+
+static const uint16_t ud_itab__620[] = {
+ /* 0 */ 898, 899, 900, 901,
+ /* 4 */ 902, 903, 904, 905,
+};
+
+static const uint16_t ud_itab__621[] = {
+ /* 0 */ 906, 907, 908, 909,
+ /* 4 */ 910, 911, 912, 913,
+};
+
+static const uint16_t ud_itab__622[] = {
+ /* 0 */ 914, 0,
+};
+
+static const uint16_t ud_itab__623[] = {
+ /* 0 */ 915, 0,
+};
+
+static const uint16_t ud_itab__624[] = {
+ /* 0 */ 916, 0,
+};
+
+static const uint16_t ud_itab__627[] = {
+ /* 0 */ 918, 0,
+};
+
+static const uint16_t ud_itab__628[] = {
+ /* 0 */ 919, 0,
+};
+
+static const uint16_t ud_itab__629[] = {
+ /* 0 */ 920, 0,
+};
+
+static const uint16_t ud_itab__630[] = {
+ /* 0 */ 921, 0,
+};
+
+static const uint16_t ud_itab__631[] = {
+ /* 0 */ 922, 0,
+};
+
+static const uint16_t ud_itab__632[] = {
+ /* 0 */ 923, 0,
+};
+
+static const uint16_t ud_itab__633[] = {
+ /* 0 */ 924, 0,
+};
+
+static const uint16_t ud_itab__634[] = {
+ /* 0 */ 925, 0,
+};
+
+static const uint16_t ud_itab__626[] = {
+ /* 0 */ GROUP(627), GROUP(628), GROUP(629), GROUP(630),
+ /* 4 */ GROUP(631), GROUP(632), GROUP(633), GROUP(634),
+};
+
+static const uint16_t ud_itab__636[] = {
+ /* 0 */ 0, 926,
+};
+
+static const uint16_t ud_itab__637[] = {
+ /* 0 */ 0, 927,
+};
+
+static const uint16_t ud_itab__638[] = {
+ /* 0 */ 0, 928,
+};
+
+static const uint16_t ud_itab__639[] = {
+ /* 0 */ 0, 929,
+};
+
+static const uint16_t ud_itab__640[] = {
+ /* 0 */ 0, 930,
+};
+
+static const uint16_t ud_itab__641[] = {
+ /* 0 */ 0, 931,
+};
+
+static const uint16_t ud_itab__642[] = {
+ /* 0 */ 0, 932,
+};
+
+static const uint16_t ud_itab__643[] = {
+ /* 0 */ 0, 933,
+};
+
+static const uint16_t ud_itab__644[] = {
+ /* 0 */ 0, 934,
+};
+
+static const uint16_t ud_itab__645[] = {
+ /* 0 */ 0, 935,
+};
+
+static const uint16_t ud_itab__646[] = {
+ /* 0 */ 0, 936,
+};
+
+static const uint16_t ud_itab__647[] = {
+ /* 0 */ 0, 937,
+};
+
+static const uint16_t ud_itab__648[] = {
+ /* 0 */ 0, 938,
+};
+
+static const uint16_t ud_itab__649[] = {
+ /* 0 */ 0, 939,
+};
+
+static const uint16_t ud_itab__650[] = {
+ /* 0 */ 0, 940,
+};
+
+static const uint16_t ud_itab__651[] = {
+ /* 0 */ 0, 941,
+};
+
+static const uint16_t ud_itab__652[] = {
+ /* 0 */ 0, 942,
+};
+
+static const uint16_t ud_itab__653[] = {
+ /* 0 */ 0, 943,
+};
+
+static const uint16_t ud_itab__654[] = {
+ /* 0 */ 0, 944,
+};
+
+static const uint16_t ud_itab__655[] = {
+ /* 0 */ 0, 945,
+};
+
+static const uint16_t ud_itab__656[] = {
+ /* 0 */ 0, 946,
+};
+
+static const uint16_t ud_itab__657[] = {
+ /* 0 */ 0, 947,
+};
+
+static const uint16_t ud_itab__658[] = {
+ /* 0 */ 0, 948,
+};
+
+static const uint16_t ud_itab__659[] = {
+ /* 0 */ 0, 949,
+};
+
+static const uint16_t ud_itab__660[] = {
+ /* 0 */ 0, 950,
+};
+
+static const uint16_t ud_itab__661[] = {
+ /* 0 */ 0, 951,
+};
+
+static const uint16_t ud_itab__662[] = {
+ /* 0 */ 0, 952,
+};
+
+static const uint16_t ud_itab__663[] = {
+ /* 0 */ 0, 953,
+};
+
+static const uint16_t ud_itab__664[] = {
+ /* 0 */ 0, 954,
+};
+
+static const uint16_t ud_itab__665[] = {
+ /* 0 */ 0, 955,
+};
+
+static const uint16_t ud_itab__666[] = {
+ /* 0 */ 0, 956,
+};
+
+static const uint16_t ud_itab__667[] = {
+ /* 0 */ 0, 957,
+};
+
+static const uint16_t ud_itab__668[] = {
+ /* 0 */ 0, 958,
+};
+
+static const uint16_t ud_itab__669[] = {
+ /* 0 */ 0, 959,
+};
+
+static const uint16_t ud_itab__670[] = {
+ /* 0 */ 0, 960,
+};
+
+static const uint16_t ud_itab__671[] = {
+ /* 0 */ 0, 961,
+};
+
+static const uint16_t ud_itab__672[] = {
+ /* 0 */ 0, 962,
+};
+
+static const uint16_t ud_itab__673[] = {
+ /* 0 */ 0, 963,
+};
+
+static const uint16_t ud_itab__674[] = {
+ /* 0 */ 0, 964,
+};
+
+static const uint16_t ud_itab__675[] = {
+ /* 0 */ 0, 965,
+};
+
+static const uint16_t ud_itab__676[] = {
+ /* 0 */ 0, 966,
+};
+
+static const uint16_t ud_itab__677[] = {
+ /* 0 */ 0, 967,
+};
+
+static const uint16_t ud_itab__678[] = {
+ /* 0 */ 0, 968,
+};
+
+static const uint16_t ud_itab__679[] = {
+ /* 0 */ 0, 969,
+};
+
+static const uint16_t ud_itab__680[] = {
+ /* 0 */ 0, 970,
+};
+
+static const uint16_t ud_itab__681[] = {
+ /* 0 */ 0, 971,
+};
+
+static const uint16_t ud_itab__682[] = {
+ /* 0 */ 0, 972,
+};
+
+static const uint16_t ud_itab__683[] = {
+ /* 0 */ 0, 973,
+};
+
+static const uint16_t ud_itab__684[] = {
+ /* 0 */ 0, 974,
+};
+
+static const uint16_t ud_itab__685[] = {
+ /* 0 */ 0, 975,
+};
+
+static const uint16_t ud_itab__686[] = {
+ /* 0 */ 0, 976,
+};
+
+static const uint16_t ud_itab__687[] = {
+ /* 0 */ 0, 977,
+};
+
+static const uint16_t ud_itab__688[] = {
+ /* 0 */ 0, 978,
+};
+
+static const uint16_t ud_itab__689[] = {
+ /* 0 */ 0, 979,
+};
+
+static const uint16_t ud_itab__690[] = {
+ /* 0 */ 0, 980,
+};
+
+static const uint16_t ud_itab__691[] = {
+ /* 0 */ 0, 981,
+};
+
+static const uint16_t ud_itab__692[] = {
+ /* 0 */ 0, 982,
+};
+
+static const uint16_t ud_itab__693[] = {
+ /* 0 */ 0, 983,
+};
+
+static const uint16_t ud_itab__694[] = {
+ /* 0 */ 0, 984,
+};
+
+static const uint16_t ud_itab__695[] = {
+ /* 0 */ 0, 985,
+};
+
+static const uint16_t ud_itab__696[] = {
+ /* 0 */ 0, 986,
+};
+
+static const uint16_t ud_itab__697[] = {
+ /* 0 */ 0, 987,
+};
+
+static const uint16_t ud_itab__698[] = {
+ /* 0 */ 0, 988,
+};
+
+static const uint16_t ud_itab__699[] = {
+ /* 0 */ 0, 989,
+};
+
+static const uint16_t ud_itab__635[] = {
+ /* 0 */ GROUP(636), GROUP(637), GROUP(638), GROUP(639),
+ /* 4 */ GROUP(640), GROUP(641), GROUP(642), GROUP(643),
+ /* 8 */ GROUP(644), GROUP(645), GROUP(646), GROUP(647),
+ /* c */ GROUP(648), GROUP(649), GROUP(650), GROUP(651),
+ /* 10 */ GROUP(652), GROUP(653), GROUP(654), GROUP(655),
+ /* 14 */ GROUP(656), GROUP(657), GROUP(658), GROUP(659),
+ /* 18 */ GROUP(660), GROUP(661), GROUP(662), GROUP(663),
+ /* 1c */ GROUP(664), GROUP(665), GROUP(666), GROUP(667),
+ /* 20 */ GROUP(668), GROUP(669), GROUP(670), GROUP(671),
+ /* 24 */ GROUP(672), GROUP(673), GROUP(674), GROUP(675),
+ /* 28 */ GROUP(676), GROUP(677), GROUP(678), GROUP(679),
+ /* 2c */ GROUP(680), GROUP(681), GROUP(682), GROUP(683),
+ /* 30 */ GROUP(684), GROUP(685), GROUP(686), GROUP(687),
+ /* 34 */ GROUP(688), GROUP(689), GROUP(690), GROUP(691),
+ /* 38 */ GROUP(692), GROUP(693), GROUP(694), GROUP(695),
+ /* 3c */ GROUP(696), GROUP(697), GROUP(698), GROUP(699),
+};
+
+static const uint16_t ud_itab__625[] = {
+ /* 0 */ GROUP(626), GROUP(635),
+};
+
+static const uint16_t ud_itab__702[] = {
+ /* 0 */ 990, 0,
+};
+
+static const uint16_t ud_itab__703[] = {
+ /* 0 */ 991, 0,
+};
+
+static const uint16_t ud_itab__704[] = {
+ /* 0 */ 992, 0,
+};
+
+static const uint16_t ud_itab__705[] = {
+ /* 0 */ 993, 0,
+};
+
+static const uint16_t ud_itab__706[] = {
+ /* 0 */ 994, 0,
+};
+
+static const uint16_t ud_itab__707[] = {
+ /* 0 */ 995, 0,
+};
+
+static const uint16_t ud_itab__708[] = {
+ /* 0 */ 996, 0,
+};
+
+static const uint16_t ud_itab__701[] = {
+ /* 0 */ GROUP(702), 0, GROUP(703), GROUP(704),
+ /* 4 */ GROUP(705), GROUP(706), GROUP(707), GROUP(708),
+};
+
+static const uint16_t ud_itab__710[] = {
+ /* 0 */ 0, 997,
+};
+
+static const uint16_t ud_itab__711[] = {
+ /* 0 */ 0, 998,
+};
+
+static const uint16_t ud_itab__712[] = {
+ /* 0 */ 0, 999,
+};
+
+static const uint16_t ud_itab__713[] = {
+ /* 0 */ 0, 1000,
+};
+
+static const uint16_t ud_itab__714[] = {
+ /* 0 */ 0, 1001,
+};
+
+static const uint16_t ud_itab__715[] = {
+ /* 0 */ 0, 1002,
+};
+
+static const uint16_t ud_itab__716[] = {
+ /* 0 */ 0, 1003,
+};
+
+static const uint16_t ud_itab__717[] = {
+ /* 0 */ 0, 1004,
+};
+
+static const uint16_t ud_itab__718[] = {
+ /* 0 */ 0, 1005,
+};
+
+static const uint16_t ud_itab__719[] = {
+ /* 0 */ 0, 1006,
+};
+
+static const uint16_t ud_itab__720[] = {
+ /* 0 */ 0, 1007,
+};
+
+static const uint16_t ud_itab__721[] = {
+ /* 0 */ 0, 1008,
+};
+
+static const uint16_t ud_itab__722[] = {
+ /* 0 */ 0, 1009,
+};
+
+static const uint16_t ud_itab__723[] = {
+ /* 0 */ 0, 1010,
+};
+
+static const uint16_t ud_itab__724[] = {
+ /* 0 */ 0, 1011,
+};
+
+static const uint16_t ud_itab__725[] = {
+ /* 0 */ 0, 1012,
+};
+
+static const uint16_t ud_itab__726[] = {
+ /* 0 */ 0, 1013,
+};
+
+static const uint16_t ud_itab__727[] = {
+ /* 0 */ 0, 1014,
+};
+
+static const uint16_t ud_itab__728[] = {
+ /* 0 */ 0, 1015,
+};
+
+static const uint16_t ud_itab__729[] = {
+ /* 0 */ 0, 1016,
+};
+
+static const uint16_t ud_itab__730[] = {
+ /* 0 */ 0, 1017,
+};
+
+static const uint16_t ud_itab__731[] = {
+ /* 0 */ 0, 1018,
+};
+
+static const uint16_t ud_itab__732[] = {
+ /* 0 */ 0, 1019,
+};
+
+static const uint16_t ud_itab__733[] = {
+ /* 0 */ 0, 1020,
+};
+
+static const uint16_t ud_itab__734[] = {
+ /* 0 */ 0, 1021,
+};
+
+static const uint16_t ud_itab__735[] = {
+ /* 0 */ 0, 1022,
+};
+
+static const uint16_t ud_itab__736[] = {
+ /* 0 */ 0, 1023,
+};
+
+static const uint16_t ud_itab__737[] = {
+ /* 0 */ 0, 1024,
+};
+
+static const uint16_t ud_itab__738[] = {
+ /* 0 */ 0, 1025,
+};
+
+static const uint16_t ud_itab__739[] = {
+ /* 0 */ 0, 1026,
+};
+
+static const uint16_t ud_itab__740[] = {
+ /* 0 */ 0, 1027,
+};
+
+static const uint16_t ud_itab__741[] = {
+ /* 0 */ 0, 1028,
+};
+
+static const uint16_t ud_itab__742[] = {
+ /* 0 */ 0, 1029,
+};
+
+static const uint16_t ud_itab__743[] = {
+ /* 0 */ 0, 1030,
+};
+
+static const uint16_t ud_itab__744[] = {
+ /* 0 */ 0, 1031,
+};
+
+static const uint16_t ud_itab__745[] = {
+ /* 0 */ 0, 1032,
+};
+
+static const uint16_t ud_itab__746[] = {
+ /* 0 */ 0, 1033,
+};
+
+static const uint16_t ud_itab__747[] = {
+ /* 0 */ 0, 1034,
+};
+
+static const uint16_t ud_itab__748[] = {
+ /* 0 */ 0, 1035,
+};
+
+static const uint16_t ud_itab__749[] = {
+ /* 0 */ 0, 1036,
+};
+
+static const uint16_t ud_itab__750[] = {
+ /* 0 */ 0, 1037,
+};
+
+static const uint16_t ud_itab__751[] = {
+ /* 0 */ 0, 1038,
+};
+
+static const uint16_t ud_itab__752[] = {
+ /* 0 */ 0, 1039,
+};
+
+static const uint16_t ud_itab__753[] = {
+ /* 0 */ 0, 1040,
+};
+
+static const uint16_t ud_itab__754[] = {
+ /* 0 */ 0, 1041,
+};
+
+static const uint16_t ud_itab__755[] = {
+ /* 0 */ 0, 1042,
+};
+
+static const uint16_t ud_itab__756[] = {
+ /* 0 */ 0, 1043,
+};
+
+static const uint16_t ud_itab__757[] = {
+ /* 0 */ 0, 1044,
+};
+
+static const uint16_t ud_itab__758[] = {
+ /* 0 */ 0, 1045,
+};
+
+static const uint16_t ud_itab__759[] = {
+ /* 0 */ 0, 1046,
+};
+
+static const uint16_t ud_itab__760[] = {
+ /* 0 */ 0, 1047,
+};
+
+static const uint16_t ud_itab__761[] = {
+ /* 0 */ 0, 1048,
+};
+
+static const uint16_t ud_itab__709[] = {
+ /* 0 */ GROUP(710), GROUP(711), GROUP(712), GROUP(713),
+ /* 4 */ GROUP(714), GROUP(715), GROUP(716), GROUP(717),
+ /* 8 */ GROUP(718), GROUP(719), GROUP(720), GROUP(721),
+ /* c */ GROUP(722), GROUP(723), GROUP(724), GROUP(725),
+ /* 10 */ GROUP(726), 0, 0, 0,
+ /* 14 */ 0, 0, 0, 0,
+ /* 18 */ GROUP(727), GROUP(728), GROUP(729), GROUP(730),
+ /* 1c */ GROUP(731), GROUP(732), GROUP(733), GROUP(734),
+ /* 20 */ GROUP(735), GROUP(736), 0, 0,
+ /* 24 */ GROUP(737), GROUP(738), 0, 0,
+ /* 28 */ GROUP(739), GROUP(740), GROUP(741), GROUP(742),
+ /* 2c */ GROUP(743), GROUP(744), GROUP(745), 0,
+ /* 30 */ GROUP(746), GROUP(747), GROUP(748), GROUP(749),
+ /* 34 */ GROUP(750), GROUP(751), GROUP(752), GROUP(753),
+ /* 38 */ GROUP(754), GROUP(755), GROUP(756), GROUP(757),
+ /* 3c */ GROUP(758), GROUP(759), GROUP(760), GROUP(761),
+};
+
+static const uint16_t ud_itab__700[] = {
+ /* 0 */ GROUP(701), GROUP(709),
+};
+
+static const uint16_t ud_itab__764[] = {
+ /* 0 */ 1049, 0,
+};
+
+static const uint16_t ud_itab__765[] = {
+ /* 0 */ 1050, 0,
+};
+
+static const uint16_t ud_itab__766[] = {
+ /* 0 */ 1051, 0,
+};
+
+static const uint16_t ud_itab__767[] = {
+ /* 0 */ 1052, 0,
+};
+
+static const uint16_t ud_itab__768[] = {
+ /* 0 */ 1053, 0,
+};
+
+static const uint16_t ud_itab__769[] = {
+ /* 0 */ 1054, 0,
+};
+
+static const uint16_t ud_itab__770[] = {
+ /* 0 */ 1055, 0,
+};
+
+static const uint16_t ud_itab__771[] = {
+ /* 0 */ 1056, 0,
+};
+
+static const uint16_t ud_itab__763[] = {
+ /* 0 */ GROUP(764), GROUP(765), GROUP(766), GROUP(767),
+ /* 4 */ GROUP(768), GROUP(769), GROUP(770), GROUP(771),
+};
+
+static const uint16_t ud_itab__773[] = {
+ /* 0 */ 0, 1057,
+};
+
+static const uint16_t ud_itab__774[] = {
+ /* 0 */ 0, 1058,
+};
+
+static const uint16_t ud_itab__775[] = {
+ /* 0 */ 0, 1059,
+};
+
+static const uint16_t ud_itab__776[] = {
+ /* 0 */ 0, 1060,
+};
+
+static const uint16_t ud_itab__777[] = {
+ /* 0 */ 0, 1061,
+};
+
+static const uint16_t ud_itab__778[] = {
+ /* 0 */ 0, 1062,
+};
+
+static const uint16_t ud_itab__779[] = {
+ /* 0 */ 0, 1063,
+};
+
+static const uint16_t ud_itab__780[] = {
+ /* 0 */ 0, 1064,
+};
+
+static const uint16_t ud_itab__781[] = {
+ /* 0 */ 0, 1065,
+};
+
+static const uint16_t ud_itab__782[] = {
+ /* 0 */ 0, 1066,
+};
+
+static const uint16_t ud_itab__783[] = {
+ /* 0 */ 0, 1067,
+};
+
+static const uint16_t ud_itab__784[] = {
+ /* 0 */ 0, 1068,
+};
+
+static const uint16_t ud_itab__785[] = {
+ /* 0 */ 0, 1069,
+};
+
+static const uint16_t ud_itab__786[] = {
+ /* 0 */ 0, 1070,
+};
+
+static const uint16_t ud_itab__787[] = {
+ /* 0 */ 0, 1071,
+};
+
+static const uint16_t ud_itab__788[] = {
+ /* 0 */ 0, 1072,
+};
+
+static const uint16_t ud_itab__789[] = {
+ /* 0 */ 0, 1073,
+};
+
+static const uint16_t ud_itab__790[] = {
+ /* 0 */ 0, 1074,
+};
+
+static const uint16_t ud_itab__791[] = {
+ /* 0 */ 0, 1075,
+};
+
+static const uint16_t ud_itab__792[] = {
+ /* 0 */ 0, 1076,
+};
+
+static const uint16_t ud_itab__793[] = {
+ /* 0 */ 0, 1077,
+};
+
+static const uint16_t ud_itab__794[] = {
+ /* 0 */ 0, 1078,
+};
+
+static const uint16_t ud_itab__795[] = {
+ /* 0 */ 0, 1079,
+};
+
+static const uint16_t ud_itab__796[] = {
+ /* 0 */ 0, 1080,
+};
+
+static const uint16_t ud_itab__797[] = {
+ /* 0 */ 0, 1081,
+};
+
+static const uint16_t ud_itab__798[] = {
+ /* 0 */ 0, 1082,
+};
+
+static const uint16_t ud_itab__799[] = {
+ /* 0 */ 0, 1083,
+};
+
+static const uint16_t ud_itab__800[] = {
+ /* 0 */ 0, 1084,
+};
+
+static const uint16_t ud_itab__801[] = {
+ /* 0 */ 0, 1085,
+};
+
+static const uint16_t ud_itab__802[] = {
+ /* 0 */ 0, 1086,
+};
+
+static const uint16_t ud_itab__803[] = {
+ /* 0 */ 0, 1087,
+};
+
+static const uint16_t ud_itab__804[] = {
+ /* 0 */ 0, 1088,
+};
+
+static const uint16_t ud_itab__805[] = {
+ /* 0 */ 0, 1089,
+};
+
+static const uint16_t ud_itab__772[] = {
+ /* 0 */ GROUP(773), GROUP(774), GROUP(775), GROUP(776),
+ /* 4 */ GROUP(777), GROUP(778), GROUP(779), GROUP(780),
+ /* 8 */ GROUP(781), GROUP(782), GROUP(783), GROUP(784),
+ /* c */ GROUP(785), GROUP(786), GROUP(787), GROUP(788),
+ /* 10 */ GROUP(789), GROUP(790), GROUP(791), GROUP(792),
+ /* 14 */ GROUP(793), GROUP(794), GROUP(795), GROUP(796),
+ /* 18 */ GROUP(797), GROUP(798), GROUP(799), GROUP(800),
+ /* 1c */ GROUP(801), GROUP(802), GROUP(803), GROUP(804),
+ /* 20 */ 0, 0, 0, 0,
+ /* 24 */ 0, 0, 0, 0,
+ /* 28 */ 0, GROUP(805), 0, 0,
+ /* 2c */ 0, 0, 0, 0,
+ /* 30 */ 0, 0, 0, 0,
+ /* 34 */ 0, 0, 0, 0,
+ /* 38 */ 0, 0, 0, 0,
+ /* 3c */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__762[] = {
+ /* 0 */ GROUP(763), GROUP(772),
+};
+
+static const uint16_t ud_itab__808[] = {
+ /* 0 */ 1090, 0,
+};
+
+static const uint16_t ud_itab__809[] = {
+ /* 0 */ 1091, 0,
+};
+
+static const uint16_t ud_itab__810[] = {
+ /* 0 */ 1092, 0,
+};
+
+static const uint16_t ud_itab__811[] = {
+ /* 0 */ 1093, 0,
+};
+
+static const uint16_t ud_itab__812[] = {
+ /* 0 */ 1094, 0,
+};
+
+static const uint16_t ud_itab__813[] = {
+ /* 0 */ 1095, 0,
+};
+
+static const uint16_t ud_itab__807[] = {
+ /* 0 */ GROUP(808), GROUP(809), GROUP(810), GROUP(811),
+ /* 4 */ 0, GROUP(812), 0, GROUP(813),
+};
+
+static const uint16_t ud_itab__815[] = {
+ /* 0 */ 0, 1096,
+};
+
+static const uint16_t ud_itab__816[] = {
+ /* 0 */ 0, 1097,
+};
+
+static const uint16_t ud_itab__817[] = {
+ /* 0 */ 0, 1098,
+};
+
+static const uint16_t ud_itab__818[] = {
+ /* 0 */ 0, 1099,
+};
+
+static const uint16_t ud_itab__819[] = {
+ /* 0 */ 0, 1100,
+};
+
+static const uint16_t ud_itab__820[] = {
+ /* 0 */ 0, 1101,
+};
+
+static const uint16_t ud_itab__821[] = {
+ /* 0 */ 0, 1102,
+};
+
+static const uint16_t ud_itab__822[] = {
+ /* 0 */ 0, 1103,
+};
+
+static const uint16_t ud_itab__823[] = {
+ /* 0 */ 0, 1104,
+};
+
+static const uint16_t ud_itab__824[] = {
+ /* 0 */ 0, 1105,
+};
+
+static const uint16_t ud_itab__825[] = {
+ /* 0 */ 0, 1106,
+};
+
+static const uint16_t ud_itab__826[] = {
+ /* 0 */ 0, 1107,
+};
+
+static const uint16_t ud_itab__827[] = {
+ /* 0 */ 0, 1108,
+};
+
+static const uint16_t ud_itab__828[] = {
+ /* 0 */ 0, 1109,
+};
+
+static const uint16_t ud_itab__829[] = {
+ /* 0 */ 0, 1110,
+};
+
+static const uint16_t ud_itab__830[] = {
+ /* 0 */ 0, 1111,
+};
+
+static const uint16_t ud_itab__831[] = {
+ /* 0 */ 0, 1112,
+};
+
+static const uint16_t ud_itab__832[] = {
+ /* 0 */ 0, 1113,
+};
+
+static const uint16_t ud_itab__833[] = {
+ /* 0 */ 0, 1114,
+};
+
+static const uint16_t ud_itab__834[] = {
+ /* 0 */ 0, 1115,
+};
+
+static const uint16_t ud_itab__835[] = {
+ /* 0 */ 0, 1116,
+};
+
+static const uint16_t ud_itab__836[] = {
+ /* 0 */ 0, 1117,
+};
+
+static const uint16_t ud_itab__837[] = {
+ /* 0 */ 0, 1118,
+};
+
+static const uint16_t ud_itab__838[] = {
+ /* 0 */ 0, 1119,
+};
+
+static const uint16_t ud_itab__839[] = {
+ /* 0 */ 0, 1120,
+};
+
+static const uint16_t ud_itab__840[] = {
+ /* 0 */ 0, 1121,
+};
+
+static const uint16_t ud_itab__841[] = {
+ /* 0 */ 0, 1122,
+};
+
+static const uint16_t ud_itab__842[] = {
+ /* 0 */ 0, 1123,
+};
+
+static const uint16_t ud_itab__843[] = {
+ /* 0 */ 0, 1124,
+};
+
+static const uint16_t ud_itab__844[] = {
+ /* 0 */ 0, 1125,
+};
+
+static const uint16_t ud_itab__845[] = {
+ /* 0 */ 0, 1126,
+};
+
+static const uint16_t ud_itab__846[] = {
+ /* 0 */ 0, 1127,
+};
+
+static const uint16_t ud_itab__847[] = {
+ /* 0 */ 0, 1128,
+};
+
+static const uint16_t ud_itab__848[] = {
+ /* 0 */ 0, 1129,
+};
+
+static const uint16_t ud_itab__849[] = {
+ /* 0 */ 0, 1130,
+};
+
+static const uint16_t ud_itab__850[] = {
+ /* 0 */ 0, 1131,
+};
+
+static const uint16_t ud_itab__851[] = {
+ /* 0 */ 0, 1132,
+};
+
+static const uint16_t ud_itab__852[] = {
+ /* 0 */ 0, 1133,
+};
+
+static const uint16_t ud_itab__853[] = {
+ /* 0 */ 0, 1134,
+};
+
+static const uint16_t ud_itab__854[] = {
+ /* 0 */ 0, 1135,
+};
+
+static const uint16_t ud_itab__855[] = {
+ /* 0 */ 0, 1136,
+};
+
+static const uint16_t ud_itab__856[] = {
+ /* 0 */ 0, 1137,
+};
+
+static const uint16_t ud_itab__857[] = {
+ /* 0 */ 0, 1138,
+};
+
+static const uint16_t ud_itab__858[] = {
+ /* 0 */ 0, 1139,
+};
+
+static const uint16_t ud_itab__859[] = {
+ /* 0 */ 0, 1140,
+};
+
+static const uint16_t ud_itab__860[] = {
+ /* 0 */ 0, 1141,
+};
+
+static const uint16_t ud_itab__861[] = {
+ /* 0 */ 0, 1142,
+};
+
+static const uint16_t ud_itab__862[] = {
+ /* 0 */ 0, 1143,
+};
+
+static const uint16_t ud_itab__863[] = {
+ /* 0 */ 0, 1144,
+};
+
+static const uint16_t ud_itab__864[] = {
+ /* 0 */ 0, 1145,
+};
+
+static const uint16_t ud_itab__814[] = {
+ /* 0 */ GROUP(815), GROUP(816), GROUP(817), GROUP(818),
+ /* 4 */ GROUP(819), GROUP(820), GROUP(821), GROUP(822),
+ /* 8 */ GROUP(823), GROUP(824), GROUP(825), GROUP(826),
+ /* c */ GROUP(827), GROUP(828), GROUP(829), GROUP(830),
+ /* 10 */ GROUP(831), GROUP(832), GROUP(833), GROUP(834),
+ /* 14 */ GROUP(835), GROUP(836), GROUP(837), GROUP(838),
+ /* 18 */ GROUP(839), GROUP(840), GROUP(841), GROUP(842),
+ /* 1c */ GROUP(843), GROUP(844), GROUP(845), GROUP(846),
+ /* 20 */ 0, 0, GROUP(847), GROUP(848),
+ /* 24 */ 0, 0, 0, 0,
+ /* 28 */ GROUP(849), GROUP(850), GROUP(851), GROUP(852),
+ /* 2c */ GROUP(853), GROUP(854), GROUP(855), GROUP(856),
+ /* 30 */ GROUP(857), GROUP(858), GROUP(859), GROUP(860),
+ /* 34 */ GROUP(861), GROUP(862), GROUP(863), GROUP(864),
+ /* 38 */ 0, 0, 0, 0,
+ /* 3c */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__806[] = {
+ /* 0 */ GROUP(807), GROUP(814),
+};
+
+static const uint16_t ud_itab__867[] = {
+ /* 0 */ 1146, 0,
+};
+
+static const uint16_t ud_itab__868[] = {
+ /* 0 */ 1147, 0,
+};
+
+static const uint16_t ud_itab__869[] = {
+ /* 0 */ 1148, 0,
+};
+
+static const uint16_t ud_itab__870[] = {
+ /* 0 */ 1149, 0,
+};
+
+static const uint16_t ud_itab__871[] = {
+ /* 0 */ 1150, 0,
+};
+
+static const uint16_t ud_itab__872[] = {
+ /* 0 */ 1151, 0,
+};
+
+static const uint16_t ud_itab__873[] = {
+ /* 0 */ 1152, 0,
+};
+
+static const uint16_t ud_itab__874[] = {
+ /* 0 */ 1153, 0,
+};
+
+static const uint16_t ud_itab__866[] = {
+ /* 0 */ GROUP(867), GROUP(868), GROUP(869), GROUP(870),
+ /* 4 */ GROUP(871), GROUP(872), GROUP(873), GROUP(874),
+};
+
+static const uint16_t ud_itab__876[] = {
+ /* 0 */ 0, 1154,
+};
+
+static const uint16_t ud_itab__877[] = {
+ /* 0 */ 0, 1155,
+};
+
+static const uint16_t ud_itab__878[] = {
+ /* 0 */ 0, 1156,
+};
+
+static const uint16_t ud_itab__879[] = {
+ /* 0 */ 0, 1157,
+};
+
+static const uint16_t ud_itab__880[] = {
+ /* 0 */ 0, 1158,
+};
+
+static const uint16_t ud_itab__881[] = {
+ /* 0 */ 0, 1159,
+};
+
+static const uint16_t ud_itab__882[] = {
+ /* 0 */ 0, 1160,
+};
+
+static const uint16_t ud_itab__883[] = {
+ /* 0 */ 0, 1161,
+};
+
+static const uint16_t ud_itab__884[] = {
+ /* 0 */ 0, 1162,
+};
+
+static const uint16_t ud_itab__885[] = {
+ /* 0 */ 0, 1163,
+};
+
+static const uint16_t ud_itab__886[] = {
+ /* 0 */ 0, 1164,
+};
+
+static const uint16_t ud_itab__887[] = {
+ /* 0 */ 0, 1165,
+};
+
+static const uint16_t ud_itab__888[] = {
+ /* 0 */ 0, 1166,
+};
+
+static const uint16_t ud_itab__889[] = {
+ /* 0 */ 0, 1167,
+};
+
+static const uint16_t ud_itab__890[] = {
+ /* 0 */ 0, 1168,
+};
+
+static const uint16_t ud_itab__891[] = {
+ /* 0 */ 0, 1169,
+};
+
+static const uint16_t ud_itab__892[] = {
+ /* 0 */ 0, 1170,
+};
+
+static const uint16_t ud_itab__893[] = {
+ /* 0 */ 0, 1171,
+};
+
+static const uint16_t ud_itab__894[] = {
+ /* 0 */ 0, 1172,
+};
+
+static const uint16_t ud_itab__895[] = {
+ /* 0 */ 0, 1173,
+};
+
+static const uint16_t ud_itab__896[] = {
+ /* 0 */ 0, 1174,
+};
+
+static const uint16_t ud_itab__897[] = {
+ /* 0 */ 0, 1175,
+};
+
+static const uint16_t ud_itab__898[] = {
+ /* 0 */ 0, 1176,
+};
+
+static const uint16_t ud_itab__899[] = {
+ /* 0 */ 0, 1177,
+};
+
+static const uint16_t ud_itab__900[] = {
+ /* 0 */ 0, 1178,
+};
+
+static const uint16_t ud_itab__901[] = {
+ /* 0 */ 0, 1179,
+};
+
+static const uint16_t ud_itab__902[] = {
+ /* 0 */ 0, 1180,
+};
+
+static const uint16_t ud_itab__903[] = {
+ /* 0 */ 0, 1181,
+};
+
+static const uint16_t ud_itab__904[] = {
+ /* 0 */ 0, 1182,
+};
+
+static const uint16_t ud_itab__905[] = {
+ /* 0 */ 0, 1183,
+};
+
+static const uint16_t ud_itab__906[] = {
+ /* 0 */ 0, 1184,
+};
+
+static const uint16_t ud_itab__907[] = {
+ /* 0 */ 0, 1185,
+};
+
+static const uint16_t ud_itab__908[] = {
+ /* 0 */ 0, 1186,
+};
+
+static const uint16_t ud_itab__909[] = {
+ /* 0 */ 0, 1187,
+};
+
+static const uint16_t ud_itab__910[] = {
+ /* 0 */ 0, 1188,
+};
+
+static const uint16_t ud_itab__911[] = {
+ /* 0 */ 0, 1189,
+};
+
+static const uint16_t ud_itab__912[] = {
+ /* 0 */ 0, 1190,
+};
+
+static const uint16_t ud_itab__913[] = {
+ /* 0 */ 0, 1191,
+};
+
+static const uint16_t ud_itab__914[] = {
+ /* 0 */ 0, 1192,
+};
+
+static const uint16_t ud_itab__915[] = {
+ /* 0 */ 0, 1193,
+};
+
+static const uint16_t ud_itab__916[] = {
+ /* 0 */ 0, 1194,
+};
+
+static const uint16_t ud_itab__917[] = {
+ /* 0 */ 0, 1195,
+};
+
+static const uint16_t ud_itab__918[] = {
+ /* 0 */ 0, 1196,
+};
+
+static const uint16_t ud_itab__919[] = {
+ /* 0 */ 0, 1197,
+};
+
+static const uint16_t ud_itab__920[] = {
+ /* 0 */ 0, 1198,
+};
+
+static const uint16_t ud_itab__921[] = {
+ /* 0 */ 0, 1199,
+};
+
+static const uint16_t ud_itab__922[] = {
+ /* 0 */ 0, 1200,
+};
+
+static const uint16_t ud_itab__923[] = {
+ /* 0 */ 0, 1201,
+};
+
+static const uint16_t ud_itab__924[] = {
+ /* 0 */ 0, 1202,
+};
+
+static const uint16_t ud_itab__925[] = {
+ /* 0 */ 0, 1203,
+};
+
+static const uint16_t ud_itab__926[] = {
+ /* 0 */ 0, 1204,
+};
+
+static const uint16_t ud_itab__927[] = {
+ /* 0 */ 0, 1205,
+};
+
+static const uint16_t ud_itab__928[] = {
+ /* 0 */ 0, 1206,
+};
+
+static const uint16_t ud_itab__929[] = {
+ /* 0 */ 0, 1207,
+};
+
+static const uint16_t ud_itab__930[] = {
+ /* 0 */ 0, 1208,
+};
+
+static const uint16_t ud_itab__931[] = {
+ /* 0 */ 0, 1209,
+};
+
+static const uint16_t ud_itab__932[] = {
+ /* 0 */ 0, 1210,
+};
+
+static const uint16_t ud_itab__933[] = {
+ /* 0 */ 0, 1211,
+};
+
+static const uint16_t ud_itab__934[] = {
+ /* 0 */ 0, 1212,
+};
+
+static const uint16_t ud_itab__935[] = {
+ /* 0 */ 0, 1213,
+};
+
+static const uint16_t ud_itab__936[] = {
+ /* 0 */ 0, 1214,
+};
+
+static const uint16_t ud_itab__937[] = {
+ /* 0 */ 0, 1215,
+};
+
+static const uint16_t ud_itab__938[] = {
+ /* 0 */ 0, 1216,
+};
+
+static const uint16_t ud_itab__939[] = {
+ /* 0 */ 0, 1217,
+};
+
+static const uint16_t ud_itab__875[] = {
+ /* 0 */ GROUP(876), GROUP(877), GROUP(878), GROUP(879),
+ /* 4 */ GROUP(880), GROUP(881), GROUP(882), GROUP(883),
+ /* 8 */ GROUP(884), GROUP(885), GROUP(886), GROUP(887),
+ /* c */ GROUP(888), GROUP(889), GROUP(890), GROUP(891),
+ /* 10 */ GROUP(892), GROUP(893), GROUP(894), GROUP(895),
+ /* 14 */ GROUP(896), GROUP(897), GROUP(898), GROUP(899),
+ /* 18 */ GROUP(900), GROUP(901), GROUP(902), GROUP(903),
+ /* 1c */ GROUP(904), GROUP(905), GROUP(906), GROUP(907),
+ /* 20 */ GROUP(908), GROUP(909), GROUP(910), GROUP(911),
+ /* 24 */ GROUP(912), GROUP(913), GROUP(914), GROUP(915),
+ /* 28 */ GROUP(916), GROUP(917), GROUP(918), GROUP(919),
+ /* 2c */ GROUP(920), GROUP(921), GROUP(922), GROUP(923),
+ /* 30 */ GROUP(924), GROUP(925), GROUP(926), GROUP(927),
+ /* 34 */ GROUP(928), GROUP(929), GROUP(930), GROUP(931),
+ /* 38 */ GROUP(932), GROUP(933), GROUP(934), GROUP(935),
+ /* 3c */ GROUP(936), GROUP(937), GROUP(938), GROUP(939),
+};
+
+static const uint16_t ud_itab__865[] = {
+ /* 0 */ GROUP(866), GROUP(875),
+};
+
+static const uint16_t ud_itab__942[] = {
+ /* 0 */ 1218, 0,
+};
+
+static const uint16_t ud_itab__943[] = {
+ /* 0 */ 1219, 0,
+};
+
+static const uint16_t ud_itab__944[] = {
+ /* 0 */ 1220, 0,
+};
+
+static const uint16_t ud_itab__945[] = {
+ /* 0 */ 1221, 0,
+};
+
+static const uint16_t ud_itab__946[] = {
+ /* 0 */ 1222, 0,
+};
+
+static const uint16_t ud_itab__947[] = {
+ /* 0 */ 1223, 0,
+};
+
+static const uint16_t ud_itab__948[] = {
+ /* 0 */ 1224, 0,
+};
+
+static const uint16_t ud_itab__941[] = {
+ /* 0 */ GROUP(942), GROUP(943), GROUP(944), GROUP(945),
+ /* 4 */ GROUP(946), 0, GROUP(947), GROUP(948),
+};
+
+static const uint16_t ud_itab__950[] = {
+ /* 0 */ 0, 1225,
+};
+
+static const uint16_t ud_itab__951[] = {
+ /* 0 */ 0, 1226,
+};
+
+static const uint16_t ud_itab__952[] = {
+ /* 0 */ 0, 1227,
+};
+
+static const uint16_t ud_itab__953[] = {
+ /* 0 */ 0, 1228,
+};
+
+static const uint16_t ud_itab__954[] = {
+ /* 0 */ 0, 1229,
+};
+
+static const uint16_t ud_itab__955[] = {
+ /* 0 */ 0, 1230,
+};
+
+static const uint16_t ud_itab__956[] = {
+ /* 0 */ 0, 1231,
+};
+
+static const uint16_t ud_itab__957[] = {
+ /* 0 */ 0, 1232,
+};
+
+static const uint16_t ud_itab__958[] = {
+ /* 0 */ 0, 1233,
+};
+
+static const uint16_t ud_itab__959[] = {
+ /* 0 */ 0, 1234,
+};
+
+static const uint16_t ud_itab__960[] = {
+ /* 0 */ 0, 1235,
+};
+
+static const uint16_t ud_itab__961[] = {
+ /* 0 */ 0, 1236,
+};
+
+static const uint16_t ud_itab__962[] = {
+ /* 0 */ 0, 1237,
+};
+
+static const uint16_t ud_itab__963[] = {
+ /* 0 */ 0, 1238,
+};
+
+static const uint16_t ud_itab__964[] = {
+ /* 0 */ 0, 1239,
+};
+
+static const uint16_t ud_itab__965[] = {
+ /* 0 */ 0, 1240,
+};
+
+static const uint16_t ud_itab__966[] = {
+ /* 0 */ 0, 1241,
+};
+
+static const uint16_t ud_itab__967[] = {
+ /* 0 */ 0, 1242,
+};
+
+static const uint16_t ud_itab__968[] = {
+ /* 0 */ 0, 1243,
+};
+
+static const uint16_t ud_itab__969[] = {
+ /* 0 */ 0, 1244,
+};
+
+static const uint16_t ud_itab__970[] = {
+ /* 0 */ 0, 1245,
+};
+
+static const uint16_t ud_itab__971[] = {
+ /* 0 */ 0, 1246,
+};
+
+static const uint16_t ud_itab__972[] = {
+ /* 0 */ 0, 1247,
+};
+
+static const uint16_t ud_itab__973[] = {
+ /* 0 */ 0, 1248,
+};
+
+static const uint16_t ud_itab__974[] = {
+ /* 0 */ 0, 1249,
+};
+
+static const uint16_t ud_itab__975[] = {
+ /* 0 */ 0, 1250,
+};
+
+static const uint16_t ud_itab__976[] = {
+ /* 0 */ 0, 1251,
+};
+
+static const uint16_t ud_itab__977[] = {
+ /* 0 */ 0, 1252,
+};
+
+static const uint16_t ud_itab__978[] = {
+ /* 0 */ 0, 1253,
+};
+
+static const uint16_t ud_itab__979[] = {
+ /* 0 */ 0, 1254,
+};
+
+static const uint16_t ud_itab__980[] = {
+ /* 0 */ 0, 1255,
+};
+
+static const uint16_t ud_itab__981[] = {
+ /* 0 */ 0, 1256,
+};
+
+static const uint16_t ud_itab__982[] = {
+ /* 0 */ 0, 1257,
+};
+
+static const uint16_t ud_itab__983[] = {
+ /* 0 */ 0, 1258,
+};
+
+static const uint16_t ud_itab__984[] = {
+ /* 0 */ 0, 1259,
+};
+
+static const uint16_t ud_itab__985[] = {
+ /* 0 */ 0, 1260,
+};
+
+static const uint16_t ud_itab__986[] = {
+ /* 0 */ 0, 1261,
+};
+
+static const uint16_t ud_itab__987[] = {
+ /* 0 */ 0, 1262,
+};
+
+static const uint16_t ud_itab__988[] = {
+ /* 0 */ 0, 1263,
+};
+
+static const uint16_t ud_itab__989[] = {
+ /* 0 */ 0, 1264,
+};
+
+static const uint16_t ud_itab__990[] = {
+ /* 0 */ 0, 1265,
+};
+
+static const uint16_t ud_itab__991[] = {
+ /* 0 */ 0, 1266,
+};
+
+static const uint16_t ud_itab__992[] = {
+ /* 0 */ 0, 1267,
+};
+
+static const uint16_t ud_itab__993[] = {
+ /* 0 */ 0, 1268,
+};
+
+static const uint16_t ud_itab__994[] = {
+ /* 0 */ 0, 1269,
+};
+
+static const uint16_t ud_itab__995[] = {
+ /* 0 */ 0, 1270,
+};
+
+static const uint16_t ud_itab__996[] = {
+ /* 0 */ 0, 1271,
+};
+
+static const uint16_t ud_itab__997[] = {
+ /* 0 */ 0, 1272,
+};
+
+static const uint16_t ud_itab__949[] = {
+ /* 0 */ GROUP(950), GROUP(951), GROUP(952), GROUP(953),
+ /* 4 */ GROUP(954), GROUP(955), GROUP(956), GROUP(957),
+ /* 8 */ GROUP(958), GROUP(959), GROUP(960), GROUP(961),
+ /* c */ GROUP(962), GROUP(963), GROUP(964), GROUP(965),
+ /* 10 */ GROUP(966), GROUP(967), GROUP(968), GROUP(969),
+ /* 14 */ GROUP(970), GROUP(971), GROUP(972), GROUP(973),
+ /* 18 */ GROUP(974), GROUP(975), GROUP(976), GROUP(977),
+ /* 1c */ GROUP(978), GROUP(979), GROUP(980), GROUP(981),
+ /* 20 */ GROUP(982), GROUP(983), GROUP(984), GROUP(985),
+ /* 24 */ GROUP(986), GROUP(987), GROUP(988), GROUP(989),
+ /* 28 */ GROUP(990), GROUP(991), GROUP(992), GROUP(993),
+ /* 2c */ GROUP(994), GROUP(995), GROUP(996), GROUP(997),
+ /* 30 */ 0, 0, 0, 0,
+ /* 34 */ 0, 0, 0, 0,
+ /* 38 */ 0, 0, 0, 0,
+ /* 3c */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__940[] = {
+ /* 0 */ GROUP(941), GROUP(949),
+};
+
+static const uint16_t ud_itab__1000[] = {
+ /* 0 */ 1273, 0,
+};
+
+static const uint16_t ud_itab__1001[] = {
+ /* 0 */ 1274, 0,
+};
+
+static const uint16_t ud_itab__1002[] = {
+ /* 0 */ 1275, 0,
+};
+
+static const uint16_t ud_itab__1003[] = {
+ /* 0 */ 1276, 0,
+};
+
+static const uint16_t ud_itab__1004[] = {
+ /* 0 */ 1277, 0,
+};
+
+static const uint16_t ud_itab__1005[] = {
+ /* 0 */ 1278, 0,
+};
+
+static const uint16_t ud_itab__1006[] = {
+ /* 0 */ 1279, 0,
+};
+
+static const uint16_t ud_itab__1007[] = {
+ /* 0 */ 1280, 0,
+};
+
+static const uint16_t ud_itab__999[] = {
+ /* 0 */ GROUP(1000), GROUP(1001), GROUP(1002), GROUP(1003),
+ /* 4 */ GROUP(1004), GROUP(1005), GROUP(1006), GROUP(1007),
+};
+
+static const uint16_t ud_itab__1009[] = {
+ /* 0 */ 0, 1281,
+};
+
+static const uint16_t ud_itab__1010[] = {
+ /* 0 */ 0, 1282,
+};
+
+static const uint16_t ud_itab__1011[] = {
+ /* 0 */ 0, 1283,
+};
+
+static const uint16_t ud_itab__1012[] = {
+ /* 0 */ 0, 1284,
+};
+
+static const uint16_t ud_itab__1013[] = {
+ /* 0 */ 0, 1285,
+};
+
+static const uint16_t ud_itab__1014[] = {
+ /* 0 */ 0, 1286,
+};
+
+static const uint16_t ud_itab__1015[] = {
+ /* 0 */ 0, 1287,
+};
+
+static const uint16_t ud_itab__1016[] = {
+ /* 0 */ 0, 1288,
+};
+
+static const uint16_t ud_itab__1017[] = {
+ /* 0 */ 0, 1289,
+};
+
+static const uint16_t ud_itab__1018[] = {
+ /* 0 */ 0, 1290,
+};
+
+static const uint16_t ud_itab__1019[] = {
+ /* 0 */ 0, 1291,
+};
+
+static const uint16_t ud_itab__1020[] = {
+ /* 0 */ 0, 1292,
+};
+
+static const uint16_t ud_itab__1021[] = {
+ /* 0 */ 0, 1293,
+};
+
+static const uint16_t ud_itab__1022[] = {
+ /* 0 */ 0, 1294,
+};
+
+static const uint16_t ud_itab__1023[] = {
+ /* 0 */ 0, 1295,
+};
+
+static const uint16_t ud_itab__1024[] = {
+ /* 0 */ 0, 1296,
+};
+
+static const uint16_t ud_itab__1025[] = {
+ /* 0 */ 0, 1297,
+};
+
+static const uint16_t ud_itab__1026[] = {
+ /* 0 */ 0, 1298,
+};
+
+static const uint16_t ud_itab__1027[] = {
+ /* 0 */ 0, 1299,
+};
+
+static const uint16_t ud_itab__1028[] = {
+ /* 0 */ 0, 1300,
+};
+
+static const uint16_t ud_itab__1029[] = {
+ /* 0 */ 0, 1301,
+};
+
+static const uint16_t ud_itab__1030[] = {
+ /* 0 */ 0, 1302,
+};
+
+static const uint16_t ud_itab__1031[] = {
+ /* 0 */ 0, 1303,
+};
+
+static const uint16_t ud_itab__1032[] = {
+ /* 0 */ 0, 1304,
+};
+
+static const uint16_t ud_itab__1033[] = {
+ /* 0 */ 0, 1305,
+};
+
+static const uint16_t ud_itab__1034[] = {
+ /* 0 */ 0, 1306,
+};
+
+static const uint16_t ud_itab__1035[] = {
+ /* 0 */ 0, 1307,
+};
+
+static const uint16_t ud_itab__1036[] = {
+ /* 0 */ 0, 1308,
+};
+
+static const uint16_t ud_itab__1037[] = {
+ /* 0 */ 0, 1309,
+};
+
+static const uint16_t ud_itab__1038[] = {
+ /* 0 */ 0, 1310,
+};
+
+static const uint16_t ud_itab__1039[] = {
+ /* 0 */ 0, 1311,
+};
+
+static const uint16_t ud_itab__1040[] = {
+ /* 0 */ 0, 1312,
+};
+
+static const uint16_t ud_itab__1041[] = {
+ /* 0 */ 0, 1313,
+};
+
+static const uint16_t ud_itab__1042[] = {
+ /* 0 */ 0, 1314,
+};
+
+static const uint16_t ud_itab__1043[] = {
+ /* 0 */ 0, 1315,
+};
+
+static const uint16_t ud_itab__1044[] = {
+ /* 0 */ 0, 1316,
+};
+
+static const uint16_t ud_itab__1045[] = {
+ /* 0 */ 0, 1317,
+};
+
+static const uint16_t ud_itab__1046[] = {
+ /* 0 */ 0, 1318,
+};
+
+static const uint16_t ud_itab__1047[] = {
+ /* 0 */ 0, 1319,
+};
+
+static const uint16_t ud_itab__1048[] = {
+ /* 0 */ 0, 1320,
+};
+
+static const uint16_t ud_itab__1049[] = {
+ /* 0 */ 0, 1321,
+};
+
+static const uint16_t ud_itab__1050[] = {
+ /* 0 */ 0, 1322,
+};
+
+static const uint16_t ud_itab__1051[] = {
+ /* 0 */ 0, 1323,
+};
+
+static const uint16_t ud_itab__1052[] = {
+ /* 0 */ 0, 1324,
+};
+
+static const uint16_t ud_itab__1053[] = {
+ /* 0 */ 0, 1325,
+};
+
+static const uint16_t ud_itab__1054[] = {
+ /* 0 */ 0, 1326,
+};
+
+static const uint16_t ud_itab__1055[] = {
+ /* 0 */ 0, 1327,
+};
+
+static const uint16_t ud_itab__1056[] = {
+ /* 0 */ 0, 1328,
+};
+
+static const uint16_t ud_itab__1057[] = {
+ /* 0 */ 0, 1329,
+};
+
+static const uint16_t ud_itab__1058[] = {
+ /* 0 */ 0, 1330,
+};
+
+static const uint16_t ud_itab__1059[] = {
+ /* 0 */ 0, 1331,
+};
+
+static const uint16_t ud_itab__1060[] = {
+ /* 0 */ 0, 1332,
+};
+
+static const uint16_t ud_itab__1061[] = {
+ /* 0 */ 0, 1333,
+};
+
+static const uint16_t ud_itab__1062[] = {
+ /* 0 */ 0, 1334,
+};
+
+static const uint16_t ud_itab__1063[] = {
+ /* 0 */ 0, 1335,
+};
+
+static const uint16_t ud_itab__1064[] = {
+ /* 0 */ 0, 1336,
+};
+
+static const uint16_t ud_itab__1065[] = {
+ /* 0 */ 0, 1337,
+};
+
+static const uint16_t ud_itab__1008[] = {
+ /* 0 */ GROUP(1009), GROUP(1010), GROUP(1011), GROUP(1012),
+ /* 4 */ GROUP(1013), GROUP(1014), GROUP(1015), GROUP(1016),
+ /* 8 */ GROUP(1017), GROUP(1018), GROUP(1019), GROUP(1020),
+ /* c */ GROUP(1021), GROUP(1022), GROUP(1023), GROUP(1024),
+ /* 10 */ GROUP(1025), GROUP(1026), GROUP(1027), GROUP(1028),
+ /* 14 */ GROUP(1029), GROUP(1030), GROUP(1031), GROUP(1032),
+ /* 18 */ 0, GROUP(1033), 0, 0,
+ /* 1c */ 0, 0, 0, 0,
+ /* 20 */ GROUP(1034), GROUP(1035), GROUP(1036), GROUP(1037),
+ /* 24 */ GROUP(1038), GROUP(1039), GROUP(1040), GROUP(1041),
+ /* 28 */ GROUP(1042), GROUP(1043), GROUP(1044), GROUP(1045),
+ /* 2c */ GROUP(1046), GROUP(1047), GROUP(1048), GROUP(1049),
+ /* 30 */ GROUP(1050), GROUP(1051), GROUP(1052), GROUP(1053),
+ /* 34 */ GROUP(1054), GROUP(1055), GROUP(1056), GROUP(1057),
+ /* 38 */ GROUP(1058), GROUP(1059), GROUP(1060), GROUP(1061),
+ /* 3c */ GROUP(1062), GROUP(1063), GROUP(1064), GROUP(1065),
+};
+
+static const uint16_t ud_itab__998[] = {
+ /* 0 */ GROUP(999), GROUP(1008),
+};
+
+static const uint16_t ud_itab__1068[] = {
+ /* 0 */ 1338, 0,
+};
+
+static const uint16_t ud_itab__1069[] = {
+ /* 0 */ 1339, 0,
+};
+
+static const uint16_t ud_itab__1070[] = {
+ /* 0 */ 1340, 0,
+};
+
+static const uint16_t ud_itab__1071[] = {
+ /* 0 */ 1341, 0,
+};
+
+static const uint16_t ud_itab__1072[] = {
+ /* 0 */ 1342, 0,
+};
+
+static const uint16_t ud_itab__1073[] = {
+ /* 0 */ 1343, 0,
+};
+
+static const uint16_t ud_itab__1074[] = {
+ /* 0 */ 1344, 0,
+};
+
+static const uint16_t ud_itab__1075[] = {
+ /* 0 */ 1345, 0,
+};
+
+static const uint16_t ud_itab__1067[] = {
+ /* 0 */ GROUP(1068), GROUP(1069), GROUP(1070), GROUP(1071),
+ /* 4 */ GROUP(1072), GROUP(1073), GROUP(1074), GROUP(1075),
+};
+
+static const uint16_t ud_itab__1077[] = {
+ /* 0 */ 0, 1346,
+};
+
+static const uint16_t ud_itab__1078[] = {
+ /* 0 */ 0, 1347,
+};
+
+static const uint16_t ud_itab__1079[] = {
+ /* 0 */ 0, 1348,
+};
+
+static const uint16_t ud_itab__1080[] = {
+ /* 0 */ 0, 1349,
+};
+
+static const uint16_t ud_itab__1081[] = {
+ /* 0 */ 0, 1350,
+};
+
+static const uint16_t ud_itab__1082[] = {
+ /* 0 */ 0, 1351,
+};
+
+static const uint16_t ud_itab__1083[] = {
+ /* 0 */ 0, 1352,
+};
+
+static const uint16_t ud_itab__1084[] = {
+ /* 0 */ 0, 1353,
+};
+
+static const uint16_t ud_itab__1085[] = {
+ /* 0 */ 0, 1354,
+};
+
+static const uint16_t ud_itab__1086[] = {
+ /* 0 */ 0, 1355,
+};
+
+static const uint16_t ud_itab__1087[] = {
+ /* 0 */ 0, 1356,
+};
+
+static const uint16_t ud_itab__1088[] = {
+ /* 0 */ 0, 1357,
+};
+
+static const uint16_t ud_itab__1089[] = {
+ /* 0 */ 0, 1358,
+};
+
+static const uint16_t ud_itab__1090[] = {
+ /* 0 */ 0, 1359,
+};
+
+static const uint16_t ud_itab__1091[] = {
+ /* 0 */ 0, 1360,
+};
+
+static const uint16_t ud_itab__1092[] = {
+ /* 0 */ 0, 1361,
+};
+
+static const uint16_t ud_itab__1093[] = {
+ /* 0 */ 0, 1362,
+};
+
+static const uint16_t ud_itab__1094[] = {
+ /* 0 */ 0, 1363,
+};
+
+static const uint16_t ud_itab__1095[] = {
+ /* 0 */ 0, 1364,
+};
+
+static const uint16_t ud_itab__1096[] = {
+ /* 0 */ 0, 1365,
+};
+
+static const uint16_t ud_itab__1097[] = {
+ /* 0 */ 0, 1366,
+};
+
+static const uint16_t ud_itab__1098[] = {
+ /* 0 */ 0, 1367,
+};
+
+static const uint16_t ud_itab__1099[] = {
+ /* 0 */ 0, 1368,
+};
+
+static const uint16_t ud_itab__1100[] = {
+ /* 0 */ 0, 1369,
+};
+
+static const uint16_t ud_itab__1101[] = {
+ /* 0 */ 0, 1370,
+};
+
+static const uint16_t ud_itab__1102[] = {
+ /* 0 */ 0, 1371,
+};
+
+static const uint16_t ud_itab__1103[] = {
+ /* 0 */ 0, 1372,
+};
+
+static const uint16_t ud_itab__1104[] = {
+ /* 0 */ 0, 1373,
+};
+
+static const uint16_t ud_itab__1105[] = {
+ /* 0 */ 0, 1374,
+};
+
+static const uint16_t ud_itab__1106[] = {
+ /* 0 */ 0, 1375,
+};
+
+static const uint16_t ud_itab__1107[] = {
+ /* 0 */ 0, 1376,
+};
+
+static const uint16_t ud_itab__1108[] = {
+ /* 0 */ 0, 1377,
+};
+
+static const uint16_t ud_itab__1109[] = {
+ /* 0 */ 0, 1378,
+};
+
+static const uint16_t ud_itab__1110[] = {
+ /* 0 */ 0, 1379,
+};
+
+static const uint16_t ud_itab__1111[] = {
+ /* 0 */ 0, 1380,
+};
+
+static const uint16_t ud_itab__1112[] = {
+ /* 0 */ 0, 1381,
+};
+
+static const uint16_t ud_itab__1113[] = {
+ /* 0 */ 0, 1382,
+};
+
+static const uint16_t ud_itab__1114[] = {
+ /* 0 */ 0, 1383,
+};
+
+static const uint16_t ud_itab__1115[] = {
+ /* 0 */ 0, 1384,
+};
+
+static const uint16_t ud_itab__1116[] = {
+ /* 0 */ 0, 1385,
+};
+
+static const uint16_t ud_itab__1117[] = {
+ /* 0 */ 0, 1386,
+};
+
+static const uint16_t ud_itab__1118[] = {
+ /* 0 */ 0, 1387,
+};
+
+static const uint16_t ud_itab__1119[] = {
+ /* 0 */ 0, 1388,
+};
+
+static const uint16_t ud_itab__1120[] = {
+ /* 0 */ 0, 1389,
+};
+
+static const uint16_t ud_itab__1121[] = {
+ /* 0 */ 0, 1390,
+};
+
+static const uint16_t ud_itab__1122[] = {
+ /* 0 */ 0, 1391,
+};
+
+static const uint16_t ud_itab__1123[] = {
+ /* 0 */ 0, 1392,
+};
+
+static const uint16_t ud_itab__1124[] = {
+ /* 0 */ 0, 1393,
+};
+
+static const uint16_t ud_itab__1125[] = {
+ /* 0 */ 0, 1394,
+};
+
+static const uint16_t ud_itab__1076[] = {
+ /* 0 */ GROUP(1077), GROUP(1078), GROUP(1079), GROUP(1080),
+ /* 4 */ GROUP(1081), GROUP(1082), GROUP(1083), GROUP(1084),
+ /* 8 */ GROUP(1085), GROUP(1086), GROUP(1087), GROUP(1088),
+ /* c */ GROUP(1089), GROUP(1090), GROUP(1091), GROUP(1092),
+ /* 10 */ GROUP(1093), GROUP(1094), GROUP(1095), GROUP(1096),
+ /* 14 */ GROUP(1097), GROUP(1098), GROUP(1099), GROUP(1100),
+ /* 18 */ GROUP(1101), GROUP(1102), GROUP(1103), GROUP(1104),
+ /* 1c */ GROUP(1105), GROUP(1106), GROUP(1107), GROUP(1108),
+ /* 20 */ GROUP(1109), 0, 0, 0,
+ /* 24 */ 0, 0, 0, 0,
+ /* 28 */ GROUP(1110), GROUP(1111), GROUP(1112), GROUP(1113),
+ /* 2c */ GROUP(1114), GROUP(1115), GROUP(1116), GROUP(1117),
+ /* 30 */ GROUP(1118), GROUP(1119), GROUP(1120), GROUP(1121),
+ /* 34 */ GROUP(1122), GROUP(1123), GROUP(1124), GROUP(1125),
+ /* 38 */ 0, 0, 0, 0,
+ /* 3c */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__1066[] = {
+ /* 0 */ GROUP(1067), GROUP(1076),
+};
+
+static const uint16_t ud_itab__1126[] = {
+ /* 0 */ 1398, 1399, 1400,
+};
+
+static const uint16_t ud_itab__1127[] = {
+ /* 0 */ 1407, 0,
+};
+
+static const uint16_t ud_itab__1128[] = {
+ /* 0 */ 1419, 1420, 1421, 1422,
+ /* 4 */ 1423, 1424, 1425, 1426,
+};
+
+static const uint16_t ud_itab__1129[] = {
+ /* 0 */ 1427, 1428, 1429, 1430,
+ /* 4 */ 1431, 1432, 1433, 1434,
+};
+
+static const uint16_t ud_itab__1130[] = {
+ /* 0 */ 1441, 1442, 0, 0,
+ /* 4 */ 0, 0, 0, 0,
+};
+
+static const uint16_t ud_itab__1132[] = {
+ /* 0 */ 1445, 1446,
+};
+
+static const uint16_t ud_itab__1131[] = {
+ /* 0 */ 1443, 1444, GROUP(1132), 1447,
+ /* 4 */ 1448, 1449, 1450, 0,
+};
+
+const uint16_t ud_itab__0[] = {
+ /* 0 */ 1, 2, 3, 4,
+ /* 4 */ 5, 6, GROUP(1), GROUP(2),
+ /* 8 */ 9, 10, 11, 12,
+ /* c */ 13, 14, GROUP(3), GROUP(4),
+ /* 10 */ 628, 629, 630, 631,
+ /* 14 */ 632, 633, GROUP(563), GROUP(564),
+ /* 18 */ 636, 637, 638, 639,
+ /* 1c */ 640, 641, GROUP(565), GROUP(566),
+ /* 20 */ 644, 645, 646, 647,
+ /* 24 */ 648, 649, 0, GROUP(567),
+ /* 28 */ 651, 652, 653, 654,
+ /* 2c */ 655, 656, 0, GROUP(568),
+ /* 30 */ 658, 659, 660, 661,
+ /* 34 */ 662, 663, 0, GROUP(569),
+ /* 38 */ 665, 666, 667, 668,
+ /* 3c */ 669, 670, 0, GROUP(570),
+ /* 40 */ 672, 673, 674, 675,
+ /* 44 */ 676, 677, 678, 679,
+ /* 48 */ 680, 681, 682, 683,
+ /* 4c */ 684, 685, 686, 687,
+ /* 50 */ 688, 689, 690, 691,
+ /* 54 */ 692, 693, 694, 695,
+ /* 58 */ 696, 697, 698, 699,
+ /* 5c */ 700, 701, 702, 703,
+ /* 60 */ GROUP(571), GROUP(574), GROUP(577), GROUP(578),
+ /* 64 */ 0, 0, 0, 0,
+ /* 68 */ 711, 712, 713, 714,
+ /* 6c */ 715, GROUP(579), 718, GROUP(580),
+ /* 70 */ 721, 722, 723, 724,
+ /* 74 */ 725, 726, 727, 728,
+ /* 78 */ 729, 730, 731, 732,
+ /* 7c */ 733, 734, 735, 736,
+ /* 80 */ GROUP(581), GROUP(582), GROUP(583), GROUP(592),
+ /* 84 */ 769, 770, 771, 772,
+ /* 88 */ 773, 774, 775, 776,
+ /* 8c */ 777, 778, 779, GROUP(593),
+ /* 90 */ 781, 782, 783, 784,
+ /* 94 */ 785, 786, 787, 788,
+ /* 98 */ GROUP(594), GROUP(595), GROUP(596), 796,
+ /* 9c */ GROUP(597), GROUP(601), 806, 807,
+ /* a0 */ 808, 809, 810, 811,
+ /* a4 */ 812, GROUP(605), 816, GROUP(606),
+ /* a8 */ 820, 821, 822, GROUP(607),
+ /* ac */ 826, GROUP(608), 830, GROUP(609),
+ /* b0 */ 834, 835, 836, 837,
+ /* b4 */ 838, 839, 840, 841,
+ /* b8 */ 842, 843, 844, 845,
+ /* bc */ 846, 847, 848, 849,
+ /* c0 */ GROUP(610), GROUP(611), 866, 867,
+ /* c4 */ GROUP(612), GROUP(613), GROUP(614), GROUP(615),
+ /* c8 */ 872, 873, 874, 875,
+ /* cc */ 876, 877, GROUP(616), GROUP(617),
+ /* d0 */ GROUP(618), GROUP(619), GROUP(620), GROUP(621),
+ /* d4 */ GROUP(622), GROUP(623), GROUP(624), 917,
+ /* d8 */ GROUP(625), GROUP(700), GROUP(762), GROUP(806),
+ /* dc */ GROUP(865), GROUP(940), GROUP(998), GROUP(1066),
+ /* e0 */ 1395, 1396, 1397, GROUP(1126),
+ /* e4 */ 1401, 1402, 1403, 1404,
+ /* e8 */ 1405, 1406, GROUP(1127), 1408,
+ /* ec */ 1409, 1410, 1411, 1412,
+ /* f0 */ 1413, 1414, 1415, 1416,
+ /* f4 */ 1417, 1418, GROUP(1128), GROUP(1129),
+ /* f8 */ 1435, 1436, 1437, 1438,
+ /* fc */ 1439, 1440, GROUP(1130), GROUP(1131),
+};
+
+
+struct ud_lookup_table_list_entry ud_lookup_table_list[] = {
+ /* 000 */ { ud_itab__0, UD_TAB__OPC_TABLE, "table0" },
+ /* 001 */ { ud_itab__1, UD_TAB__OPC_MODE, "/m" },
+ /* 002 */ { ud_itab__2, UD_TAB__OPC_MODE, "/m" },
+ /* 003 */ { ud_itab__3, UD_TAB__OPC_MODE, "/m" },
+ /* 004 */ { ud_itab__4, UD_TAB__OPC_TABLE, "0f" },
+ /* 005 */ { ud_itab__5, UD_TAB__OPC_REG, "/reg" },
+ /* 006 */ { ud_itab__6, UD_TAB__OPC_SSE, "/sse" },
+ /* 007 */ { ud_itab__7, UD_TAB__OPC_SSE, "/sse" },
+ /* 008 */ { ud_itab__8, UD_TAB__OPC_SSE, "/sse" },
+ /* 009 */ { ud_itab__9, UD_TAB__OPC_SSE, "/sse" },
+ /* 010 */ { ud_itab__10, UD_TAB__OPC_SSE, "/sse" },
+ /* 011 */ { ud_itab__11, UD_TAB__OPC_SSE, "/sse" },
+ /* 012 */ { ud_itab__12, UD_TAB__OPC_MOD, "/mod" },
+ /* 013 */ { ud_itab__13, UD_TAB__OPC_REG, "/reg" },
+ /* 014 */ { ud_itab__14, UD_TAB__OPC_SSE, "/sse" },
+ /* 015 */ { ud_itab__15, UD_TAB__OPC_MOD, "/mod" },
+ /* 016 */ { ud_itab__16, UD_TAB__OPC_SSE, "/sse" },
+ /* 017 */ { ud_itab__17, UD_TAB__OPC_MOD, "/mod" },
+ /* 018 */ { ud_itab__18, UD_TAB__OPC_SSE, "/sse" },
+ /* 019 */ { ud_itab__19, UD_TAB__OPC_MOD, "/mod" },
+ /* 020 */ { ud_itab__20, UD_TAB__OPC_SSE, "/sse" },
+ /* 021 */ { ud_itab__21, UD_TAB__OPC_MOD, "/mod" },
+ /* 022 */ { ud_itab__22, UD_TAB__OPC_SSE, "/sse" },
+ /* 023 */ { ud_itab__23, UD_TAB__OPC_MOD, "/mod" },
+ /* 024 */ { ud_itab__24, UD_TAB__OPC_SSE, "/sse" },
+ /* 025 */ { ud_itab__25, UD_TAB__OPC_MOD, "/mod" },
+ /* 026 */ { ud_itab__26, UD_TAB__OPC_SSE, "/sse" },
+ /* 027 */ { ud_itab__27, UD_TAB__OPC_MOD, "/mod" },
+ /* 028 */ { ud_itab__28, UD_TAB__OPC_REG, "/reg" },
+ /* 029 */ { ud_itab__29, UD_TAB__OPC_RM, "/rm" },
+ /* 030 */ { ud_itab__30, UD_TAB__OPC_SSE, "/sse" },
+ /* 031 */ { ud_itab__31, UD_TAB__OPC_MOD, "/mod" },
+ /* 032 */ { ud_itab__32, UD_TAB__OPC_VENDOR, "intel" },
+ /* 033 */ { ud_itab__33, UD_TAB__OPC_SSE, "/sse" },
+ /* 034 */ { ud_itab__34, UD_TAB__OPC_MOD, "/mod" },
+ /* 035 */ { ud_itab__35, UD_TAB__OPC_VENDOR, "intel" },
+ /* 036 */ { ud_itab__36, UD_TAB__OPC_SSE, "/sse" },
+ /* 037 */ { ud_itab__37, UD_TAB__OPC_MOD, "/mod" },
+ /* 038 */ { ud_itab__38, UD_TAB__OPC_VENDOR, "intel" },
+ /* 039 */ { ud_itab__39, UD_TAB__OPC_SSE, "/sse" },
+ /* 040 */ { ud_itab__40, UD_TAB__OPC_MOD, "/mod" },
+ /* 041 */ { ud_itab__41, UD_TAB__OPC_VENDOR, "intel" },
+ /* 042 */ { ud_itab__42, UD_TAB__OPC_RM, "/rm" },
+ /* 043 */ { ud_itab__43, UD_TAB__OPC_SSE, "/sse" },
+ /* 044 */ { ud_itab__44, UD_TAB__OPC_MOD, "/mod" },
+ /* 045 */ { ud_itab__45, UD_TAB__OPC_SSE, "/sse" },
+ /* 046 */ { ud_itab__46, UD_TAB__OPC_MOD, "/mod" },
+ /* 047 */ { ud_itab__47, UD_TAB__OPC_RM, "/rm" },
+ /* 048 */ { ud_itab__48, UD_TAB__OPC_SSE, "/sse" },
+ /* 049 */ { ud_itab__49, UD_TAB__OPC_MOD, "/mod" },
+ /* 050 */ { ud_itab__50, UD_TAB__OPC_SSE, "/sse" },
+ /* 051 */ { ud_itab__51, UD_TAB__OPC_MOD, "/mod" },
+ /* 052 */ { ud_itab__52, UD_TAB__OPC_RM, "/rm" },
+ /* 053 */ { ud_itab__53, UD_TAB__OPC_SSE, "/sse" },
+ /* 054 */ { ud_itab__54, UD_TAB__OPC_MOD, "/mod" },
+ /* 055 */ { ud_itab__55, UD_TAB__OPC_VENDOR, "amd" },
+ /* 056 */ { ud_itab__56, UD_TAB__OPC_SSE, "/sse" },
+ /* 057 */ { ud_itab__57, UD_TAB__OPC_MOD, "/mod" },
+ /* 058 */ { ud_itab__58, UD_TAB__OPC_VENDOR, "amd" },
+ /* 059 */ { ud_itab__59, UD_TAB__OPC_SSE, "/sse" },
+ /* 060 */ { ud_itab__60, UD_TAB__OPC_MOD, "/mod" },
+ /* 061 */ { ud_itab__61, UD_TAB__OPC_VENDOR, "amd" },
+ /* 062 */ { ud_itab__62, UD_TAB__OPC_SSE, "/sse" },
+ /* 063 */ { ud_itab__63, UD_TAB__OPC_MOD, "/mod" },
+ /* 064 */ { ud_itab__64, UD_TAB__OPC_VENDOR, "amd" },
+ /* 065 */ { ud_itab__65, UD_TAB__OPC_SSE, "/sse" },
+ /* 066 */ { ud_itab__66, UD_TAB__OPC_MOD, "/mod" },
+ /* 067 */ { ud_itab__67, UD_TAB__OPC_VENDOR, "amd" },
+ /* 068 */ { ud_itab__68, UD_TAB__OPC_SSE, "/sse" },
+ /* 069 */ { ud_itab__69, UD_TAB__OPC_MOD, "/mod" },
+ /* 070 */ { ud_itab__70, UD_TAB__OPC_VENDOR, "amd" },
+ /* 071 */ { ud_itab__71, UD_TAB__OPC_SSE, "/sse" },
+ /* 072 */ { ud_itab__72, UD_TAB__OPC_MOD, "/mod" },
+ /* 073 */ { ud_itab__73, UD_TAB__OPC_VENDOR, "amd" },
+ /* 074 */ { ud_itab__74, UD_TAB__OPC_SSE, "/sse" },
+ /* 075 */ { ud_itab__75, UD_TAB__OPC_MOD, "/mod" },
+ /* 076 */ { ud_itab__76, UD_TAB__OPC_VENDOR, "amd" },
+ /* 077 */ { ud_itab__77, UD_TAB__OPC_SSE, "/sse" },
+ /* 078 */ { ud_itab__78, UD_TAB__OPC_MOD, "/mod" },
+ /* 079 */ { ud_itab__79, UD_TAB__OPC_SSE, "/sse" },
+ /* 080 */ { ud_itab__80, UD_TAB__OPC_MOD, "/mod" },
+ /* 081 */ { ud_itab__81, UD_TAB__OPC_RM, "/rm" },
+ /* 082 */ { ud_itab__82, UD_TAB__OPC_SSE, "/sse" },
+ /* 083 */ { ud_itab__83, UD_TAB__OPC_MOD, "/mod" },
+ /* 084 */ { ud_itab__84, UD_TAB__OPC_SSE, "/sse" },
+ /* 085 */ { ud_itab__85, UD_TAB__OPC_MOD, "/mod" },
+ /* 086 */ { ud_itab__86, UD_TAB__OPC_VENDOR, "amd" },
+ /* 087 */ { ud_itab__87, UD_TAB__OPC_SSE, "/sse" },
+ /* 088 */ { ud_itab__88, UD_TAB__OPC_SSE, "/sse" },
+ /* 089 */ { ud_itab__89, UD_TAB__OPC_SSE, "/sse" },
+ /* 090 */ { ud_itab__90, UD_TAB__OPC_SSE, "/sse" },
+ /* 091 */ { ud_itab__91, UD_TAB__OPC_SSE, "/sse" },
+ /* 092 */ { ud_itab__92, UD_TAB__OPC_SSE, "/sse" },
+ /* 093 */ { ud_itab__93, UD_TAB__OPC_SSE, "/sse" },
+ /* 094 */ { ud_itab__94, UD_TAB__OPC_SSE, "/sse" },
+ /* 095 */ { ud_itab__95, UD_TAB__OPC_REG, "/reg" },
+ /* 096 */ { ud_itab__96, UD_TAB__OPC_SSE, "/sse" },
+ /* 097 */ { ud_itab__97, UD_TAB__OPC_SSE, "/sse" },
+ /* 098 */ { ud_itab__98, UD_TAB__OPC_SSE, "/sse" },
+ /* 099 */ { ud_itab__99, UD_TAB__OPC_SSE, "/sse" },
+ /* 100 */ { ud_itab__100, UD_TAB__OPC_SSE, "/sse" },
+ /* 101 */ { ud_itab__101, UD_TAB__OPC_SSE, "/sse" },
+ /* 102 */ { ud_itab__102, UD_TAB__OPC_SSE, "/sse" },
+ /* 103 */ { ud_itab__103, UD_TAB__OPC_SSE, "/sse" },
+ /* 104 */ { ud_itab__104, UD_TAB__OPC_SSE, "/sse" },
+ /* 105 */ { ud_itab__105, UD_TAB__OPC_3DNOW, "/3dnow" },
+ /* 106 */ { ud_itab__106, UD_TAB__OPC_SSE, "/sse" },
+ /* 107 */ { ud_itab__107, UD_TAB__OPC_SSE, "/sse" },
+ /* 108 */ { ud_itab__108, UD_TAB__OPC_MOD, "/mod" },
+ /* 109 */ { ud_itab__109, UD_TAB__OPC_SSE, "/sse" },
+ /* 110 */ { ud_itab__110, UD_TAB__OPC_MOD, "/mod" },
+ /* 111 */ { ud_itab__111, UD_TAB__OPC_MOD, "/mod" },
+ /* 112 */ { ud_itab__112, UD_TAB__OPC_MOD, "/mod" },
+ /* 113 */ { ud_itab__113, UD_TAB__OPC_MOD, "/mod" },
+ /* 114 */ { ud_itab__114, UD_TAB__OPC_SSE, "/sse" },
+ /* 115 */ { ud_itab__115, UD_TAB__OPC_MOD, "/mod" },
+ /* 116 */ { ud_itab__116, UD_TAB__OPC_MOD, "/mod" },
+ /* 117 */ { ud_itab__117, UD_TAB__OPC_MOD, "/mod" },
+ /* 118 */ { ud_itab__118, UD_TAB__OPC_SSE, "/sse" },
+ /* 119 */ { ud_itab__119, UD_TAB__OPC_SSE, "/sse" },
+ /* 120 */ { ud_itab__120, UD_TAB__OPC_SSE, "/sse" },
+ /* 121 */ { ud_itab__121, UD_TAB__OPC_MOD, "/mod" },
+ /* 122 */ { ud_itab__122, UD_TAB__OPC_SSE, "/sse" },
+ /* 123 */ { ud_itab__123, UD_TAB__OPC_MOD, "/mod" },
+ /* 124 */ { ud_itab__124, UD_TAB__OPC_MOD, "/mod" },
+ /* 125 */ { ud_itab__125, UD_TAB__OPC_MOD, "/mod" },
+ /* 126 */ { ud_itab__126, UD_TAB__OPC_SSE, "/sse" },
+ /* 127 */ { ud_itab__127, UD_TAB__OPC_MOD, "/mod" },
+ /* 128 */ { ud_itab__128, UD_TAB__OPC_MOD, "/mod" },
+ /* 129 */ { ud_itab__129, UD_TAB__OPC_SSE, "/sse" },
+ /* 130 */ { ud_itab__130, UD_TAB__OPC_REG, "/reg" },
+ /* 131 */ { ud_itab__131, UD_TAB__OPC_SSE, "/sse" },
+ /* 132 */ { ud_itab__132, UD_TAB__OPC_SSE, "/sse" },
+ /* 133 */ { ud_itab__133, UD_TAB__OPC_SSE, "/sse" },
+ /* 134 */ { ud_itab__134, UD_TAB__OPC_SSE, "/sse" },
+ /* 135 */ { ud_itab__135, UD_TAB__OPC_SSE, "/sse" },
+ /* 136 */ { ud_itab__136, UD_TAB__OPC_SSE, "/sse" },
+ /* 137 */ { ud_itab__137, UD_TAB__OPC_SSE, "/sse" },
+ /* 138 */ { ud_itab__138, UD_TAB__OPC_SSE, "/sse" },
+ /* 139 */ { ud_itab__139, UD_TAB__OPC_SSE, "/sse" },
+ /* 140 */ { ud_itab__140, UD_TAB__OPC_SSE, "/sse" },
+ /* 141 */ { ud_itab__141, UD_TAB__OPC_SSE, "/sse" },
+ /* 142 */ { ud_itab__142, UD_TAB__OPC_SSE, "/sse" },
+ /* 143 */ { ud_itab__143, UD_TAB__OPC_SSE, "/sse" },
+ /* 144 */ { ud_itab__144, UD_TAB__OPC_SSE, "/sse" },
+ /* 145 */ { ud_itab__145, UD_TAB__OPC_SSE, "/sse" },
+ /* 146 */ { ud_itab__146, UD_TAB__OPC_SSE, "/sse" },
+ /* 147 */ { ud_itab__147, UD_TAB__OPC_SSE, "/sse" },
+ /* 148 */ { ud_itab__148, UD_TAB__OPC_SSE, "/sse" },
+ /* 149 */ { ud_itab__149, UD_TAB__OPC_SSE, "/sse" },
+ /* 150 */ { ud_itab__150, UD_TAB__OPC_SSE, "/sse" },
+ /* 151 */ { ud_itab__151, UD_TAB__OPC_SSE, "/sse" },
+ /* 152 */ { ud_itab__152, UD_TAB__OPC_SSE, "/sse" },
+ /* 153 */ { ud_itab__153, UD_TAB__OPC_SSE, "/sse" },
+ /* 154 */ { ud_itab__154, UD_TAB__OPC_SSE, "/sse" },
+ /* 155 */ { ud_itab__155, UD_TAB__OPC_SSE, "/sse" },
+ /* 156 */ { ud_itab__156, UD_TAB__OPC_SSE, "/sse" },
+ /* 157 */ { ud_itab__157, UD_TAB__OPC_SSE, "/sse" },
+ /* 158 */ { ud_itab__158, UD_TAB__OPC_SSE, "/sse" },
+ /* 159 */ { ud_itab__159, UD_TAB__OPC_MODE, "/m" },
+ /* 160 */ { ud_itab__160, UD_TAB__OPC_VENDOR, "intel" },
+ /* 161 */ { ud_itab__161, UD_TAB__OPC_SSE, "/sse" },
+ /* 162 */ { ud_itab__162, UD_TAB__OPC_MODE, "/m" },
+ /* 163 */ { ud_itab__163, UD_TAB__OPC_VENDOR, "intel" },
+ /* 164 */ { ud_itab__164, UD_TAB__OPC_SSE, "/sse" },
+ /* 165 */ { ud_itab__165, UD_TAB__OPC_TABLE, "38" },
+ /* 166 */ { ud_itab__166, UD_TAB__OPC_SSE, "/sse" },
+ /* 167 */ { ud_itab__167, UD_TAB__OPC_SSE, "/sse" },
+ /* 168 */ { ud_itab__168, UD_TAB__OPC_SSE, "/sse" },
+ /* 169 */ { ud_itab__169, UD_TAB__OPC_SSE, "/sse" },
+ /* 170 */ { ud_itab__170, UD_TAB__OPC_SSE, "/sse" },
+ /* 171 */ { ud_itab__171, UD_TAB__OPC_SSE, "/sse" },
+ /* 172 */ { ud_itab__172, UD_TAB__OPC_SSE, "/sse" },
+ /* 173 */ { ud_itab__173, UD_TAB__OPC_SSE, "/sse" },
+ /* 174 */ { ud_itab__174, UD_TAB__OPC_SSE, "/sse" },
+ /* 175 */ { ud_itab__175, UD_TAB__OPC_SSE, "/sse" },
+ /* 176 */ { ud_itab__176, UD_TAB__OPC_SSE, "/sse" },
+ /* 177 */ { ud_itab__177, UD_TAB__OPC_SSE, "/sse" },
+ /* 178 */ { ud_itab__178, UD_TAB__OPC_SSE, "/sse" },
+ /* 179 */ { ud_itab__179, UD_TAB__OPC_SSE, "/sse" },
+ /* 180 */ { ud_itab__180, UD_TAB__OPC_SSE, "/sse" },
+ /* 181 */ { ud_itab__181, UD_TAB__OPC_SSE, "/sse" },
+ /* 182 */ { ud_itab__182, UD_TAB__OPC_SSE, "/sse" },
+ /* 183 */ { ud_itab__183, UD_TAB__OPC_SSE, "/sse" },
+ /* 184 */ { ud_itab__184, UD_TAB__OPC_SSE, "/sse" },
+ /* 185 */ { ud_itab__185, UD_TAB__OPC_SSE, "/sse" },
+ /* 186 */ { ud_itab__186, UD_TAB__OPC_SSE, "/sse" },
+ /* 187 */ { ud_itab__187, UD_TAB__OPC_SSE, "/sse" },
+ /* 188 */ { ud_itab__188, UD_TAB__OPC_SSE, "/sse" },
+ /* 189 */ { ud_itab__189, UD_TAB__OPC_SSE, "/sse" },
+ /* 190 */ { ud_itab__190, UD_TAB__OPC_SSE, "/sse" },
+ /* 191 */ { ud_itab__191, UD_TAB__OPC_SSE, "/sse" },
+ /* 192 */ { ud_itab__192, UD_TAB__OPC_SSE, "/sse" },
+ /* 193 */ { ud_itab__193, UD_TAB__OPC_SSE, "/sse" },
+ /* 194 */ { ud_itab__194, UD_TAB__OPC_SSE, "/sse" },
+ /* 195 */ { ud_itab__195, UD_TAB__OPC_SSE, "/sse" },
+ /* 196 */ { ud_itab__196, UD_TAB__OPC_SSE, "/sse" },
+ /* 197 */ { ud_itab__197, UD_TAB__OPC_SSE, "/sse" },
+ /* 198 */ { ud_itab__198, UD_TAB__OPC_SSE, "/sse" },
+ /* 199 */ { ud_itab__199, UD_TAB__OPC_SSE, "/sse" },
+ /* 200 */ { ud_itab__200, UD_TAB__OPC_SSE, "/sse" },
+ /* 201 */ { ud_itab__201, UD_TAB__OPC_SSE, "/sse" },
+ /* 202 */ { ud_itab__202, UD_TAB__OPC_SSE, "/sse" },
+ /* 203 */ { ud_itab__203, UD_TAB__OPC_SSE, "/sse" },
+ /* 204 */ { ud_itab__204, UD_TAB__OPC_SSE, "/sse" },
+ /* 205 */ { ud_itab__205, UD_TAB__OPC_SSE, "/sse" },
+ /* 206 */ { ud_itab__206, UD_TAB__OPC_SSE, "/sse" },
+ /* 207 */ { ud_itab__207, UD_TAB__OPC_SSE, "/sse" },
+ /* 208 */ { ud_itab__208, UD_TAB__OPC_SSE, "/sse" },
+ /* 209 */ { ud_itab__209, UD_TAB__OPC_SSE, "/sse" },
+ /* 210 */ { ud_itab__210, UD_TAB__OPC_SSE, "/sse" },
+ /* 211 */ { ud_itab__211, UD_TAB__OPC_SSE, "/sse" },
+ /* 212 */ { ud_itab__212, UD_TAB__OPC_SSE, "/sse" },
+ /* 213 */ { ud_itab__213, UD_TAB__OPC_MODE, "/m" },
+ /* 214 */ { ud_itab__214, UD_TAB__OPC_VENDOR, "intel" },
+ /* 215 */ { ud_itab__215, UD_TAB__OPC_SSE, "/sse" },
+ /* 216 */ { ud_itab__216, UD_TAB__OPC_MODE, "/m" },
+ /* 217 */ { ud_itab__217, UD_TAB__OPC_VENDOR, "intel" },
+ /* 218 */ { ud_itab__218, UD_TAB__OPC_SSE, "/sse" },
+ /* 219 */ { ud_itab__219, UD_TAB__OPC_SSE, "/sse" },
+ /* 220 */ { ud_itab__220, UD_TAB__OPC_SSE, "/sse" },
+ /* 221 */ { ud_itab__221, UD_TAB__OPC_SSE, "/sse" },
+ /* 222 */ { ud_itab__222, UD_TAB__OPC_SSE, "/sse" },
+ /* 223 */ { ud_itab__223, UD_TAB__OPC_SSE, "/sse" },
+ /* 224 */ { ud_itab__224, UD_TAB__OPC_SSE, "/sse" },
+ /* 225 */ { ud_itab__225, UD_TAB__OPC_TABLE, "3a" },
+ /* 226 */ { ud_itab__226, UD_TAB__OPC_SSE, "/sse" },
+ /* 227 */ { ud_itab__227, UD_TAB__OPC_SSE, "/sse" },
+ /* 228 */ { ud_itab__228, UD_TAB__OPC_SSE, "/sse" },
+ /* 229 */ { ud_itab__229, UD_TAB__OPC_SSE, "/sse" },
+ /* 230 */ { ud_itab__230, UD_TAB__OPC_SSE, "/sse" },
+ /* 231 */ { ud_itab__231, UD_TAB__OPC_SSE, "/sse" },
+ /* 232 */ { ud_itab__232, UD_TAB__OPC_SSE, "/sse" },
+ /* 233 */ { ud_itab__233, UD_TAB__OPC_SSE, "/sse" },
+ /* 234 */ { ud_itab__234, UD_TAB__OPC_SSE, "/sse" },
+ /* 235 */ { ud_itab__235, UD_TAB__OPC_SSE, "/sse" },
+ /* 236 */ { ud_itab__236, UD_TAB__OPC_SSE, "/sse" },
+ /* 237 */ { ud_itab__237, UD_TAB__OPC_OSIZE, "/o" },
+ /* 238 */ { ud_itab__238, UD_TAB__OPC_SSE, "/sse" },
+ /* 239 */ { ud_itab__239, UD_TAB__OPC_SSE, "/sse" },
+ /* 240 */ { ud_itab__240, UD_TAB__OPC_SSE, "/sse" },
+ /* 241 */ { ud_itab__241, UD_TAB__OPC_SSE, "/sse" },
+ /* 242 */ { ud_itab__242, UD_TAB__OPC_OSIZE, "/o" },
+ /* 243 */ { ud_itab__243, UD_TAB__OPC_SSE, "/sse" },
+ /* 244 */ { ud_itab__244, UD_TAB__OPC_SSE, "/sse" },
+ /* 245 */ { ud_itab__245, UD_TAB__OPC_SSE, "/sse" },
+ /* 246 */ { ud_itab__246, UD_TAB__OPC_SSE, "/sse" },
+ /* 247 */ { ud_itab__247, UD_TAB__OPC_SSE, "/sse" },
+ /* 248 */ { ud_itab__248, UD_TAB__OPC_SSE, "/sse" },
+ /* 249 */ { ud_itab__249, UD_TAB__OPC_SSE, "/sse" },
+ /* 250 */ { ud_itab__250, UD_TAB__OPC_SSE, "/sse" },
+ /* 251 */ { ud_itab__251, UD_TAB__OPC_SSE, "/sse" },
+ /* 252 */ { ud_itab__252, UD_TAB__OPC_SSE, "/sse" },
+ /* 253 */ { ud_itab__253, UD_TAB__OPC_SSE, "/sse" },
+ /* 254 */ { ud_itab__254, UD_TAB__OPC_SSE, "/sse" },
+ /* 255 */ { ud_itab__255, UD_TAB__OPC_SSE, "/sse" },
+ /* 256 */ { ud_itab__256, UD_TAB__OPC_SSE, "/sse" },
+ /* 257 */ { ud_itab__257, UD_TAB__OPC_SSE, "/sse" },
+ /* 258 */ { ud_itab__258, UD_TAB__OPC_SSE, "/sse" },
+ /* 259 */ { ud_itab__259, UD_TAB__OPC_SSE, "/sse" },
+ /* 260 */ { ud_itab__260, UD_TAB__OPC_SSE, "/sse" },
+ /* 261 */ { ud_itab__261, UD_TAB__OPC_SSE, "/sse" },
+ /* 262 */ { ud_itab__262, UD_TAB__OPC_SSE, "/sse" },
+ /* 263 */ { ud_itab__263, UD_TAB__OPC_SSE, "/sse" },
+ /* 264 */ { ud_itab__264, UD_TAB__OPC_SSE, "/sse" },
+ /* 265 */ { ud_itab__265, UD_TAB__OPC_SSE, "/sse" },
+ /* 266 */ { ud_itab__266, UD_TAB__OPC_SSE, "/sse" },
+ /* 267 */ { ud_itab__267, UD_TAB__OPC_SSE, "/sse" },
+ /* 268 */ { ud_itab__268, UD_TAB__OPC_SSE, "/sse" },
+ /* 269 */ { ud_itab__269, UD_TAB__OPC_SSE, "/sse" },
+ /* 270 */ { ud_itab__270, UD_TAB__OPC_SSE, "/sse" },
+ /* 271 */ { ud_itab__271, UD_TAB__OPC_SSE, "/sse" },
+ /* 272 */ { ud_itab__272, UD_TAB__OPC_SSE, "/sse" },
+ /* 273 */ { ud_itab__273, UD_TAB__OPC_SSE, "/sse" },
+ /* 274 */ { ud_itab__274, UD_TAB__OPC_SSE, "/sse" },
+ /* 275 */ { ud_itab__275, UD_TAB__OPC_SSE, "/sse" },
+ /* 276 */ { ud_itab__276, UD_TAB__OPC_SSE, "/sse" },
+ /* 277 */ { ud_itab__277, UD_TAB__OPC_SSE, "/sse" },
+ /* 278 */ { ud_itab__278, UD_TAB__OPC_SSE, "/sse" },
+ /* 279 */ { ud_itab__279, UD_TAB__OPC_SSE, "/sse" },
+ /* 280 */ { ud_itab__280, UD_TAB__OPC_SSE, "/sse" },
+ /* 281 */ { ud_itab__281, UD_TAB__OPC_SSE, "/sse" },
+ /* 282 */ { ud_itab__282, UD_TAB__OPC_SSE, "/sse" },
+ /* 283 */ { ud_itab__283, UD_TAB__OPC_SSE, "/sse" },
+ /* 284 */ { ud_itab__284, UD_TAB__OPC_SSE, "/sse" },
+ /* 285 */ { ud_itab__285, UD_TAB__OPC_SSE, "/sse" },
+ /* 286 */ { ud_itab__286, UD_TAB__OPC_SSE, "/sse" },
+ /* 287 */ { ud_itab__287, UD_TAB__OPC_SSE, "/sse" },
+ /* 288 */ { ud_itab__288, UD_TAB__OPC_SSE, "/sse" },
+ /* 289 */ { ud_itab__289, UD_TAB__OPC_SSE, "/sse" },
+ /* 290 */ { ud_itab__290, UD_TAB__OPC_SSE, "/sse" },
+ /* 291 */ { ud_itab__291, UD_TAB__OPC_SSE, "/sse" },
+ /* 292 */ { ud_itab__292, UD_TAB__OPC_SSE, "/sse" },
+ /* 293 */ { ud_itab__293, UD_TAB__OPC_SSE, "/sse" },
+ /* 294 */ { ud_itab__294, UD_TAB__OPC_SSE, "/sse" },
+ /* 295 */ { ud_itab__295, UD_TAB__OPC_SSE, "/sse" },
+ /* 296 */ { ud_itab__296, UD_TAB__OPC_SSE, "/sse" },
+ /* 297 */ { ud_itab__297, UD_TAB__OPC_SSE, "/sse" },
+ /* 298 */ { ud_itab__298, UD_TAB__OPC_SSE, "/sse" },
+ /* 299 */ { ud_itab__299, UD_TAB__OPC_SSE, "/sse" },
+ /* 300 */ { ud_itab__300, UD_TAB__OPC_SSE, "/sse" },
+ /* 301 */ { ud_itab__301, UD_TAB__OPC_REG, "/reg" },
+ /* 302 */ { ud_itab__302, UD_TAB__OPC_SSE, "/sse" },
+ /* 303 */ { ud_itab__303, UD_TAB__OPC_SSE, "/sse" },
+ /* 304 */ { ud_itab__304, UD_TAB__OPC_SSE, "/sse" },
+ /* 305 */ { ud_itab__305, UD_TAB__OPC_REG, "/reg" },
+ /* 306 */ { ud_itab__306, UD_TAB__OPC_SSE, "/sse" },
+ /* 307 */ { ud_itab__307, UD_TAB__OPC_SSE, "/sse" },
+ /* 308 */ { ud_itab__308, UD_TAB__OPC_SSE, "/sse" },
+ /* 309 */ { ud_itab__309, UD_TAB__OPC_REG, "/reg" },
+ /* 310 */ { ud_itab__310, UD_TAB__OPC_SSE, "/sse" },
+ /* 311 */ { ud_itab__311, UD_TAB__OPC_SSE, "/sse" },
+ /* 312 */ { ud_itab__312, UD_TAB__OPC_SSE, "/sse" },
+ /* 313 */ { ud_itab__313, UD_TAB__OPC_SSE, "/sse" },
+ /* 314 */ { ud_itab__314, UD_TAB__OPC_SSE, "/sse" },
+ /* 315 */ { ud_itab__315, UD_TAB__OPC_SSE, "/sse" },
+ /* 316 */ { ud_itab__316, UD_TAB__OPC_SSE, "/sse" },
+ /* 317 */ { ud_itab__317, UD_TAB__OPC_SSE, "/sse" },
+ /* 318 */ { ud_itab__318, UD_TAB__OPC_SSE, "/sse" },
+ /* 319 */ { ud_itab__319, UD_TAB__OPC_VENDOR, "intel" },
+ /* 320 */ { ud_itab__320, UD_TAB__OPC_SSE, "/sse" },
+ /* 321 */ { ud_itab__321, UD_TAB__OPC_VENDOR, "intel" },
+ /* 322 */ { ud_itab__322, UD_TAB__OPC_SSE, "/sse" },
+ /* 323 */ { ud_itab__323, UD_TAB__OPC_SSE, "/sse" },
+ /* 324 */ { ud_itab__324, UD_TAB__OPC_SSE, "/sse" },
+ /* 325 */ { ud_itab__325, UD_TAB__OPC_SSE, "/sse" },
+ /* 326 */ { ud_itab__326, UD_TAB__OPC_SSE, "/sse" },
+ /* 327 */ { ud_itab__327, UD_TAB__OPC_SSE, "/sse" },
+ /* 328 */ { ud_itab__328, UD_TAB__OPC_SSE, "/sse" },
+ /* 329 */ { ud_itab__329, UD_TAB__OPC_SSE, "/sse" },
+ /* 330 */ { ud_itab__330, UD_TAB__OPC_SSE, "/sse" },
+ /* 331 */ { ud_itab__331, UD_TAB__OPC_SSE, "/sse" },
+ /* 332 */ { ud_itab__332, UD_TAB__OPC_SSE, "/sse" },
+ /* 333 */ { ud_itab__333, UD_TAB__OPC_SSE, "/sse" },
+ /* 334 */ { ud_itab__334, UD_TAB__OPC_SSE, "/sse" },
+ /* 335 */ { ud_itab__335, UD_TAB__OPC_SSE, "/sse" },
+ /* 336 */ { ud_itab__336, UD_TAB__OPC_SSE, "/sse" },
+ /* 337 */ { ud_itab__337, UD_TAB__OPC_SSE, "/sse" },
+ /* 338 */ { ud_itab__338, UD_TAB__OPC_SSE, "/sse" },
+ /* 339 */ { ud_itab__339, UD_TAB__OPC_SSE, "/sse" },
+ /* 340 */ { ud_itab__340, UD_TAB__OPC_SSE, "/sse" },
+ /* 341 */ { ud_itab__341, UD_TAB__OPC_SSE, "/sse" },
+ /* 342 */ { ud_itab__342, UD_TAB__OPC_SSE, "/sse" },
+ /* 343 */ { ud_itab__343, UD_TAB__OPC_SSE, "/sse" },
+ /* 344 */ { ud_itab__344, UD_TAB__OPC_SSE, "/sse" },
+ /* 345 */ { ud_itab__345, UD_TAB__OPC_SSE, "/sse" },
+ /* 346 */ { ud_itab__346, UD_TAB__OPC_SSE, "/sse" },
+ /* 347 */ { ud_itab__347, UD_TAB__OPC_SSE, "/sse" },
+ /* 348 */ { ud_itab__348, UD_TAB__OPC_SSE, "/sse" },
+ /* 349 */ { ud_itab__349, UD_TAB__OPC_SSE, "/sse" },
+ /* 350 */ { ud_itab__350, UD_TAB__OPC_SSE, "/sse" },
+ /* 351 */ { ud_itab__351, UD_TAB__OPC_SSE, "/sse" },
+ /* 352 */ { ud_itab__352, UD_TAB__OPC_SSE, "/sse" },
+ /* 353 */ { ud_itab__353, UD_TAB__OPC_SSE, "/sse" },
+ /* 354 */ { ud_itab__354, UD_TAB__OPC_SSE, "/sse" },
+ /* 355 */ { ud_itab__355, UD_TAB__OPC_SSE, "/sse" },
+ /* 356 */ { ud_itab__356, UD_TAB__OPC_SSE, "/sse" },
+ /* 357 */ { ud_itab__357, UD_TAB__OPC_SSE, "/sse" },
+ /* 358 */ { ud_itab__358, UD_TAB__OPC_SSE, "/sse" },
+ /* 359 */ { ud_itab__359, UD_TAB__OPC_SSE, "/sse" },
+ /* 360 */ { ud_itab__360, UD_TAB__OPC_SSE, "/sse" },
+ /* 361 */ { ud_itab__361, UD_TAB__OPC_SSE, "/sse" },
+ /* 362 */ { ud_itab__362, UD_TAB__OPC_SSE, "/sse" },
+ /* 363 */ { ud_itab__363, UD_TAB__OPC_SSE, "/sse" },
+ /* 364 */ { ud_itab__364, UD_TAB__OPC_MOD, "/mod" },
+ /* 365 */ { ud_itab__365, UD_TAB__OPC_REG, "/reg" },
+ /* 366 */ { ud_itab__366, UD_TAB__OPC_RM, "/rm" },
+ /* 367 */ { ud_itab__367, UD_TAB__OPC_SSE, "/sse" },
+ /* 368 */ { ud_itab__368, UD_TAB__OPC_MOD, "/mod" },
+ /* 369 */ { ud_itab__369, UD_TAB__OPC_RM, "/rm" },
+ /* 370 */ { ud_itab__370, UD_TAB__OPC_SSE, "/sse" },
+ /* 371 */ { ud_itab__371, UD_TAB__OPC_MOD, "/mod" },
+ /* 372 */ { ud_itab__372, UD_TAB__OPC_RM, "/rm" },
+ /* 373 */ { ud_itab__373, UD_TAB__OPC_SSE, "/sse" },
+ /* 374 */ { ud_itab__374, UD_TAB__OPC_MOD, "/mod" },
+ /* 375 */ { ud_itab__375, UD_TAB__OPC_MOD, "/mod" },
+ /* 376 */ { ud_itab__376, UD_TAB__OPC_REG, "/reg" },
+ /* 377 */ { ud_itab__377, UD_TAB__OPC_RM, "/rm" },
+ /* 378 */ { ud_itab__378, UD_TAB__OPC_SSE, "/sse" },
+ /* 379 */ { ud_itab__379, UD_TAB__OPC_MOD, "/mod" },
+ /* 380 */ { ud_itab__380, UD_TAB__OPC_RM, "/rm" },
+ /* 381 */ { ud_itab__381, UD_TAB__OPC_SSE, "/sse" },
+ /* 382 */ { ud_itab__382, UD_TAB__OPC_MOD, "/mod" },
+ /* 383 */ { ud_itab__383, UD_TAB__OPC_RM, "/rm" },
+ /* 384 */ { ud_itab__384, UD_TAB__OPC_SSE, "/sse" },
+ /* 385 */ { ud_itab__385, UD_TAB__OPC_MOD, "/mod" },
+ /* 386 */ { ud_itab__386, UD_TAB__OPC_RM, "/rm" },
+ /* 387 */ { ud_itab__387, UD_TAB__OPC_SSE, "/sse" },
+ /* 388 */ { ud_itab__388, UD_TAB__OPC_MOD, "/mod" },
+ /* 389 */ { ud_itab__389, UD_TAB__OPC_RM, "/rm" },
+ /* 390 */ { ud_itab__390, UD_TAB__OPC_SSE, "/sse" },
+ /* 391 */ { ud_itab__391, UD_TAB__OPC_MOD, "/mod" },
+ /* 392 */ { ud_itab__392, UD_TAB__OPC_RM, "/rm" },
+ /* 393 */ { ud_itab__393, UD_TAB__OPC_SSE, "/sse" },
+ /* 394 */ { ud_itab__394, UD_TAB__OPC_MOD, "/mod" },
+ /* 395 */ { ud_itab__395, UD_TAB__OPC_SSE, "/sse" },
+ /* 396 */ { ud_itab__396, UD_TAB__OPC_SSE, "/sse" },
+ /* 397 */ { ud_itab__397, UD_TAB__OPC_SSE, "/sse" },
+ /* 398 */ { ud_itab__398, UD_TAB__OPC_SSE, "/sse" },
+ /* 399 */ { ud_itab__399, UD_TAB__OPC_SSE, "/sse" },
+ /* 400 */ { ud_itab__400, UD_TAB__OPC_SSE, "/sse" },
+ /* 401 */ { ud_itab__401, UD_TAB__OPC_MOD, "/mod" },
+ /* 402 */ { ud_itab__402, UD_TAB__OPC_REG, "/reg" },
+ /* 403 */ { ud_itab__403, UD_TAB__OPC_SSE, "/sse" },
+ /* 404 */ { ud_itab__404, UD_TAB__OPC_MOD, "/mod" },
+ /* 405 */ { ud_itab__405, UD_TAB__OPC_SSE, "/sse" },
+ /* 406 */ { ud_itab__406, UD_TAB__OPC_MOD, "/mod" },
+ /* 407 */ { ud_itab__407, UD_TAB__OPC_SSE, "/sse" },
+ /* 408 */ { ud_itab__408, UD_TAB__OPC_MOD, "/mod" },
+ /* 409 */ { ud_itab__409, UD_TAB__OPC_SSE, "/sse" },
+ /* 410 */ { ud_itab__410, UD_TAB__OPC_MOD, "/mod" },
+ /* 411 */ { ud_itab__411, UD_TAB__OPC_SSE, "/sse" },
+ /* 412 */ { ud_itab__412, UD_TAB__OPC_MOD, "/mod" },
+ /* 413 */ { ud_itab__413, UD_TAB__OPC_SSE, "/sse" },
+ /* 414 */ { ud_itab__414, UD_TAB__OPC_MOD, "/mod" },
+ /* 415 */ { ud_itab__415, UD_TAB__OPC_SSE, "/sse" },
+ /* 416 */ { ud_itab__416, UD_TAB__OPC_MOD, "/mod" },
+ /* 417 */ { ud_itab__417, UD_TAB__OPC_REG, "/reg" },
+ /* 418 */ { ud_itab__418, UD_TAB__OPC_RM, "/rm" },
+ /* 419 */ { ud_itab__419, UD_TAB__OPC_SSE, "/sse" },
+ /* 420 */ { ud_itab__420, UD_TAB__OPC_MOD, "/mod" },
+ /* 421 */ { ud_itab__421, UD_TAB__OPC_SSE, "/sse" },
+ /* 422 */ { ud_itab__422, UD_TAB__OPC_MOD, "/mod" },
+ /* 423 */ { ud_itab__423, UD_TAB__OPC_SSE, "/sse" },
+ /* 424 */ { ud_itab__424, UD_TAB__OPC_MOD, "/mod" },
+ /* 425 */ { ud_itab__425, UD_TAB__OPC_SSE, "/sse" },
+ /* 426 */ { ud_itab__426, UD_TAB__OPC_MOD, "/mod" },
+ /* 427 */ { ud_itab__427, UD_TAB__OPC_SSE, "/sse" },
+ /* 428 */ { ud_itab__428, UD_TAB__OPC_MOD, "/mod" },
+ /* 429 */ { ud_itab__429, UD_TAB__OPC_SSE, "/sse" },
+ /* 430 */ { ud_itab__430, UD_TAB__OPC_MOD, "/mod" },
+ /* 431 */ { ud_itab__431, UD_TAB__OPC_SSE, "/sse" },
+ /* 432 */ { ud_itab__432, UD_TAB__OPC_MOD, "/mod" },
+ /* 433 */ { ud_itab__433, UD_TAB__OPC_SSE, "/sse" },
+ /* 434 */ { ud_itab__434, UD_TAB__OPC_MOD, "/mod" },
+ /* 435 */ { ud_itab__435, UD_TAB__OPC_RM, "/rm" },
+ /* 436 */ { ud_itab__436, UD_TAB__OPC_SSE, "/sse" },
+ /* 437 */ { ud_itab__437, UD_TAB__OPC_MOD, "/mod" },
+ /* 438 */ { ud_itab__438, UD_TAB__OPC_SSE, "/sse" },
+ /* 439 */ { ud_itab__439, UD_TAB__OPC_MOD, "/mod" },
+ /* 440 */ { ud_itab__440, UD_TAB__OPC_SSE, "/sse" },
+ /* 441 */ { ud_itab__441, UD_TAB__OPC_MOD, "/mod" },
+ /* 442 */ { ud_itab__442, UD_TAB__OPC_SSE, "/sse" },
+ /* 443 */ { ud_itab__443, UD_TAB__OPC_MOD, "/mod" },
+ /* 444 */ { ud_itab__444, UD_TAB__OPC_SSE, "/sse" },
+ /* 445 */ { ud_itab__445, UD_TAB__OPC_MOD, "/mod" },
+ /* 446 */ { ud_itab__446, UD_TAB__OPC_SSE, "/sse" },
+ /* 447 */ { ud_itab__447, UD_TAB__OPC_MOD, "/mod" },
+ /* 448 */ { ud_itab__448, UD_TAB__OPC_SSE, "/sse" },
+ /* 449 */ { ud_itab__449, UD_TAB__OPC_MOD, "/mod" },
+ /* 450 */ { ud_itab__450, UD_TAB__OPC_SSE, "/sse" },
+ /* 451 */ { ud_itab__451, UD_TAB__OPC_MOD, "/mod" },
+ /* 452 */ { ud_itab__452, UD_TAB__OPC_RM, "/rm" },
+ /* 453 */ { ud_itab__453, UD_TAB__OPC_SSE, "/sse" },
+ /* 454 */ { ud_itab__454, UD_TAB__OPC_MOD, "/mod" },
+ /* 455 */ { ud_itab__455, UD_TAB__OPC_SSE, "/sse" },
+ /* 456 */ { ud_itab__456, UD_TAB__OPC_MOD, "/mod" },
+ /* 457 */ { ud_itab__457, UD_TAB__OPC_SSE, "/sse" },
+ /* 458 */ { ud_itab__458, UD_TAB__OPC_MOD, "/mod" },
+ /* 459 */ { ud_itab__459, UD_TAB__OPC_SSE, "/sse" },
+ /* 460 */ { ud_itab__460, UD_TAB__OPC_MOD, "/mod" },
+ /* 461 */ { ud_itab__461, UD_TAB__OPC_SSE, "/sse" },
+ /* 462 */ { ud_itab__462, UD_TAB__OPC_MOD, "/mod" },
+ /* 463 */ { ud_itab__463, UD_TAB__OPC_SSE, "/sse" },
+ /* 464 */ { ud_itab__464, UD_TAB__OPC_MOD, "/mod" },
+ /* 465 */ { ud_itab__465, UD_TAB__OPC_SSE, "/sse" },
+ /* 466 */ { ud_itab__466, UD_TAB__OPC_MOD, "/mod" },
+ /* 467 */ { ud_itab__467, UD_TAB__OPC_SSE, "/sse" },
+ /* 468 */ { ud_itab__468, UD_TAB__OPC_MOD, "/mod" },
+ /* 469 */ { ud_itab__469, UD_TAB__OPC_SSE, "/sse" },
+ /* 470 */ { ud_itab__470, UD_TAB__OPC_SSE, "/sse" },
+ /* 471 */ { ud_itab__471, UD_TAB__OPC_SSE, "/sse" },
+ /* 472 */ { ud_itab__472, UD_TAB__OPC_SSE, "/sse" },
+ /* 473 */ { ud_itab__473, UD_TAB__OPC_SSE, "/sse" },
+ /* 474 */ { ud_itab__474, UD_TAB__OPC_SSE, "/sse" },
+ /* 475 */ { ud_itab__475, UD_TAB__OPC_SSE, "/sse" },
+ /* 476 */ { ud_itab__476, UD_TAB__OPC_SSE, "/sse" },
+ /* 477 */ { ud_itab__477, UD_TAB__OPC_SSE, "/sse" },
+ /* 478 */ { ud_itab__478, UD_TAB__OPC_SSE, "/sse" },
+ /* 479 */ { ud_itab__479, UD_TAB__OPC_REG, "/reg" },
+ /* 480 */ { ud_itab__480, UD_TAB__OPC_SSE, "/sse" },
+ /* 481 */ { ud_itab__481, UD_TAB__OPC_SSE, "/sse" },
+ /* 482 */ { ud_itab__482, UD_TAB__OPC_SSE, "/sse" },
+ /* 483 */ { ud_itab__483, UD_TAB__OPC_SSE, "/sse" },
+ /* 484 */ { ud_itab__484, UD_TAB__OPC_SSE, "/sse" },
+ /* 485 */ { ud_itab__485, UD_TAB__OPC_SSE, "/sse" },
+ /* 486 */ { ud_itab__486, UD_TAB__OPC_SSE, "/sse" },
+ /* 487 */ { ud_itab__487, UD_TAB__OPC_SSE, "/sse" },
+ /* 488 */ { ud_itab__488, UD_TAB__OPC_SSE, "/sse" },
+ /* 489 */ { ud_itab__489, UD_TAB__OPC_SSE, "/sse" },
+ /* 490 */ { ud_itab__490, UD_TAB__OPC_SSE, "/sse" },
+ /* 491 */ { ud_itab__491, UD_TAB__OPC_SSE, "/sse" },
+ /* 492 */ { ud_itab__492, UD_TAB__OPC_SSE, "/sse" },
+ /* 493 */ { ud_itab__493, UD_TAB__OPC_SSE, "/sse" },
+ /* 494 */ { ud_itab__494, UD_TAB__OPC_SSE, "/sse" },
+ /* 495 */ { ud_itab__495, UD_TAB__OPC_SSE, "/sse" },
+ /* 496 */ { ud_itab__496, UD_TAB__OPC_REG, "/reg" },
+ /* 497 */ { ud_itab__497, UD_TAB__OPC_SSE, "/sse" },
+ /* 498 */ { ud_itab__498, UD_TAB__OPC_OSIZE, "/o" },
+ /* 499 */ { ud_itab__499, UD_TAB__OPC_SSE, "/sse" },
+ /* 500 */ { ud_itab__500, UD_TAB__OPC_VENDOR, "intel" },
+ /* 501 */ { ud_itab__501, UD_TAB__OPC_VENDOR, "intel" },
+ /* 502 */ { ud_itab__502, UD_TAB__OPC_VENDOR, "intel" },
+ /* 503 */ { ud_itab__503, UD_TAB__OPC_SSE, "/sse" },
+ /* 504 */ { ud_itab__504, UD_TAB__OPC_VENDOR, "intel" },
+ /* 505 */ { ud_itab__505, UD_TAB__OPC_SSE, "/sse" },
+ /* 506 */ { ud_itab__506, UD_TAB__OPC_SSE, "/sse" },
+ /* 507 */ { ud_itab__507, UD_TAB__OPC_SSE, "/sse" },
+ /* 508 */ { ud_itab__508, UD_TAB__OPC_SSE, "/sse" },
+ /* 509 */ { ud_itab__509, UD_TAB__OPC_SSE, "/sse" },
+ /* 510 */ { ud_itab__510, UD_TAB__OPC_SSE, "/sse" },
+ /* 511 */ { ud_itab__511, UD_TAB__OPC_SSE, "/sse" },
+ /* 512 */ { ud_itab__512, UD_TAB__OPC_SSE, "/sse" },
+ /* 513 */ { ud_itab__513, UD_TAB__OPC_SSE, "/sse" },
+ /* 514 */ { ud_itab__514, UD_TAB__OPC_SSE, "/sse" },
+ /* 515 */ { ud_itab__515, UD_TAB__OPC_SSE, "/sse" },
+ /* 516 */ { ud_itab__516, UD_TAB__OPC_SSE, "/sse" },
+ /* 517 */ { ud_itab__517, UD_TAB__OPC_SSE, "/sse" },
+ /* 518 */ { ud_itab__518, UD_TAB__OPC_SSE, "/sse" },
+ /* 519 */ { ud_itab__519, UD_TAB__OPC_SSE, "/sse" },
+ /* 520 */ { ud_itab__520, UD_TAB__OPC_SSE, "/sse" },
+ /* 521 */ { ud_itab__521, UD_TAB__OPC_SSE, "/sse" },
+ /* 522 */ { ud_itab__522, UD_TAB__OPC_SSE, "/sse" },
+ /* 523 */ { ud_itab__523, UD_TAB__OPC_SSE, "/sse" },
+ /* 524 */ { ud_itab__524, UD_TAB__OPC_SSE, "/sse" },
+ /* 525 */ { ud_itab__525, UD_TAB__OPC_SSE, "/sse" },
+ /* 526 */ { ud_itab__526, UD_TAB__OPC_SSE, "/sse" },
+ /* 527 */ { ud_itab__527, UD_TAB__OPC_SSE, "/sse" },
+ /* 528 */ { ud_itab__528, UD_TAB__OPC_SSE, "/sse" },
+ /* 529 */ { ud_itab__529, UD_TAB__OPC_SSE, "/sse" },
+ /* 530 */ { ud_itab__530, UD_TAB__OPC_SSE, "/sse" },
+ /* 531 */ { ud_itab__531, UD_TAB__OPC_SSE, "/sse" },
+ /* 532 */ { ud_itab__532, UD_TAB__OPC_SSE, "/sse" },
+ /* 533 */ { ud_itab__533, UD_TAB__OPC_SSE, "/sse" },
+ /* 534 */ { ud_itab__534, UD_TAB__OPC_SSE, "/sse" },
+ /* 535 */ { ud_itab__535, UD_TAB__OPC_SSE, "/sse" },
+ /* 536 */ { ud_itab__536, UD_TAB__OPC_SSE, "/sse" },
+ /* 537 */ { ud_itab__537, UD_TAB__OPC_SSE, "/sse" },
+ /* 538 */ { ud_itab__538, UD_TAB__OPC_SSE, "/sse" },
+ /* 539 */ { ud_itab__539, UD_TAB__OPC_SSE, "/sse" },
+ /* 540 */ { ud_itab__540, UD_TAB__OPC_SSE, "/sse" },
+ /* 541 */ { ud_itab__541, UD_TAB__OPC_SSE, "/sse" },
+ /* 542 */ { ud_itab__542, UD_TAB__OPC_SSE, "/sse" },
+ /* 543 */ { ud_itab__543, UD_TAB__OPC_SSE, "/sse" },
+ /* 544 */ { ud_itab__544, UD_TAB__OPC_SSE, "/sse" },
+ /* 545 */ { ud_itab__545, UD_TAB__OPC_SSE, "/sse" },
+ /* 546 */ { ud_itab__546, UD_TAB__OPC_SSE, "/sse" },
+ /* 547 */ { ud_itab__547, UD_TAB__OPC_SSE, "/sse" },
+ /* 548 */ { ud_itab__548, UD_TAB__OPC_SSE, "/sse" },
+ /* 549 */ { ud_itab__549, UD_TAB__OPC_SSE, "/sse" },
+ /* 550 */ { ud_itab__550, UD_TAB__OPC_SSE, "/sse" },
+ /* 551 */ { ud_itab__551, UD_TAB__OPC_SSE, "/sse" },
+ /* 552 */ { ud_itab__552, UD_TAB__OPC_MOD, "/mod" },
+ /* 553 */ { ud_itab__553, UD_TAB__OPC_SSE, "/sse" },
+ /* 554 */ { ud_itab__554, UD_TAB__OPC_MOD, "/mod" },
+ /* 555 */ { ud_itab__555, UD_TAB__OPC_MOD, "/mod" },
+ /* 556 */ { ud_itab__556, UD_TAB__OPC_SSE, "/sse" },
+ /* 557 */ { ud_itab__557, UD_TAB__OPC_SSE, "/sse" },
+ /* 558 */ { ud_itab__558, UD_TAB__OPC_SSE, "/sse" },
+ /* 559 */ { ud_itab__559, UD_TAB__OPC_SSE, "/sse" },
+ /* 560 */ { ud_itab__560, UD_TAB__OPC_SSE, "/sse" },
+ /* 561 */ { ud_itab__561, UD_TAB__OPC_SSE, "/sse" },
+ /* 562 */ { ud_itab__562, UD_TAB__OPC_SSE, "/sse" },
+ /* 563 */ { ud_itab__563, UD_TAB__OPC_MODE, "/m" },
+ /* 564 */ { ud_itab__564, UD_TAB__OPC_MODE, "/m" },
+ /* 565 */ { ud_itab__565, UD_TAB__OPC_MODE, "/m" },
+ /* 566 */ { ud_itab__566, UD_TAB__OPC_MODE, "/m" },
+ /* 567 */ { ud_itab__567, UD_TAB__OPC_MODE, "/m" },
+ /* 568 */ { ud_itab__568, UD_TAB__OPC_MODE, "/m" },
+ /* 569 */ { ud_itab__569, UD_TAB__OPC_MODE, "/m" },
+ /* 570 */ { ud_itab__570, UD_TAB__OPC_MODE, "/m" },
+ /* 571 */ { ud_itab__571, UD_TAB__OPC_OSIZE, "/o" },
+ /* 572 */ { ud_itab__572, UD_TAB__OPC_MODE, "/m" },
+ /* 573 */ { ud_itab__573, UD_TAB__OPC_MODE, "/m" },
+ /* 574 */ { ud_itab__574, UD_TAB__OPC_OSIZE, "/o" },
+ /* 575 */ { ud_itab__575, UD_TAB__OPC_MODE, "/m" },
+ /* 576 */ { ud_itab__576, UD_TAB__OPC_MODE, "/m" },
+ /* 577 */ { ud_itab__577, UD_TAB__OPC_MODE, "/m" },
+ /* 578 */ { ud_itab__578, UD_TAB__OPC_MODE, "/m" },
+ /* 579 */ { ud_itab__579, UD_TAB__OPC_OSIZE, "/o" },
+ /* 580 */ { ud_itab__580, UD_TAB__OPC_OSIZE, "/o" },
+ /* 581 */ { ud_itab__581, UD_TAB__OPC_REG, "/reg" },
+ /* 582 */ { ud_itab__582, UD_TAB__OPC_REG, "/reg" },
+ /* 583 */ { ud_itab__583, UD_TAB__OPC_REG, "/reg" },
+ /* 584 */ { ud_itab__584, UD_TAB__OPC_MODE, "/m" },
+ /* 585 */ { ud_itab__585, UD_TAB__OPC_MODE, "/m" },
+ /* 586 */ { ud_itab__586, UD_TAB__OPC_MODE, "/m" },
+ /* 587 */ { ud_itab__587, UD_TAB__OPC_MODE, "/m" },
+ /* 588 */ { ud_itab__588, UD_TAB__OPC_MODE, "/m" },
+ /* 589 */ { ud_itab__589, UD_TAB__OPC_MODE, "/m" },
+ /* 590 */ { ud_itab__590, UD_TAB__OPC_MODE, "/m" },
+ /* 591 */ { ud_itab__591, UD_TAB__OPC_MODE, "/m" },
+ /* 592 */ { ud_itab__592, UD_TAB__OPC_REG, "/reg" },
+ /* 593 */ { ud_itab__593, UD_TAB__OPC_REG, "/reg" },
+ /* 594 */ { ud_itab__594, UD_TAB__OPC_OSIZE, "/o" },
+ /* 595 */ { ud_itab__595, UD_TAB__OPC_OSIZE, "/o" },
+ /* 596 */ { ud_itab__596, UD_TAB__OPC_MODE, "/m" },
+ /* 597 */ { ud_itab__597, UD_TAB__OPC_OSIZE, "/o" },
+ /* 598 */ { ud_itab__598, UD_TAB__OPC_MODE, "/m" },
+ /* 599 */ { ud_itab__599, UD_TAB__OPC_MODE, "/m" },
+ /* 600 */ { ud_itab__600, UD_TAB__OPC_MODE, "/m" },
+ /* 601 */ { ud_itab__601, UD_TAB__OPC_OSIZE, "/o" },
+ /* 602 */ { ud_itab__602, UD_TAB__OPC_MODE, "/m" },
+ /* 603 */ { ud_itab__603, UD_TAB__OPC_MODE, "/m" },
+ /* 604 */ { ud_itab__604, UD_TAB__OPC_MODE, "/m" },
+ /* 605 */ { ud_itab__605, UD_TAB__OPC_OSIZE, "/o" },
+ /* 606 */ { ud_itab__606, UD_TAB__OPC_OSIZE, "/o" },
+ /* 607 */ { ud_itab__607, UD_TAB__OPC_OSIZE, "/o" },
+ /* 608 */ { ud_itab__608, UD_TAB__OPC_OSIZE, "/o" },
+ /* 609 */ { ud_itab__609, UD_TAB__OPC_OSIZE, "/o" },
+ /* 610 */ { ud_itab__610, UD_TAB__OPC_REG, "/reg" },
+ /* 611 */ { ud_itab__611, UD_TAB__OPC_REG, "/reg" },
+ /* 612 */ { ud_itab__612, UD_TAB__OPC_MODE, "/m" },
+ /* 613 */ { ud_itab__613, UD_TAB__OPC_MODE, "/m" },
+ /* 614 */ { ud_itab__614, UD_TAB__OPC_REG, "/reg" },
+ /* 615 */ { ud_itab__615, UD_TAB__OPC_REG, "/reg" },
+ /* 616 */ { ud_itab__616, UD_TAB__OPC_MODE, "/m" },
+ /* 617 */ { ud_itab__617, UD_TAB__OPC_OSIZE, "/o" },
+ /* 618 */ { ud_itab__618, UD_TAB__OPC_REG, "/reg" },
+ /* 619 */ { ud_itab__619, UD_TAB__OPC_REG, "/reg" },
+ /* 620 */ { ud_itab__620, UD_TAB__OPC_REG, "/reg" },
+ /* 621 */ { ud_itab__621, UD_TAB__OPC_REG, "/reg" },
+ /* 622 */ { ud_itab__622, UD_TAB__OPC_MODE, "/m" },
+ /* 623 */ { ud_itab__623, UD_TAB__OPC_MODE, "/m" },
+ /* 624 */ { ud_itab__624, UD_TAB__OPC_MODE, "/m" },
+ /* 625 */ { ud_itab__625, UD_TAB__OPC_MOD, "/mod" },
+ /* 626 */ { ud_itab__626, UD_TAB__OPC_REG, "/reg" },
+ /* 627 */ { ud_itab__627, UD_TAB__OPC_MOD, "/mod" },
+ /* 628 */ { ud_itab__628, UD_TAB__OPC_MOD, "/mod" },
+ /* 629 */ { ud_itab__629, UD_TAB__OPC_MOD, "/mod" },
+ /* 630 */ { ud_itab__630, UD_TAB__OPC_MOD, "/mod" },
+ /* 631 */ { ud_itab__631, UD_TAB__OPC_MOD, "/mod" },
+ /* 632 */ { ud_itab__632, UD_TAB__OPC_MOD, "/mod" },
+ /* 633 */ { ud_itab__633, UD_TAB__OPC_MOD, "/mod" },
+ /* 634 */ { ud_itab__634, UD_TAB__OPC_MOD, "/mod" },
+ /* 635 */ { ud_itab__635, UD_TAB__OPC_X87, "/x87" },
+ /* 636 */ { ud_itab__636, UD_TAB__OPC_MOD, "/mod" },
+ /* 637 */ { ud_itab__637, UD_TAB__OPC_MOD, "/mod" },
+ /* 638 */ { ud_itab__638, UD_TAB__OPC_MOD, "/mod" },
+ /* 639 */ { ud_itab__639, UD_TAB__OPC_MOD, "/mod" },
+ /* 640 */ { ud_itab__640, UD_TAB__OPC_MOD, "/mod" },
+ /* 641 */ { ud_itab__641, UD_TAB__OPC_MOD, "/mod" },
+ /* 642 */ { ud_itab__642, UD_TAB__OPC_MOD, "/mod" },
+ /* 643 */ { ud_itab__643, UD_TAB__OPC_MOD, "/mod" },
+ /* 644 */ { ud_itab__644, UD_TAB__OPC_MOD, "/mod" },
+ /* 645 */ { ud_itab__645, UD_TAB__OPC_MOD, "/mod" },
+ /* 646 */ { ud_itab__646, UD_TAB__OPC_MOD, "/mod" },
+ /* 647 */ { ud_itab__647, UD_TAB__OPC_MOD, "/mod" },
+ /* 648 */ { ud_itab__648, UD_TAB__OPC_MOD, "/mod" },
+ /* 649 */ { ud_itab__649, UD_TAB__OPC_MOD, "/mod" },
+ /* 650 */ { ud_itab__650, UD_TAB__OPC_MOD, "/mod" },
+ /* 651 */ { ud_itab__651, UD_TAB__OPC_MOD, "/mod" },
+ /* 652 */ { ud_itab__652, UD_TAB__OPC_MOD, "/mod" },
+ /* 653 */ { ud_itab__653, UD_TAB__OPC_MOD, "/mod" },
+ /* 654 */ { ud_itab__654, UD_TAB__OPC_MOD, "/mod" },
+ /* 655 */ { ud_itab__655, UD_TAB__OPC_MOD, "/mod" },
+ /* 656 */ { ud_itab__656, UD_TAB__OPC_MOD, "/mod" },
+ /* 657 */ { ud_itab__657, UD_TAB__OPC_MOD, "/mod" },
+ /* 658 */ { ud_itab__658, UD_TAB__OPC_MOD, "/mod" },
+ /* 659 */ { ud_itab__659, UD_TAB__OPC_MOD, "/mod" },
+ /* 660 */ { ud_itab__660, UD_TAB__OPC_MOD, "/mod" },
+ /* 661 */ { ud_itab__661, UD_TAB__OPC_MOD, "/mod" },
+ /* 662 */ { ud_itab__662, UD_TAB__OPC_MOD, "/mod" },
+ /* 663 */ { ud_itab__663, UD_TAB__OPC_MOD, "/mod" },
+ /* 664 */ { ud_itab__664, UD_TAB__OPC_MOD, "/mod" },
+ /* 665 */ { ud_itab__665, UD_TAB__OPC_MOD, "/mod" },
+ /* 666 */ { ud_itab__666, UD_TAB__OPC_MOD, "/mod" },
+ /* 667 */ { ud_itab__667, UD_TAB__OPC_MOD, "/mod" },
+ /* 668 */ { ud_itab__668, UD_TAB__OPC_MOD, "/mod" },
+ /* 669 */ { ud_itab__669, UD_TAB__OPC_MOD, "/mod" },
+ /* 670 */ { ud_itab__670, UD_TAB__OPC_MOD, "/mod" },
+ /* 671 */ { ud_itab__671, UD_TAB__OPC_MOD, "/mod" },
+ /* 672 */ { ud_itab__672, UD_TAB__OPC_MOD, "/mod" },
+ /* 673 */ { ud_itab__673, UD_TAB__OPC_MOD, "/mod" },
+ /* 674 */ { ud_itab__674, UD_TAB__OPC_MOD, "/mod" },
+ /* 675 */ { ud_itab__675, UD_TAB__OPC_MOD, "/mod" },
+ /* 676 */ { ud_itab__676, UD_TAB__OPC_MOD, "/mod" },
+ /* 677 */ { ud_itab__677, UD_TAB__OPC_MOD, "/mod" },
+ /* 678 */ { ud_itab__678, UD_TAB__OPC_MOD, "/mod" },
+ /* 679 */ { ud_itab__679, UD_TAB__OPC_MOD, "/mod" },
+ /* 680 */ { ud_itab__680, UD_TAB__OPC_MOD, "/mod" },
+ /* 681 */ { ud_itab__681, UD_TAB__OPC_MOD, "/mod" },
+ /* 682 */ { ud_itab__682, UD_TAB__OPC_MOD, "/mod" },
+ /* 683 */ { ud_itab__683, UD_TAB__OPC_MOD, "/mod" },
+ /* 684 */ { ud_itab__684, UD_TAB__OPC_MOD, "/mod" },
+ /* 685 */ { ud_itab__685, UD_TAB__OPC_MOD, "/mod" },
+ /* 686 */ { ud_itab__686, UD_TAB__OPC_MOD, "/mod" },
+ /* 687 */ { ud_itab__687, UD_TAB__OPC_MOD, "/mod" },
+ /* 688 */ { ud_itab__688, UD_TAB__OPC_MOD, "/mod" },
+ /* 689 */ { ud_itab__689, UD_TAB__OPC_MOD, "/mod" },
+ /* 690 */ { ud_itab__690, UD_TAB__OPC_MOD, "/mod" },
+ /* 691 */ { ud_itab__691, UD_TAB__OPC_MOD, "/mod" },
+ /* 692 */ { ud_itab__692, UD_TAB__OPC_MOD, "/mod" },
+ /* 693 */ { ud_itab__693, UD_TAB__OPC_MOD, "/mod" },
+ /* 694 */ { ud_itab__694, UD_TAB__OPC_MOD, "/mod" },
+ /* 695 */ { ud_itab__695, UD_TAB__OPC_MOD, "/mod" },
+ /* 696 */ { ud_itab__696, UD_TAB__OPC_MOD, "/mod" },
+ /* 697 */ { ud_itab__697, UD_TAB__OPC_MOD, "/mod" },
+ /* 698 */ { ud_itab__698, UD_TAB__OPC_MOD, "/mod" },
+ /* 699 */ { ud_itab__699, UD_TAB__OPC_MOD, "/mod" },
+ /* 700 */ { ud_itab__700, UD_TAB__OPC_MOD, "/mod" },
+ /* 701 */ { ud_itab__701, UD_TAB__OPC_REG, "/reg" },
+ /* 702 */ { ud_itab__702, UD_TAB__OPC_MOD, "/mod" },
+ /* 703 */ { ud_itab__703, UD_TAB__OPC_MOD, "/mod" },
+ /* 704 */ { ud_itab__704, UD_TAB__OPC_MOD, "/mod" },
+ /* 705 */ { ud_itab__705, UD_TAB__OPC_MOD, "/mod" },
+ /* 706 */ { ud_itab__706, UD_TAB__OPC_MOD, "/mod" },
+ /* 707 */ { ud_itab__707, UD_TAB__OPC_MOD, "/mod" },
+ /* 708 */ { ud_itab__708, UD_TAB__OPC_MOD, "/mod" },
+ /* 709 */ { ud_itab__709, UD_TAB__OPC_X87, "/x87" },
+ /* 710 */ { ud_itab__710, UD_TAB__OPC_MOD, "/mod" },
+ /* 711 */ { ud_itab__711, UD_TAB__OPC_MOD, "/mod" },
+ /* 712 */ { ud_itab__712, UD_TAB__OPC_MOD, "/mod" },
+ /* 713 */ { ud_itab__713, UD_TAB__OPC_MOD, "/mod" },
+ /* 714 */ { ud_itab__714, UD_TAB__OPC_MOD, "/mod" },
+ /* 715 */ { ud_itab__715, UD_TAB__OPC_MOD, "/mod" },
+ /* 716 */ { ud_itab__716, UD_TAB__OPC_MOD, "/mod" },
+ /* 717 */ { ud_itab__717, UD_TAB__OPC_MOD, "/mod" },
+ /* 718 */ { ud_itab__718, UD_TAB__OPC_MOD, "/mod" },
+ /* 719 */ { ud_itab__719, UD_TAB__OPC_MOD, "/mod" },
+ /* 720 */ { ud_itab__720, UD_TAB__OPC_MOD, "/mod" },
+ /* 721 */ { ud_itab__721, UD_TAB__OPC_MOD, "/mod" },
+ /* 722 */ { ud_itab__722, UD_TAB__OPC_MOD, "/mod" },
+ /* 723 */ { ud_itab__723, UD_TAB__OPC_MOD, "/mod" },
+ /* 724 */ { ud_itab__724, UD_TAB__OPC_MOD, "/mod" },
+ /* 725 */ { ud_itab__725, UD_TAB__OPC_MOD, "/mod" },
+ /* 726 */ { ud_itab__726, UD_TAB__OPC_MOD, "/mod" },
+ /* 727 */ { ud_itab__727, UD_TAB__OPC_MOD, "/mod" },
+ /* 728 */ { ud_itab__728, UD_TAB__OPC_MOD, "/mod" },
+ /* 729 */ { ud_itab__729, UD_TAB__OPC_MOD, "/mod" },
+ /* 730 */ { ud_itab__730, UD_TAB__OPC_MOD, "/mod" },
+ /* 731 */ { ud_itab__731, UD_TAB__OPC_MOD, "/mod" },
+ /* 732 */ { ud_itab__732, UD_TAB__OPC_MOD, "/mod" },
+ /* 733 */ { ud_itab__733, UD_TAB__OPC_MOD, "/mod" },
+ /* 734 */ { ud_itab__734, UD_TAB__OPC_MOD, "/mod" },
+ /* 735 */ { ud_itab__735, UD_TAB__OPC_MOD, "/mod" },
+ /* 736 */ { ud_itab__736, UD_TAB__OPC_MOD, "/mod" },
+ /* 737 */ { ud_itab__737, UD_TAB__OPC_MOD, "/mod" },
+ /* 738 */ { ud_itab__738, UD_TAB__OPC_MOD, "/mod" },
+ /* 739 */ { ud_itab__739, UD_TAB__OPC_MOD, "/mod" },
+ /* 740 */ { ud_itab__740, UD_TAB__OPC_MOD, "/mod" },
+ /* 741 */ { ud_itab__741, UD_TAB__OPC_MOD, "/mod" },
+ /* 742 */ { ud_itab__742, UD_TAB__OPC_MOD, "/mod" },
+ /* 743 */ { ud_itab__743, UD_TAB__OPC_MOD, "/mod" },
+ /* 744 */ { ud_itab__744, UD_TAB__OPC_MOD, "/mod" },
+ /* 745 */ { ud_itab__745, UD_TAB__OPC_MOD, "/mod" },
+ /* 746 */ { ud_itab__746, UD_TAB__OPC_MOD, "/mod" },
+ /* 747 */ { ud_itab__747, UD_TAB__OPC_MOD, "/mod" },
+ /* 748 */ { ud_itab__748, UD_TAB__OPC_MOD, "/mod" },
+ /* 749 */ { ud_itab__749, UD_TAB__OPC_MOD, "/mod" },
+ /* 750 */ { ud_itab__750, UD_TAB__OPC_MOD, "/mod" },
+ /* 751 */ { ud_itab__751, UD_TAB__OPC_MOD, "/mod" },
+ /* 752 */ { ud_itab__752, UD_TAB__OPC_MOD, "/mod" },
+ /* 753 */ { ud_itab__753, UD_TAB__OPC_MOD, "/mod" },
+ /* 754 */ { ud_itab__754, UD_TAB__OPC_MOD, "/mod" },
+ /* 755 */ { ud_itab__755, UD_TAB__OPC_MOD, "/mod" },
+ /* 756 */ { ud_itab__756, UD_TAB__OPC_MOD, "/mod" },
+ /* 757 */ { ud_itab__757, UD_TAB__OPC_MOD, "/mod" },
+ /* 758 */ { ud_itab__758, UD_TAB__OPC_MOD, "/mod" },
+ /* 759 */ { ud_itab__759, UD_TAB__OPC_MOD, "/mod" },
+ /* 760 */ { ud_itab__760, UD_TAB__OPC_MOD, "/mod" },
+ /* 761 */ { ud_itab__761, UD_TAB__OPC_MOD, "/mod" },
+ /* 762 */ { ud_itab__762, UD_TAB__OPC_MOD, "/mod" },
+ /* 763 */ { ud_itab__763, UD_TAB__OPC_REG, "/reg" },
+ /* 764 */ { ud_itab__764, UD_TAB__OPC_MOD, "/mod" },
+ /* 765 */ { ud_itab__765, UD_TAB__OPC_MOD, "/mod" },
+ /* 766 */ { ud_itab__766, UD_TAB__OPC_MOD, "/mod" },
+ /* 767 */ { ud_itab__767, UD_TAB__OPC_MOD, "/mod" },
+ /* 768 */ { ud_itab__768, UD_TAB__OPC_MOD, "/mod" },
+ /* 769 */ { ud_itab__769, UD_TAB__OPC_MOD, "/mod" },
+ /* 770 */ { ud_itab__770, UD_TAB__OPC_MOD, "/mod" },
+ /* 771 */ { ud_itab__771, UD_TAB__OPC_MOD, "/mod" },
+ /* 772 */ { ud_itab__772, UD_TAB__OPC_X87, "/x87" },
+ /* 773 */ { ud_itab__773, UD_TAB__OPC_MOD, "/mod" },
+ /* 774 */ { ud_itab__774, UD_TAB__OPC_MOD, "/mod" },
+ /* 775 */ { ud_itab__775, UD_TAB__OPC_MOD, "/mod" },
+ /* 776 */ { ud_itab__776, UD_TAB__OPC_MOD, "/mod" },
+ /* 777 */ { ud_itab__777, UD_TAB__OPC_MOD, "/mod" },
+ /* 778 */ { ud_itab__778, UD_TAB__OPC_MOD, "/mod" },
+ /* 779 */ { ud_itab__779, UD_TAB__OPC_MOD, "/mod" },
+ /* 780 */ { ud_itab__780, UD_TAB__OPC_MOD, "/mod" },
+ /* 781 */ { ud_itab__781, UD_TAB__OPC_MOD, "/mod" },
+ /* 782 */ { ud_itab__782, UD_TAB__OPC_MOD, "/mod" },
+ /* 783 */ { ud_itab__783, UD_TAB__OPC_MOD, "/mod" },
+ /* 784 */ { ud_itab__784, UD_TAB__OPC_MOD, "/mod" },
+ /* 785 */ { ud_itab__785, UD_TAB__OPC_MOD, "/mod" },
+ /* 786 */ { ud_itab__786, UD_TAB__OPC_MOD, "/mod" },
+ /* 787 */ { ud_itab__787, UD_TAB__OPC_MOD, "/mod" },
+ /* 788 */ { ud_itab__788, UD_TAB__OPC_MOD, "/mod" },
+ /* 789 */ { ud_itab__789, UD_TAB__OPC_MOD, "/mod" },
+ /* 790 */ { ud_itab__790, UD_TAB__OPC_MOD, "/mod" },
+ /* 791 */ { ud_itab__791, UD_TAB__OPC_MOD, "/mod" },
+ /* 792 */ { ud_itab__792, UD_TAB__OPC_MOD, "/mod" },
+ /* 793 */ { ud_itab__793, UD_TAB__OPC_MOD, "/mod" },
+ /* 794 */ { ud_itab__794, UD_TAB__OPC_MOD, "/mod" },
+ /* 795 */ { ud_itab__795, UD_TAB__OPC_MOD, "/mod" },
+ /* 796 */ { ud_itab__796, UD_TAB__OPC_MOD, "/mod" },
+ /* 797 */ { ud_itab__797, UD_TAB__OPC_MOD, "/mod" },
+ /* 798 */ { ud_itab__798, UD_TAB__OPC_MOD, "/mod" },
+ /* 799 */ { ud_itab__799, UD_TAB__OPC_MOD, "/mod" },
+ /* 800 */ { ud_itab__800, UD_TAB__OPC_MOD, "/mod" },
+ /* 801 */ { ud_itab__801, UD_TAB__OPC_MOD, "/mod" },
+ /* 802 */ { ud_itab__802, UD_TAB__OPC_MOD, "/mod" },
+ /* 803 */ { ud_itab__803, UD_TAB__OPC_MOD, "/mod" },
+ /* 804 */ { ud_itab__804, UD_TAB__OPC_MOD, "/mod" },
+ /* 805 */ { ud_itab__805, UD_TAB__OPC_MOD, "/mod" },
+ /* 806 */ { ud_itab__806, UD_TAB__OPC_MOD, "/mod" },
+ /* 807 */ { ud_itab__807, UD_TAB__OPC_REG, "/reg" },
+ /* 808 */ { ud_itab__808, UD_TAB__OPC_MOD, "/mod" },
+ /* 809 */ { ud_itab__809, UD_TAB__OPC_MOD, "/mod" },
+ /* 810 */ { ud_itab__810, UD_TAB__OPC_MOD, "/mod" },
+ /* 811 */ { ud_itab__811, UD_TAB__OPC_MOD, "/mod" },
+ /* 812 */ { ud_itab__812, UD_TAB__OPC_MOD, "/mod" },
+ /* 813 */ { ud_itab__813, UD_TAB__OPC_MOD, "/mod" },
+ /* 814 */ { ud_itab__814, UD_TAB__OPC_X87, "/x87" },
+ /* 815 */ { ud_itab__815, UD_TAB__OPC_MOD, "/mod" },
+ /* 816 */ { ud_itab__816, UD_TAB__OPC_MOD, "/mod" },
+ /* 817 */ { ud_itab__817, UD_TAB__OPC_MOD, "/mod" },
+ /* 818 */ { ud_itab__818, UD_TAB__OPC_MOD, "/mod" },
+ /* 819 */ { ud_itab__819, UD_TAB__OPC_MOD, "/mod" },
+ /* 820 */ { ud_itab__820, UD_TAB__OPC_MOD, "/mod" },
+ /* 821 */ { ud_itab__821, UD_TAB__OPC_MOD, "/mod" },
+ /* 822 */ { ud_itab__822, UD_TAB__OPC_MOD, "/mod" },
+ /* 823 */ { ud_itab__823, UD_TAB__OPC_MOD, "/mod" },
+ /* 824 */ { ud_itab__824, UD_TAB__OPC_MOD, "/mod" },
+ /* 825 */ { ud_itab__825, UD_TAB__OPC_MOD, "/mod" },
+ /* 826 */ { ud_itab__826, UD_TAB__OPC_MOD, "/mod" },
+ /* 827 */ { ud_itab__827, UD_TAB__OPC_MOD, "/mod" },
+ /* 828 */ { ud_itab__828, UD_TAB__OPC_MOD, "/mod" },
+ /* 829 */ { ud_itab__829, UD_TAB__OPC_MOD, "/mod" },
+ /* 830 */ { ud_itab__830, UD_TAB__OPC_MOD, "/mod" },
+ /* 831 */ { ud_itab__831, UD_TAB__OPC_MOD, "/mod" },
+ /* 832 */ { ud_itab__832, UD_TAB__OPC_MOD, "/mod" },
+ /* 833 */ { ud_itab__833, UD_TAB__OPC_MOD, "/mod" },
+ /* 834 */ { ud_itab__834, UD_TAB__OPC_MOD, "/mod" },
+ /* 835 */ { ud_itab__835, UD_TAB__OPC_MOD, "/mod" },
+ /* 836 */ { ud_itab__836, UD_TAB__OPC_MOD, "/mod" },
+ /* 837 */ { ud_itab__837, UD_TAB__OPC_MOD, "/mod" },
+ /* 838 */ { ud_itab__838, UD_TAB__OPC_MOD, "/mod" },
+ /* 839 */ { ud_itab__839, UD_TAB__OPC_MOD, "/mod" },
+ /* 840 */ { ud_itab__840, UD_TAB__OPC_MOD, "/mod" },
+ /* 841 */ { ud_itab__841, UD_TAB__OPC_MOD, "/mod" },
+ /* 842 */ { ud_itab__842, UD_TAB__OPC_MOD, "/mod" },
+ /* 843 */ { ud_itab__843, UD_TAB__OPC_MOD, "/mod" },
+ /* 844 */ { ud_itab__844, UD_TAB__OPC_MOD, "/mod" },
+ /* 845 */ { ud_itab__845, UD_TAB__OPC_MOD, "/mod" },
+ /* 846 */ { ud_itab__846, UD_TAB__OPC_MOD, "/mod" },
+ /* 847 */ { ud_itab__847, UD_TAB__OPC_MOD, "/mod" },
+ /* 848 */ { ud_itab__848, UD_TAB__OPC_MOD, "/mod" },
+ /* 849 */ { ud_itab__849, UD_TAB__OPC_MOD, "/mod" },
+ /* 850 */ { ud_itab__850, UD_TAB__OPC_MOD, "/mod" },
+ /* 851 */ { ud_itab__851, UD_TAB__OPC_MOD, "/mod" },
+ /* 852 */ { ud_itab__852, UD_TAB__OPC_MOD, "/mod" },
+ /* 853 */ { ud_itab__853, UD_TAB__OPC_MOD, "/mod" },
+ /* 854 */ { ud_itab__854, UD_TAB__OPC_MOD, "/mod" },
+ /* 855 */ { ud_itab__855, UD_TAB__OPC_MOD, "/mod" },
+ /* 856 */ { ud_itab__856, UD_TAB__OPC_MOD, "/mod" },
+ /* 857 */ { ud_itab__857, UD_TAB__OPC_MOD, "/mod" },
+ /* 858 */ { ud_itab__858, UD_TAB__OPC_MOD, "/mod" },
+ /* 859 */ { ud_itab__859, UD_TAB__OPC_MOD, "/mod" },
+ /* 860 */ { ud_itab__860, UD_TAB__OPC_MOD, "/mod" },
+ /* 861 */ { ud_itab__861, UD_TAB__OPC_MOD, "/mod" },
+ /* 862 */ { ud_itab__862, UD_TAB__OPC_MOD, "/mod" },
+ /* 863 */ { ud_itab__863, UD_TAB__OPC_MOD, "/mod" },
+ /* 864 */ { ud_itab__864, UD_TAB__OPC_MOD, "/mod" },
+ /* 865 */ { ud_itab__865, UD_TAB__OPC_MOD, "/mod" },
+ /* 866 */ { ud_itab__866, UD_TAB__OPC_REG, "/reg" },
+ /* 867 */ { ud_itab__867, UD_TAB__OPC_MOD, "/mod" },
+ /* 868 */ { ud_itab__868, UD_TAB__OPC_MOD, "/mod" },
+ /* 869 */ { ud_itab__869, UD_TAB__OPC_MOD, "/mod" },
+ /* 870 */ { ud_itab__870, UD_TAB__OPC_MOD, "/mod" },
+ /* 871 */ { ud_itab__871, UD_TAB__OPC_MOD, "/mod" },
+ /* 872 */ { ud_itab__872, UD_TAB__OPC_MOD, "/mod" },
+ /* 873 */ { ud_itab__873, UD_TAB__OPC_MOD, "/mod" },
+ /* 874 */ { ud_itab__874, UD_TAB__OPC_MOD, "/mod" },
+ /* 875 */ { ud_itab__875, UD_TAB__OPC_X87, "/x87" },
+ /* 876 */ { ud_itab__876, UD_TAB__OPC_MOD, "/mod" },
+ /* 877 */ { ud_itab__877, UD_TAB__OPC_MOD, "/mod" },
+ /* 878 */ { ud_itab__878, UD_TAB__OPC_MOD, "/mod" },
+ /* 879 */ { ud_itab__879, UD_TAB__OPC_MOD, "/mod" },
+ /* 880 */ { ud_itab__880, UD_TAB__OPC_MOD, "/mod" },
+ /* 881 */ { ud_itab__881, UD_TAB__OPC_MOD, "/mod" },
+ /* 882 */ { ud_itab__882, UD_TAB__OPC_MOD, "/mod" },
+ /* 883 */ { ud_itab__883, UD_TAB__OPC_MOD, "/mod" },
+ /* 884 */ { ud_itab__884, UD_TAB__OPC_MOD, "/mod" },
+ /* 885 */ { ud_itab__885, UD_TAB__OPC_MOD, "/mod" },
+ /* 886 */ { ud_itab__886, UD_TAB__OPC_MOD, "/mod" },
+ /* 887 */ { ud_itab__887, UD_TAB__OPC_MOD, "/mod" },
+ /* 888 */ { ud_itab__888, UD_TAB__OPC_MOD, "/mod" },
+ /* 889 */ { ud_itab__889, UD_TAB__OPC_MOD, "/mod" },
+ /* 890 */ { ud_itab__890, UD_TAB__OPC_MOD, "/mod" },
+ /* 891 */ { ud_itab__891, UD_TAB__OPC_MOD, "/mod" },
+ /* 892 */ { ud_itab__892, UD_TAB__OPC_MOD, "/mod" },
+ /* 893 */ { ud_itab__893, UD_TAB__OPC_MOD, "/mod" },
+ /* 894 */ { ud_itab__894, UD_TAB__OPC_MOD, "/mod" },
+ /* 895 */ { ud_itab__895, UD_TAB__OPC_MOD, "/mod" },
+ /* 896 */ { ud_itab__896, UD_TAB__OPC_MOD, "/mod" },
+ /* 897 */ { ud_itab__897, UD_TAB__OPC_MOD, "/mod" },
+ /* 898 */ { ud_itab__898, UD_TAB__OPC_MOD, "/mod" },
+ /* 899 */ { ud_itab__899, UD_TAB__OPC_MOD, "/mod" },
+ /* 900 */ { ud_itab__900, UD_TAB__OPC_MOD, "/mod" },
+ /* 901 */ { ud_itab__901, UD_TAB__OPC_MOD, "/mod" },
+ /* 902 */ { ud_itab__902, UD_TAB__OPC_MOD, "/mod" },
+ /* 903 */ { ud_itab__903, UD_TAB__OPC_MOD, "/mod" },
+ /* 904 */ { ud_itab__904, UD_TAB__OPC_MOD, "/mod" },
+ /* 905 */ { ud_itab__905, UD_TAB__OPC_MOD, "/mod" },
+ /* 906 */ { ud_itab__906, UD_TAB__OPC_MOD, "/mod" },
+ /* 907 */ { ud_itab__907, UD_TAB__OPC_MOD, "/mod" },
+ /* 908 */ { ud_itab__908, UD_TAB__OPC_MOD, "/mod" },
+ /* 909 */ { ud_itab__909, UD_TAB__OPC_MOD, "/mod" },
+ /* 910 */ { ud_itab__910, UD_TAB__OPC_MOD, "/mod" },
+ /* 911 */ { ud_itab__911, UD_TAB__OPC_MOD, "/mod" },
+ /* 912 */ { ud_itab__912, UD_TAB__OPC_MOD, "/mod" },
+ /* 913 */ { ud_itab__913, UD_TAB__OPC_MOD, "/mod" },
+ /* 914 */ { ud_itab__914, UD_TAB__OPC_MOD, "/mod" },
+ /* 915 */ { ud_itab__915, UD_TAB__OPC_MOD, "/mod" },
+ /* 916 */ { ud_itab__916, UD_TAB__OPC_MOD, "/mod" },
+ /* 917 */ { ud_itab__917, UD_TAB__OPC_MOD, "/mod" },
+ /* 918 */ { ud_itab__918, UD_TAB__OPC_MOD, "/mod" },
+ /* 919 */ { ud_itab__919, UD_TAB__OPC_MOD, "/mod" },
+ /* 920 */ { ud_itab__920, UD_TAB__OPC_MOD, "/mod" },
+ /* 921 */ { ud_itab__921, UD_TAB__OPC_MOD, "/mod" },
+ /* 922 */ { ud_itab__922, UD_TAB__OPC_MOD, "/mod" },
+ /* 923 */ { ud_itab__923, UD_TAB__OPC_MOD, "/mod" },
+ /* 924 */ { ud_itab__924, UD_TAB__OPC_MOD, "/mod" },
+ /* 925 */ { ud_itab__925, UD_TAB__OPC_MOD, "/mod" },
+ /* 926 */ { ud_itab__926, UD_TAB__OPC_MOD, "/mod" },
+ /* 927 */ { ud_itab__927, UD_TAB__OPC_MOD, "/mod" },
+ /* 928 */ { ud_itab__928, UD_TAB__OPC_MOD, "/mod" },
+ /* 929 */ { ud_itab__929, UD_TAB__OPC_MOD, "/mod" },
+ /* 930 */ { ud_itab__930, UD_TAB__OPC_MOD, "/mod" },
+ /* 931 */ { ud_itab__931, UD_TAB__OPC_MOD, "/mod" },
+ /* 932 */ { ud_itab__932, UD_TAB__OPC_MOD, "/mod" },
+ /* 933 */ { ud_itab__933, UD_TAB__OPC_MOD, "/mod" },
+ /* 934 */ { ud_itab__934, UD_TAB__OPC_MOD, "/mod" },
+ /* 935 */ { ud_itab__935, UD_TAB__OPC_MOD, "/mod" },
+ /* 936 */ { ud_itab__936, UD_TAB__OPC_MOD, "/mod" },
+ /* 937 */ { ud_itab__937, UD_TAB__OPC_MOD, "/mod" },
+ /* 938 */ { ud_itab__938, UD_TAB__OPC_MOD, "/mod" },
+ /* 939 */ { ud_itab__939, UD_TAB__OPC_MOD, "/mod" },
+ /* 940 */ { ud_itab__940, UD_TAB__OPC_MOD, "/mod" },
+ /* 941 */ { ud_itab__941, UD_TAB__OPC_REG, "/reg" },
+ /* 942 */ { ud_itab__942, UD_TAB__OPC_MOD, "/mod" },
+ /* 943 */ { ud_itab__943, UD_TAB__OPC_MOD, "/mod" },
+ /* 944 */ { ud_itab__944, UD_TAB__OPC_MOD, "/mod" },
+ /* 945 */ { ud_itab__945, UD_TAB__OPC_MOD, "/mod" },
+ /* 946 */ { ud_itab__946, UD_TAB__OPC_MOD, "/mod" },
+ /* 947 */ { ud_itab__947, UD_TAB__OPC_MOD, "/mod" },
+ /* 948 */ { ud_itab__948, UD_TAB__OPC_MOD, "/mod" },
+ /* 949 */ { ud_itab__949, UD_TAB__OPC_X87, "/x87" },
+ /* 950 */ { ud_itab__950, UD_TAB__OPC_MOD, "/mod" },
+ /* 951 */ { ud_itab__951, UD_TAB__OPC_MOD, "/mod" },
+ /* 952 */ { ud_itab__952, UD_TAB__OPC_MOD, "/mod" },
+ /* 953 */ { ud_itab__953, UD_TAB__OPC_MOD, "/mod" },
+ /* 954 */ { ud_itab__954, UD_TAB__OPC_MOD, "/mod" },
+ /* 955 */ { ud_itab__955, UD_TAB__OPC_MOD, "/mod" },
+ /* 956 */ { ud_itab__956, UD_TAB__OPC_MOD, "/mod" },
+ /* 957 */ { ud_itab__957, UD_TAB__OPC_MOD, "/mod" },
+ /* 958 */ { ud_itab__958, UD_TAB__OPC_MOD, "/mod" },
+ /* 959 */ { ud_itab__959, UD_TAB__OPC_MOD, "/mod" },
+ /* 960 */ { ud_itab__960, UD_TAB__OPC_MOD, "/mod" },
+ /* 961 */ { ud_itab__961, UD_TAB__OPC_MOD, "/mod" },
+ /* 962 */ { ud_itab__962, UD_TAB__OPC_MOD, "/mod" },
+ /* 963 */ { ud_itab__963, UD_TAB__OPC_MOD, "/mod" },
+ /* 964 */ { ud_itab__964, UD_TAB__OPC_MOD, "/mod" },
+ /* 965 */ { ud_itab__965, UD_TAB__OPC_MOD, "/mod" },
+ /* 966 */ { ud_itab__966, UD_TAB__OPC_MOD, "/mod" },
+ /* 967 */ { ud_itab__967, UD_TAB__OPC_MOD, "/mod" },
+ /* 968 */ { ud_itab__968, UD_TAB__OPC_MOD, "/mod" },
+ /* 969 */ { ud_itab__969, UD_TAB__OPC_MOD, "/mod" },
+ /* 970 */ { ud_itab__970, UD_TAB__OPC_MOD, "/mod" },
+ /* 971 */ { ud_itab__971, UD_TAB__OPC_MOD, "/mod" },
+ /* 972 */ { ud_itab__972, UD_TAB__OPC_MOD, "/mod" },
+ /* 973 */ { ud_itab__973, UD_TAB__OPC_MOD, "/mod" },
+ /* 974 */ { ud_itab__974, UD_TAB__OPC_MOD, "/mod" },
+ /* 975 */ { ud_itab__975, UD_TAB__OPC_MOD, "/mod" },
+ /* 976 */ { ud_itab__976, UD_TAB__OPC_MOD, "/mod" },
+ /* 977 */ { ud_itab__977, UD_TAB__OPC_MOD, "/mod" },
+ /* 978 */ { ud_itab__978, UD_TAB__OPC_MOD, "/mod" },
+ /* 979 */ { ud_itab__979, UD_TAB__OPC_MOD, "/mod" },
+ /* 980 */ { ud_itab__980, UD_TAB__OPC_MOD, "/mod" },
+ /* 981 */ { ud_itab__981, UD_TAB__OPC_MOD, "/mod" },
+ /* 982 */ { ud_itab__982, UD_TAB__OPC_MOD, "/mod" },
+ /* 983 */ { ud_itab__983, UD_TAB__OPC_MOD, "/mod" },
+ /* 984 */ { ud_itab__984, UD_TAB__OPC_MOD, "/mod" },
+ /* 985 */ { ud_itab__985, UD_TAB__OPC_MOD, "/mod" },
+ /* 986 */ { ud_itab__986, UD_TAB__OPC_MOD, "/mod" },
+ /* 987 */ { ud_itab__987, UD_TAB__OPC_MOD, "/mod" },
+ /* 988 */ { ud_itab__988, UD_TAB__OPC_MOD, "/mod" },
+ /* 989 */ { ud_itab__989, UD_TAB__OPC_MOD, "/mod" },
+ /* 990 */ { ud_itab__990, UD_TAB__OPC_MOD, "/mod" },
+ /* 991 */ { ud_itab__991, UD_TAB__OPC_MOD, "/mod" },
+ /* 992 */ { ud_itab__992, UD_TAB__OPC_MOD, "/mod" },
+ /* 993 */ { ud_itab__993, UD_TAB__OPC_MOD, "/mod" },
+ /* 994 */ { ud_itab__994, UD_TAB__OPC_MOD, "/mod" },
+ /* 995 */ { ud_itab__995, UD_TAB__OPC_MOD, "/mod" },
+ /* 996 */ { ud_itab__996, UD_TAB__OPC_MOD, "/mod" },
+ /* 997 */ { ud_itab__997, UD_TAB__OPC_MOD, "/mod" },
+ /* 998 */ { ud_itab__998, UD_TAB__OPC_MOD, "/mod" },
+ /* 999 */ { ud_itab__999, UD_TAB__OPC_REG, "/reg" },
+ /* 1000 */ { ud_itab__1000, UD_TAB__OPC_MOD, "/mod" },
+ /* 1001 */ { ud_itab__1001, UD_TAB__OPC_MOD, "/mod" },
+ /* 1002 */ { ud_itab__1002, UD_TAB__OPC_MOD, "/mod" },
+ /* 1003 */ { ud_itab__1003, UD_TAB__OPC_MOD, "/mod" },
+ /* 1004 */ { ud_itab__1004, UD_TAB__OPC_MOD, "/mod" },
+ /* 1005 */ { ud_itab__1005, UD_TAB__OPC_MOD, "/mod" },
+ /* 1006 */ { ud_itab__1006, UD_TAB__OPC_MOD, "/mod" },
+ /* 1007 */ { ud_itab__1007, UD_TAB__OPC_MOD, "/mod" },
+ /* 1008 */ { ud_itab__1008, UD_TAB__OPC_X87, "/x87" },
+ /* 1009 */ { ud_itab__1009, UD_TAB__OPC_MOD, "/mod" },
+ /* 1010 */ { ud_itab__1010, UD_TAB__OPC_MOD, "/mod" },
+ /* 1011 */ { ud_itab__1011, UD_TAB__OPC_MOD, "/mod" },
+ /* 1012 */ { ud_itab__1012, UD_TAB__OPC_MOD, "/mod" },
+ /* 1013 */ { ud_itab__1013, UD_TAB__OPC_MOD, "/mod" },
+ /* 1014 */ { ud_itab__1014, UD_TAB__OPC_MOD, "/mod" },
+ /* 1015 */ { ud_itab__1015, UD_TAB__OPC_MOD, "/mod" },
+ /* 1016 */ { ud_itab__1016, UD_TAB__OPC_MOD, "/mod" },
+ /* 1017 */ { ud_itab__1017, UD_TAB__OPC_MOD, "/mod" },
+ /* 1018 */ { ud_itab__1018, UD_TAB__OPC_MOD, "/mod" },
+ /* 1019 */ { ud_itab__1019, UD_TAB__OPC_MOD, "/mod" },
+ /* 1020 */ { ud_itab__1020, UD_TAB__OPC_MOD, "/mod" },
+ /* 1021 */ { ud_itab__1021, UD_TAB__OPC_MOD, "/mod" },
+ /* 1022 */ { ud_itab__1022, UD_TAB__OPC_MOD, "/mod" },
+ /* 1023 */ { ud_itab__1023, UD_TAB__OPC_MOD, "/mod" },
+ /* 1024 */ { ud_itab__1024, UD_TAB__OPC_MOD, "/mod" },
+ /* 1025 */ { ud_itab__1025, UD_TAB__OPC_MOD, "/mod" },
+ /* 1026 */ { ud_itab__1026, UD_TAB__OPC_MOD, "/mod" },
+ /* 1027 */ { ud_itab__1027, UD_TAB__OPC_MOD, "/mod" },
+ /* 1028 */ { ud_itab__1028, UD_TAB__OPC_MOD, "/mod" },
+ /* 1029 */ { ud_itab__1029, UD_TAB__OPC_MOD, "/mod" },
+ /* 1030 */ { ud_itab__1030, UD_TAB__OPC_MOD, "/mod" },
+ /* 1031 */ { ud_itab__1031, UD_TAB__OPC_MOD, "/mod" },
+ /* 1032 */ { ud_itab__1032, UD_TAB__OPC_MOD, "/mod" },
+ /* 1033 */ { ud_itab__1033, UD_TAB__OPC_MOD, "/mod" },
+ /* 1034 */ { ud_itab__1034, UD_TAB__OPC_MOD, "/mod" },
+ /* 1035 */ { ud_itab__1035, UD_TAB__OPC_MOD, "/mod" },
+ /* 1036 */ { ud_itab__1036, UD_TAB__OPC_MOD, "/mod" },
+ /* 1037 */ { ud_itab__1037, UD_TAB__OPC_MOD, "/mod" },
+ /* 1038 */ { ud_itab__1038, UD_TAB__OPC_MOD, "/mod" },
+ /* 1039 */ { ud_itab__1039, UD_TAB__OPC_MOD, "/mod" },
+ /* 1040 */ { ud_itab__1040, UD_TAB__OPC_MOD, "/mod" },
+ /* 1041 */ { ud_itab__1041, UD_TAB__OPC_MOD, "/mod" },
+ /* 1042 */ { ud_itab__1042, UD_TAB__OPC_MOD, "/mod" },
+ /* 1043 */ { ud_itab__1043, UD_TAB__OPC_MOD, "/mod" },
+ /* 1044 */ { ud_itab__1044, UD_TAB__OPC_MOD, "/mod" },
+ /* 1045 */ { ud_itab__1045, UD_TAB__OPC_MOD, "/mod" },
+ /* 1046 */ { ud_itab__1046, UD_TAB__OPC_MOD, "/mod" },
+ /* 1047 */ { ud_itab__1047, UD_TAB__OPC_MOD, "/mod" },
+ /* 1048 */ { ud_itab__1048, UD_TAB__OPC_MOD, "/mod" },
+ /* 1049 */ { ud_itab__1049, UD_TAB__OPC_MOD, "/mod" },
+ /* 1050 */ { ud_itab__1050, UD_TAB__OPC_MOD, "/mod" },
+ /* 1051 */ { ud_itab__1051, UD_TAB__OPC_MOD, "/mod" },
+ /* 1052 */ { ud_itab__1052, UD_TAB__OPC_MOD, "/mod" },
+ /* 1053 */ { ud_itab__1053, UD_TAB__OPC_MOD, "/mod" },
+ /* 1054 */ { ud_itab__1054, UD_TAB__OPC_MOD, "/mod" },
+ /* 1055 */ { ud_itab__1055, UD_TAB__OPC_MOD, "/mod" },
+ /* 1056 */ { ud_itab__1056, UD_TAB__OPC_MOD, "/mod" },
+ /* 1057 */ { ud_itab__1057, UD_TAB__OPC_MOD, "/mod" },
+ /* 1058 */ { ud_itab__1058, UD_TAB__OPC_MOD, "/mod" },
+ /* 1059 */ { ud_itab__1059, UD_TAB__OPC_MOD, "/mod" },
+ /* 1060 */ { ud_itab__1060, UD_TAB__OPC_MOD, "/mod" },
+ /* 1061 */ { ud_itab__1061, UD_TAB__OPC_MOD, "/mod" },
+ /* 1062 */ { ud_itab__1062, UD_TAB__OPC_MOD, "/mod" },
+ /* 1063 */ { ud_itab__1063, UD_TAB__OPC_MOD, "/mod" },
+ /* 1064 */ { ud_itab__1064, UD_TAB__OPC_MOD, "/mod" },
+ /* 1065 */ { ud_itab__1065, UD_TAB__OPC_MOD, "/mod" },
+ /* 1066 */ { ud_itab__1066, UD_TAB__OPC_MOD, "/mod" },
+ /* 1067 */ { ud_itab__1067, UD_TAB__OPC_REG, "/reg" },
+ /* 1068 */ { ud_itab__1068, UD_TAB__OPC_MOD, "/mod" },
+ /* 1069 */ { ud_itab__1069, UD_TAB__OPC_MOD, "/mod" },
+ /* 1070 */ { ud_itab__1070, UD_TAB__OPC_MOD, "/mod" },
+ /* 1071 */ { ud_itab__1071, UD_TAB__OPC_MOD, "/mod" },
+ /* 1072 */ { ud_itab__1072, UD_TAB__OPC_MOD, "/mod" },
+ /* 1073 */ { ud_itab__1073, UD_TAB__OPC_MOD, "/mod" },
+ /* 1074 */ { ud_itab__1074, UD_TAB__OPC_MOD, "/mod" },
+ /* 1075 */ { ud_itab__1075, UD_TAB__OPC_MOD, "/mod" },
+ /* 1076 */ { ud_itab__1076, UD_TAB__OPC_X87, "/x87" },
+ /* 1077 */ { ud_itab__1077, UD_TAB__OPC_MOD, "/mod" },
+ /* 1078 */ { ud_itab__1078, UD_TAB__OPC_MOD, "/mod" },
+ /* 1079 */ { ud_itab__1079, UD_TAB__OPC_MOD, "/mod" },
+ /* 1080 */ { ud_itab__1080, UD_TAB__OPC_MOD, "/mod" },
+ /* 1081 */ { ud_itab__1081, UD_TAB__OPC_MOD, "/mod" },
+ /* 1082 */ { ud_itab__1082, UD_TAB__OPC_MOD, "/mod" },
+ /* 1083 */ { ud_itab__1083, UD_TAB__OPC_MOD, "/mod" },
+ /* 1084 */ { ud_itab__1084, UD_TAB__OPC_MOD, "/mod" },
+ /* 1085 */ { ud_itab__1085, UD_TAB__OPC_MOD, "/mod" },
+ /* 1086 */ { ud_itab__1086, UD_TAB__OPC_MOD, "/mod" },
+ /* 1087 */ { ud_itab__1087, UD_TAB__OPC_MOD, "/mod" },
+ /* 1088 */ { ud_itab__1088, UD_TAB__OPC_MOD, "/mod" },
+ /* 1089 */ { ud_itab__1089, UD_TAB__OPC_MOD, "/mod" },
+ /* 1090 */ { ud_itab__1090, UD_TAB__OPC_MOD, "/mod" },
+ /* 1091 */ { ud_itab__1091, UD_TAB__OPC_MOD, "/mod" },
+ /* 1092 */ { ud_itab__1092, UD_TAB__OPC_MOD, "/mod" },
+ /* 1093 */ { ud_itab__1093, UD_TAB__OPC_MOD, "/mod" },
+ /* 1094 */ { ud_itab__1094, UD_TAB__OPC_MOD, "/mod" },
+ /* 1095 */ { ud_itab__1095, UD_TAB__OPC_MOD, "/mod" },
+ /* 1096 */ { ud_itab__1096, UD_TAB__OPC_MOD, "/mod" },
+ /* 1097 */ { ud_itab__1097, UD_TAB__OPC_MOD, "/mod" },
+ /* 1098 */ { ud_itab__1098, UD_TAB__OPC_MOD, "/mod" },
+ /* 1099 */ { ud_itab__1099, UD_TAB__OPC_MOD, "/mod" },
+ /* 1100 */ { ud_itab__1100, UD_TAB__OPC_MOD, "/mod" },
+ /* 1101 */ { ud_itab__1101, UD_TAB__OPC_MOD, "/mod" },
+ /* 1102 */ { ud_itab__1102, UD_TAB__OPC_MOD, "/mod" },
+ /* 1103 */ { ud_itab__1103, UD_TAB__OPC_MOD, "/mod" },
+ /* 1104 */ { ud_itab__1104, UD_TAB__OPC_MOD, "/mod" },
+ /* 1105 */ { ud_itab__1105, UD_TAB__OPC_MOD, "/mod" },
+ /* 1106 */ { ud_itab__1106, UD_TAB__OPC_MOD, "/mod" },
+ /* 1107 */ { ud_itab__1107, UD_TAB__OPC_MOD, "/mod" },
+ /* 1108 */ { ud_itab__1108, UD_TAB__OPC_MOD, "/mod" },
+ /* 1109 */ { ud_itab__1109, UD_TAB__OPC_MOD, "/mod" },
+ /* 1110 */ { ud_itab__1110, UD_TAB__OPC_MOD, "/mod" },
+ /* 1111 */ { ud_itab__1111, UD_TAB__OPC_MOD, "/mod" },
+ /* 1112 */ { ud_itab__1112, UD_TAB__OPC_MOD, "/mod" },
+ /* 1113 */ { ud_itab__1113, UD_TAB__OPC_MOD, "/mod" },
+ /* 1114 */ { ud_itab__1114, UD_TAB__OPC_MOD, "/mod" },
+ /* 1115 */ { ud_itab__1115, UD_TAB__OPC_MOD, "/mod" },
+ /* 1116 */ { ud_itab__1116, UD_TAB__OPC_MOD, "/mod" },
+ /* 1117 */ { ud_itab__1117, UD_TAB__OPC_MOD, "/mod" },
+ /* 1118 */ { ud_itab__1118, UD_TAB__OPC_MOD, "/mod" },
+ /* 1119 */ { ud_itab__1119, UD_TAB__OPC_MOD, "/mod" },
+ /* 1120 */ { ud_itab__1120, UD_TAB__OPC_MOD, "/mod" },
+ /* 1121 */ { ud_itab__1121, UD_TAB__OPC_MOD, "/mod" },
+ /* 1122 */ { ud_itab__1122, UD_TAB__OPC_MOD, "/mod" },
+ /* 1123 */ { ud_itab__1123, UD_TAB__OPC_MOD, "/mod" },
+ /* 1124 */ { ud_itab__1124, UD_TAB__OPC_MOD, "/mod" },
+ /* 1125 */ { ud_itab__1125, UD_TAB__OPC_MOD, "/mod" },
+ /* 1126 */ { ud_itab__1126, UD_TAB__OPC_ASIZE, "/a" },
+ /* 1127 */ { ud_itab__1127, UD_TAB__OPC_MODE, "/m" },
+ /* 1128 */ { ud_itab__1128, UD_TAB__OPC_REG, "/reg" },
+ /* 1129 */ { ud_itab__1129, UD_TAB__OPC_REG, "/reg" },
+ /* 1130 */ { ud_itab__1130, UD_TAB__OPC_REG, "/reg" },
+ /* 1131 */ { ud_itab__1131, UD_TAB__OPC_REG, "/reg" },
+ /* 1132 */ { ud_itab__1132, UD_TAB__OPC_MODE, "/m" },
+};
+
+/* itab entry operand definitions (for readability) */
+#define O_AL { OP_AL, SZ_B }
+#define O_AX { OP_AX, SZ_W }
+#define O_Av { OP_A, SZ_V }
+#define O_C { OP_C, SZ_NA }
+#define O_CL { OP_CL, SZ_B }
+#define O_CS { OP_CS, SZ_NA }
+#define O_CX { OP_CX, SZ_W }
+#define O_D { OP_D, SZ_NA }
+#define O_DL { OP_DL, SZ_B }
+#define O_DS { OP_DS, SZ_NA }
+#define O_DX { OP_DX, SZ_W }
+#define O_E { OP_E, SZ_NA }
+#define O_ES { OP_ES, SZ_NA }
+#define O_Eb { OP_E, SZ_B }
+#define O_Ed { OP_E, SZ_D }
+#define O_Eq { OP_E, SZ_Q }
+#define O_Ev { OP_E, SZ_V }
+#define O_Ew { OP_E, SZ_W }
+#define O_Ey { OP_E, SZ_Y }
+#define O_Ez { OP_E, SZ_Z }
+#define O_FS { OP_FS, SZ_NA }
+#define O_Fv { OP_F, SZ_V }
+#define O_G { OP_G, SZ_NA }
+#define O_GS { OP_GS, SZ_NA }
+#define O_Gb { OP_G, SZ_B }
+#define O_Gd { OP_G, SZ_D }
+#define O_Gq { OP_G, SZ_Q }
+#define O_Gv { OP_G, SZ_V }
+#define O_Gw { OP_G, SZ_W }
+#define O_Gy { OP_G, SZ_Y }
+#define O_Gz { OP_G, SZ_Z }
+#define O_I1 { OP_I1, SZ_NA }
+#define O_I3 { OP_I3, SZ_NA }
+#define O_Ib { OP_I, SZ_B }
+#define O_Iv { OP_I, SZ_V }
+#define O_Iw { OP_I, SZ_W }
+#define O_Iz { OP_I, SZ_Z }
+#define O_Jb { OP_J, SZ_B }
+#define O_Jv { OP_J, SZ_V }
+#define O_Jz { OP_J, SZ_Z }
+#define O_M { OP_M, SZ_NA }
+#define O_Mb { OP_M, SZ_B }
+#define O_MbRd { OP_MR, SZ_BD }
+#define O_MbRv { OP_MR, SZ_BV }
+#define O_Md { OP_M, SZ_D }
+#define O_MdRy { OP_MR, SZ_DY }
+#define O_MdU { OP_MU, SZ_DO }
+#define O_Mo { OP_M, SZ_O }
+#define O_Mq { OP_M, SZ_Q }
+#define O_MqU { OP_MU, SZ_QO }
+#define O_Ms { OP_M, SZ_W }
+#define O_Mt { OP_M, SZ_T }
+#define O_Mv { OP_M, SZ_V }
+#define O_Mw { OP_M, SZ_W }
+#define O_MwRd { OP_MR, SZ_WD }
+#define O_MwRv { OP_MR, SZ_WV }
+#define O_MwRy { OP_MR, SZ_WY }
+#define O_MwU { OP_MU, SZ_WO }
+#define O_N { OP_N, SZ_Q }
+#define O_NONE { OP_NONE, SZ_NA }
+#define O_Ob { OP_O, SZ_B }
+#define O_Ov { OP_O, SZ_V }
+#define O_Ow { OP_O, SZ_W }
+#define O_P { OP_P, SZ_Q }
+#define O_Q { OP_Q, SZ_Q }
+#define O_R { OP_R, SZ_RDQ }
+#define O_R0b { OP_R0, SZ_B }
+#define O_R0v { OP_R0, SZ_V }
+#define O_R0w { OP_R0, SZ_W }
+#define O_R0y { OP_R0, SZ_Y }
+#define O_R0z { OP_R0, SZ_Z }
+#define O_R1b { OP_R1, SZ_B }
+#define O_R1v { OP_R1, SZ_V }
+#define O_R1w { OP_R1, SZ_W }
+#define O_R1y { OP_R1, SZ_Y }
+#define O_R1z { OP_R1, SZ_Z }
+#define O_R2b { OP_R2, SZ_B }
+#define O_R2v { OP_R2, SZ_V }
+#define O_R2w { OP_R2, SZ_W }
+#define O_R2y { OP_R2, SZ_Y }
+#define O_R2z { OP_R2, SZ_Z }
+#define O_R3b { OP_R3, SZ_B }
+#define O_R3v { OP_R3, SZ_V }
+#define O_R3w { OP_R3, SZ_W }
+#define O_R3y { OP_R3, SZ_Y }
+#define O_R3z { OP_R3, SZ_Z }
+#define O_R4b { OP_R4, SZ_B }
+#define O_R4v { OP_R4, SZ_V }
+#define O_R4w { OP_R4, SZ_W }
+#define O_R4y { OP_R4, SZ_Y }
+#define O_R4z { OP_R4, SZ_Z }
+#define O_R5b { OP_R5, SZ_B }
+#define O_R5v { OP_R5, SZ_V }
+#define O_R5w { OP_R5, SZ_W }
+#define O_R5y { OP_R5, SZ_Y }
+#define O_R5z { OP_R5, SZ_Z }
+#define O_R6b { OP_R6, SZ_B }
+#define O_R6v { OP_R6, SZ_V }
+#define O_R6w { OP_R6, SZ_W }
+#define O_R6y { OP_R6, SZ_Y }
+#define O_R6z { OP_R6, SZ_Z }
+#define O_R7b { OP_R7, SZ_B }
+#define O_R7v { OP_R7, SZ_V }
+#define O_R7w { OP_R7, SZ_W }
+#define O_R7y { OP_R7, SZ_Y }
+#define O_R7z { OP_R7, SZ_Z }
+#define O_S { OP_S, SZ_NA }
+#define O_SS { OP_SS, SZ_NA }
+#define O_ST0 { OP_ST0, SZ_NA }
+#define O_ST1 { OP_ST1, SZ_NA }
+#define O_ST2 { OP_ST2, SZ_NA }
+#define O_ST3 { OP_ST3, SZ_NA }
+#define O_ST4 { OP_ST4, SZ_NA }
+#define O_ST5 { OP_ST5, SZ_NA }
+#define O_ST6 { OP_ST6, SZ_NA }
+#define O_ST7 { OP_ST7, SZ_NA }
+#define O_U { OP_U, SZ_O }
+#define O_V { OP_V, SZ_O }
+#define O_W { OP_W, SZ_O }
+#define O_eAX { OP_eAX, SZ_Z }
+#define O_eCX { OP_eCX, SZ_Z }
+#define O_eDX { OP_eDX, SZ_Z }
+#define O_rAX { OP_rAX, SZ_V }
+#define O_rCX { OP_rCX, SZ_V }
+#define O_rDX { OP_rDX, SZ_V }
+#define O_sIb { OP_sI, SZ_B }
+#define O_sIv { OP_sI, SZ_V }
+#define O_sIz { OP_sI, SZ_Z }
+
+struct ud_itab_entry ud_itab[] = {
+ /* 0000 */ { UD_Iinvalid, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0001 */ { UD_Iadd, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0002 */ { UD_Iadd, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0003 */ { UD_Iadd, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0004 */ { UD_Iadd, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0005 */ { UD_Iadd, O_AL, O_Ib, O_NONE, P_none },
+ /* 0006 */ { UD_Iadd, O_rAX, O_sIz, O_NONE, P_oso|P_rexw },
+ /* 0007 */ { UD_Ipush, O_ES, O_NONE, O_NONE, P_inv64 },
+ /* 0008 */ { UD_Ipop, O_ES, O_NONE, O_NONE, P_inv64 },
+ /* 0009 */ { UD_Ior, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0010 */ { UD_Ior, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0011 */ { UD_Ior, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0012 */ { UD_Ior, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0013 */ { UD_Ior, O_AL, O_Ib, O_NONE, P_none },
+ /* 0014 */ { UD_Ior, O_rAX, O_sIz, O_NONE, P_oso|P_rexw },
+ /* 0015 */ { UD_Ipush, O_CS, O_NONE, O_NONE, P_inv64 },
+ /* 0016 */ { UD_Isldt, O_MwRv, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0017 */ { UD_Istr, O_MwRv, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0018 */ { UD_Illdt, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0019 */ { UD_Iltr, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0020 */ { UD_Iverr, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0021 */ { UD_Iverw, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0022 */ { UD_Isgdt, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0023 */ { UD_Isidt, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0024 */ { UD_Ilgdt, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0025 */ { UD_Ilidt, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0026 */ { UD_Ismsw, O_MwRv, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0027 */ { UD_Ilmsw, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0028 */ { UD_Iinvlpg, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0029 */ { UD_Ivmcall, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0030 */ { UD_Ivmlaunch, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0031 */ { UD_Ivmresume, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0032 */ { UD_Ivmxoff, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0033 */ { UD_Imonitor, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0034 */ { UD_Imwait, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0035 */ { UD_Ixgetbv, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0036 */ { UD_Ixsetbv, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0037 */ { UD_Ivmrun, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0038 */ { UD_Ivmmcall, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0039 */ { UD_Ivmload, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0040 */ { UD_Ivmsave, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0041 */ { UD_Istgi, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0042 */ { UD_Iclgi, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0043 */ { UD_Iskinit, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0044 */ { UD_Iinvlpga, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0045 */ { UD_Ismsw, O_MwRv, O_NONE, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0046 */ { UD_Ilmsw, O_Ew, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0047 */ { UD_Iswapgs, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0048 */ { UD_Irdtscp, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0049 */ { UD_Ilar, O_Gv, O_Ew, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0050 */ { UD_Ilsl, O_Gv, O_Ew, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0051 */ { UD_Isyscall, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0052 */ { UD_Iclts, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0053 */ { UD_Isysret, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0054 */ { UD_Iinvd, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0055 */ { UD_Iwbinvd, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0056 */ { UD_Iud2, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0057 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0058 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0059 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0060 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0061 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0062 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0063 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0064 */ { UD_Iprefetch, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0065 */ { UD_Ifemms, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0066 */ { UD_Ipi2fw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0067 */ { UD_Ipi2fd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0068 */ { UD_Ipf2iw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0069 */ { UD_Ipf2id, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0070 */ { UD_Ipfnacc, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0071 */ { UD_Ipfpnacc, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0072 */ { UD_Ipfcmpge, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0073 */ { UD_Ipfmin, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0074 */ { UD_Ipfrcp, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0075 */ { UD_Ipfrsqrt, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0076 */ { UD_Ipfsub, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0077 */ { UD_Ipfadd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0078 */ { UD_Ipfcmpgt, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0079 */ { UD_Ipfmax, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0080 */ { UD_Ipfrcpit1, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0081 */ { UD_Ipfrsqit1, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0082 */ { UD_Ipfsubr, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0083 */ { UD_Ipfacc, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0084 */ { UD_Ipfcmpeq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0085 */ { UD_Ipfmul, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0086 */ { UD_Ipfrcpit2, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0087 */ { UD_Ipmulhrw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0088 */ { UD_Ipswapd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0089 */ { UD_Ipavgusb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0090 */ { UD_Imovups, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0091 */ { UD_Imovsd, O_V, O_W, O_NONE, P_str|P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0092 */ { UD_Imovss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0093 */ { UD_Imovupd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0094 */ { UD_Imovups, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0095 */ { UD_Imovsd, O_W, O_V, O_NONE, P_str|P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0096 */ { UD_Imovss, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0097 */ { UD_Imovupd, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0098 */ { UD_Imovlps, O_V, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0099 */ { UD_Imovddup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0100 */ { UD_Imovsldup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0101 */ { UD_Imovlpd, O_V, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0102 */ { UD_Imovhlps, O_V, O_U, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0103 */ { UD_Imovddup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0104 */ { UD_Imovsldup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0105 */ { UD_Imovlps, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0106 */ { UD_Imovlpd, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0107 */ { UD_Iunpcklps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0108 */ { UD_Iunpcklpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0109 */ { UD_Iunpckhps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0110 */ { UD_Iunpckhpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0111 */ { UD_Imovhps, O_V, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0112 */ { UD_Imovshdup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0113 */ { UD_Imovhpd, O_V, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0114 */ { UD_Imovlhps, O_V, O_U, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0115 */ { UD_Imovshdup, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0116 */ { UD_Imovhps, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0117 */ { UD_Imovhpd, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0118 */ { UD_Iprefetchnta, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0119 */ { UD_Iprefetcht0, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0120 */ { UD_Iprefetcht1, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0121 */ { UD_Iprefetcht2, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0122 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0123 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0124 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0125 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0126 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0127 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0128 */ { UD_Inop, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0129 */ { UD_Imov, O_R, O_C, O_NONE, P_rexr|P_rexw|P_rexb },
+ /* 0130 */ { UD_Imov, O_R, O_D, O_NONE, P_rexr|P_rexw|P_rexb },
+ /* 0131 */ { UD_Imov, O_C, O_R, O_NONE, P_rexr|P_rexw|P_rexb },
+ /* 0132 */ { UD_Imov, O_D, O_R, O_NONE, P_rexr|P_rexw|P_rexb },
+ /* 0133 */ { UD_Imovaps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0134 */ { UD_Imovapd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0135 */ { UD_Imovaps, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0136 */ { UD_Imovapd, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0137 */ { UD_Icvtpi2ps, O_V, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0138 */ { UD_Icvtsi2sd, O_V, O_Ey, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0139 */ { UD_Icvtsi2ss, O_V, O_Ey, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0140 */ { UD_Icvtpi2pd, O_V, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0141 */ { UD_Imovntps, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0142 */ { UD_Imovntpd, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0143 */ { UD_Icvttps2pi, O_P, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0144 */ { UD_Icvttsd2si, O_Gy, O_W, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0145 */ { UD_Icvttss2si, O_Gy, O_W, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0146 */ { UD_Icvttpd2pi, O_P, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0147 */ { UD_Icvtps2pi, O_P, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0148 */ { UD_Icvtsd2si, O_Gy, O_W, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0149 */ { UD_Icvtss2si, O_Gy, O_W, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0150 */ { UD_Icvtpd2pi, O_P, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0151 */ { UD_Iucomiss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0152 */ { UD_Iucomisd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0153 */ { UD_Icomiss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0154 */ { UD_Icomisd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0155 */ { UD_Iwrmsr, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0156 */ { UD_Irdtsc, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0157 */ { UD_Irdmsr, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0158 */ { UD_Irdpmc, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0159 */ { UD_Isysenter, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0160 */ { UD_Isysenter, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0161 */ { UD_Isysexit, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0162 */ { UD_Isysexit, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0163 */ { UD_Igetsec, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0164 */ { UD_Ipshufb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0165 */ { UD_Ipshufb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0166 */ { UD_Iphaddw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0167 */ { UD_Iphaddw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0168 */ { UD_Iphaddd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0169 */ { UD_Iphaddd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0170 */ { UD_Iphaddsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0171 */ { UD_Iphaddsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0172 */ { UD_Ipmaddubsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0173 */ { UD_Ipmaddubsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0174 */ { UD_Iphsubw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0175 */ { UD_Iphsubw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0176 */ { UD_Iphsubd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0177 */ { UD_Iphsubd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0178 */ { UD_Iphsubsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0179 */ { UD_Iphsubsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0180 */ { UD_Ipsignb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0181 */ { UD_Ipsignb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0182 */ { UD_Ipsignw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0183 */ { UD_Ipsignw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0184 */ { UD_Ipsignd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0185 */ { UD_Ipsignd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0186 */ { UD_Ipmulhrsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0187 */ { UD_Ipmulhrsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0188 */ { UD_Ipblendvb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0189 */ { UD_Iblendvps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0190 */ { UD_Iblendvpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0191 */ { UD_Iptest, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0192 */ { UD_Ipabsb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0193 */ { UD_Ipabsb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0194 */ { UD_Ipabsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0195 */ { UD_Ipabsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0196 */ { UD_Ipabsd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0197 */ { UD_Ipabsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0198 */ { UD_Ipmovsxbw, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0199 */ { UD_Ipmovsxbd, O_V, O_MdU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0200 */ { UD_Ipmovsxbq, O_V, O_MwU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0201 */ { UD_Ipmovsxwd, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0202 */ { UD_Ipmovsxwq, O_V, O_MdU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0203 */ { UD_Ipmovsxdq, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0204 */ { UD_Ipmuldq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0205 */ { UD_Ipcmpeqq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0206 */ { UD_Imovntdqa, O_V, O_Mo, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0207 */ { UD_Ipackusdw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0208 */ { UD_Ipmovzxbw, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0209 */ { UD_Ipmovzxbd, O_V, O_MdU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0210 */ { UD_Ipmovzxbq, O_V, O_MwU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0211 */ { UD_Ipmovzxwd, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0212 */ { UD_Ipmovzxwq, O_V, O_MdU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0213 */ { UD_Ipmovzxdq, O_V, O_MqU, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0214 */ { UD_Ipcmpgtq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0215 */ { UD_Ipminsb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0216 */ { UD_Ipminsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0217 */ { UD_Ipminuw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0218 */ { UD_Ipminud, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0219 */ { UD_Ipmaxsb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0220 */ { UD_Ipmaxsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0221 */ { UD_Ipmaxuw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0222 */ { UD_Ipmaxud, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0223 */ { UD_Ipmulld, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0224 */ { UD_Iphminposuw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0225 */ { UD_Iinvept, O_Gq, O_Mo, O_NONE, P_none },
+ /* 0226 */ { UD_Iinvvpid, O_Gq, O_Mo, O_NONE, P_none },
+ /* 0227 */ { UD_Iaesimc, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0228 */ { UD_Iaesenc, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0229 */ { UD_Iaesenclast, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0230 */ { UD_Iaesdec, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0231 */ { UD_Iaesdeclast, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0232 */ { UD_Imovbe, O_Gv, O_Mv, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0233 */ { UD_Icrc32, O_Gy, O_Eb, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0234 */ { UD_Imovbe, O_Mv, O_Gv, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0235 */ { UD_Icrc32, O_Gy, O_Ev, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0236 */ { UD_Iroundps, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0237 */ { UD_Iroundpd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0238 */ { UD_Iroundss, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0239 */ { UD_Iroundsd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0240 */ { UD_Iblendps, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0241 */ { UD_Iblendpd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0242 */ { UD_Ipblendw, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0243 */ { UD_Ipalignr, O_P, O_Q, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0244 */ { UD_Ipalignr, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0245 */ { UD_Ipextrb, O_MbRv, O_V, O_Ib, P_aso|P_rexx|P_rexr|P_rexb|P_def64 },
+ /* 0246 */ { UD_Ipextrw, O_MwRd, O_V, O_Ib, P_aso|P_rexx|P_rexr|P_rexb },
+ /* 0247 */ { UD_Ipextrd, O_Ed, O_V, O_Ib, P_aso|P_rexr|P_rexx|P_rexw|P_rexb },
+ /* 0248 */ { UD_Ipextrd, O_Ed, O_V, O_Ib, P_aso|P_rexr|P_rexx|P_rexw|P_rexb },
+ /* 0249 */ { UD_Ipextrq, O_Eq, O_V, O_Ib, P_aso|P_rexr|P_rexw|P_rexb|P_def64 },
+ /* 0250 */ { UD_Iextractps, O_MdRy, O_V, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0251 */ { UD_Ipinsrb, O_V, O_MbRd, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0252 */ { UD_Iinsertps, O_V, O_Md, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0253 */ { UD_Ipinsrd, O_V, O_Ed, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0254 */ { UD_Ipinsrd, O_V, O_Ed, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0255 */ { UD_Ipinsrq, O_V, O_Eq, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0256 */ { UD_Idpps, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0257 */ { UD_Idppd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0258 */ { UD_Impsadbw, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0259 */ { UD_Ipclmulqdq, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0260 */ { UD_Ipcmpestrm, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0261 */ { UD_Ipcmpestri, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0262 */ { UD_Ipcmpistrm, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0263 */ { UD_Ipcmpistri, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0264 */ { UD_Iaeskeygenassist, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0265 */ { UD_Icmovo, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0266 */ { UD_Icmovno, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0267 */ { UD_Icmovb, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0268 */ { UD_Icmovae, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0269 */ { UD_Icmovz, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0270 */ { UD_Icmovnz, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0271 */ { UD_Icmovbe, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0272 */ { UD_Icmova, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0273 */ { UD_Icmovs, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0274 */ { UD_Icmovns, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0275 */ { UD_Icmovp, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0276 */ { UD_Icmovnp, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0277 */ { UD_Icmovl, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0278 */ { UD_Icmovge, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0279 */ { UD_Icmovle, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0280 */ { UD_Icmovg, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0281 */ { UD_Imovmskps, O_Gd, O_U, O_NONE, P_oso|P_rexr|P_rexb },
+ /* 0282 */ { UD_Imovmskpd, O_Gd, O_U, O_NONE, P_oso|P_rexr|P_rexb },
+ /* 0283 */ { UD_Isqrtps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0284 */ { UD_Isqrtsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0285 */ { UD_Isqrtss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0286 */ { UD_Isqrtpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0287 */ { UD_Irsqrtps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0288 */ { UD_Irsqrtss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0289 */ { UD_Ircpps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0290 */ { UD_Ircpss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0291 */ { UD_Iandps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0292 */ { UD_Iandpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0293 */ { UD_Iandnps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0294 */ { UD_Iandnpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0295 */ { UD_Iorps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0296 */ { UD_Iorpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0297 */ { UD_Ixorps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0298 */ { UD_Ixorpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0299 */ { UD_Iaddps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0300 */ { UD_Iaddsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0301 */ { UD_Iaddss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0302 */ { UD_Iaddpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0303 */ { UD_Imulps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0304 */ { UD_Imulsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0305 */ { UD_Imulss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0306 */ { UD_Imulpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0307 */ { UD_Icvtps2pd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0308 */ { UD_Icvtsd2ss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0309 */ { UD_Icvtss2sd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0310 */ { UD_Icvtpd2ps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0311 */ { UD_Icvtdq2ps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0312 */ { UD_Icvttps2dq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0313 */ { UD_Icvtps2dq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0314 */ { UD_Isubps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0315 */ { UD_Isubsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0316 */ { UD_Isubss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0317 */ { UD_Isubpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0318 */ { UD_Iminps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0319 */ { UD_Iminsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0320 */ { UD_Iminss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0321 */ { UD_Iminpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0322 */ { UD_Idivps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0323 */ { UD_Idivsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0324 */ { UD_Idivss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0325 */ { UD_Idivpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0326 */ { UD_Imaxps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0327 */ { UD_Imaxsd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0328 */ { UD_Imaxss, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0329 */ { UD_Imaxpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0330 */ { UD_Ipunpcklbw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0331 */ { UD_Ipunpcklbw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0332 */ { UD_Ipunpcklwd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0333 */ { UD_Ipunpcklwd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0334 */ { UD_Ipunpckldq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0335 */ { UD_Ipunpckldq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0336 */ { UD_Ipacksswb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0337 */ { UD_Ipacksswb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0338 */ { UD_Ipcmpgtb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0339 */ { UD_Ipcmpgtb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0340 */ { UD_Ipcmpgtw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0341 */ { UD_Ipcmpgtw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0342 */ { UD_Ipcmpgtd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0343 */ { UD_Ipcmpgtd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0344 */ { UD_Ipackuswb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0345 */ { UD_Ipackuswb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0346 */ { UD_Ipunpckhbw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0347 */ { UD_Ipunpckhbw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0348 */ { UD_Ipunpckhwd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0349 */ { UD_Ipunpckhwd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0350 */ { UD_Ipunpckhdq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0351 */ { UD_Ipunpckhdq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0352 */ { UD_Ipackssdw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0353 */ { UD_Ipackssdw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0354 */ { UD_Ipunpcklqdq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0355 */ { UD_Ipunpckhqdq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0356 */ { UD_Imovd, O_P, O_Ey, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0357 */ { UD_Imovd, O_V, O_Ey, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0358 */ { UD_Imovq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0359 */ { UD_Imovdqu, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0360 */ { UD_Imovdqa, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0361 */ { UD_Ipshufw, O_P, O_Q, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0362 */ { UD_Ipshuflw, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0363 */ { UD_Ipshufhw, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0364 */ { UD_Ipshufd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0365 */ { UD_Ipsrlw, O_N, O_Ib, O_NONE, P_none },
+ /* 0366 */ { UD_Ipsrlw, O_U, O_Ib, O_NONE, P_rexb },
+ /* 0367 */ { UD_Ipsraw, O_N, O_Ib, O_NONE, P_none },
+ /* 0368 */ { UD_Ipsraw, O_U, O_Ib, O_NONE, P_rexb },
+ /* 0369 */ { UD_Ipsllw, O_N, O_Ib, O_NONE, P_none },
+ /* 0370 */ { UD_Ipsllw, O_U, O_Ib, O_NONE, P_rexb },
+ /* 0371 */ { UD_Ipsrld, O_N, O_Ib, O_NONE, P_none },
+ /* 0372 */ { UD_Ipsrld, O_U, O_Ib, O_NONE, P_rexb },
+ /* 0373 */ { UD_Ipsrad, O_N, O_Ib, O_NONE, P_none },
+ /* 0374 */ { UD_Ipsrad, O_U, O_Ib, O_NONE, P_rexb },
+ /* 0375 */ { UD_Ipslld, O_N, O_Ib, O_NONE, P_none },
+ /* 0376 */ { UD_Ipslld, O_U, O_Ib, O_NONE, P_rexb },
+ /* 0377 */ { UD_Ipsrlq, O_N, O_Ib, O_NONE, P_none },
+ /* 0378 */ { UD_Ipsrlq, O_U, O_Ib, O_NONE, P_rexb },
+ /* 0379 */ { UD_Ipsrldq, O_U, O_Ib, O_NONE, P_rexb },
+ /* 0380 */ { UD_Ipsllq, O_N, O_Ib, O_NONE, P_none },
+ /* 0381 */ { UD_Ipsllq, O_U, O_Ib, O_NONE, P_rexb },
+ /* 0382 */ { UD_Ipslldq, O_U, O_Ib, O_NONE, P_rexb },
+ /* 0383 */ { UD_Ipcmpeqb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0384 */ { UD_Ipcmpeqb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0385 */ { UD_Ipcmpeqw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0386 */ { UD_Ipcmpeqw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0387 */ { UD_Ipcmpeqd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0388 */ { UD_Ipcmpeqd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0389 */ { UD_Iemms, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0390 */ { UD_Ivmread, O_Ey, O_Gy, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_def64 },
+ /* 0391 */ { UD_Ivmwrite, O_Gy, O_Ey, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_def64 },
+ /* 0392 */ { UD_Ihaddps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0393 */ { UD_Ihaddpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0394 */ { UD_Ihsubps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0395 */ { UD_Ihsubpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0396 */ { UD_Imovd, O_Ey, O_P, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0397 */ { UD_Imovq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0398 */ { UD_Imovd, O_Ey, O_V, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0399 */ { UD_Imovq, O_Q, O_P, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0400 */ { UD_Imovdqu, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0401 */ { UD_Imovdqa, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0402 */ { UD_Ijo, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0403 */ { UD_Ijno, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0404 */ { UD_Ijb, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0405 */ { UD_Ijae, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0406 */ { UD_Ijz, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0407 */ { UD_Ijnz, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0408 */ { UD_Ijbe, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0409 */ { UD_Ija, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0410 */ { UD_Ijs, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0411 */ { UD_Ijns, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0412 */ { UD_Ijp, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0413 */ { UD_Ijnp, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0414 */ { UD_Ijl, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0415 */ { UD_Ijge, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0416 */ { UD_Ijle, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0417 */ { UD_Ijg, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0418 */ { UD_Iseto, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0419 */ { UD_Isetno, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0420 */ { UD_Isetb, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0421 */ { UD_Isetae, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0422 */ { UD_Isetz, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0423 */ { UD_Isetnz, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0424 */ { UD_Isetbe, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0425 */ { UD_Iseta, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0426 */ { UD_Isets, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0427 */ { UD_Isetns, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0428 */ { UD_Isetp, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0429 */ { UD_Isetnp, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0430 */ { UD_Isetl, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0431 */ { UD_Isetge, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0432 */ { UD_Isetle, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0433 */ { UD_Isetg, O_Eb, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0434 */ { UD_Ipush, O_FS, O_NONE, O_NONE, P_none },
+ /* 0435 */ { UD_Ipop, O_FS, O_NONE, O_NONE, P_none },
+ /* 0436 */ { UD_Icpuid, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0437 */ { UD_Ibt, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0438 */ { UD_Ishld, O_Ev, O_Gv, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0439 */ { UD_Ishld, O_Ev, O_Gv, O_CL, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0440 */ { UD_Imontmul, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0441 */ { UD_Ixsha1, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0442 */ { UD_Ixsha256, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0443 */ { UD_Ixstore, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0444 */ { UD_Ixcryptecb, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0445 */ { UD_Ixcryptcbc, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0446 */ { UD_Ixcryptctr, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0447 */ { UD_Ixcryptcfb, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0448 */ { UD_Ixcryptofb, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0449 */ { UD_Ipush, O_GS, O_NONE, O_NONE, P_none },
+ /* 0450 */ { UD_Ipop, O_GS, O_NONE, O_NONE, P_none },
+ /* 0451 */ { UD_Irsm, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0452 */ { UD_Ibts, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0453 */ { UD_Ishrd, O_Ev, O_Gv, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0454 */ { UD_Ishrd, O_Ev, O_Gv, O_CL, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0455 */ { UD_Ifxsave, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0456 */ { UD_Ifxrstor, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0457 */ { UD_Ildmxcsr, O_Md, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0458 */ { UD_Istmxcsr, O_Md, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0459 */ { UD_Ixsave, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0460 */ { UD_Ixrstor, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0461 */ { UD_Iclflush, O_M, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0462 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0463 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0464 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0465 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0466 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0467 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0468 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0469 */ { UD_Ilfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0470 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0471 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0472 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0473 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0474 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0475 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0476 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0477 */ { UD_Imfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0478 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0479 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0480 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0481 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0482 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0483 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0484 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0485 */ { UD_Isfence, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0486 */ { UD_Iimul, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0487 */ { UD_Icmpxchg, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0488 */ { UD_Icmpxchg, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0489 */ { UD_Ilss, O_Gv, O_M, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0490 */ { UD_Ibtr, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0491 */ { UD_Ilfs, O_Gz, O_M, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0492 */ { UD_Ilgs, O_Gz, O_M, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0493 */ { UD_Imovzx, O_Gv, O_Eb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0494 */ { UD_Imovzx, O_Gy, O_Ew, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0495 */ { UD_Ipopcnt, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexr|P_rexw|P_rexx|P_rexb },
+ /* 0496 */ { UD_Ibt, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0497 */ { UD_Ibts, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0498 */ { UD_Ibtr, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0499 */ { UD_Ibtc, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0500 */ { UD_Ibtc, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0501 */ { UD_Ibsf, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0502 */ { UD_Ibsr, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0503 */ { UD_Imovsx, O_Gv, O_Eb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0504 */ { UD_Imovsx, O_Gy, O_Ew, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0505 */ { UD_Ixadd, O_Eb, O_Gb, O_NONE, P_aso|P_oso|P_rexr|P_rexx|P_rexb },
+ /* 0506 */ { UD_Ixadd, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0507 */ { UD_Icmpps, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0508 */ { UD_Icmpsd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0509 */ { UD_Icmpss, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0510 */ { UD_Icmppd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0511 */ { UD_Imovnti, O_M, O_Gy, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0512 */ { UD_Ipinsrw, O_P, O_MwRy, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 },
+ /* 0513 */ { UD_Ipinsrw, O_V, O_MwRy, O_Ib, P_aso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 },
+ /* 0514 */ { UD_Ipextrw, O_Gd, O_N, O_Ib, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0515 */ { UD_Ipextrw, O_Gd, O_U, O_Ib, P_aso|P_rexr|P_rexb },
+ /* 0516 */ { UD_Ishufps, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0517 */ { UD_Ishufpd, O_V, O_W, O_Ib, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0518 */ { UD_Icmpxchg8b, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0519 */ { UD_Icmpxchg8b, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0520 */ { UD_Icmpxchg16b, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0521 */ { UD_Ivmptrld, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0522 */ { UD_Ivmxon, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0523 */ { UD_Ivmclear, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0524 */ { UD_Ivmptrst, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0525 */ { UD_Ibswap, O_R0y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0526 */ { UD_Ibswap, O_R1y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0527 */ { UD_Ibswap, O_R2y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0528 */ { UD_Ibswap, O_R3y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0529 */ { UD_Ibswap, O_R4y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0530 */ { UD_Ibswap, O_R5y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0531 */ { UD_Ibswap, O_R6y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0532 */ { UD_Ibswap, O_R7y, O_NONE, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0533 */ { UD_Iaddsubps, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0534 */ { UD_Iaddsubpd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0535 */ { UD_Ipsrlw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0536 */ { UD_Ipsrlw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0537 */ { UD_Ipsrld, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0538 */ { UD_Ipsrld, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0539 */ { UD_Ipsrlq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0540 */ { UD_Ipsrlq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0541 */ { UD_Ipaddq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0542 */ { UD_Ipaddq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0543 */ { UD_Ipmullw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0544 */ { UD_Ipmullw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0545 */ { UD_Imovdq2q, O_P, O_U, O_NONE, P_aso|P_rexb },
+ /* 0546 */ { UD_Imovq2dq, O_V, O_N, O_NONE, P_aso|P_rexr },
+ /* 0547 */ { UD_Imovq, O_W, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0548 */ { UD_Ipmovmskb, O_Gd, O_N, O_NONE, P_oso|P_rexr|P_rexb },
+ /* 0549 */ { UD_Ipmovmskb, O_Gd, O_U, O_NONE, P_rexr|P_rexb },
+ /* 0550 */ { UD_Ipsubusb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0551 */ { UD_Ipsubusb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0552 */ { UD_Ipsubusw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0553 */ { UD_Ipsubusw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0554 */ { UD_Ipminub, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0555 */ { UD_Ipminub, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0556 */ { UD_Ipand, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0557 */ { UD_Ipand, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0558 */ { UD_Ipaddusb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0559 */ { UD_Ipaddusb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0560 */ { UD_Ipaddusw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0561 */ { UD_Ipaddusw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0562 */ { UD_Ipmaxub, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0563 */ { UD_Ipmaxub, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0564 */ { UD_Ipandn, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0565 */ { UD_Ipandn, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0566 */ { UD_Ipavgb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0567 */ { UD_Ipavgb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0568 */ { UD_Ipsraw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0569 */ { UD_Ipsraw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0570 */ { UD_Ipsrad, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0571 */ { UD_Ipsrad, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0572 */ { UD_Ipavgw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0573 */ { UD_Ipavgw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0574 */ { UD_Ipmulhuw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0575 */ { UD_Ipmulhuw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0576 */ { UD_Ipmulhw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0577 */ { UD_Ipmulhw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0578 */ { UD_Icvtpd2dq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0579 */ { UD_Icvtdq2pd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0580 */ { UD_Icvttpd2dq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0581 */ { UD_Imovntq, O_M, O_P, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0582 */ { UD_Imovntdq, O_M, O_V, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0583 */ { UD_Ipsubsb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0584 */ { UD_Ipsubsb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0585 */ { UD_Ipsubsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0586 */ { UD_Ipsubsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0587 */ { UD_Ipminsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0588 */ { UD_Ipminsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0589 */ { UD_Ipor, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0590 */ { UD_Ipor, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0591 */ { UD_Ipaddsb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0592 */ { UD_Ipaddsb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0593 */ { UD_Ipaddsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0594 */ { UD_Ipaddsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0595 */ { UD_Ipmaxsw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0596 */ { UD_Ipmaxsw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0597 */ { UD_Ipxor, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0598 */ { UD_Ipxor, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0599 */ { UD_Ilddqu, O_V, O_M, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0600 */ { UD_Ipsllw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0601 */ { UD_Ipsllw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0602 */ { UD_Ipslld, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0603 */ { UD_Ipslld, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0604 */ { UD_Ipsllq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0605 */ { UD_Ipsllq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0606 */ { UD_Ipmuludq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0607 */ { UD_Ipmuludq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0608 */ { UD_Ipmaddwd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0609 */ { UD_Ipmaddwd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0610 */ { UD_Ipsadbw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0611 */ { UD_Ipsadbw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0612 */ { UD_Imaskmovq, O_P, O_N, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0613 */ { UD_Imaskmovdqu, O_V, O_U, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0614 */ { UD_Ipsubb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0615 */ { UD_Ipsubb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0616 */ { UD_Ipsubw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0617 */ { UD_Ipsubw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0618 */ { UD_Ipsubd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0619 */ { UD_Ipsubd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0620 */ { UD_Ipsubq, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0621 */ { UD_Ipsubq, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0622 */ { UD_Ipaddb, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0623 */ { UD_Ipaddb, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0624 */ { UD_Ipaddw, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0625 */ { UD_Ipaddw, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0626 */ { UD_Ipaddd, O_P, O_Q, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0627 */ { UD_Ipaddd, O_V, O_W, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0628 */ { UD_Iadc, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0629 */ { UD_Iadc, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0630 */ { UD_Iadc, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0631 */ { UD_Iadc, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0632 */ { UD_Iadc, O_AL, O_Ib, O_NONE, P_none },
+ /* 0633 */ { UD_Iadc, O_rAX, O_sIz, O_NONE, P_oso|P_rexw },
+ /* 0634 */ { UD_Ipush, O_SS, O_NONE, O_NONE, P_inv64 },
+ /* 0635 */ { UD_Ipop, O_SS, O_NONE, O_NONE, P_inv64 },
+ /* 0636 */ { UD_Isbb, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0637 */ { UD_Isbb, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0638 */ { UD_Isbb, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0639 */ { UD_Isbb, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0640 */ { UD_Isbb, O_AL, O_Ib, O_NONE, P_none },
+ /* 0641 */ { UD_Isbb, O_rAX, O_sIz, O_NONE, P_oso|P_rexw },
+ /* 0642 */ { UD_Ipush, O_DS, O_NONE, O_NONE, P_inv64 },
+ /* 0643 */ { UD_Ipop, O_DS, O_NONE, O_NONE, P_inv64 },
+ /* 0644 */ { UD_Iand, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0645 */ { UD_Iand, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0646 */ { UD_Iand, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0647 */ { UD_Iand, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0648 */ { UD_Iand, O_AL, O_Ib, O_NONE, P_none },
+ /* 0649 */ { UD_Iand, O_rAX, O_sIz, O_NONE, P_oso|P_rexw },
+ /* 0650 */ { UD_Idaa, O_NONE, O_NONE, O_NONE, P_inv64 },
+ /* 0651 */ { UD_Isub, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0652 */ { UD_Isub, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0653 */ { UD_Isub, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0654 */ { UD_Isub, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0655 */ { UD_Isub, O_AL, O_Ib, O_NONE, P_none },
+ /* 0656 */ { UD_Isub, O_rAX, O_sIz, O_NONE, P_oso|P_rexw },
+ /* 0657 */ { UD_Idas, O_NONE, O_NONE, O_NONE, P_inv64 },
+ /* 0658 */ { UD_Ixor, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0659 */ { UD_Ixor, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0660 */ { UD_Ixor, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0661 */ { UD_Ixor, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0662 */ { UD_Ixor, O_AL, O_Ib, O_NONE, P_none },
+ /* 0663 */ { UD_Ixor, O_rAX, O_sIz, O_NONE, P_oso|P_rexw },
+ /* 0664 */ { UD_Iaaa, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0665 */ { UD_Icmp, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0666 */ { UD_Icmp, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0667 */ { UD_Icmp, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0668 */ { UD_Icmp, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0669 */ { UD_Icmp, O_AL, O_Ib, O_NONE, P_none },
+ /* 0670 */ { UD_Icmp, O_rAX, O_sIz, O_NONE, P_oso|P_rexw },
+ /* 0671 */ { UD_Iaas, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0672 */ { UD_Iinc, O_R0z, O_NONE, O_NONE, P_oso },
+ /* 0673 */ { UD_Iinc, O_R1z, O_NONE, O_NONE, P_oso },
+ /* 0674 */ { UD_Iinc, O_R2z, O_NONE, O_NONE, P_oso },
+ /* 0675 */ { UD_Iinc, O_R3z, O_NONE, O_NONE, P_oso },
+ /* 0676 */ { UD_Iinc, O_R4z, O_NONE, O_NONE, P_oso },
+ /* 0677 */ { UD_Iinc, O_R5z, O_NONE, O_NONE, P_oso },
+ /* 0678 */ { UD_Iinc, O_R6z, O_NONE, O_NONE, P_oso },
+ /* 0679 */ { UD_Iinc, O_R7z, O_NONE, O_NONE, P_oso },
+ /* 0680 */ { UD_Idec, O_R0z, O_NONE, O_NONE, P_oso },
+ /* 0681 */ { UD_Idec, O_R1z, O_NONE, O_NONE, P_oso },
+ /* 0682 */ { UD_Idec, O_R2z, O_NONE, O_NONE, P_oso },
+ /* 0683 */ { UD_Idec, O_R3z, O_NONE, O_NONE, P_oso },
+ /* 0684 */ { UD_Idec, O_R4z, O_NONE, O_NONE, P_oso },
+ /* 0685 */ { UD_Idec, O_R5z, O_NONE, O_NONE, P_oso },
+ /* 0686 */ { UD_Idec, O_R6z, O_NONE, O_NONE, P_oso },
+ /* 0687 */ { UD_Idec, O_R7z, O_NONE, O_NONE, P_oso },
+ /* 0688 */ { UD_Ipush, O_R0v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0689 */ { UD_Ipush, O_R1v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0690 */ { UD_Ipush, O_R2v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0691 */ { UD_Ipush, O_R3v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0692 */ { UD_Ipush, O_R4v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0693 */ { UD_Ipush, O_R5v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0694 */ { UD_Ipush, O_R6v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0695 */ { UD_Ipush, O_R7v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0696 */ { UD_Ipop, O_R0v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0697 */ { UD_Ipop, O_R1v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0698 */ { UD_Ipop, O_R2v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0699 */ { UD_Ipop, O_R3v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0700 */ { UD_Ipop, O_R4v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0701 */ { UD_Ipop, O_R5v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0702 */ { UD_Ipop, O_R6v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0703 */ { UD_Ipop, O_R7v, O_NONE, O_NONE, P_oso|P_rexb|P_def64 },
+ /* 0704 */ { UD_Ipusha, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 },
+ /* 0705 */ { UD_Ipushad, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 },
+ /* 0706 */ { UD_Ipopa, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 },
+ /* 0707 */ { UD_Ipopad, O_NONE, O_NONE, O_NONE, P_oso|P_inv64 },
+ /* 0708 */ { UD_Ibound, O_Gv, O_M, O_NONE, P_aso|P_oso },
+ /* 0709 */ { UD_Iarpl, O_Ew, O_Gw, O_NONE, P_aso },
+ /* 0710 */ { UD_Imovsxd, O_Gq, O_Ed, O_NONE, P_aso|P_oso|P_rexw|P_rexx|P_rexr|P_rexb },
+ /* 0711 */ { UD_Ipush, O_sIz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0712 */ { UD_Iimul, O_Gv, O_Ev, O_Iz, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0713 */ { UD_Ipush, O_sIb, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0714 */ { UD_Iimul, O_Gv, O_Ev, O_sIb, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0715 */ { UD_Iinsb, O_NONE, O_NONE, O_NONE, P_str|P_seg },
+ /* 0716 */ { UD_Iinsw, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg },
+ /* 0717 */ { UD_Iinsd, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg },
+ /* 0718 */ { UD_Ioutsb, O_NONE, O_NONE, O_NONE, P_str|P_seg },
+ /* 0719 */ { UD_Ioutsw, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg },
+ /* 0720 */ { UD_Ioutsd, O_NONE, O_NONE, O_NONE, P_str|P_oso|P_seg },
+ /* 0721 */ { UD_Ijo, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0722 */ { UD_Ijno, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0723 */ { UD_Ijb, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0724 */ { UD_Ijae, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0725 */ { UD_Ijz, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0726 */ { UD_Ijnz, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0727 */ { UD_Ijbe, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0728 */ { UD_Ija, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0729 */ { UD_Ijs, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0730 */ { UD_Ijns, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0731 */ { UD_Ijp, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0732 */ { UD_Ijnp, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0733 */ { UD_Ijl, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0734 */ { UD_Ijge, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0735 */ { UD_Ijle, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0736 */ { UD_Ijg, O_Jb, O_NONE, O_NONE, P_none },
+ /* 0737 */ { UD_Iadd, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0738 */ { UD_Ior, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0739 */ { UD_Iadc, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0740 */ { UD_Isbb, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0741 */ { UD_Iand, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0742 */ { UD_Isub, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0743 */ { UD_Ixor, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0744 */ { UD_Icmp, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0745 */ { UD_Iadd, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0746 */ { UD_Ior, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0747 */ { UD_Iadc, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0748 */ { UD_Isbb, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0749 */ { UD_Iand, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0750 */ { UD_Isub, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0751 */ { UD_Ixor, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0752 */ { UD_Icmp, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0753 */ { UD_Iadd, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 },
+ /* 0754 */ { UD_Ior, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0755 */ { UD_Iadc, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 },
+ /* 0756 */ { UD_Isbb, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 },
+ /* 0757 */ { UD_Iand, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 },
+ /* 0758 */ { UD_Isub, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 },
+ /* 0759 */ { UD_Ixor, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 },
+ /* 0760 */ { UD_Icmp, O_Eb, O_Ib, O_NONE, P_aso|P_rexr|P_rexx|P_rexb|P_inv64 },
+ /* 0761 */ { UD_Iadd, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0762 */ { UD_Ior, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0763 */ { UD_Iadc, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0764 */ { UD_Isbb, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0765 */ { UD_Iand, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0766 */ { UD_Isub, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0767 */ { UD_Ixor, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0768 */ { UD_Icmp, O_Ev, O_sIb, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0769 */ { UD_Itest, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0770 */ { UD_Itest, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0771 */ { UD_Ixchg, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0772 */ { UD_Ixchg, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0773 */ { UD_Imov, O_Eb, O_Gb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0774 */ { UD_Imov, O_Ev, O_Gv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0775 */ { UD_Imov, O_Gb, O_Eb, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0776 */ { UD_Imov, O_Gv, O_Ev, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0777 */ { UD_Imov, O_MwRv, O_S, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0778 */ { UD_Ilea, O_Gv, O_M, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0779 */ { UD_Imov, O_S, O_MwRv, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0780 */ { UD_Ipop, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 },
+ /* 0781 */ { UD_Ixchg, O_R0v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0782 */ { UD_Ixchg, O_R1v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0783 */ { UD_Ixchg, O_R2v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0784 */ { UD_Ixchg, O_R3v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0785 */ { UD_Ixchg, O_R4v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0786 */ { UD_Ixchg, O_R5v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0787 */ { UD_Ixchg, O_R6v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0788 */ { UD_Ixchg, O_R7v, O_rAX, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0789 */ { UD_Icbw, O_NONE, O_NONE, O_NONE, P_oso|P_rexw },
+ /* 0790 */ { UD_Icwde, O_NONE, O_NONE, O_NONE, P_oso|P_rexw },
+ /* 0791 */ { UD_Icdqe, O_NONE, O_NONE, O_NONE, P_oso|P_rexw },
+ /* 0792 */ { UD_Icwd, O_NONE, O_NONE, O_NONE, P_oso|P_rexw },
+ /* 0793 */ { UD_Icdq, O_NONE, O_NONE, O_NONE, P_oso|P_rexw },
+ /* 0794 */ { UD_Icqo, O_NONE, O_NONE, O_NONE, P_oso|P_rexw },
+ /* 0795 */ { UD_Icall, O_Av, O_NONE, O_NONE, P_oso },
+ /* 0796 */ { UD_Iwait, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0797 */ { UD_Ipushfw, O_NONE, O_NONE, O_NONE, P_oso },
+ /* 0798 */ { UD_Ipushfw, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_def64 },
+ /* 0799 */ { UD_Ipushfd, O_NONE, O_NONE, O_NONE, P_oso },
+ /* 0800 */ { UD_Ipushfq, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_def64 },
+ /* 0801 */ { UD_Ipushfq, O_NONE, O_NONE, O_NONE, P_oso|P_rexw|P_def64 },
+ /* 0802 */ { UD_Ipopfw, O_NONE, O_NONE, O_NONE, P_oso },
+ /* 0803 */ { UD_Ipopfd, O_NONE, O_NONE, O_NONE, P_oso },
+ /* 0804 */ { UD_Ipopfq, O_NONE, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0805 */ { UD_Ipopfq, O_NONE, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 0806 */ { UD_Isahf, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0807 */ { UD_Ilahf, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0808 */ { UD_Imov, O_AL, O_Ob, O_NONE, P_none },
+ /* 0809 */ { UD_Imov, O_rAX, O_Ov, O_NONE, P_aso|P_oso|P_rexw },
+ /* 0810 */ { UD_Imov, O_Ob, O_AL, O_NONE, P_none },
+ /* 0811 */ { UD_Imov, O_Ov, O_rAX, O_NONE, P_aso|P_oso|P_rexw },
+ /* 0812 */ { UD_Imovsb, O_NONE, O_NONE, O_NONE, P_str|P_seg },
+ /* 0813 */ { UD_Imovsw, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw },
+ /* 0814 */ { UD_Imovsd, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw },
+ /* 0815 */ { UD_Imovsq, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw },
+ /* 0816 */ { UD_Icmpsb, O_NONE, O_NONE, O_NONE, P_strz|P_seg },
+ /* 0817 */ { UD_Icmpsw, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw|P_seg },
+ /* 0818 */ { UD_Icmpsd, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw|P_seg },
+ /* 0819 */ { UD_Icmpsq, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw|P_seg },
+ /* 0820 */ { UD_Itest, O_AL, O_Ib, O_NONE, P_none },
+ /* 0821 */ { UD_Itest, O_rAX, O_sIz, O_NONE, P_oso|P_rexw },
+ /* 0822 */ { UD_Istosb, O_NONE, O_NONE, O_NONE, P_str|P_seg },
+ /* 0823 */ { UD_Istosw, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw },
+ /* 0824 */ { UD_Istosd, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw },
+ /* 0825 */ { UD_Istosq, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw },
+ /* 0826 */ { UD_Ilodsb, O_NONE, O_NONE, O_NONE, P_str|P_seg },
+ /* 0827 */ { UD_Ilodsw, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw },
+ /* 0828 */ { UD_Ilodsd, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw },
+ /* 0829 */ { UD_Ilodsq, O_NONE, O_NONE, O_NONE, P_str|P_seg|P_oso|P_rexw },
+ /* 0830 */ { UD_Iscasb, O_NONE, O_NONE, O_NONE, P_strz },
+ /* 0831 */ { UD_Iscasw, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw },
+ /* 0832 */ { UD_Iscasd, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw },
+ /* 0833 */ { UD_Iscasq, O_NONE, O_NONE, O_NONE, P_strz|P_oso|P_rexw },
+ /* 0834 */ { UD_Imov, O_R0b, O_Ib, O_NONE, P_rexb },
+ /* 0835 */ { UD_Imov, O_R1b, O_Ib, O_NONE, P_rexb },
+ /* 0836 */ { UD_Imov, O_R2b, O_Ib, O_NONE, P_rexb },
+ /* 0837 */ { UD_Imov, O_R3b, O_Ib, O_NONE, P_rexb },
+ /* 0838 */ { UD_Imov, O_R4b, O_Ib, O_NONE, P_rexb },
+ /* 0839 */ { UD_Imov, O_R5b, O_Ib, O_NONE, P_rexb },
+ /* 0840 */ { UD_Imov, O_R6b, O_Ib, O_NONE, P_rexb },
+ /* 0841 */ { UD_Imov, O_R7b, O_Ib, O_NONE, P_rexb },
+ /* 0842 */ { UD_Imov, O_R0v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0843 */ { UD_Imov, O_R1v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0844 */ { UD_Imov, O_R2v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0845 */ { UD_Imov, O_R3v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0846 */ { UD_Imov, O_R4v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0847 */ { UD_Imov, O_R5v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0848 */ { UD_Imov, O_R6v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0849 */ { UD_Imov, O_R7v, O_Iv, O_NONE, P_oso|P_rexw|P_rexb },
+ /* 0850 */ { UD_Irol, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0851 */ { UD_Iror, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0852 */ { UD_Ircl, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0853 */ { UD_Ircr, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0854 */ { UD_Ishl, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0855 */ { UD_Ishr, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0856 */ { UD_Ishl, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0857 */ { UD_Isar, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0858 */ { UD_Irol, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0859 */ { UD_Iror, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0860 */ { UD_Ircl, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0861 */ { UD_Ircr, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0862 */ { UD_Ishl, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0863 */ { UD_Ishr, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0864 */ { UD_Ishl, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0865 */ { UD_Isar, O_Ev, O_Ib, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0866 */ { UD_Iret, O_Iw, O_NONE, O_NONE, P_none },
+ /* 0867 */ { UD_Iret, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0868 */ { UD_Iles, O_Gv, O_M, O_NONE, P_aso|P_oso },
+ /* 0869 */ { UD_Ilds, O_Gv, O_M, O_NONE, P_aso|P_oso },
+ /* 0870 */ { UD_Imov, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0871 */ { UD_Imov, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0872 */ { UD_Ienter, O_Iw, O_Ib, O_NONE, P_def64 },
+ /* 0873 */ { UD_Ileave, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0874 */ { UD_Iretf, O_Iw, O_NONE, O_NONE, P_none },
+ /* 0875 */ { UD_Iretf, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0876 */ { UD_Iint3, O_NONE, O_NONE, O_NONE, P_none },
+ /* 0877 */ { UD_Iint, O_Ib, O_NONE, O_NONE, P_none },
+ /* 0878 */ { UD_Iinto, O_NONE, O_NONE, O_NONE, P_inv64 },
+ /* 0879 */ { UD_Iiretw, O_NONE, O_NONE, O_NONE, P_oso|P_rexw },
+ /* 0880 */ { UD_Iiretd, O_NONE, O_NONE, O_NONE, P_oso|P_rexw },
+ /* 0881 */ { UD_Iiretq, O_NONE, O_NONE, O_NONE, P_oso|P_rexw },
+ /* 0882 */ { UD_Irol, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0883 */ { UD_Iror, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0884 */ { UD_Ircl, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0885 */ { UD_Ircr, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0886 */ { UD_Ishl, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0887 */ { UD_Ishr, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0888 */ { UD_Ishl, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0889 */ { UD_Isar, O_Eb, O_I1, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0890 */ { UD_Irol, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0891 */ { UD_Iror, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0892 */ { UD_Ircl, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0893 */ { UD_Ircr, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0894 */ { UD_Ishl, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0895 */ { UD_Ishr, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0896 */ { UD_Ishl, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0897 */ { UD_Isar, O_Ev, O_I1, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0898 */ { UD_Irol, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0899 */ { UD_Iror, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0900 */ { UD_Ircl, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0901 */ { UD_Ircr, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0902 */ { UD_Ishl, O_Eb, O_CL, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0903 */ { UD_Ishr, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0904 */ { UD_Ishl, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0905 */ { UD_Isar, O_Eb, O_CL, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0906 */ { UD_Irol, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0907 */ { UD_Iror, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0908 */ { UD_Ircl, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0909 */ { UD_Ircr, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0910 */ { UD_Ishl, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0911 */ { UD_Ishr, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0912 */ { UD_Ishl, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0913 */ { UD_Isar, O_Ev, O_CL, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 0914 */ { UD_Iaam, O_Ib, O_NONE, O_NONE, P_none },
+ /* 0915 */ { UD_Iaad, O_Ib, O_NONE, O_NONE, P_none },
+ /* 0916 */ { UD_Isalc, O_NONE, O_NONE, O_NONE, P_inv64 },
+ /* 0917 */ { UD_Ixlatb, O_NONE, O_NONE, O_NONE, P_rexw|P_seg },
+ /* 0918 */ { UD_Ifadd, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0919 */ { UD_Ifmul, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0920 */ { UD_Ifcom, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0921 */ { UD_Ifcomp, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0922 */ { UD_Ifsub, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0923 */ { UD_Ifsubr, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0924 */ { UD_Ifdiv, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0925 */ { UD_Ifdivr, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0926 */ { UD_Ifadd, O_ST0, O_ST0, O_NONE, P_none },
+ /* 0927 */ { UD_Ifadd, O_ST0, O_ST1, O_NONE, P_none },
+ /* 0928 */ { UD_Ifadd, O_ST0, O_ST2, O_NONE, P_none },
+ /* 0929 */ { UD_Ifadd, O_ST0, O_ST3, O_NONE, P_none },
+ /* 0930 */ { UD_Ifadd, O_ST0, O_ST4, O_NONE, P_none },
+ /* 0931 */ { UD_Ifadd, O_ST0, O_ST5, O_NONE, P_none },
+ /* 0932 */ { UD_Ifadd, O_ST0, O_ST6, O_NONE, P_none },
+ /* 0933 */ { UD_Ifadd, O_ST0, O_ST7, O_NONE, P_none },
+ /* 0934 */ { UD_Ifmul, O_ST0, O_ST0, O_NONE, P_none },
+ /* 0935 */ { UD_Ifmul, O_ST0, O_ST1, O_NONE, P_none },
+ /* 0936 */ { UD_Ifmul, O_ST0, O_ST2, O_NONE, P_none },
+ /* 0937 */ { UD_Ifmul, O_ST0, O_ST3, O_NONE, P_none },
+ /* 0938 */ { UD_Ifmul, O_ST0, O_ST4, O_NONE, P_none },
+ /* 0939 */ { UD_Ifmul, O_ST0, O_ST5, O_NONE, P_none },
+ /* 0940 */ { UD_Ifmul, O_ST0, O_ST6, O_NONE, P_none },
+ /* 0941 */ { UD_Ifmul, O_ST0, O_ST7, O_NONE, P_none },
+ /* 0942 */ { UD_Ifcom, O_ST0, O_ST0, O_NONE, P_none },
+ /* 0943 */ { UD_Ifcom, O_ST0, O_ST1, O_NONE, P_none },
+ /* 0944 */ { UD_Ifcom, O_ST0, O_ST2, O_NONE, P_none },
+ /* 0945 */ { UD_Ifcom, O_ST0, O_ST3, O_NONE, P_none },
+ /* 0946 */ { UD_Ifcom, O_ST0, O_ST4, O_NONE, P_none },
+ /* 0947 */ { UD_Ifcom, O_ST0, O_ST5, O_NONE, P_none },
+ /* 0948 */ { UD_Ifcom, O_ST0, O_ST6, O_NONE, P_none },
+ /* 0949 */ { UD_Ifcom, O_ST0, O_ST7, O_NONE, P_none },
+ /* 0950 */ { UD_Ifcomp, O_ST0, O_ST0, O_NONE, P_none },
+ /* 0951 */ { UD_Ifcomp, O_ST0, O_ST1, O_NONE, P_none },
+ /* 0952 */ { UD_Ifcomp, O_ST0, O_ST2, O_NONE, P_none },
+ /* 0953 */ { UD_Ifcomp, O_ST0, O_ST3, O_NONE, P_none },
+ /* 0954 */ { UD_Ifcomp, O_ST0, O_ST4, O_NONE, P_none },
+ /* 0955 */ { UD_Ifcomp, O_ST0, O_ST5, O_NONE, P_none },
+ /* 0956 */ { UD_Ifcomp, O_ST0, O_ST6, O_NONE, P_none },
+ /* 0957 */ { UD_Ifcomp, O_ST0, O_ST7, O_NONE, P_none },
+ /* 0958 */ { UD_Ifsub, O_ST0, O_ST0, O_NONE, P_none },
+ /* 0959 */ { UD_Ifsub, O_ST0, O_ST1, O_NONE, P_none },
+ /* 0960 */ { UD_Ifsub, O_ST0, O_ST2, O_NONE, P_none },
+ /* 0961 */ { UD_Ifsub, O_ST0, O_ST3, O_NONE, P_none },
+ /* 0962 */ { UD_Ifsub, O_ST0, O_ST4, O_NONE, P_none },
+ /* 0963 */ { UD_Ifsub, O_ST0, O_ST5, O_NONE, P_none },
+ /* 0964 */ { UD_Ifsub, O_ST0, O_ST6, O_NONE, P_none },
+ /* 0965 */ { UD_Ifsub, O_ST0, O_ST7, O_NONE, P_none },
+ /* 0966 */ { UD_Ifsubr, O_ST0, O_ST0, O_NONE, P_none },
+ /* 0967 */ { UD_Ifsubr, O_ST0, O_ST1, O_NONE, P_none },
+ /* 0968 */ { UD_Ifsubr, O_ST0, O_ST2, O_NONE, P_none },
+ /* 0969 */ { UD_Ifsubr, O_ST0, O_ST3, O_NONE, P_none },
+ /* 0970 */ { UD_Ifsubr, O_ST0, O_ST4, O_NONE, P_none },
+ /* 0971 */ { UD_Ifsubr, O_ST0, O_ST5, O_NONE, P_none },
+ /* 0972 */ { UD_Ifsubr, O_ST0, O_ST6, O_NONE, P_none },
+ /* 0973 */ { UD_Ifsubr, O_ST0, O_ST7, O_NONE, P_none },
+ /* 0974 */ { UD_Ifdiv, O_ST0, O_ST0, O_NONE, P_none },
+ /* 0975 */ { UD_Ifdiv, O_ST0, O_ST1, O_NONE, P_none },
+ /* 0976 */ { UD_Ifdiv, O_ST0, O_ST2, O_NONE, P_none },
+ /* 0977 */ { UD_Ifdiv, O_ST0, O_ST3, O_NONE, P_none },
+ /* 0978 */ { UD_Ifdiv, O_ST0, O_ST4, O_NONE, P_none },
+ /* 0979 */ { UD_Ifdiv, O_ST0, O_ST5, O_NONE, P_none },
+ /* 0980 */ { UD_Ifdiv, O_ST0, O_ST6, O_NONE, P_none },
+ /* 0981 */ { UD_Ifdiv, O_ST0, O_ST7, O_NONE, P_none },
+ /* 0982 */ { UD_Ifdivr, O_ST0, O_ST0, O_NONE, P_none },
+ /* 0983 */ { UD_Ifdivr, O_ST0, O_ST1, O_NONE, P_none },
+ /* 0984 */ { UD_Ifdivr, O_ST0, O_ST2, O_NONE, P_none },
+ /* 0985 */ { UD_Ifdivr, O_ST0, O_ST3, O_NONE, P_none },
+ /* 0986 */ { UD_Ifdivr, O_ST0, O_ST4, O_NONE, P_none },
+ /* 0987 */ { UD_Ifdivr, O_ST0, O_ST5, O_NONE, P_none },
+ /* 0988 */ { UD_Ifdivr, O_ST0, O_ST6, O_NONE, P_none },
+ /* 0989 */ { UD_Ifdivr, O_ST0, O_ST7, O_NONE, P_none },
+ /* 0990 */ { UD_Ifld, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0991 */ { UD_Ifst, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0992 */ { UD_Ifstp, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0993 */ { UD_Ifldenv, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0994 */ { UD_Ifldcw, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0995 */ { UD_Ifnstenv, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0996 */ { UD_Ifnstcw, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 0997 */ { UD_Ifld, O_ST0, O_NONE, O_NONE, P_none },
+ /* 0998 */ { UD_Ifld, O_ST1, O_NONE, O_NONE, P_none },
+ /* 0999 */ { UD_Ifld, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1000 */ { UD_Ifld, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1001 */ { UD_Ifld, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1002 */ { UD_Ifld, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1003 */ { UD_Ifld, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1004 */ { UD_Ifld, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1005 */ { UD_Ifxch, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1006 */ { UD_Ifxch, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1007 */ { UD_Ifxch, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1008 */ { UD_Ifxch, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1009 */ { UD_Ifxch, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1010 */ { UD_Ifxch, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1011 */ { UD_Ifxch, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1012 */ { UD_Ifxch, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1013 */ { UD_Ifnop, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1014 */ { UD_Ifstp1, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1015 */ { UD_Ifstp1, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1016 */ { UD_Ifstp1, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1017 */ { UD_Ifstp1, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1018 */ { UD_Ifstp1, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1019 */ { UD_Ifstp1, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1020 */ { UD_Ifstp1, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1021 */ { UD_Ifstp1, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1022 */ { UD_Ifchs, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1023 */ { UD_Ifabs, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1024 */ { UD_Iftst, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1025 */ { UD_Ifxam, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1026 */ { UD_Ifld1, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1027 */ { UD_Ifldl2t, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1028 */ { UD_Ifldl2e, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1029 */ { UD_Ifldpi, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1030 */ { UD_Ifldlg2, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1031 */ { UD_Ifldln2, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1032 */ { UD_Ifldz, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1033 */ { UD_If2xm1, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1034 */ { UD_Ifyl2x, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1035 */ { UD_Ifptan, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1036 */ { UD_Ifpatan, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1037 */ { UD_Ifxtract, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1038 */ { UD_Ifprem1, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1039 */ { UD_Ifdecstp, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1040 */ { UD_Ifincstp, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1041 */ { UD_Ifprem, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1042 */ { UD_Ifyl2xp1, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1043 */ { UD_Ifsqrt, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1044 */ { UD_Ifsincos, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1045 */ { UD_Ifrndint, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1046 */ { UD_Ifscale, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1047 */ { UD_Ifsin, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1048 */ { UD_Ifcos, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1049 */ { UD_Ifiadd, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1050 */ { UD_Ifimul, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1051 */ { UD_Ificom, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1052 */ { UD_Ificomp, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1053 */ { UD_Ifisub, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1054 */ { UD_Ifisubr, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1055 */ { UD_Ifidiv, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1056 */ { UD_Ifidivr, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1057 */ { UD_Ifcmovb, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1058 */ { UD_Ifcmovb, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1059 */ { UD_Ifcmovb, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1060 */ { UD_Ifcmovb, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1061 */ { UD_Ifcmovb, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1062 */ { UD_Ifcmovb, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1063 */ { UD_Ifcmovb, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1064 */ { UD_Ifcmovb, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1065 */ { UD_Ifcmove, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1066 */ { UD_Ifcmove, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1067 */ { UD_Ifcmove, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1068 */ { UD_Ifcmove, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1069 */ { UD_Ifcmove, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1070 */ { UD_Ifcmove, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1071 */ { UD_Ifcmove, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1072 */ { UD_Ifcmove, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1073 */ { UD_Ifcmovbe, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1074 */ { UD_Ifcmovbe, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1075 */ { UD_Ifcmovbe, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1076 */ { UD_Ifcmovbe, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1077 */ { UD_Ifcmovbe, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1078 */ { UD_Ifcmovbe, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1079 */ { UD_Ifcmovbe, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1080 */ { UD_Ifcmovbe, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1081 */ { UD_Ifcmovu, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1082 */ { UD_Ifcmovu, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1083 */ { UD_Ifcmovu, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1084 */ { UD_Ifcmovu, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1085 */ { UD_Ifcmovu, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1086 */ { UD_Ifcmovu, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1087 */ { UD_Ifcmovu, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1088 */ { UD_Ifcmovu, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1089 */ { UD_Ifucompp, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1090 */ { UD_Ifild, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1091 */ { UD_Ifisttp, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1092 */ { UD_Ifist, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1093 */ { UD_Ifistp, O_Md, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1094 */ { UD_Ifld, O_Mt, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1095 */ { UD_Ifstp, O_Mt, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1096 */ { UD_Ifcmovnb, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1097 */ { UD_Ifcmovnb, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1098 */ { UD_Ifcmovnb, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1099 */ { UD_Ifcmovnb, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1100 */ { UD_Ifcmovnb, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1101 */ { UD_Ifcmovnb, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1102 */ { UD_Ifcmovnb, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1103 */ { UD_Ifcmovnb, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1104 */ { UD_Ifcmovne, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1105 */ { UD_Ifcmovne, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1106 */ { UD_Ifcmovne, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1107 */ { UD_Ifcmovne, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1108 */ { UD_Ifcmovne, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1109 */ { UD_Ifcmovne, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1110 */ { UD_Ifcmovne, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1111 */ { UD_Ifcmovne, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1112 */ { UD_Ifcmovnbe, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1113 */ { UD_Ifcmovnbe, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1114 */ { UD_Ifcmovnbe, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1115 */ { UD_Ifcmovnbe, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1116 */ { UD_Ifcmovnbe, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1117 */ { UD_Ifcmovnbe, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1118 */ { UD_Ifcmovnbe, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1119 */ { UD_Ifcmovnbe, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1120 */ { UD_Ifcmovnu, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1121 */ { UD_Ifcmovnu, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1122 */ { UD_Ifcmovnu, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1123 */ { UD_Ifcmovnu, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1124 */ { UD_Ifcmovnu, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1125 */ { UD_Ifcmovnu, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1126 */ { UD_Ifcmovnu, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1127 */ { UD_Ifcmovnu, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1128 */ { UD_Ifclex, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1129 */ { UD_Ifninit, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1130 */ { UD_Ifucomi, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1131 */ { UD_Ifucomi, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1132 */ { UD_Ifucomi, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1133 */ { UD_Ifucomi, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1134 */ { UD_Ifucomi, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1135 */ { UD_Ifucomi, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1136 */ { UD_Ifucomi, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1137 */ { UD_Ifucomi, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1138 */ { UD_Ifcomi, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1139 */ { UD_Ifcomi, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1140 */ { UD_Ifcomi, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1141 */ { UD_Ifcomi, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1142 */ { UD_Ifcomi, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1143 */ { UD_Ifcomi, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1144 */ { UD_Ifcomi, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1145 */ { UD_Ifcomi, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1146 */ { UD_Ifadd, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1147 */ { UD_Ifmul, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1148 */ { UD_Ifcom, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1149 */ { UD_Ifcomp, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1150 */ { UD_Ifsub, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1151 */ { UD_Ifsubr, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1152 */ { UD_Ifdiv, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1153 */ { UD_Ifdivr, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1154 */ { UD_Ifadd, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1155 */ { UD_Ifadd, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1156 */ { UD_Ifadd, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1157 */ { UD_Ifadd, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1158 */ { UD_Ifadd, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1159 */ { UD_Ifadd, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1160 */ { UD_Ifadd, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1161 */ { UD_Ifadd, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1162 */ { UD_Ifmul, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1163 */ { UD_Ifmul, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1164 */ { UD_Ifmul, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1165 */ { UD_Ifmul, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1166 */ { UD_Ifmul, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1167 */ { UD_Ifmul, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1168 */ { UD_Ifmul, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1169 */ { UD_Ifmul, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1170 */ { UD_Ifcom2, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1171 */ { UD_Ifcom2, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1172 */ { UD_Ifcom2, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1173 */ { UD_Ifcom2, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1174 */ { UD_Ifcom2, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1175 */ { UD_Ifcom2, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1176 */ { UD_Ifcom2, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1177 */ { UD_Ifcom2, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1178 */ { UD_Ifcomp3, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1179 */ { UD_Ifcomp3, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1180 */ { UD_Ifcomp3, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1181 */ { UD_Ifcomp3, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1182 */ { UD_Ifcomp3, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1183 */ { UD_Ifcomp3, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1184 */ { UD_Ifcomp3, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1185 */ { UD_Ifcomp3, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1186 */ { UD_Ifsubr, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1187 */ { UD_Ifsubr, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1188 */ { UD_Ifsubr, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1189 */ { UD_Ifsubr, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1190 */ { UD_Ifsubr, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1191 */ { UD_Ifsubr, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1192 */ { UD_Ifsubr, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1193 */ { UD_Ifsubr, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1194 */ { UD_Ifsub, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1195 */ { UD_Ifsub, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1196 */ { UD_Ifsub, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1197 */ { UD_Ifsub, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1198 */ { UD_Ifsub, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1199 */ { UD_Ifsub, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1200 */ { UD_Ifsub, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1201 */ { UD_Ifsub, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1202 */ { UD_Ifdivr, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1203 */ { UD_Ifdivr, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1204 */ { UD_Ifdivr, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1205 */ { UD_Ifdivr, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1206 */ { UD_Ifdivr, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1207 */ { UD_Ifdivr, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1208 */ { UD_Ifdivr, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1209 */ { UD_Ifdivr, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1210 */ { UD_Ifdiv, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1211 */ { UD_Ifdiv, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1212 */ { UD_Ifdiv, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1213 */ { UD_Ifdiv, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1214 */ { UD_Ifdiv, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1215 */ { UD_Ifdiv, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1216 */ { UD_Ifdiv, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1217 */ { UD_Ifdiv, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1218 */ { UD_Ifld, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1219 */ { UD_Ifisttp, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1220 */ { UD_Ifst, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1221 */ { UD_Ifstp, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1222 */ { UD_Ifrstor, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1223 */ { UD_Ifnsave, O_M, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1224 */ { UD_Ifnstsw, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1225 */ { UD_Iffree, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1226 */ { UD_Iffree, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1227 */ { UD_Iffree, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1228 */ { UD_Iffree, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1229 */ { UD_Iffree, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1230 */ { UD_Iffree, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1231 */ { UD_Iffree, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1232 */ { UD_Iffree, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1233 */ { UD_Ifxch4, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1234 */ { UD_Ifxch4, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1235 */ { UD_Ifxch4, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1236 */ { UD_Ifxch4, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1237 */ { UD_Ifxch4, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1238 */ { UD_Ifxch4, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1239 */ { UD_Ifxch4, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1240 */ { UD_Ifxch4, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1241 */ { UD_Ifst, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1242 */ { UD_Ifst, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1243 */ { UD_Ifst, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1244 */ { UD_Ifst, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1245 */ { UD_Ifst, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1246 */ { UD_Ifst, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1247 */ { UD_Ifst, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1248 */ { UD_Ifst, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1249 */ { UD_Ifstp, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1250 */ { UD_Ifstp, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1251 */ { UD_Ifstp, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1252 */ { UD_Ifstp, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1253 */ { UD_Ifstp, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1254 */ { UD_Ifstp, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1255 */ { UD_Ifstp, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1256 */ { UD_Ifstp, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1257 */ { UD_Ifucom, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1258 */ { UD_Ifucom, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1259 */ { UD_Ifucom, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1260 */ { UD_Ifucom, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1261 */ { UD_Ifucom, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1262 */ { UD_Ifucom, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1263 */ { UD_Ifucom, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1264 */ { UD_Ifucom, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1265 */ { UD_Ifucomp, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1266 */ { UD_Ifucomp, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1267 */ { UD_Ifucomp, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1268 */ { UD_Ifucomp, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1269 */ { UD_Ifucomp, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1270 */ { UD_Ifucomp, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1271 */ { UD_Ifucomp, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1272 */ { UD_Ifucomp, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1273 */ { UD_Ifiadd, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1274 */ { UD_Ifimul, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1275 */ { UD_Ificom, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1276 */ { UD_Ificomp, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1277 */ { UD_Ifisub, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1278 */ { UD_Ifisubr, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1279 */ { UD_Ifidiv, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1280 */ { UD_Ifidivr, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1281 */ { UD_Ifaddp, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1282 */ { UD_Ifaddp, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1283 */ { UD_Ifaddp, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1284 */ { UD_Ifaddp, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1285 */ { UD_Ifaddp, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1286 */ { UD_Ifaddp, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1287 */ { UD_Ifaddp, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1288 */ { UD_Ifaddp, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1289 */ { UD_Ifmulp, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1290 */ { UD_Ifmulp, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1291 */ { UD_Ifmulp, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1292 */ { UD_Ifmulp, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1293 */ { UD_Ifmulp, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1294 */ { UD_Ifmulp, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1295 */ { UD_Ifmulp, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1296 */ { UD_Ifmulp, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1297 */ { UD_Ifcomp5, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1298 */ { UD_Ifcomp5, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1299 */ { UD_Ifcomp5, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1300 */ { UD_Ifcomp5, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1301 */ { UD_Ifcomp5, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1302 */ { UD_Ifcomp5, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1303 */ { UD_Ifcomp5, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1304 */ { UD_Ifcomp5, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1305 */ { UD_Ifcompp, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1306 */ { UD_Ifsubrp, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1307 */ { UD_Ifsubrp, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1308 */ { UD_Ifsubrp, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1309 */ { UD_Ifsubrp, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1310 */ { UD_Ifsubrp, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1311 */ { UD_Ifsubrp, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1312 */ { UD_Ifsubrp, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1313 */ { UD_Ifsubrp, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1314 */ { UD_Ifsubp, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1315 */ { UD_Ifsubp, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1316 */ { UD_Ifsubp, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1317 */ { UD_Ifsubp, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1318 */ { UD_Ifsubp, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1319 */ { UD_Ifsubp, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1320 */ { UD_Ifsubp, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1321 */ { UD_Ifsubp, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1322 */ { UD_Ifdivrp, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1323 */ { UD_Ifdivrp, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1324 */ { UD_Ifdivrp, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1325 */ { UD_Ifdivrp, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1326 */ { UD_Ifdivrp, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1327 */ { UD_Ifdivrp, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1328 */ { UD_Ifdivrp, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1329 */ { UD_Ifdivrp, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1330 */ { UD_Ifdivp, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1331 */ { UD_Ifdivp, O_ST1, O_ST0, O_NONE, P_none },
+ /* 1332 */ { UD_Ifdivp, O_ST2, O_ST0, O_NONE, P_none },
+ /* 1333 */ { UD_Ifdivp, O_ST3, O_ST0, O_NONE, P_none },
+ /* 1334 */ { UD_Ifdivp, O_ST4, O_ST0, O_NONE, P_none },
+ /* 1335 */ { UD_Ifdivp, O_ST5, O_ST0, O_NONE, P_none },
+ /* 1336 */ { UD_Ifdivp, O_ST6, O_ST0, O_NONE, P_none },
+ /* 1337 */ { UD_Ifdivp, O_ST7, O_ST0, O_NONE, P_none },
+ /* 1338 */ { UD_Ifild, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1339 */ { UD_Ifisttp, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1340 */ { UD_Ifist, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1341 */ { UD_Ifistp, O_Mw, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1342 */ { UD_Ifbld, O_Mt, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1343 */ { UD_Ifild, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1344 */ { UD_Ifbstp, O_Mt, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1345 */ { UD_Ifistp, O_Mq, O_NONE, O_NONE, P_aso|P_rexr|P_rexx|P_rexb },
+ /* 1346 */ { UD_Iffreep, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1347 */ { UD_Iffreep, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1348 */ { UD_Iffreep, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1349 */ { UD_Iffreep, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1350 */ { UD_Iffreep, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1351 */ { UD_Iffreep, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1352 */ { UD_Iffreep, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1353 */ { UD_Iffreep, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1354 */ { UD_Ifxch7, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1355 */ { UD_Ifxch7, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1356 */ { UD_Ifxch7, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1357 */ { UD_Ifxch7, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1358 */ { UD_Ifxch7, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1359 */ { UD_Ifxch7, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1360 */ { UD_Ifxch7, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1361 */ { UD_Ifxch7, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1362 */ { UD_Ifstp8, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1363 */ { UD_Ifstp8, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1364 */ { UD_Ifstp8, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1365 */ { UD_Ifstp8, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1366 */ { UD_Ifstp8, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1367 */ { UD_Ifstp8, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1368 */ { UD_Ifstp8, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1369 */ { UD_Ifstp8, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1370 */ { UD_Ifstp9, O_ST0, O_NONE, O_NONE, P_none },
+ /* 1371 */ { UD_Ifstp9, O_ST1, O_NONE, O_NONE, P_none },
+ /* 1372 */ { UD_Ifstp9, O_ST2, O_NONE, O_NONE, P_none },
+ /* 1373 */ { UD_Ifstp9, O_ST3, O_NONE, O_NONE, P_none },
+ /* 1374 */ { UD_Ifstp9, O_ST4, O_NONE, O_NONE, P_none },
+ /* 1375 */ { UD_Ifstp9, O_ST5, O_NONE, O_NONE, P_none },
+ /* 1376 */ { UD_Ifstp9, O_ST6, O_NONE, O_NONE, P_none },
+ /* 1377 */ { UD_Ifstp9, O_ST7, O_NONE, O_NONE, P_none },
+ /* 1378 */ { UD_Ifnstsw, O_AX, O_NONE, O_NONE, P_none },
+ /* 1379 */ { UD_Ifucomip, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1380 */ { UD_Ifucomip, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1381 */ { UD_Ifucomip, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1382 */ { UD_Ifucomip, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1383 */ { UD_Ifucomip, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1384 */ { UD_Ifucomip, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1385 */ { UD_Ifucomip, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1386 */ { UD_Ifucomip, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1387 */ { UD_Ifcomip, O_ST0, O_ST0, O_NONE, P_none },
+ /* 1388 */ { UD_Ifcomip, O_ST0, O_ST1, O_NONE, P_none },
+ /* 1389 */ { UD_Ifcomip, O_ST0, O_ST2, O_NONE, P_none },
+ /* 1390 */ { UD_Ifcomip, O_ST0, O_ST3, O_NONE, P_none },
+ /* 1391 */ { UD_Ifcomip, O_ST0, O_ST4, O_NONE, P_none },
+ /* 1392 */ { UD_Ifcomip, O_ST0, O_ST5, O_NONE, P_none },
+ /* 1393 */ { UD_Ifcomip, O_ST0, O_ST6, O_NONE, P_none },
+ /* 1394 */ { UD_Ifcomip, O_ST0, O_ST7, O_NONE, P_none },
+ /* 1395 */ { UD_Iloopne, O_Jb, O_NONE, O_NONE, P_none },
+ /* 1396 */ { UD_Iloope, O_Jb, O_NONE, O_NONE, P_none },
+ /* 1397 */ { UD_Iloop, O_Jb, O_NONE, O_NONE, P_none },
+ /* 1398 */ { UD_Ijcxz, O_Jb, O_NONE, O_NONE, P_aso },
+ /* 1399 */ { UD_Ijecxz, O_Jb, O_NONE, O_NONE, P_aso },
+ /* 1400 */ { UD_Ijrcxz, O_Jb, O_NONE, O_NONE, P_aso },
+ /* 1401 */ { UD_Iin, O_AL, O_Ib, O_NONE, P_none },
+ /* 1402 */ { UD_Iin, O_eAX, O_Ib, O_NONE, P_oso },
+ /* 1403 */ { UD_Iout, O_Ib, O_AL, O_NONE, P_none },
+ /* 1404 */ { UD_Iout, O_Ib, O_eAX, O_NONE, P_oso },
+ /* 1405 */ { UD_Icall, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 1406 */ { UD_Ijmp, O_Jz, O_NONE, O_NONE, P_oso|P_def64 },
+ /* 1407 */ { UD_Ijmp, O_Av, O_NONE, O_NONE, P_oso },
+ /* 1408 */ { UD_Ijmp, O_Jb, O_NONE, O_NONE, P_def64 },
+ /* 1409 */ { UD_Iin, O_AL, O_DX, O_NONE, P_none },
+ /* 1410 */ { UD_Iin, O_eAX, O_DX, O_NONE, P_oso },
+ /* 1411 */ { UD_Iout, O_DX, O_AL, O_NONE, P_none },
+ /* 1412 */ { UD_Iout, O_DX, O_eAX, O_NONE, P_oso },
+ /* 1413 */ { UD_Ilock, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1414 */ { UD_Iint1, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1415 */ { UD_Irepne, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1416 */ { UD_Irep, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1417 */ { UD_Ihlt, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1418 */ { UD_Icmc, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1419 */ { UD_Itest, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1420 */ { UD_Itest, O_Eb, O_Ib, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1421 */ { UD_Inot, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1422 */ { UD_Ineg, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1423 */ { UD_Imul, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1424 */ { UD_Iimul, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1425 */ { UD_Idiv, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1426 */ { UD_Iidiv, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1427 */ { UD_Itest, O_Ev, O_sIz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1428 */ { UD_Itest, O_Ev, O_Iz, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1429 */ { UD_Inot, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1430 */ { UD_Ineg, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1431 */ { UD_Imul, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1432 */ { UD_Iimul, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1433 */ { UD_Idiv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1434 */ { UD_Iidiv, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1435 */ { UD_Iclc, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1436 */ { UD_Istc, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1437 */ { UD_Icli, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1438 */ { UD_Isti, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1439 */ { UD_Icld, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1440 */ { UD_Istd, O_NONE, O_NONE, O_NONE, P_none },
+ /* 1441 */ { UD_Iinc, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1442 */ { UD_Idec, O_Eb, O_NONE, O_NONE, P_aso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1443 */ { UD_Iinc, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1444 */ { UD_Idec, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1445 */ { UD_Icall, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1446 */ { UD_Icall, O_Eq, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 },
+ /* 1447 */ { UD_Icall, O_Fv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1448 */ { UD_Ijmp, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 },
+ /* 1449 */ { UD_Ijmp, O_Fv, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb },
+ /* 1450 */ { UD_Ipush, O_Ev, O_NONE, O_NONE, P_aso|P_oso|P_rexw|P_rexr|P_rexx|P_rexb|P_def64 },
+};
+
+
+const char * ud_mnemonics_str[] = {
+"invalid",
+ "3dnow",
+ "none",
+ "db",
+ "pause",
+ "aaa",
+ "aad",
+ "aam",
+ "aas",
+ "adc",
+ "add",
+ "addpd",
+ "addps",
+ "addsd",
+ "addss",
+ "and",
+ "andpd",
+ "andps",
+ "andnpd",
+ "andnps",
+ "arpl",
+ "movsxd",
+ "bound",
+ "bsf",
+ "bsr",
+ "bswap",
+ "bt",
+ "btc",
+ "btr",
+ "bts",
+ "call",
+ "cbw",
+ "cwde",
+ "cdqe",
+ "clc",
+ "cld",
+ "clflush",
+ "clgi",
+ "cli",
+ "clts",
+ "cmc",
+ "cmovo",
+ "cmovno",
+ "cmovb",
+ "cmovae",
+ "cmovz",
+ "cmovnz",
+ "cmovbe",
+ "cmova",
+ "cmovs",
+ "cmovns",
+ "cmovp",
+ "cmovnp",
+ "cmovl",
+ "cmovge",
+ "cmovle",
+ "cmovg",
+ "cmp",
+ "cmppd",
+ "cmpps",
+ "cmpsb",
+ "cmpsw",
+ "cmpsd",
+ "cmpsq",
+ "cmpss",
+ "cmpxchg",
+ "cmpxchg8b",
+ "cmpxchg16b",
+ "comisd",
+ "comiss",
+ "cpuid",
+ "cvtdq2pd",
+ "cvtdq2ps",
+ "cvtpd2dq",
+ "cvtpd2pi",
+ "cvtpd2ps",
+ "cvtpi2ps",
+ "cvtpi2pd",
+ "cvtps2dq",
+ "cvtps2pi",
+ "cvtps2pd",
+ "cvtsd2si",
+ "cvtsd2ss",
+ "cvtsi2ss",
+ "cvtss2si",
+ "cvtss2sd",
+ "cvttpd2pi",
+ "cvttpd2dq",
+ "cvttps2dq",
+ "cvttps2pi",
+ "cvttsd2si",
+ "cvtsi2sd",
+ "cvttss2si",
+ "cwd",
+ "cdq",
+ "cqo",
+ "daa",
+ "das",
+ "dec",
+ "div",
+ "divpd",
+ "divps",
+ "divsd",
+ "divss",
+ "emms",
+ "enter",
+ "f2xm1",
+ "fabs",
+ "fadd",
+ "faddp",
+ "fbld",
+ "fbstp",
+ "fchs",
+ "fclex",
+ "fcmovb",
+ "fcmove",
+ "fcmovbe",
+ "fcmovu",
+ "fcmovnb",
+ "fcmovne",
+ "fcmovnbe",
+ "fcmovnu",
+ "fucomi",
+ "fcom",
+ "fcom2",
+ "fcomp3",
+ "fcomi",
+ "fucomip",
+ "fcomip",
+ "fcomp",
+ "fcomp5",
+ "fcompp",
+ "fcos",
+ "fdecstp",
+ "fdiv",
+ "fdivp",
+ "fdivr",
+ "fdivrp",
+ "femms",
+ "ffree",
+ "ffreep",
+ "ficom",
+ "ficomp",
+ "fild",
+ "fincstp",
+ "fninit",
+ "fiadd",
+ "fidivr",
+ "fidiv",
+ "fisub",
+ "fisubr",
+ "fist",
+ "fistp",
+ "fisttp",
+ "fld",
+ "fld1",
+ "fldl2t",
+ "fldl2e",
+ "fldpi",
+ "fldlg2",
+ "fldln2",
+ "fldz",
+ "fldcw",
+ "fldenv",
+ "fmul",
+ "fmulp",
+ "fimul",
+ "fnop",
+ "fpatan",
+ "fprem",
+ "fprem1",
+ "fptan",
+ "frndint",
+ "frstor",
+ "fnsave",
+ "fscale",
+ "fsin",
+ "fsincos",
+ "fsqrt",
+ "fstp",
+ "fstp1",
+ "fstp8",
+ "fstp9",
+ "fst",
+ "fnstcw",
+ "fnstenv",
+ "fnstsw",
+ "fsub",
+ "fsubp",
+ "fsubr",
+ "fsubrp",
+ "ftst",
+ "fucom",
+ "fucomp",
+ "fucompp",
+ "fxam",
+ "fxch",
+ "fxch4",
+ "fxch7",
+ "fxrstor",
+ "fxsave",
+ "fxtract",
+ "fyl2x",
+ "fyl2xp1",
+ "hlt",
+ "idiv",
+ "in",
+ "imul",
+ "inc",
+ "insb",
+ "insw",
+ "insd",
+ "int1",
+ "int3",
+ "int",
+ "into",
+ "invd",
+ "invept",
+ "invlpg",
+ "invlpga",
+ "invvpid",
+ "iretw",
+ "iretd",
+ "iretq",
+ "jo",
+ "jno",
+ "jb",
+ "jae",
+ "jz",
+ "jnz",
+ "jbe",
+ "ja",
+ "js",
+ "jns",
+ "jp",
+ "jnp",
+ "jl",
+ "jge",
+ "jle",
+ "jg",
+ "jcxz",
+ "jecxz",
+ "jrcxz",
+ "jmp",
+ "lahf",
+ "lar",
+ "lddqu",
+ "ldmxcsr",
+ "lds",
+ "lea",
+ "les",
+ "lfs",
+ "lgs",
+ "lidt",
+ "lss",
+ "leave",
+ "lfence",
+ "lgdt",
+ "lldt",
+ "lmsw",
+ "lock",
+ "lodsb",
+ "lodsw",
+ "lodsd",
+ "lodsq",
+ "loopne",
+ "loope",
+ "loop",
+ "lsl",
+ "ltr",
+ "maskmovq",
+ "maxpd",
+ "maxps",
+ "maxsd",
+ "maxss",
+ "mfence",
+ "minpd",
+ "minps",
+ "minsd",
+ "minss",
+ "monitor",
+ "montmul",
+ "mov",
+ "movapd",
+ "movaps",
+ "movd",
+ "movhpd",
+ "movhps",
+ "movlhps",
+ "movlpd",
+ "movlps",
+ "movhlps",
+ "movmskpd",
+ "movmskps",
+ "movntdq",
+ "movnti",
+ "movntpd",
+ "movntps",
+ "movntq",
+ "movq",
+ "movsb",
+ "movsw",
+ "movsd",
+ "movsq",
+ "movss",
+ "movsx",
+ "movupd",
+ "movups",
+ "movzx",
+ "mul",
+ "mulpd",
+ "mulps",
+ "mulsd",
+ "mulss",
+ "mwait",
+ "neg",
+ "nop",
+ "not",
+ "or",
+ "orpd",
+ "orps",
+ "out",
+ "outsb",
+ "outsw",
+ "outsd",
+ "packsswb",
+ "packssdw",
+ "packuswb",
+ "paddb",
+ "paddw",
+ "paddd",
+ "paddsb",
+ "paddsw",
+ "paddusb",
+ "paddusw",
+ "pand",
+ "pandn",
+ "pavgb",
+ "pavgw",
+ "pcmpeqb",
+ "pcmpeqw",
+ "pcmpeqd",
+ "pcmpgtb",
+ "pcmpgtw",
+ "pcmpgtd",
+ "pextrb",
+ "pextrd",
+ "pextrq",
+ "pextrw",
+ "pinsrb",
+ "pinsrw",
+ "pinsrd",
+ "pinsrq",
+ "pmaddwd",
+ "pmaxsw",
+ "pmaxub",
+ "pminsw",
+ "pminub",
+ "pmovmskb",
+ "pmulhuw",
+ "pmulhw",
+ "pmullw",
+ "pop",
+ "popa",
+ "popad",
+ "popfw",
+ "popfd",
+ "popfq",
+ "por",
+ "prefetch",
+ "prefetchnta",
+ "prefetcht0",
+ "prefetcht1",
+ "prefetcht2",
+ "psadbw",
+ "pshufw",
+ "psllw",
+ "pslld",
+ "psllq",
+ "psraw",
+ "psrad",
+ "psrlw",
+ "psrld",
+ "psrlq",
+ "psubb",
+ "psubw",
+ "psubd",
+ "psubsb",
+ "psubsw",
+ "psubusb",
+ "psubusw",
+ "punpckhbw",
+ "punpckhwd",
+ "punpckhdq",
+ "punpcklbw",
+ "punpcklwd",
+ "punpckldq",
+ "pi2fw",
+ "pi2fd",
+ "pf2iw",
+ "pf2id",
+ "pfnacc",
+ "pfpnacc",
+ "pfcmpge",
+ "pfmin",
+ "pfrcp",
+ "pfrsqrt",
+ "pfsub",
+ "pfadd",
+ "pfcmpgt",
+ "pfmax",
+ "pfrcpit1",
+ "pfrsqit1",
+ "pfsubr",
+ "pfacc",
+ "pfcmpeq",
+ "pfmul",
+ "pfrcpit2",
+ "pmulhrw",
+ "pswapd",
+ "pavgusb",
+ "push",
+ "pusha",
+ "pushad",
+ "pushfw",
+ "pushfd",
+ "pushfq",
+ "pxor",
+ "rcl",
+ "rcr",
+ "rol",
+ "ror",
+ "rcpps",
+ "rcpss",
+ "rdmsr",
+ "rdpmc",
+ "rdtsc",
+ "rdtscp",
+ "repne",
+ "rep",
+ "ret",
+ "retf",
+ "rsm",
+ "rsqrtps",
+ "rsqrtss",
+ "sahf",
+ "salc",
+ "sar",
+ "shl",
+ "shr",
+ "sbb",
+ "scasb",
+ "scasw",
+ "scasd",
+ "scasq",
+ "seto",
+ "setno",
+ "setb",
+ "setae",
+ "setz",
+ "setnz",
+ "setbe",
+ "seta",
+ "sets",
+ "setns",
+ "setp",
+ "setnp",
+ "setl",
+ "setge",
+ "setle",
+ "setg",
+ "sfence",
+ "sgdt",
+ "shld",
+ "shrd",
+ "shufpd",
+ "shufps",
+ "sidt",
+ "sldt",
+ "smsw",
+ "sqrtps",
+ "sqrtpd",
+ "sqrtsd",
+ "sqrtss",
+ "stc",
+ "std",
+ "stgi",
+ "sti",
+ "skinit",
+ "stmxcsr",
+ "stosb",
+ "stosw",
+ "stosd",
+ "stosq",
+ "str",
+ "sub",
+ "subpd",
+ "subps",
+ "subsd",
+ "subss",
+ "swapgs",
+ "syscall",
+ "sysenter",
+ "sysexit",
+ "sysret",
+ "test",
+ "ucomisd",
+ "ucomiss",
+ "ud2",
+ "unpckhpd",
+ "unpckhps",
+ "unpcklps",
+ "unpcklpd",
+ "verr",
+ "verw",
+ "vmcall",
+ "vmclear",
+ "vmxon",
+ "vmptrld",
+ "vmptrst",
+ "vmlaunch",
+ "vmresume",
+ "vmxoff",
+ "vmread",
+ "vmwrite",
+ "vmrun",
+ "vmmcall",
+ "vmload",
+ "vmsave",
+ "wait",
+ "wbinvd",
+ "wrmsr",
+ "xadd",
+ "xchg",
+ "xgetbv",
+ "xlatb",
+ "xor",
+ "xorpd",
+ "xorps",
+ "xcryptecb",
+ "xcryptcbc",
+ "xcryptctr",
+ "xcryptcfb",
+ "xcryptofb",
+ "xrstor",
+ "xsave",
+ "xsetbv",
+ "xsha1",
+ "xsha256",
+ "xstore",
+ "aesdec",
+ "aesdeclast",
+ "aesenc",
+ "aesenclast",
+ "aesimc",
+ "aeskeygenassist",
+ "pclmulqdq",
+ "getsec",
+ "movdqa",
+ "maskmovdqu",
+ "movdq2q",
+ "movdqu",
+ "movq2dq",
+ "paddq",
+ "psubq",
+ "pmuludq",
+ "pshufhw",
+ "pshuflw",
+ "pshufd",
+ "pslldq",
+ "psrldq",
+ "punpckhqdq",
+ "punpcklqdq",
+ "addsubpd",
+ "addsubps",
+ "haddpd",
+ "haddps",
+ "hsubpd",
+ "hsubps",
+ "movddup",
+ "movshdup",
+ "movsldup",
+ "pabsb",
+ "pabsw",
+ "pabsd",
+ "pshufb",
+ "phaddw",
+ "phaddd",
+ "phaddsw",
+ "pmaddubsw",
+ "phsubw",
+ "phsubd",
+ "phsubsw",
+ "psignb",
+ "psignd",
+ "psignw",
+ "pmulhrsw",
+ "palignr",
+ "pblendvb",
+ "pmuldq",
+ "pminsb",
+ "pminsd",
+ "pminuw",
+ "pminud",
+ "pmaxsb",
+ "pmaxsd",
+ "pmaxud",
+ "pmaxuw",
+ "pmulld",
+ "phminposuw",
+ "roundps",
+ "roundpd",
+ "roundss",
+ "roundsd",
+ "blendpd",
+ "pblendw",
+ "blendps",
+ "blendvpd",
+ "blendvps",
+ "dpps",
+ "dppd",
+ "mpsadbw",
+ "extractps",
+ "insertps",
+ "movntdqa",
+ "packusdw",
+ "pmovsxbw",
+ "pmovsxbd",
+ "pmovsxbq",
+ "pmovsxwd",
+ "pmovsxwq",
+ "pmovsxdq",
+ "pmovzxbw",
+ "pmovzxbd",
+ "pmovzxbq",
+ "pmovzxwd",
+ "pmovzxwq",
+ "pmovzxdq",
+ "pcmpeqq",
+ "popcnt",
+ "ptest",
+ "pcmpestri",
+ "pcmpestrm",
+ "pcmpgtq",
+ "pcmpistri",
+ "pcmpistrm",
+ "movbe",
+ "crc32"
+};
diff --git a/UefiDriver/udis86/libudis86/itab.h b/UefiDriver/udis86/libudis86/itab.h
new file mode 100644
index 0000000..778a76d
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/itab.h
@@ -0,0 +1,678 @@
+#ifndef UD_ITAB_H
+#define UD_ITAB_H
+
+/* itab.h -- generated by udis86:scripts/ud_itab.py, do no edit */
+
+/* ud_table_type -- lookup table types (see decode.c) */
+enum ud_table_type {
+ UD_TAB__OPC_TABLE,
+ UD_TAB__OPC_X87,
+ UD_TAB__OPC_MOD,
+ UD_TAB__OPC_VEX_M,
+ UD_TAB__OPC_VEX_P,
+ UD_TAB__OPC_RM,
+ UD_TAB__OPC_VENDOR,
+ UD_TAB__OPC_OSIZE,
+ UD_TAB__OPC_MODE,
+ UD_TAB__OPC_3DNOW,
+ UD_TAB__OPC_REG,
+ UD_TAB__OPC_ASIZE,
+ UD_TAB__OPC_SSE
+};
+
+/* ud_mnemonic -- mnemonic constants */
+enum ud_mnemonic_code {
+ UD_Iinvalid,
+ UD_I3dnow,
+ UD_Inone,
+ UD_Idb,
+ UD_Ipause,
+ UD_Iaaa,
+ UD_Iaad,
+ UD_Iaam,
+ UD_Iaas,
+ UD_Iadc,
+ UD_Iadd,
+ UD_Iaddpd,
+ UD_Iaddps,
+ UD_Iaddsd,
+ UD_Iaddss,
+ UD_Iand,
+ UD_Iandpd,
+ UD_Iandps,
+ UD_Iandnpd,
+ UD_Iandnps,
+ UD_Iarpl,
+ UD_Imovsxd,
+ UD_Ibound,
+ UD_Ibsf,
+ UD_Ibsr,
+ UD_Ibswap,
+ UD_Ibt,
+ UD_Ibtc,
+ UD_Ibtr,
+ UD_Ibts,
+ UD_Icall,
+ UD_Icbw,
+ UD_Icwde,
+ UD_Icdqe,
+ UD_Iclc,
+ UD_Icld,
+ UD_Iclflush,
+ UD_Iclgi,
+ UD_Icli,
+ UD_Iclts,
+ UD_Icmc,
+ UD_Icmovo,
+ UD_Icmovno,
+ UD_Icmovb,
+ UD_Icmovae,
+ UD_Icmovz,
+ UD_Icmovnz,
+ UD_Icmovbe,
+ UD_Icmova,
+ UD_Icmovs,
+ UD_Icmovns,
+ UD_Icmovp,
+ UD_Icmovnp,
+ UD_Icmovl,
+ UD_Icmovge,
+ UD_Icmovle,
+ UD_Icmovg,
+ UD_Icmp,
+ UD_Icmppd,
+ UD_Icmpps,
+ UD_Icmpsb,
+ UD_Icmpsw,
+ UD_Icmpsd,
+ UD_Icmpsq,
+ UD_Icmpss,
+ UD_Icmpxchg,
+ UD_Icmpxchg8b,
+ UD_Icmpxchg16b,
+ UD_Icomisd,
+ UD_Icomiss,
+ UD_Icpuid,
+ UD_Icvtdq2pd,
+ UD_Icvtdq2ps,
+ UD_Icvtpd2dq,
+ UD_Icvtpd2pi,
+ UD_Icvtpd2ps,
+ UD_Icvtpi2ps,
+ UD_Icvtpi2pd,
+ UD_Icvtps2dq,
+ UD_Icvtps2pi,
+ UD_Icvtps2pd,
+ UD_Icvtsd2si,
+ UD_Icvtsd2ss,
+ UD_Icvtsi2ss,
+ UD_Icvtss2si,
+ UD_Icvtss2sd,
+ UD_Icvttpd2pi,
+ UD_Icvttpd2dq,
+ UD_Icvttps2dq,
+ UD_Icvttps2pi,
+ UD_Icvttsd2si,
+ UD_Icvtsi2sd,
+ UD_Icvttss2si,
+ UD_Icwd,
+ UD_Icdq,
+ UD_Icqo,
+ UD_Idaa,
+ UD_Idas,
+ UD_Idec,
+ UD_Idiv,
+ UD_Idivpd,
+ UD_Idivps,
+ UD_Idivsd,
+ UD_Idivss,
+ UD_Iemms,
+ UD_Ienter,
+ UD_If2xm1,
+ UD_Ifabs,
+ UD_Ifadd,
+ UD_Ifaddp,
+ UD_Ifbld,
+ UD_Ifbstp,
+ UD_Ifchs,
+ UD_Ifclex,
+ UD_Ifcmovb,
+ UD_Ifcmove,
+ UD_Ifcmovbe,
+ UD_Ifcmovu,
+ UD_Ifcmovnb,
+ UD_Ifcmovne,
+ UD_Ifcmovnbe,
+ UD_Ifcmovnu,
+ UD_Ifucomi,
+ UD_Ifcom,
+ UD_Ifcom2,
+ UD_Ifcomp3,
+ UD_Ifcomi,
+ UD_Ifucomip,
+ UD_Ifcomip,
+ UD_Ifcomp,
+ UD_Ifcomp5,
+ UD_Ifcompp,
+ UD_Ifcos,
+ UD_Ifdecstp,
+ UD_Ifdiv,
+ UD_Ifdivp,
+ UD_Ifdivr,
+ UD_Ifdivrp,
+ UD_Ifemms,
+ UD_Iffree,
+ UD_Iffreep,
+ UD_Ificom,
+ UD_Ificomp,
+ UD_Ifild,
+ UD_Ifincstp,
+ UD_Ifninit,
+ UD_Ifiadd,
+ UD_Ifidivr,
+ UD_Ifidiv,
+ UD_Ifisub,
+ UD_Ifisubr,
+ UD_Ifist,
+ UD_Ifistp,
+ UD_Ifisttp,
+ UD_Ifld,
+ UD_Ifld1,
+ UD_Ifldl2t,
+ UD_Ifldl2e,
+ UD_Ifldpi,
+ UD_Ifldlg2,
+ UD_Ifldln2,
+ UD_Ifldz,
+ UD_Ifldcw,
+ UD_Ifldenv,
+ UD_Ifmul,
+ UD_Ifmulp,
+ UD_Ifimul,
+ UD_Ifnop,
+ UD_Ifpatan,
+ UD_Ifprem,
+ UD_Ifprem1,
+ UD_Ifptan,
+ UD_Ifrndint,
+ UD_Ifrstor,
+ UD_Ifnsave,
+ UD_Ifscale,
+ UD_Ifsin,
+ UD_Ifsincos,
+ UD_Ifsqrt,
+ UD_Ifstp,
+ UD_Ifstp1,
+ UD_Ifstp8,
+ UD_Ifstp9,
+ UD_Ifst,
+ UD_Ifnstcw,
+ UD_Ifnstenv,
+ UD_Ifnstsw,
+ UD_Ifsub,
+ UD_Ifsubp,
+ UD_Ifsubr,
+ UD_Ifsubrp,
+ UD_Iftst,
+ UD_Ifucom,
+ UD_Ifucomp,
+ UD_Ifucompp,
+ UD_Ifxam,
+ UD_Ifxch,
+ UD_Ifxch4,
+ UD_Ifxch7,
+ UD_Ifxrstor,
+ UD_Ifxsave,
+ UD_Ifxtract,
+ UD_Ifyl2x,
+ UD_Ifyl2xp1,
+ UD_Ihlt,
+ UD_Iidiv,
+ UD_Iin,
+ UD_Iimul,
+ UD_Iinc,
+ UD_Iinsb,
+ UD_Iinsw,
+ UD_Iinsd,
+ UD_Iint1,
+ UD_Iint3,
+ UD_Iint,
+ UD_Iinto,
+ UD_Iinvd,
+ UD_Iinvept,
+ UD_Iinvlpg,
+ UD_Iinvlpga,
+ UD_Iinvvpid,
+ UD_Iiretw,
+ UD_Iiretd,
+ UD_Iiretq,
+ UD_Ijo,
+ UD_Ijno,
+ UD_Ijb,
+ UD_Ijae,
+ UD_Ijz,
+ UD_Ijnz,
+ UD_Ijbe,
+ UD_Ija,
+ UD_Ijs,
+ UD_Ijns,
+ UD_Ijp,
+ UD_Ijnp,
+ UD_Ijl,
+ UD_Ijge,
+ UD_Ijle,
+ UD_Ijg,
+ UD_Ijcxz,
+ UD_Ijecxz,
+ UD_Ijrcxz,
+ UD_Ijmp,
+ UD_Ilahf,
+ UD_Ilar,
+ UD_Ilddqu,
+ UD_Ildmxcsr,
+ UD_Ilds,
+ UD_Ilea,
+ UD_Iles,
+ UD_Ilfs,
+ UD_Ilgs,
+ UD_Ilidt,
+ UD_Ilss,
+ UD_Ileave,
+ UD_Ilfence,
+ UD_Ilgdt,
+ UD_Illdt,
+ UD_Ilmsw,
+ UD_Ilock,
+ UD_Ilodsb,
+ UD_Ilodsw,
+ UD_Ilodsd,
+ UD_Ilodsq,
+ UD_Iloopne,
+ UD_Iloope,
+ UD_Iloop,
+ UD_Ilsl,
+ UD_Iltr,
+ UD_Imaskmovq,
+ UD_Imaxpd,
+ UD_Imaxps,
+ UD_Imaxsd,
+ UD_Imaxss,
+ UD_Imfence,
+ UD_Iminpd,
+ UD_Iminps,
+ UD_Iminsd,
+ UD_Iminss,
+ UD_Imonitor,
+ UD_Imontmul,
+ UD_Imov,
+ UD_Imovapd,
+ UD_Imovaps,
+ UD_Imovd,
+ UD_Imovhpd,
+ UD_Imovhps,
+ UD_Imovlhps,
+ UD_Imovlpd,
+ UD_Imovlps,
+ UD_Imovhlps,
+ UD_Imovmskpd,
+ UD_Imovmskps,
+ UD_Imovntdq,
+ UD_Imovnti,
+ UD_Imovntpd,
+ UD_Imovntps,
+ UD_Imovntq,
+ UD_Imovq,
+ UD_Imovsb,
+ UD_Imovsw,
+ UD_Imovsd,
+ UD_Imovsq,
+ UD_Imovss,
+ UD_Imovsx,
+ UD_Imovupd,
+ UD_Imovups,
+ UD_Imovzx,
+ UD_Imul,
+ UD_Imulpd,
+ UD_Imulps,
+ UD_Imulsd,
+ UD_Imulss,
+ UD_Imwait,
+ UD_Ineg,
+ UD_Inop,
+ UD_Inot,
+ UD_Ior,
+ UD_Iorpd,
+ UD_Iorps,
+ UD_Iout,
+ UD_Ioutsb,
+ UD_Ioutsw,
+ UD_Ioutsd,
+ UD_Ipacksswb,
+ UD_Ipackssdw,
+ UD_Ipackuswb,
+ UD_Ipaddb,
+ UD_Ipaddw,
+ UD_Ipaddd,
+ UD_Ipaddsb,
+ UD_Ipaddsw,
+ UD_Ipaddusb,
+ UD_Ipaddusw,
+ UD_Ipand,
+ UD_Ipandn,
+ UD_Ipavgb,
+ UD_Ipavgw,
+ UD_Ipcmpeqb,
+ UD_Ipcmpeqw,
+ UD_Ipcmpeqd,
+ UD_Ipcmpgtb,
+ UD_Ipcmpgtw,
+ UD_Ipcmpgtd,
+ UD_Ipextrb,
+ UD_Ipextrd,
+ UD_Ipextrq,
+ UD_Ipextrw,
+ UD_Ipinsrb,
+ UD_Ipinsrw,
+ UD_Ipinsrd,
+ UD_Ipinsrq,
+ UD_Ipmaddwd,
+ UD_Ipmaxsw,
+ UD_Ipmaxub,
+ UD_Ipminsw,
+ UD_Ipminub,
+ UD_Ipmovmskb,
+ UD_Ipmulhuw,
+ UD_Ipmulhw,
+ UD_Ipmullw,
+ UD_Ipop,
+ UD_Ipopa,
+ UD_Ipopad,
+ UD_Ipopfw,
+ UD_Ipopfd,
+ UD_Ipopfq,
+ UD_Ipor,
+ UD_Iprefetch,
+ UD_Iprefetchnta,
+ UD_Iprefetcht0,
+ UD_Iprefetcht1,
+ UD_Iprefetcht2,
+ UD_Ipsadbw,
+ UD_Ipshufw,
+ UD_Ipsllw,
+ UD_Ipslld,
+ UD_Ipsllq,
+ UD_Ipsraw,
+ UD_Ipsrad,
+ UD_Ipsrlw,
+ UD_Ipsrld,
+ UD_Ipsrlq,
+ UD_Ipsubb,
+ UD_Ipsubw,
+ UD_Ipsubd,
+ UD_Ipsubsb,
+ UD_Ipsubsw,
+ UD_Ipsubusb,
+ UD_Ipsubusw,
+ UD_Ipunpckhbw,
+ UD_Ipunpckhwd,
+ UD_Ipunpckhdq,
+ UD_Ipunpcklbw,
+ UD_Ipunpcklwd,
+ UD_Ipunpckldq,
+ UD_Ipi2fw,
+ UD_Ipi2fd,
+ UD_Ipf2iw,
+ UD_Ipf2id,
+ UD_Ipfnacc,
+ UD_Ipfpnacc,
+ UD_Ipfcmpge,
+ UD_Ipfmin,
+ UD_Ipfrcp,
+ UD_Ipfrsqrt,
+ UD_Ipfsub,
+ UD_Ipfadd,
+ UD_Ipfcmpgt,
+ UD_Ipfmax,
+ UD_Ipfrcpit1,
+ UD_Ipfrsqit1,
+ UD_Ipfsubr,
+ UD_Ipfacc,
+ UD_Ipfcmpeq,
+ UD_Ipfmul,
+ UD_Ipfrcpit2,
+ UD_Ipmulhrw,
+ UD_Ipswapd,
+ UD_Ipavgusb,
+ UD_Ipush,
+ UD_Ipusha,
+ UD_Ipushad,
+ UD_Ipushfw,
+ UD_Ipushfd,
+ UD_Ipushfq,
+ UD_Ipxor,
+ UD_Ircl,
+ UD_Ircr,
+ UD_Irol,
+ UD_Iror,
+ UD_Ircpps,
+ UD_Ircpss,
+ UD_Irdmsr,
+ UD_Irdpmc,
+ UD_Irdtsc,
+ UD_Irdtscp,
+ UD_Irepne,
+ UD_Irep,
+ UD_Iret,
+ UD_Iretf,
+ UD_Irsm,
+ UD_Irsqrtps,
+ UD_Irsqrtss,
+ UD_Isahf,
+ UD_Isalc,
+ UD_Isar,
+ UD_Ishl,
+ UD_Ishr,
+ UD_Isbb,
+ UD_Iscasb,
+ UD_Iscasw,
+ UD_Iscasd,
+ UD_Iscasq,
+ UD_Iseto,
+ UD_Isetno,
+ UD_Isetb,
+ UD_Isetae,
+ UD_Isetz,
+ UD_Isetnz,
+ UD_Isetbe,
+ UD_Iseta,
+ UD_Isets,
+ UD_Isetns,
+ UD_Isetp,
+ UD_Isetnp,
+ UD_Isetl,
+ UD_Isetge,
+ UD_Isetle,
+ UD_Isetg,
+ UD_Isfence,
+ UD_Isgdt,
+ UD_Ishld,
+ UD_Ishrd,
+ UD_Ishufpd,
+ UD_Ishufps,
+ UD_Isidt,
+ UD_Isldt,
+ UD_Ismsw,
+ UD_Isqrtps,
+ UD_Isqrtpd,
+ UD_Isqrtsd,
+ UD_Isqrtss,
+ UD_Istc,
+ UD_Istd,
+ UD_Istgi,
+ UD_Isti,
+ UD_Iskinit,
+ UD_Istmxcsr,
+ UD_Istosb,
+ UD_Istosw,
+ UD_Istosd,
+ UD_Istosq,
+ UD_Istr,
+ UD_Isub,
+ UD_Isubpd,
+ UD_Isubps,
+ UD_Isubsd,
+ UD_Isubss,
+ UD_Iswapgs,
+ UD_Isyscall,
+ UD_Isysenter,
+ UD_Isysexit,
+ UD_Isysret,
+ UD_Itest,
+ UD_Iucomisd,
+ UD_Iucomiss,
+ UD_Iud2,
+ UD_Iunpckhpd,
+ UD_Iunpckhps,
+ UD_Iunpcklps,
+ UD_Iunpcklpd,
+ UD_Iverr,
+ UD_Iverw,
+ UD_Ivmcall,
+ UD_Ivmclear,
+ UD_Ivmxon,
+ UD_Ivmptrld,
+ UD_Ivmptrst,
+ UD_Ivmlaunch,
+ UD_Ivmresume,
+ UD_Ivmxoff,
+ UD_Ivmread,
+ UD_Ivmwrite,
+ UD_Ivmrun,
+ UD_Ivmmcall,
+ UD_Ivmload,
+ UD_Ivmsave,
+ UD_Iwait,
+ UD_Iwbinvd,
+ UD_Iwrmsr,
+ UD_Ixadd,
+ UD_Ixchg,
+ UD_Ixgetbv,
+ UD_Ixlatb,
+ UD_Ixor,
+ UD_Ixorpd,
+ UD_Ixorps,
+ UD_Ixcryptecb,
+ UD_Ixcryptcbc,
+ UD_Ixcryptctr,
+ UD_Ixcryptcfb,
+ UD_Ixcryptofb,
+ UD_Ixrstor,
+ UD_Ixsave,
+ UD_Ixsetbv,
+ UD_Ixsha1,
+ UD_Ixsha256,
+ UD_Ixstore,
+ UD_Iaesdec,
+ UD_Iaesdeclast,
+ UD_Iaesenc,
+ UD_Iaesenclast,
+ UD_Iaesimc,
+ UD_Iaeskeygenassist,
+ UD_Ipclmulqdq,
+ UD_Igetsec,
+ UD_Imovdqa,
+ UD_Imaskmovdqu,
+ UD_Imovdq2q,
+ UD_Imovdqu,
+ UD_Imovq2dq,
+ UD_Ipaddq,
+ UD_Ipsubq,
+ UD_Ipmuludq,
+ UD_Ipshufhw,
+ UD_Ipshuflw,
+ UD_Ipshufd,
+ UD_Ipslldq,
+ UD_Ipsrldq,
+ UD_Ipunpckhqdq,
+ UD_Ipunpcklqdq,
+ UD_Iaddsubpd,
+ UD_Iaddsubps,
+ UD_Ihaddpd,
+ UD_Ihaddps,
+ UD_Ihsubpd,
+ UD_Ihsubps,
+ UD_Imovddup,
+ UD_Imovshdup,
+ UD_Imovsldup,
+ UD_Ipabsb,
+ UD_Ipabsw,
+ UD_Ipabsd,
+ UD_Ipshufb,
+ UD_Iphaddw,
+ UD_Iphaddd,
+ UD_Iphaddsw,
+ UD_Ipmaddubsw,
+ UD_Iphsubw,
+ UD_Iphsubd,
+ UD_Iphsubsw,
+ UD_Ipsignb,
+ UD_Ipsignd,
+ UD_Ipsignw,
+ UD_Ipmulhrsw,
+ UD_Ipalignr,
+ UD_Ipblendvb,
+ UD_Ipmuldq,
+ UD_Ipminsb,
+ UD_Ipminsd,
+ UD_Ipminuw,
+ UD_Ipminud,
+ UD_Ipmaxsb,
+ UD_Ipmaxsd,
+ UD_Ipmaxud,
+ UD_Ipmaxuw,
+ UD_Ipmulld,
+ UD_Iphminposuw,
+ UD_Iroundps,
+ UD_Iroundpd,
+ UD_Iroundss,
+ UD_Iroundsd,
+ UD_Iblendpd,
+ UD_Ipblendw,
+ UD_Iblendps,
+ UD_Iblendvpd,
+ UD_Iblendvps,
+ UD_Idpps,
+ UD_Idppd,
+ UD_Impsadbw,
+ UD_Iextractps,
+ UD_Iinsertps,
+ UD_Imovntdqa,
+ UD_Ipackusdw,
+ UD_Ipmovsxbw,
+ UD_Ipmovsxbd,
+ UD_Ipmovsxbq,
+ UD_Ipmovsxwd,
+ UD_Ipmovsxwq,
+ UD_Ipmovsxdq,
+ UD_Ipmovzxbw,
+ UD_Ipmovzxbd,
+ UD_Ipmovzxbq,
+ UD_Ipmovzxwd,
+ UD_Ipmovzxwq,
+ UD_Ipmovzxdq,
+ UD_Ipcmpeqq,
+ UD_Ipopcnt,
+ UD_Iptest,
+ UD_Ipcmpestri,
+ UD_Ipcmpestrm,
+ UD_Ipcmpgtq,
+ UD_Ipcmpistri,
+ UD_Ipcmpistrm,
+ UD_Imovbe,
+ UD_Icrc32,
+ UD_MAX_MNEMONIC_CODE
+} UD_ATTR_PACKED;
+
+extern const char * ud_mnemonics_str[];
+
+#endif /* UD_ITAB_H */
diff --git a/UefiDriver/udis86/libudis86/syn-att.c b/UefiDriver/udis86/libudis86/syn-att.c
new file mode 100644
index 0000000..dc9d739
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/syn-att.c
@@ -0,0 +1,224 @@
+/* udis86 - libudis86/syn-att.c
+ *
+ * Copyright (c) 2002-2009 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "types.h"
+#include "extern.h"
+#include "decode.h"
+#include "itab.h"
+#include "syn.h"
+#include "udint.h"
+
+/* -----------------------------------------------------------------------------
+ * opr_cast() - Prints an operand cast.
+ * -----------------------------------------------------------------------------
+ */
+static void
+opr_cast(struct ud* u, struct ud_operand* op)
+{
+ switch(op->size) {
+ case 16 : case 32 :
+ ud_asmprintf(u, "*"); break;
+ default: break;
+ }
+}
+
+/* -----------------------------------------------------------------------------
+ * gen_operand() - Generates assembly output for each operand.
+ * -----------------------------------------------------------------------------
+ */
+static void
+gen_operand(struct ud* u, struct ud_operand* op)
+{
+ switch(op->type) {
+ case UD_OP_CONST:
+ ud_asmprintf(u, "$0x%x", op->lval.udword);
+ break;
+
+ case UD_OP_REG:
+ ud_asmprintf(u, "%%%s", ud_reg_tab[op->base - UD_R_AL]);
+ break;
+
+ case UD_OP_MEM:
+ if (u->br_far) {
+ opr_cast(u, op);
+ }
+ if (u->pfx_seg) {
+ ud_asmprintf(u, "%%%s:", ud_reg_tab[u->pfx_seg - UD_R_AL]);
+ }
+ if (op->offset != 0) {
+ ud_syn_print_mem_disp(u, op, 0);
+ }
+ if (op->base) {
+ ud_asmprintf(u, "(%%%s", ud_reg_tab[op->base - UD_R_AL]);
+ }
+ if (op->index) {
+ if (op->base) {
+ ud_asmprintf(u, ",");
+ } else {
+ ud_asmprintf(u, "(");
+ }
+ ud_asmprintf(u, "%%%s", ud_reg_tab[op->index - UD_R_AL]);
+ }
+ if (op->scale) {
+ ud_asmprintf(u, ",%d", op->scale);
+ }
+ if (op->base || op->index) {
+ ud_asmprintf(u, ")");
+ }
+ break;
+
+ case UD_OP_IMM:
+ ud_asmprintf(u, "$");
+ ud_syn_print_imm(u, op);
+ break;
+
+ case UD_OP_JIMM:
+ ud_syn_print_addr(u, ud_syn_rel_target(u, op));
+ break;
+
+ case UD_OP_PTR:
+ switch (op->size) {
+ case 32:
+ ud_asmprintf(u, "$0x%x, $0x%x", op->lval.ptr.seg,
+ op->lval.ptr.off & 0xFFFF);
+ break;
+ case 48:
+ ud_asmprintf(u, "$0x%x, $0x%x", op->lval.ptr.seg,
+ op->lval.ptr.off);
+ break;
+ }
+ break;
+
+ default: return;
+ }
+}
+
+/* =============================================================================
+ * translates to AT&T syntax
+ * =============================================================================
+ */
+extern void
+ud_translate_att(struct ud *u)
+{
+ int size = 0;
+ int star = 0;
+
+ /* check if P_OSO prefix is used */
+ if (! P_OSO(u->itab_entry->prefix) && u->pfx_opr) {
+ switch (u->dis_mode) {
+ case 16:
+ ud_asmprintf(u, "o32 ");
+ break;
+ case 32:
+ case 64:
+ ud_asmprintf(u, "o16 ");
+ break;
+ }
+ }
+
+ /* check if P_ASO prefix was used */
+ if (! P_ASO(u->itab_entry->prefix) && u->pfx_adr) {
+ switch (u->dis_mode) {
+ case 16:
+ ud_asmprintf(u, "a32 ");
+ break;
+ case 32:
+ ud_asmprintf(u, "a16 ");
+ break;
+ case 64:
+ ud_asmprintf(u, "a32 ");
+ break;
+ }
+ }
+
+ if (u->pfx_lock)
+ ud_asmprintf(u, "lock ");
+ if (u->pfx_rep) {
+ ud_asmprintf(u, "rep ");
+ } else if (u->pfx_rep) {
+ ud_asmprintf(u, "repe ");
+ } else if (u->pfx_repne) {
+ ud_asmprintf(u, "repne ");
+ }
+
+ /* special instructions */
+ switch (u->mnemonic) {
+ case UD_Iretf:
+ ud_asmprintf(u, "lret ");
+ break;
+ case UD_Idb:
+ ud_asmprintf(u, ".byte 0x%x", u->operand[0].lval.ubyte);
+ return;
+ case UD_Ijmp:
+ case UD_Icall:
+ if (u->br_far) ud_asmprintf(u, "l");
+ if (u->operand[0].type == UD_OP_REG) {
+ star = 1;
+ }
+ ud_asmprintf(u, "%s", ud_lookup_mnemonic(u->mnemonic));
+ break;
+ case UD_Ibound:
+ case UD_Ienter:
+ if (u->operand[0].type != UD_NONE)
+ gen_operand(u, &u->operand[0]);
+ if (u->operand[1].type != UD_NONE) {
+ ud_asmprintf(u, ",");
+ gen_operand(u, &u->operand[1]);
+ }
+ return;
+ default:
+ ud_asmprintf(u, "%s", ud_lookup_mnemonic(u->mnemonic));
+ }
+
+ if (size == 8)
+ ud_asmprintf(u, "b");
+ else if (size == 16)
+ ud_asmprintf(u, "w");
+ else if (size == 64)
+ ud_asmprintf(u, "q");
+
+ if (star) {
+ ud_asmprintf(u, " *");
+ } else {
+ ud_asmprintf(u, " ");
+ }
+
+ if (u->operand[2].type != UD_NONE) {
+ gen_operand(u, &u->operand[2]);
+ ud_asmprintf(u, ", ");
+ }
+
+ if (u->operand[1].type != UD_NONE) {
+ gen_operand(u, &u->operand[1]);
+ ud_asmprintf(u, ", ");
+ }
+
+ if (u->operand[0].type != UD_NONE)
+ gen_operand(u, &u->operand[0]);
+}
+
+/*
+vim: set ts=2 sw=2 expandtab
+*/
diff --git a/UefiDriver/udis86/libudis86/syn-intel.c b/UefiDriver/udis86/libudis86/syn-intel.c
new file mode 100644
index 0000000..e4d8409
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/syn-intel.c
@@ -0,0 +1,213 @@
+/* udis86 - libudis86/syn-intel.c
+ *
+ * Copyright (c) 2002-2013 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "types.h"
+#include "extern.h"
+#include "decode.h"
+#include "itab.h"
+#include "syn.h"
+#include "udint.h"
+
+/* -----------------------------------------------------------------------------
+ * opr_cast() - Prints an operand cast.
+ * -----------------------------------------------------------------------------
+ */
+static void
+opr_cast(struct ud* u, struct ud_operand* op)
+{
+ if (u->br_far) {
+ ud_asmprintf(u, "far ");
+ }
+ switch(op->size) {
+ case 8: ud_asmprintf(u, "byte " ); break;
+ case 16: ud_asmprintf(u, "word " ); break;
+ case 32: ud_asmprintf(u, "dword "); break;
+ case 64: ud_asmprintf(u, "qword "); break;
+ case 80: ud_asmprintf(u, "tword "); break;
+ default: break;
+ }
+}
+
+/* -----------------------------------------------------------------------------
+ * gen_operand() - Generates assembly output for each operand.
+ * -----------------------------------------------------------------------------
+ */
+static void gen_operand(struct ud* u, struct ud_operand* op, int syn_cast)
+{
+ switch(op->type) {
+ case UD_OP_REG:
+ ud_asmprintf(u, "%s", ud_reg_tab[op->base - UD_R_AL]);
+ break;
+
+ case UD_OP_MEM:
+ if (syn_cast) {
+ opr_cast(u, op);
+ }
+ ud_asmprintf(u, "[");
+ if (u->pfx_seg) {
+ ud_asmprintf(u, "%s:", ud_reg_tab[u->pfx_seg - UD_R_AL]);
+ }
+ if (op->base) {
+ ud_asmprintf(u, "%s", ud_reg_tab[op->base - UD_R_AL]);
+ }
+ if (op->index) {
+ ud_asmprintf(u, "%s%s", op->base != UD_NONE? "+" : "",
+ ud_reg_tab[op->index - UD_R_AL]);
+ if (op->scale) {
+ ud_asmprintf(u, "*%d", op->scale);
+ }
+ }
+ if (op->offset != 0) {
+ ud_syn_print_mem_disp(u, op, (op->base != UD_NONE ||
+ op->index != UD_NONE) ? 1 : 0);
+ }
+ ud_asmprintf(u, "]");
+ break;
+
+ case UD_OP_IMM:
+ ud_syn_print_imm(u, op);
+ break;
+
+
+ case UD_OP_JIMM:
+ ud_syn_print_addr(u, ud_syn_rel_target(u, op));
+ break;
+
+ case UD_OP_PTR:
+ switch (op->size) {
+ case 32:
+ ud_asmprintf(u, "word 0x%x:0x%x", op->lval.ptr.seg,
+ op->lval.ptr.off & 0xFFFF);
+ break;
+ case 48:
+ ud_asmprintf(u, "dword 0x%x:0x%x", op->lval.ptr.seg,
+ op->lval.ptr.off);
+ break;
+ }
+ break;
+
+ case UD_OP_CONST:
+ if (syn_cast) opr_cast(u, op);
+ ud_asmprintf(u, "%d", op->lval.udword);
+ break;
+
+ default: return;
+ }
+}
+
+/* =============================================================================
+ * translates to intel syntax
+ * =============================================================================
+ */
+extern void
+ud_translate_intel(struct ud* u)
+{
+ /* check if P_OSO prefix is used */
+ if (!P_OSO(u->itab_entry->prefix) && u->pfx_opr) {
+ switch (u->dis_mode) {
+ case 16: ud_asmprintf(u, "o32 "); break;
+ case 32:
+ case 64: ud_asmprintf(u, "o16 "); break;
+ }
+ }
+
+ /* check if P_ASO prefix was used */
+ if (!P_ASO(u->itab_entry->prefix) && u->pfx_adr) {
+ switch (u->dis_mode) {
+ case 16: ud_asmprintf(u, "a32 "); break;
+ case 32: ud_asmprintf(u, "a16 "); break;
+ case 64: ud_asmprintf(u, "a32 "); break;
+ }
+ }
+
+ if (u->pfx_seg &&
+ u->operand[0].type != UD_OP_MEM &&
+ u->operand[1].type != UD_OP_MEM ) {
+ ud_asmprintf(u, "%s ", ud_reg_tab[u->pfx_seg - UD_R_AL]);
+ }
+
+ if (u->pfx_lock) {
+ ud_asmprintf(u, "lock ");
+ }
+ if (u->pfx_rep) {
+ ud_asmprintf(u, "rep ");
+ } else if (u->pfx_repe) {
+ ud_asmprintf(u, "repe ");
+ } else if (u->pfx_repne) {
+ ud_asmprintf(u, "repne ");
+ }
+
+ /* print the instruction mnemonic */
+ ud_asmprintf(u, "%s", ud_lookup_mnemonic(u->mnemonic));
+
+ if (u->operand[0].type != UD_NONE) {
+ int cast = 0;
+ ud_asmprintf(u, " ");
+ if (u->operand[0].type == UD_OP_MEM) {
+ if (u->operand[1].type == UD_OP_IMM ||
+ u->operand[1].type == UD_OP_CONST ||
+ u->operand[1].type == UD_NONE ||
+ (u->operand[0].size != u->operand[1].size &&
+ u->operand[1].type != UD_OP_REG)) {
+ cast = 1;
+ } else if (u->operand[1].type == UD_OP_REG &&
+ u->operand[1].base == UD_R_CL) {
+ switch (u->mnemonic) {
+ case UD_Ircl:
+ case UD_Irol:
+ case UD_Iror:
+ case UD_Ircr:
+ case UD_Ishl:
+ case UD_Ishr:
+ case UD_Isar:
+ cast = 1;
+ break;
+ default: break;
+ }
+ }
+ }
+ gen_operand(u, &u->operand[0], cast);
+ }
+
+ if (u->operand[1].type != UD_NONE) {
+ int cast = 0;
+ ud_asmprintf(u, ", ");
+ if (u->operand[1].type == UD_OP_MEM &&
+ u->operand[0].size != u->operand[1].size &&
+ !ud_opr_is_sreg(&u->operand[0])) {
+ cast = 1;
+ }
+ gen_operand(u, &u->operand[1], cast);
+ }
+
+ if (u->operand[2].type != UD_NONE) {
+ ud_asmprintf(u, ", ");
+ gen_operand(u, &u->operand[2], 0);
+ }
+}
+
+/*
+vim: set ts=2 sw=2 expandtab
+*/
diff --git a/UefiDriver/udis86/libudis86/syn.c b/UefiDriver/udis86/libudis86/syn.c
new file mode 100644
index 0000000..5ae7aa2
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/syn.c
@@ -0,0 +1,207 @@
+/* udis86 - libudis86/syn.c
+ *
+ * Copyright (c) 2002-2013 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "types.h"
+#include "decode.h"
+#include "syn.h"
+#include "udint.h"
+
+/* -----------------------------------------------------------------------------
+ * Intel Register Table - Order Matters (types.h)!
+ * -----------------------------------------------------------------------------
+ */
+const char* ud_reg_tab[] =
+{
+ "al", "cl", "dl", "bl",
+ "ah", "ch", "dh", "bh",
+ "spl", "bpl", "sil", "dil",
+ "r8b", "r9b", "r10b", "r11b",
+ "r12b", "r13b", "r14b", "r15b",
+
+ "ax", "cx", "dx", "bx",
+ "sp", "bp", "si", "di",
+ "r8w", "r9w", "r10w", "r11w",
+ "r12w", "r13w" , "r14w", "r15w",
+
+ "eax", "ecx", "edx", "ebx",
+ "esp", "ebp", "esi", "edi",
+ "r8d", "r9d", "r10d", "r11d",
+ "r12d", "r13d", "r14d", "r15d",
+
+ "rax", "rcx", "rdx", "rbx",
+ "rsp", "rbp", "rsi", "rdi",
+ "r8", "r9", "r10", "r11",
+ "r12", "r13", "r14", "r15",
+
+ "es", "cs", "ss", "ds",
+ "fs", "gs",
+
+ "cr0", "cr1", "cr2", "cr3",
+ "cr4", "cr5", "cr6", "cr7",
+ "cr8", "cr9", "cr10", "cr11",
+ "cr12", "cr13", "cr14", "cr15",
+
+ "dr0", "dr1", "dr2", "dr3",
+ "dr4", "dr5", "dr6", "dr7",
+ "dr8", "dr9", "dr10", "dr11",
+ "dr12", "dr13", "dr14", "dr15",
+
+ "mm0", "mm1", "mm2", "mm3",
+ "mm4", "mm5", "mm6", "mm7",
+
+ "st0", "st1", "st2", "st3",
+ "st4", "st5", "st6", "st7",
+
+ "xmm0", "xmm1", "xmm2", "xmm3",
+ "xmm4", "xmm5", "xmm6", "xmm7",
+ "xmm8", "xmm9", "xmm10", "xmm11",
+ "xmm12", "xmm13", "xmm14", "xmm15",
+
+ "rip"
+};
+
+
+uint64_t
+ud_syn_rel_target(struct ud *u, struct ud_operand *opr)
+{
+ const uint64_t trunc_mask = 0xffffffffffffffffull >> (64 - u->opr_mode);
+ switch (opr->size) {
+ case 8 : return (u->pc + opr->lval.sbyte) & trunc_mask;
+ case 16: return (u->pc + opr->lval.sword) & trunc_mask;
+ case 32: return (u->pc + opr->lval.sdword) & trunc_mask;
+ default: UD_ASSERT(!"invalid relative offset size.");
+ return 0ull;
+ }
+}
+
+
+/*
+ * asmprintf
+ * Printf style function for printing translated assembly
+ * output. Returns the number of characters written and
+ * moves the buffer pointer forward. On an overflow,
+ * returns a negative number and truncates the output.
+ */
+int
+ud_asmprintf(struct ud *u, const char *fmt, ...)
+{
+ int ret;
+ size_t avail;
+ va_list ap;
+ va_start(ap, fmt);
+ avail = (u->asm_buf_size - u->asm_buf_fill - 1 /* nullchar */);
+ ret = vsnprintf((char*) u->asm_buf + u->asm_buf_fill, avail, fmt, ap);
+ if (ret < 0 || ret > avail) {
+ u->asm_buf_fill = u->asm_buf_size - 1;
+ } else {
+ u->asm_buf_fill += ret;
+ }
+ va_end(ap);
+ return ret;
+}
+
+
+void
+ud_syn_print_addr(struct ud *u, uint64_t addr)
+{
+ const char *name = NULL;
+ if (u->sym_resolver) {
+ int64_t offset = 0;
+ name = u->sym_resolver(u, addr, &offset);
+ if (name) {
+ if (offset) {
+ ud_asmprintf(u, "%s%+" FMT64 "d", name, offset);
+ } else {
+ ud_asmprintf(u, "%s", name);
+ }
+ return;
+ }
+ }
+ ud_asmprintf(u, "0x%" FMT64 "x", addr);
+}
+
+
+void
+ud_syn_print_imm(struct ud* u, const struct ud_operand *op)
+{
+ uint64_t v;
+ if (op->_oprcode == OP_sI && op->size != u->opr_mode) {
+ if (op->size == 8) {
+ v = (int64_t)op->lval.sbyte;
+ } else {
+ UD_ASSERT(op->size == 32);
+ v = (int64_t)op->lval.sdword;
+ }
+ if (u->opr_mode < 64) {
+ v = v & ((1ull << u->opr_mode) - 1ull);
+ }
+ } else {
+ switch (op->size) {
+ case 8 : v = op->lval.ubyte; break;
+ case 16: v = op->lval.uword; break;
+ case 32: v = op->lval.udword; break;
+ case 64: v = op->lval.uqword; break;
+ default: UD_ASSERT(!"invalid offset"); v = 0; /* keep cc happy */
+ }
+ }
+ ud_asmprintf(u, "0x%" FMT64 "x", v);
+}
+
+
+void
+ud_syn_print_mem_disp(struct ud* u, const struct ud_operand *op, int sign)
+{
+ UD_ASSERT(op->offset != 0);
+ if (op->base == UD_NONE && op->index == UD_NONE) {
+ uint64_t v;
+ UD_ASSERT(op->scale == UD_NONE && op->offset != 8);
+ /* unsigned mem-offset */
+ switch (op->offset) {
+ case 16: v = op->lval.uword; break;
+ case 32: v = op->lval.udword; break;
+ case 64: v = op->lval.uqword; break;
+ default: UD_ASSERT(!"invalid offset"); v = 0; /* keep cc happy */
+ }
+ ud_asmprintf(u, "0x%" FMT64 "x", v);
+ } else {
+ int64_t v;
+ UD_ASSERT(op->offset != 64);
+ switch (op->offset) {
+ case 8 : v = op->lval.sbyte; break;
+ case 16: v = op->lval.sword; break;
+ case 32: v = op->lval.sdword; break;
+ default: UD_ASSERT(!"invalid offset"); v = 0; /* keep cc happy */
+ }
+ if (v < 0) {
+ ud_asmprintf(u, "-0x%" FMT64 "x", -v);
+ } else if (v > 0) {
+ ud_asmprintf(u, "%s0x%" FMT64 "x", sign? "+" : "", v);
+ }
+ }
+}
+
+/*
+vim: set ts=2 sw=2 expandtab
+*/
diff --git a/UefiDriver/udis86/libudis86/syn.h b/UefiDriver/udis86/libudis86/syn.h
new file mode 100644
index 0000000..d3b1e3f
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/syn.h
@@ -0,0 +1,53 @@
+/* udis86 - libudis86/syn.h
+ *
+ * Copyright (c) 2002-2009
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef UD_SYN_H
+#define UD_SYN_H
+
+#include "types.h"
+#ifndef __UD_STANDALONE__
+# include
+#endif /* __UD_STANDALONE__ */
+
+extern const char* ud_reg_tab[];
+
+uint64_t ud_syn_rel_target(struct ud*, struct ud_operand*);
+
+#ifdef __GNUC__
+int ud_asmprintf(struct ud *u, const char *fmt, ...)
+ __attribute__ ((format (printf, 2, 3)));
+#else
+int ud_asmprintf(struct ud *u, const char *fmt, ...);
+#endif
+
+void ud_syn_print_addr(struct ud *u, uint64_t addr);
+void ud_syn_print_imm(struct ud* u, const struct ud_operand *op);
+void ud_syn_print_mem_disp(struct ud* u, const struct ud_operand *, int sign);
+
+#endif /* UD_SYN_H */
+
+/*
+vim: set ts=2 sw=2 expandtab
+*/
diff --git a/UefiDriver/udis86/libudis86/types.h b/UefiDriver/udis86/libudis86/types.h
new file mode 100644
index 0000000..8b012a9
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/types.h
@@ -0,0 +1,250 @@
+/* udis86 - libudis86/types.h
+ *
+ * Copyright (c) 2002-2013 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef UD_TYPES_H
+#define UD_TYPES_H
+
+#ifdef __KERNEL__
+ /* -D__KERNEL__ is automatically passed on the command line when
+ building something as part of the Linux kernel */
+# include
+# include
+# ifndef __UD_STANDALONE__
+# define __UD_STANDALONE__ 1
+#endif
+#endif /* __KERNEL__ */
+
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+# include
+# include
+# define inline __inline /* MS Visual Studio requires __inline
+ instead of inline for C code */
+#elif !defined(__UD_STANDALONE__)
+# include
+# include
+#endif /* !__UD_STANDALONE__ */
+
+/* gcc specific extensions */
+#ifdef __GNUC__
+# define UD_ATTR_PACKED __attribute__((packed))
+#else
+# define UD_ATTR_PACKED
+#endif /* UD_ATTR_PACKED */
+
+
+/* -----------------------------------------------------------------------------
+ * All possible "types" of objects in udis86. Order is Important!
+ * -----------------------------------------------------------------------------
+ */
+enum ud_type
+{
+ UD_NONE,
+
+ /* 8 bit GPRs */
+ UD_R_AL, UD_R_CL, UD_R_DL, UD_R_BL,
+ UD_R_AH, UD_R_CH, UD_R_DH, UD_R_BH,
+ UD_R_SPL, UD_R_BPL, UD_R_SIL, UD_R_DIL,
+ UD_R_R8B, UD_R_R9B, UD_R_R10B, UD_R_R11B,
+ UD_R_R12B, UD_R_R13B, UD_R_R14B, UD_R_R15B,
+
+ /* 16 bit GPRs */
+ UD_R_AX, UD_R_CX, UD_R_DX, UD_R_BX,
+ UD_R_SP, UD_R_BP, UD_R_SI, UD_R_DI,
+ UD_R_R8W, UD_R_R9W, UD_R_R10W, UD_R_R11W,
+ UD_R_R12W, UD_R_R13W, UD_R_R14W, UD_R_R15W,
+
+ /* 32 bit GPRs */
+ UD_R_EAX, UD_R_ECX, UD_R_EDX, UD_R_EBX,
+ UD_R_ESP, UD_R_EBP, UD_R_ESI, UD_R_EDI,
+ UD_R_R8D, UD_R_R9D, UD_R_R10D, UD_R_R11D,
+ UD_R_R12D, UD_R_R13D, UD_R_R14D, UD_R_R15D,
+
+ /* 64 bit GPRs */
+ UD_R_RAX, UD_R_RCX, UD_R_RDX, UD_R_RBX,
+ UD_R_RSP, UD_R_RBP, UD_R_RSI, UD_R_RDI,
+ UD_R_R8, UD_R_R9, UD_R_R10, UD_R_R11,
+ UD_R_R12, UD_R_R13, UD_R_R14, UD_R_R15,
+
+ /* segment registers */
+ UD_R_ES, UD_R_CS, UD_R_SS, UD_R_DS,
+ UD_R_FS, UD_R_GS,
+
+ /* control registers*/
+ UD_R_CR0, UD_R_CR1, UD_R_CR2, UD_R_CR3,
+ UD_R_CR4, UD_R_CR5, UD_R_CR6, UD_R_CR7,
+ UD_R_CR8, UD_R_CR9, UD_R_CR10, UD_R_CR11,
+ UD_R_CR12, UD_R_CR13, UD_R_CR14, UD_R_CR15,
+
+ /* debug registers */
+ UD_R_DR0, UD_R_DR1, UD_R_DR2, UD_R_DR3,
+ UD_R_DR4, UD_R_DR5, UD_R_DR6, UD_R_DR7,
+ UD_R_DR8, UD_R_DR9, UD_R_DR10, UD_R_DR11,
+ UD_R_DR12, UD_R_DR13, UD_R_DR14, UD_R_DR15,
+
+ /* mmx registers */
+ UD_R_MM0, UD_R_MM1, UD_R_MM2, UD_R_MM3,
+ UD_R_MM4, UD_R_MM5, UD_R_MM6, UD_R_MM7,
+
+ /* x87 registers */
+ UD_R_ST0, UD_R_ST1, UD_R_ST2, UD_R_ST3,
+ UD_R_ST4, UD_R_ST5, UD_R_ST6, UD_R_ST7,
+
+ /* extended multimedia registers */
+ UD_R_XMM0, UD_R_XMM1, UD_R_XMM2, UD_R_XMM3,
+ UD_R_XMM4, UD_R_XMM5, UD_R_XMM6, UD_R_XMM7,
+ UD_R_XMM8, UD_R_XMM9, UD_R_XMM10, UD_R_XMM11,
+ UD_R_XMM12, UD_R_XMM13, UD_R_XMM14, UD_R_XMM15,
+
+ UD_R_RIP,
+
+ /* Operand Types */
+ UD_OP_REG, UD_OP_MEM, UD_OP_PTR, UD_OP_IMM,
+ UD_OP_JIMM, UD_OP_CONST
+};
+
+#include "itab.h"
+
+union ud_lval {
+ int8_t sbyte;
+ uint8_t ubyte;
+ int16_t sword;
+ uint16_t uword;
+ int32_t sdword;
+ uint32_t udword;
+ int64_t sqword;
+ uint64_t uqword;
+ struct {
+ uint16_t seg;
+ uint32_t off;
+ } ptr;
+};
+
+/* -----------------------------------------------------------------------------
+ * struct ud_operand - Disassembled instruction Operand.
+ * -----------------------------------------------------------------------------
+ */
+struct ud_operand {
+ enum ud_type type;
+ uint8_t size;
+ enum ud_type base;
+ enum ud_type index;
+ uint8_t scale;
+ uint8_t offset;
+ union ud_lval lval;
+ /*
+ * internal use only
+ */
+ uint64_t _legacy; /* this will be removed in 1.8 */
+ uint8_t _oprcode;
+};
+
+/* -----------------------------------------------------------------------------
+ * struct ud - The udis86 object.
+ * -----------------------------------------------------------------------------
+ */
+struct ud
+{
+ /*
+ * input buffering
+ */
+ int (*inp_hook) (struct ud*);
+#ifndef __UD_STANDALONE__
+ FILE* inp_file;
+#endif
+ const uint8_t* inp_buf;
+ size_t inp_buf_size;
+ size_t inp_buf_index;
+ uint8_t inp_curr;
+ size_t inp_ctr;
+ uint8_t inp_sess[64];
+ int inp_end;
+
+ void (*translator)(struct ud*);
+ uint64_t insn_offset;
+ char insn_hexcode[64];
+
+ /*
+ * Assembly output buffer
+ */
+ char *asm_buf;
+ size_t asm_buf_size;
+ size_t asm_buf_fill;
+ char asm_buf_int[128];
+
+ /*
+ * Symbol resolver for use in the translation phase.
+ */
+ const char* (*sym_resolver)(struct ud*, uint64_t addr, int64_t *offset);
+
+ uint8_t dis_mode;
+ uint64_t pc;
+ uint8_t vendor;
+ enum ud_mnemonic_code mnemonic;
+ struct ud_operand operand[3];
+ uint8_t error;
+ uint8_t pfx_rex;
+ uint8_t pfx_seg;
+ uint8_t pfx_opr;
+ uint8_t pfx_adr;
+ uint8_t pfx_lock;
+ uint8_t pfx_str;
+ uint8_t pfx_rep;
+ uint8_t pfx_repe;
+ uint8_t pfx_repne;
+ uint8_t opr_mode;
+ uint8_t adr_mode;
+ uint8_t br_far;
+ uint8_t br_near;
+ uint8_t have_modrm;
+ uint8_t modrm;
+ uint8_t primary_opcode;
+ void * user_opaque_data;
+ struct ud_itab_entry * itab_entry;
+ struct ud_lookup_table_list_entry *le;
+};
+
+/* -----------------------------------------------------------------------------
+ * Type-definitions
+ * -----------------------------------------------------------------------------
+ */
+typedef enum ud_type ud_type_t;
+typedef enum ud_mnemonic_code ud_mnemonic_code_t;
+
+typedef struct ud ud_t;
+typedef struct ud_operand ud_operand_t;
+
+#define UD_SYN_INTEL ud_translate_intel
+#define UD_SYN_ATT ud_translate_att
+#define UD_EOI (-1)
+#define UD_INP_CACHE_SZ 32
+#define UD_VENDOR_AMD 0
+#define UD_VENDOR_INTEL 1
+#define UD_VENDOR_ANY 2
+
+#endif
+
+/*
+vim: set ts=2 sw=2 expandtab
+*/
diff --git a/UefiDriver/udis86/libudis86/udint.h b/UefiDriver/udis86/libudis86/udint.h
new file mode 100644
index 0000000..86cb49f
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/udint.h
@@ -0,0 +1,89 @@
+/* udis86 - libudis86/udint.h -- definitions for internal use only
+ *
+ * Copyright (c) 2002-2009 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef _UDINT_H_
+#define _UDINT_H_
+
+#ifdef HAVE_CONFIG_H
+# include
+#endif /* HAVE_CONFIG_H */
+
+#if defined(UD_DEBUG) && HAVE_ASSERT_H
+# include
+# define UD_ASSERT(_x) assert(_x)
+#else
+# define UD_ASSERT(_x)
+#endif /* !HAVE_ASSERT_H */
+
+#if defined(UD_DEBUG)
+ #define UDERR(u, msg) \
+ do { \
+ (u)->error = 1; \
+ fprintf(stderr, "decode-error: %s:%d: %s", \
+ __FILE__, __LINE__, (msg)); \
+ } while (0)
+#else
+ #define UDERR(u, m) \
+ do { \
+ (u)->error = 1; \
+ } while (0)
+#endif /* !LOGERR */
+
+#define UD_RETURN_ON_ERROR(u) \
+ do { \
+ if ((u)->error != 0) { \
+ return (u)->error; \
+ } \
+ } while (0)
+
+#define UD_RETURN_WITH_ERROR(u, m) \
+ do { \
+ UDERR(u, m); \
+ return (u)->error; \
+ } while (0)
+
+#ifndef __UD_STANDALONE__
+# define UD_NON_STANDALONE(x) x
+#else
+# define UD_NON_STANDALONE(x)
+#endif
+
+/* printf formatting int64 specifier */
+#ifdef FMT64
+# undef FMT64
+#endif
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+# define FMT64 "ll"
+#else
+# if defined(__APPLE__)
+# define FMT64 "ll"
+# elif defined(__amd64__) || defined(__x86_64__)
+# define FMT64 "l"
+# else
+# define FMT64 "ll"
+# endif /* !x64 */
+#endif
+
+#endif /* _UDINT_H_ */
diff --git a/UefiDriver/udis86/libudis86/udis86.c b/UefiDriver/udis86/libudis86/udis86.c
new file mode 100644
index 0000000..1d69e80
--- /dev/null
+++ b/UefiDriver/udis86/libudis86/udis86.c
@@ -0,0 +1,478 @@
+/* udis86 - libudis86/udis86.c
+ *
+ * Copyright (c) 2002-2013 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "udint.h"
+#include "extern.h"
+#include "decode.h"
+
+#if !defined(__UD_STANDALONE__)
+# if HAVE_STRING_H
+# include
+# endif
+#endif /* !__UD_STANDALONE__ */
+
+static void ud_inp_init( struct ud *u );
+
+/* =============================================================================
+ * ud_init
+ * Initializes ud_t object.
+ * =============================================================================
+ */
+extern void
+ud_init( struct ud* u )
+{
+ memset( (void*)u, 0, sizeof( struct ud ) );
+ ud_set_mode( u, 16 );
+ u->mnemonic = UD_Iinvalid;
+ ud_set_pc( u, 0 );
+ #ifndef __UD_STANDALONE__
+ ud_set_input_file( u, stdin );
+ #endif /* __UD_STANDALONE__ */
+
+ ud_set_asm_buffer( u, u->asm_buf_int, sizeof( u->asm_buf_int ) );
+}
+
+
+/* =============================================================================
+ * ud_disassemble
+ * Disassembles one instruction and returns the number of
+ * bytes disassembled. A zero means end of disassembly.
+ * =============================================================================
+ */
+extern unsigned int
+ud_disassemble( struct ud* u )
+{
+ int len;
+ if (u->inp_end)
+ {
+ return 0;
+ }
+ if ((len = ud_decode( u )) > 0)
+ {
+ if (u->translator != NULL)
+ {
+ u->asm_buf[0] = '\0';
+ u->translator( u );
+ }
+ }
+ return len;
+}
+
+
+/* =============================================================================
+ * ud_set_mode() - Set Disassemly Mode.
+ * =============================================================================
+ */
+extern void
+ud_set_mode( struct ud* u, uint8_t m )
+{
+ switch (m)
+ {
+ case 16:
+ case 32:
+ case 64: u->dis_mode = m; return;
+ default: u->dis_mode = 16; return;
+ }
+}
+
+/* =============================================================================
+ * ud_set_vendor() - Set vendor.
+ * =============================================================================
+ */
+extern void ud_set_vendor( struct ud* u, unsigned v )
+{
+ switch (v)
+ {
+ case UD_VENDOR_INTEL:
+ u->vendor = (uint8_t)v;
+ break;
+ case UD_VENDOR_ANY:
+ u->vendor = (uint8_t)v;
+ break;
+ default:
+ u->vendor = UD_VENDOR_AMD;
+ }
+}
+
+/* =============================================================================
+ * ud_set_pc() - Sets code origin.
+ * =============================================================================
+ */
+extern void
+ud_set_pc( struct ud* u, uint64_t o )
+{
+ u->pc = o;
+}
+
+/* =============================================================================
+ * ud_set_syntax() - Sets the output syntax.
+ * =============================================================================
+ */
+extern void
+ud_set_syntax( struct ud* u, void( *t )(struct ud*) )
+{
+ u->translator = t;
+}
+
+/* =============================================================================
+ * ud_insn() - returns the disassembled instruction
+ * =============================================================================
+ */
+const char*
+ud_insn_asm( const struct ud* u )
+{
+ return u->asm_buf;
+}
+
+/* =============================================================================
+ * ud_insn_offset() - Returns the offset.
+ * =============================================================================
+ */
+uint64_t
+ud_insn_off( const struct ud* u )
+{
+ return u->insn_offset;
+}
+
+
+/* =============================================================================
+ * ud_insn_hex() - Returns hex form of disassembled instruction.
+ * =============================================================================
+ */
+const char*
+ud_insn_hex( struct ud* u )
+{
+ u->insn_hexcode[0] = 0;
+ if (!u->error)
+ {
+ unsigned int i;
+ const unsigned char *src_ptr = ud_insn_ptr( u );
+ char* src_hex;
+ src_hex = (char*)u->insn_hexcode;
+ /* for each byte used to decode instruction */
+ for (i = 0; i < ud_insn_len( u ) && i < sizeof( u->insn_hexcode ) / 2;
+ ++i, ++src_ptr)
+ {
+ sprintf( src_hex, "%02x", *src_ptr & 0xFF );
+ src_hex += 2;
+ }
+ }
+ return u->insn_hexcode;
+}
+
+
+/* =============================================================================
+ * ud_insn_ptr
+ * Returns a pointer to buffer containing the bytes that were
+ * disassembled.
+ * =============================================================================
+ */
+extern const uint8_t*
+ud_insn_ptr( const struct ud* u )
+{
+ return (u->inp_buf == NULL) ?
+ u->inp_sess : u->inp_buf + (u->inp_buf_index - u->inp_ctr);
+}
+
+
+/* =============================================================================
+ * ud_insn_len
+ * Returns the count of bytes disassembled.
+ * =============================================================================
+ */
+extern unsigned int ud_insn_len( const struct ud* u )
+{
+ return (unsigned int)u->inp_ctr;
+}
+
+
+/* =============================================================================
+ * ud_insn_get_opr
+ * Return the operand struct representing the nth operand of
+ * the currently disassembled instruction. Returns NULL if
+ * there's no such operand.
+ * =============================================================================
+ */
+const struct ud_operand*
+ud_insn_opr( const struct ud *u, unsigned int n )
+{
+ if (n > 2 || u->operand[n].type == UD_NONE)
+ {
+ return NULL;
+ }
+ else
+ {
+ return &u->operand[n];
+ }
+}
+
+
+/* =============================================================================
+ * ud_opr_is_sreg
+ * Returns non-zero if the given operand is of a segment register type.
+ * =============================================================================
+ */
+int
+ud_opr_is_sreg( const struct ud_operand *opr )
+{
+ return opr->type == UD_OP_REG &&
+ opr->base >= UD_R_ES &&
+ opr->base <= UD_R_GS;
+}
+
+
+/* =============================================================================
+ * ud_opr_is_sreg
+ * Returns non-zero if the given operand is of a general purpose
+ * register type.
+ * =============================================================================
+ */
+int
+ud_opr_is_gpr( const struct ud_operand *opr )
+{
+ return opr->type == UD_OP_REG &&
+ opr->base >= UD_R_AL &&
+ opr->base <= UD_R_R15;
+}
+
+
+/* =============================================================================
+ * ud_set_user_opaque_data
+ * ud_get_user_opaque_data
+ * Get/set user opaqute data pointer
+ * =============================================================================
+ */
+void
+ud_set_user_opaque_data( struct ud * u, void* opaque )
+{
+ u->user_opaque_data = opaque;
+}
+
+void*
+ud_get_user_opaque_data( const struct ud *u )
+{
+ return u->user_opaque_data;
+}
+
+
+/* =============================================================================
+ * ud_set_asm_buffer
+ * Allow the user to set an assembler output buffer. If `buf` is NULL,
+ * we switch back to the internal buffer.
+ * =============================================================================
+ */
+void
+ud_set_asm_buffer( struct ud *u, char *buf, size_t size )
+{
+ if (buf == NULL)
+ {
+ ud_set_asm_buffer( u, u->asm_buf_int, sizeof( u->asm_buf_int ) );
+ }
+ else
+ {
+ u->asm_buf = buf;
+ u->asm_buf_size = size;
+ }
+}
+
+
+/* =============================================================================
+ * ud_set_sym_resolver
+ * Set symbol resolver for relative targets used in the translation
+ * phase.
+ *
+ * The resolver is a function that takes a uint64_t address and returns a
+ * symbolic name for the that address. The function also takes a second
+ * argument pointing to an integer that the client can optionally set to a
+ * non-zero value for offsetted targets. (symbol+offset) The function may
+ * also return NULL, in which case the translator only prints the target
+ * address.
+ *
+ * The function pointer maybe NULL which resets symbol resolution.
+ * =============================================================================
+ */
+void
+ud_set_sym_resolver( struct ud *u, const char* (*resolver)(struct ud*,
+ uint64_t addr,
+ int64_t *offset) )
+{
+ u->sym_resolver = resolver;
+}
+
+
+/* =============================================================================
+ * ud_insn_mnemonic
+ * Return the current instruction mnemonic.
+ * =============================================================================
+ */
+enum ud_mnemonic_code
+ ud_insn_mnemonic( const struct ud *u )
+{
+ return u->mnemonic;
+}
+
+
+/* =============================================================================
+ * ud_lookup_mnemonic
+ * Looks up mnemonic code in the mnemonic string table.
+ * Returns NULL if the mnemonic code is invalid.
+ * =============================================================================
+ */
+const char*
+ud_lookup_mnemonic( enum ud_mnemonic_code c )
+{
+ if (c < UD_MAX_MNEMONIC_CODE)
+ {
+ return ud_mnemonics_str[c];
+ }
+ else
+ {
+ return NULL;
+ }
+}
+
+
+/*
+ * ud_inp_init
+ * Initializes the input system.
+ */
+static void
+ud_inp_init( struct ud *u )
+{
+ u->inp_hook = NULL;
+ u->inp_buf = NULL;
+ u->inp_buf_size = 0;
+ u->inp_buf_index = 0;
+ u->inp_curr = 0;
+ u->inp_ctr = 0;
+ u->inp_end = 0;
+ UD_NON_STANDALONE( u->inp_file = NULL );
+}
+
+
+/* =============================================================================
+ * ud_inp_set_hook
+ * Sets input hook.
+ * =============================================================================
+ */
+void
+ud_set_input_hook( register struct ud* u, int( *hook )(struct ud*) )
+{
+ ud_inp_init( u );
+ u->inp_hook = hook;
+}
+
+/* =============================================================================
+ * ud_inp_set_buffer
+ * Set buffer as input.
+ * =============================================================================
+ */
+void
+ud_set_input_buffer( register struct ud* u, const uint8_t* buf, size_t len )
+{
+ ud_inp_init( u );
+ u->inp_buf = buf;
+ u->inp_buf_size = len;
+ u->inp_buf_index = 0;
+}
+
+
+#ifndef __UD_STANDALONE__
+/* =============================================================================
+ * ud_input_set_file
+ * Set FILE as input.
+ * =============================================================================
+ */
+static int
+inp_file_hook( struct ud* u )
+{
+ return fgetc( u->inp_file );
+}
+
+void
+ud_set_input_file( register struct ud* u, FILE* f )
+{
+ ud_inp_init( u );
+ u->inp_hook = inp_file_hook;
+ u->inp_file = f;
+}
+#endif /* __UD_STANDALONE__ */
+
+
+/* =============================================================================
+ * ud_input_skip
+ * Skip n input bytes.
+ * ============================================================================
+ */
+void
+ud_input_skip( struct ud* u, size_t n )
+{
+ if (u->inp_end)
+ {
+ return;
+ }
+ if (u->inp_buf == NULL)
+ {
+ while (n--)
+ {
+ int c = u->inp_hook( u );
+ if (c == UD_EOI)
+ {
+ goto eoi;
+ }
+ }
+ return;
+ }
+ else
+ {
+ if (n > u->inp_buf_size ||
+ u->inp_buf_index > u->inp_buf_size - n)
+ {
+ u->inp_buf_index = u->inp_buf_size;
+ goto eoi;
+ }
+ u->inp_buf_index += n;
+ return;
+ }
+eoi:
+ u->inp_end = 1;
+ UDERR( u, "cannot skip, eoi received\b" );
+ return;
+}
+
+
+/* =============================================================================
+ * ud_input_end
+ * Returns non-zero on end-of-input.
+ * =============================================================================
+ */
+int
+ud_input_end( const struct ud *u )
+{
+ return u->inp_end;
+}
+
+/* vim:set ts=2 sw=2 expandtab */
diff --git a/UefiDriver/udis86/m4/ax_compare_version.m4 b/UefiDriver/udis86/m4/ax_compare_version.m4
new file mode 100644
index 0000000..74dc0fd
--- /dev/null
+++ b/UefiDriver/udis86/m4/ax_compare_version.m4
@@ -0,0 +1,177 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_compare_version.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+#
+# DESCRIPTION
+#
+# This macro compares two version strings. Due to the various number of
+# minor-version numbers that can exist, and the fact that string
+# comparisons are not compatible with numeric comparisons, this is not
+# necessarily trivial to do in a autoconf script. This macro makes doing
+# these comparisons easy.
+#
+# The six basic comparisons are available, as well as checking equality
+# limited to a certain number of minor-version levels.
+#
+# The operator OP determines what type of comparison to do, and can be one
+# of:
+#
+# eq - equal (test A == B)
+# ne - not equal (test A != B)
+# le - less than or equal (test A <= B)
+# ge - greater than or equal (test A >= B)
+# lt - less than (test A < B)
+# gt - greater than (test A > B)
+#
+# Additionally, the eq and ne operator can have a number after it to limit
+# the test to that number of minor versions.
+#
+# eq0 - equal up to the length of the shorter version
+# ne0 - not equal up to the length of the shorter version
+# eqN - equal up to N sub-version levels
+# neN - not equal up to N sub-version levels
+#
+# When the condition is true, shell commands ACTION-IF-TRUE are run,
+# otherwise shell commands ACTION-IF-FALSE are run. The environment
+# variable 'ax_compare_version' is always set to either 'true' or 'false'
+# as well.
+#
+# Examples:
+#
+# AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8])
+# AX_COMPARE_VERSION([3.15],[lt],[3.15.8])
+#
+# would both be true.
+#
+# AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8])
+# AX_COMPARE_VERSION([3.15],[gt],[3.15.8])
+#
+# would both be false.
+#
+# AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8])
+#
+# would be true because it is only comparing two minor versions.
+#
+# AX_COMPARE_VERSION([3.15.7],[eq0],[3.15])
+#
+# would be true because it is only comparing the lesser number of minor
+# versions of the two values.
+#
+# Note: The characters that separate the version numbers do not matter. An
+# empty string is the same as version 0. OP is evaluated by autoconf, not
+# configure, so must be a string, not a variable.
+#
+# The author would like to acknowledge Guido Draheim whose advice about
+# the m4_case and m4_ifvaln functions make this macro only include the
+# portions necessary to perform the specific comparison specified by the
+# OP argument in the final configure script.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Tim Toolan
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 11
+
+dnl #########################################################################
+AC_DEFUN([AX_COMPARE_VERSION], [
+ AC_REQUIRE([AC_PROG_AWK])
+
+ # Used to indicate true or false condition
+ ax_compare_version=false
+
+ # Convert the two version strings to be compared into a format that
+ # allows a simple string comparison. The end result is that a version
+ # string of the form 1.12.5-r617 will be converted to the form
+ # 0001001200050617. In other words, each number is zero padded to four
+ # digits, and non digits are removed.
+ AS_VAR_PUSHDEF([A],[ax_compare_version_A])
+ A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \
+ -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \
+ -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \
+ -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \
+ -e 's/[[^0-9]]//g'`
+
+ AS_VAR_PUSHDEF([B],[ax_compare_version_B])
+ B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \
+ -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \
+ -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \
+ -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \
+ -e 's/[[^0-9]]//g'`
+
+ dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary
+ dnl # then the first line is used to determine if the condition is true.
+ dnl # The sed right after the echo is to remove any indented white space.
+ m4_case(m4_tolower($2),
+ [lt],[
+ ax_compare_version=`echo "x$A
+x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"`
+ ],
+ [gt],[
+ ax_compare_version=`echo "x$A
+x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"`
+ ],
+ [le],[
+ ax_compare_version=`echo "x$A
+x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"`
+ ],
+ [ge],[
+ ax_compare_version=`echo "x$A
+x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"`
+ ],[
+ dnl Split the operator from the subversion count if present.
+ m4_bmatch(m4_substr($2,2),
+ [0],[
+ # A count of zero means use the length of the shorter version.
+ # Determine the number of characters in A and B.
+ ax_compare_version_len_A=`echo "$A" | $AWK '{print(length)}'`
+ ax_compare_version_len_B=`echo "$B" | $AWK '{print(length)}'`
+
+ # Set A to no more than B's length and B to no more than A's length.
+ A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"`
+ B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"`
+ ],
+ [[0-9]+],[
+ # A count greater than zero means use only that many subversions
+ A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"`
+ B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"`
+ ],
+ [.+],[
+ AC_WARNING(
+ [illegal OP numeric parameter: $2])
+ ],[])
+
+ # Pad zeros at end of numbers to make same length.
+ ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`"
+ B="$B`echo $A | sed 's/./0/g'`"
+ A="$ax_compare_version_tmp_A"
+
+ # Check for equality or inequality as necessary.
+ m4_case(m4_tolower(m4_substr($2,0,2)),
+ [eq],[
+ test "x$A" = "x$B" && ax_compare_version=true
+ ],
+ [ne],[
+ test "x$A" != "x$B" && ax_compare_version=true
+ ],[
+ AC_WARNING([illegal OP parameter: $2])
+ ])
+ ])
+
+ AS_VAR_POPDEF([A])dnl
+ AS_VAR_POPDEF([B])dnl
+
+ dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE.
+ if test "$ax_compare_version" = "true" ; then
+ m4_ifvaln([$4],[$4],[:])dnl
+ m4_ifvaln([$5],[else $5])dnl
+ fi
+]) dnl AX_COMPARE_VERSION
diff --git a/UefiDriver/udis86/m4/ax_prog_sphinx_version.m4 b/UefiDriver/udis86/m4/ax_prog_sphinx_version.m4
new file mode 100644
index 0000000..70ae7e2
--- /dev/null
+++ b/UefiDriver/udis86/m4/ax_prog_sphinx_version.m4
@@ -0,0 +1,60 @@
+# SYNOPSIS
+#
+# AX_PROG_SPHINX_VERSION([VERSION],[ACTION-IF-TRUE],[ACTION-IF-FALSE])
+#
+# DESCRIPTION
+#
+# Makes sure that sphinx-build supports the version indicated. If true
+# the shell commands in ACTION-IF-TRUE are executed. If not the shell
+# commands in ACTION-IF-FALSE are run. Note if $SPHINX_BUILD is not set
+# (for example by running AX_WITH_PROG) the macro will fail.
+#
+# Example:
+#
+# AX_WITH_PROG(SPHINX_BUILD,sphinx-build)
+# AX_PROG_SPHINX([1.1.1],[ ... ],[ ... ])
+#
+# LICENSE
+#
+# ax_prog_python_version.m4
+#
+# Copyright (c) 2009 Francesco Salvestrini
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+#
+# ax_prog_sphinx_version.m4
+#
+# Copyright (c) 2013 Vivek Thampi
+
+
+AC_DEFUN([AX_PROG_SPHINX],[
+ AC_REQUIRE([AC_PROG_SED])
+ AC_REQUIRE([AC_PROG_GREP])
+
+
+ AS_IF([test -n "$SPHINX_BUILD"],[
+ ax_sphinx_version="$1"
+
+ AC_MSG_CHECKING([for sphinx version])
+ changequote(<<,>>)
+ sphinx_version=`$SPHINX_BUILD -h 2>&1 | $GREP "^Sphinx v" | $SED -e 's/^.* v\([0-9]*\.[0-9]*\.[0-9]*\)/\1/'`
+ changequote([,])
+ AC_MSG_RESULT($sphinx_version)
+
+ AC_SUBST([SPHINX_VERSION],[$sphinx_version])
+
+ AX_COMPARE_VERSION([$ax_sphinx_version],[le],[$sphinx_version],[
+ :
+ $2
+ ],[
+ :
+ $3
+ ])
+ ],[
+ AC_MSG_WARN([could not find the sphinx documentation tool])
+ $3
+ ])
+])
diff --git a/UefiDriver/udis86/m4/ax_prog_yasm_version.m4 b/UefiDriver/udis86/m4/ax_prog_yasm_version.m4
new file mode 100644
index 0000000..9adafcb
--- /dev/null
+++ b/UefiDriver/udis86/m4/ax_prog_yasm_version.m4
@@ -0,0 +1,60 @@
+# SYNOPSIS
+#
+# AX_PROG_YASM_VERSION([VERSION],[ACTION-IF-TRUE],[ACTION-IF-FALSE])
+#
+# DESCRIPTION
+#
+# Makes sure that yasm supports the version indicated. If true
+# the shell commands in ACTION-IF-TRUE are executed. If not the shell
+# commands in ACTION-IF-FALSE are run. Note if $YASM is not set
+# (for example by running AX_WITH_PROG) the macro will fail.
+#
+# Example:
+#
+# AX_WITH_PROG(YASM,yasm)
+# AX_PROG_YASM_VERSION([1.1.1],[ ... ],[ ... ])
+#
+# LICENSE
+#
+# ax_prog_python_version.m4
+#
+# Copyright (c) 2009 Francesco Salvestrini
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+#
+# ax_prog_yasm_version.m4
+#
+# Copyright (c) 2013 Vivek Thampi
+
+
+AC_DEFUN([AX_PROG_YASM_VERSION],[
+ AC_REQUIRE([AC_PROG_SED])
+ AC_REQUIRE([AC_PROG_GREP])
+
+
+ AS_IF([test -n "$YASM"],[
+ ax_yasm_version="$1"
+
+ AC_MSG_CHECKING([for yasm version])
+ changequote(<<,>>)
+ yasm_version=`$YASM --version 2>&1 | $GREP "^yasm " | $SED -e 's/^.* \([0-9]*\.[0-9]*\.[0-9]*\)/\1/'`
+ changequote([,])
+ AC_MSG_RESULT($yasm_version)
+
+ AC_SUBST([YASM_VERSION],[$yasm_version])
+
+ AX_COMPARE_VERSION([$ax_yasm_version],[le],[$yasm_version],[
+ :
+ $2
+ ],[
+ :
+ $3
+ ])
+ ],[
+ AC_MSG_WARN([could not find the yasm])
+ $3
+ ])
+])
diff --git a/UefiDriver/udis86/m4/ax_with_prog.m4 b/UefiDriver/udis86/m4/ax_with_prog.m4
new file mode 100644
index 0000000..e20276c
--- /dev/null
+++ b/UefiDriver/udis86/m4/ax_with_prog.m4
@@ -0,0 +1,67 @@
+# ===========================================================================
+# http://www.nongnu.org/autoconf-archive/ax_with_prog.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_WITH_PROG([VARIABLE],[program],[VALUE-IF-NOT-FOUND],[PATH])
+#
+# DESCRIPTION
+#
+# Locates an installed program binary, placing the result in the precious
+# variable VARIABLE. Accepts a present VARIABLE, then --with-program, and
+# failing that searches for program in the given path (which defaults to
+# the system path). If program is found, VARIABLE is set to the full path
+# of the binary; if it is not found VARIABLE is set to VALUE-IF-NOT-FOUND
+# if provided, unchanged otherwise.
+#
+# A typical example could be the following one:
+#
+# AX_WITH_PROG(PERL,perl)
+#
+# NOTE: This macro is based upon the original AX_WITH_PYTHON macro from
+# Dustin J. Mitchell .
+#
+# LICENSE
+#
+# Copyright (c) 2008 Francesco Salvestrini
+# Copyright (c) 2008 Dustin J. Mitchell
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved.
+
+AC_DEFUN([AX_WITH_PROG],[
+ AC_PREREQ([2.61])
+
+ pushdef([VARIABLE],$1)
+ pushdef([EXECUTABLE],$2)
+ pushdef([VALUE_IF_NOT_FOUND],$3)
+ pushdef([PATH_PROG],$4)
+
+ AC_ARG_VAR(VARIABLE,Absolute path to EXECUTABLE executable)
+
+ AS_IF(test -z "$VARIABLE",[
+ AC_MSG_CHECKING(whether EXECUTABLE executable path has been provided)
+ AC_ARG_WITH(EXECUTABLE,AS_HELP_STRING([--with-EXECUTABLE=[[[[PATH]]]]],absolute path to EXECUTABLE executable), [
+ AS_IF([test "$withval" != yes -a "$withval" != no],[
+ VARIABLE="$withval"
+ AC_MSG_RESULT($VARIABLE)
+ ],[
+ VARIABLE=""
+ AC_MSG_RESULT([no])
+ AS_IF([test "$withval" != no], [
+ AC_PATH_PROG([]VARIABLE[],[]EXECUTABLE[],[]VALUE_IF_NOT_FOUND[],[]PATH_PROG[])
+ ])
+ ])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_PATH_PROG([]VARIABLE[],[]EXECUTABLE[],[]VALUE_IF_NOT_FOUND[],[]PATH_PROG[])
+ ])
+ ])
+
+ popdef([PATH_PROG])
+ popdef([VALUE_IF_NOT_FOUND])
+ popdef([EXECUTABLE])
+ popdef([VARIABLE])
+])
diff --git a/UefiDriver/udis86/m4/ax_with_python.m4 b/UefiDriver/udis86/m4/ax_with_python.m4
new file mode 100644
index 0000000..e109928
--- /dev/null
+++ b/UefiDriver/udis86/m4/ax_with_python.m4
@@ -0,0 +1,32 @@
+# ===========================================================================
+# http://www.nongnu.org/autoconf-archive/ax_with_python.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_WITH_PYTHON([VALUE-IF-NOT-FOUND],[PATH])
+#
+# DESCRIPTION
+#
+# Locates an installed Python binary, placing the result in the precious
+# variable $PYTHON. Accepts a present $PYTHON, then --with-python, and
+# failing that searches for python in the given path (which defaults to
+# the system path). If python is found, $PYTHON is set to the full path of
+# the binary; if it is not found $PYTHON is set to VALUE-IF-NOT-FOUND if
+# provided, unchanged otherwise.
+#
+# A typical use could be the following one:
+#
+# AX_WITH_PYTHON
+#
+# LICENSE
+#
+# Copyright (c) 2008 Francesco Salvestrini
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved.
+
+AC_DEFUN([AX_WITH_PYTHON],[
+ AX_WITH_PROG(PYTHON,python,$1,$2)
+])
diff --git a/UefiDriver/udis86/scripts/Makefile.am b/UefiDriver/udis86/scripts/Makefile.am
new file mode 100644
index 0000000..674d2d2
--- /dev/null
+++ b/UefiDriver/udis86/scripts/Makefile.am
@@ -0,0 +1,10 @@
+EXTRA_DIST = \
+ ud_opcode.py \
+ ud_optable.py \
+ ud_itab.py
+
+MAINTAINERCLEANFILES = Makefile.in
+
+clean-local:
+ -rm -f *.pyc
+ -rm -f ud_asmtest*
diff --git a/UefiDriver/udis86/scripts/Makefile.in b/UefiDriver/udis86/scripts/Makefile.in
new file mode 100644
index 0000000..97297d5
--- /dev/null
+++ b/UefiDriver/udis86/scripts/Makefile.in
@@ -0,0 +1,417 @@
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = scripts
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/build/m4/libtool.m4 \
+ $(top_srcdir)/build/m4/ltoptions.m4 \
+ $(top_srcdir)/build/m4/ltsugar.m4 \
+ $(top_srcdir)/build/m4/ltversion.m4 \
+ $(top_srcdir)/build/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/ax_compare_version.m4 \
+ $(top_srcdir)/m4/ax_prog_sphinx_version.m4 \
+ $(top_srcdir)/m4/ax_prog_yasm_version.m4 \
+ $(top_srcdir)/m4/ax_with_prog.m4 \
+ $(top_srcdir)/m4/ax_with_python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SPHINX_BUILD = @SPHINX_BUILD@
+SPHINX_VERSION = @SPHINX_VERSION@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YASM = @YASM@
+YASM_VERSION = @YASM_VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = \
+ ud_opcode.py \
+ ud_optable.py \
+ ud_itab.py
+
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign scripts/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign scripts/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ clean-local cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+
+clean-local:
+ -rm -f *.pyc
+ -rm -f ud_asmtest*
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/UefiDriver/udis86/scripts/ud_itab.py b/UefiDriver/udis86/scripts/ud_itab.py
new file mode 100644
index 0000000..b17fe69
--- /dev/null
+++ b/UefiDriver/udis86/scripts/ud_itab.py
@@ -0,0 +1,369 @@
+# udis86 - scripts/ud_itab.py
+#
+# Copyright (c) 2009, 2013 Vivek Thampi
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import os
+import sys
+import ud_optable
+import ud_opcode
+
+class UdItabGenerator( ud_opcode.UdOpcodeTables ):
+
+ OperandDict = {
+ "Av" : [ "OP_A" , "SZ_V" ],
+ "E" : [ "OP_E" , "SZ_NA" ],
+ "Eb" : [ "OP_E" , "SZ_B" ],
+ "Ew" : [ "OP_E" , "SZ_W" ],
+ "Ev" : [ "OP_E" , "SZ_V" ],
+ "Ed" : [ "OP_E" , "SZ_D" ],
+ "Ey" : [ "OP_E" , "SZ_Y" ],
+ "Eq" : [ "OP_E" , "SZ_Q" ],
+ "Ez" : [ "OP_E" , "SZ_Z" ],
+ "Fv" : [ "OP_F" , "SZ_V" ],
+ "G" : [ "OP_G" , "SZ_NA" ],
+ "Gb" : [ "OP_G" , "SZ_B" ],
+ "Gw" : [ "OP_G" , "SZ_W" ],
+ "Gv" : [ "OP_G" , "SZ_V" ],
+ "Gy" : [ "OP_G" , "SZ_Y" ],
+ "Gd" : [ "OP_G" , "SZ_D" ],
+ "Gq" : [ "OP_G" , "SZ_Q" ],
+ "Gz" : [ "OP_G" , "SZ_Z" ],
+ "M" : [ "OP_M" , "SZ_NA" ],
+ "Mb" : [ "OP_M" , "SZ_B" ],
+ "Mw" : [ "OP_M" , "SZ_W" ],
+ "Ms" : [ "OP_M" , "SZ_W" ],
+ "Md" : [ "OP_M" , "SZ_D" ],
+ "Mq" : [ "OP_M" , "SZ_Q" ],
+ "Mv" : [ "OP_M" , "SZ_V" ],
+ "Mt" : [ "OP_M" , "SZ_T" ],
+ "Mo" : [ "OP_M" , "SZ_O" ],
+ "MbRd" : [ "OP_MR" , "SZ_BD" ],
+ "MbRv" : [ "OP_MR" , "SZ_BV" ],
+ "MwRv" : [ "OP_MR" , "SZ_WV" ],
+ "MwRd" : [ "OP_MR" , "SZ_WD" ],
+ "MwRy" : [ "OP_MR" , "SZ_WY" ],
+ "MdRy" : [ "OP_MR" , "SZ_DY" ],
+ "I1" : [ "OP_I1" , "SZ_NA" ],
+ "I3" : [ "OP_I3" , "SZ_NA" ],
+ "Ib" : [ "OP_I" , "SZ_B" ],
+ "Iw" : [ "OP_I" , "SZ_W" ],
+ "Iv" : [ "OP_I" , "SZ_V" ],
+ "Iz" : [ "OP_I" , "SZ_Z" ],
+ "sIb" : [ "OP_sI" , "SZ_B" ],
+ "sIz" : [ "OP_sI" , "SZ_Z" ],
+ "sIv" : [ "OP_sI" , "SZ_V" ],
+ "Jv" : [ "OP_J" , "SZ_V" ],
+ "Jz" : [ "OP_J" , "SZ_Z" ],
+ "Jb" : [ "OP_J" , "SZ_B" ],
+ "R" : [ "OP_R" , "SZ_RDQ" ],
+ "C" : [ "OP_C" , "SZ_NA" ],
+ "D" : [ "OP_D" , "SZ_NA" ],
+ "S" : [ "OP_S" , "SZ_NA" ],
+ "Ob" : [ "OP_O" , "SZ_B" ],
+ "Ow" : [ "OP_O" , "SZ_W" ],
+ "Ov" : [ "OP_O" , "SZ_V" ],
+ "U" : [ "OP_U" , "SZ_O" ],
+ "V" : [ "OP_V" , "SZ_O" ],
+ "MwU" : [ "OP_MU" , "SZ_WO" ],
+ "MdU" : [ "OP_MU" , "SZ_DO" ],
+ "MqU" : [ "OP_MU" , "SZ_QO" ],
+ "W" : [ "OP_W" , "SZ_O" ],
+ "N" : [ "OP_N" , "SZ_Q" ],
+ "P" : [ "OP_P" , "SZ_Q" ],
+ "Q" : [ "OP_Q" , "SZ_Q" ],
+ "AL" : [ "OP_AL" , "SZ_B" ],
+ "AX" : [ "OP_AX" , "SZ_W" ],
+ "eAX" : [ "OP_eAX" , "SZ_Z" ],
+ "rAX" : [ "OP_rAX" , "SZ_V" ],
+ "CL" : [ "OP_CL" , "SZ_B" ],
+ "CX" : [ "OP_CX" , "SZ_W" ],
+ "eCX" : [ "OP_eCX" , "SZ_Z" ],
+ "rCX" : [ "OP_rCX" , "SZ_V" ],
+ "DL" : [ "OP_DL" , "SZ_B" ],
+ "DX" : [ "OP_DX" , "SZ_W" ],
+ "eDX" : [ "OP_eDX" , "SZ_Z" ],
+ "rDX" : [ "OP_rDX" , "SZ_V" ],
+ "R0b" : [ "OP_R0" , "SZ_B" ],
+ "R1b" : [ "OP_R1" , "SZ_B" ],
+ "R2b" : [ "OP_R2" , "SZ_B" ],
+ "R3b" : [ "OP_R3" , "SZ_B" ],
+ "R4b" : [ "OP_R4" , "SZ_B" ],
+ "R5b" : [ "OP_R5" , "SZ_B" ],
+ "R6b" : [ "OP_R6" , "SZ_B" ],
+ "R7b" : [ "OP_R7" , "SZ_B" ],
+ "R0w" : [ "OP_R0" , "SZ_W" ],
+ "R1w" : [ "OP_R1" , "SZ_W" ],
+ "R2w" : [ "OP_R2" , "SZ_W" ],
+ "R3w" : [ "OP_R3" , "SZ_W" ],
+ "R4w" : [ "OP_R4" , "SZ_W" ],
+ "R5w" : [ "OP_R5" , "SZ_W" ],
+ "R6w" : [ "OP_R6" , "SZ_W" ],
+ "R7w" : [ "OP_R7" , "SZ_W" ],
+ "R0v" : [ "OP_R0" , "SZ_V" ],
+ "R1v" : [ "OP_R1" , "SZ_V" ],
+ "R2v" : [ "OP_R2" , "SZ_V" ],
+ "R3v" : [ "OP_R3" , "SZ_V" ],
+ "R4v" : [ "OP_R4" , "SZ_V" ],
+ "R5v" : [ "OP_R5" , "SZ_V" ],
+ "R6v" : [ "OP_R6" , "SZ_V" ],
+ "R7v" : [ "OP_R7" , "SZ_V" ],
+ "R0z" : [ "OP_R0" , "SZ_Z" ],
+ "R1z" : [ "OP_R1" , "SZ_Z" ],
+ "R2z" : [ "OP_R2" , "SZ_Z" ],
+ "R3z" : [ "OP_R3" , "SZ_Z" ],
+ "R4z" : [ "OP_R4" , "SZ_Z" ],
+ "R5z" : [ "OP_R5" , "SZ_Z" ],
+ "R6z" : [ "OP_R6" , "SZ_Z" ],
+ "R7z" : [ "OP_R7" , "SZ_Z" ],
+ "R0y" : [ "OP_R0" , "SZ_Y" ],
+ "R1y" : [ "OP_R1" , "SZ_Y" ],
+ "R2y" : [ "OP_R2" , "SZ_Y" ],
+ "R3y" : [ "OP_R3" , "SZ_Y" ],
+ "R4y" : [ "OP_R4" , "SZ_Y" ],
+ "R5y" : [ "OP_R5" , "SZ_Y" ],
+ "R6y" : [ "OP_R6" , "SZ_Y" ],
+ "R7y" : [ "OP_R7" , "SZ_Y" ],
+ "ES" : [ "OP_ES" , "SZ_NA" ],
+ "CS" : [ "OP_CS" , "SZ_NA" ],
+ "DS" : [ "OP_DS" , "SZ_NA" ],
+ "SS" : [ "OP_SS" , "SZ_NA" ],
+ "GS" : [ "OP_GS" , "SZ_NA" ],
+ "FS" : [ "OP_FS" , "SZ_NA" ],
+ "ST0" : [ "OP_ST0" , "SZ_NA" ],
+ "ST1" : [ "OP_ST1" , "SZ_NA" ],
+ "ST2" : [ "OP_ST2" , "SZ_NA" ],
+ "ST3" : [ "OP_ST3" , "SZ_NA" ],
+ "ST4" : [ "OP_ST4" , "SZ_NA" ],
+ "ST5" : [ "OP_ST5" , "SZ_NA" ],
+ "ST6" : [ "OP_ST6" , "SZ_NA" ],
+ "ST7" : [ "OP_ST7" , "SZ_NA" ],
+ "NONE" : [ "OP_NONE" , "SZ_NA" ],
+ }
+
+ #
+ # opcode prefix dictionary
+ #
+ PrefixDict = {
+ "rep" : "P_str",
+ "repz" : "P_strz",
+ "aso" : "P_aso",
+ "oso" : "P_oso",
+ "rexw" : "P_rexw",
+ "rexb" : "P_rexb",
+ "rexx" : "P_rexx",
+ "rexr" : "P_rexr",
+ "seg" : "P_seg",
+ "inv64" : "P_inv64",
+ "def64" : "P_def64",
+ "cast" : "P_cast",
+ }
+
+ InvalidEntryIdx = 0
+ InvalidEntry = { 'type' : 'invalid',
+ 'mnemonic' : 'invalid',
+ 'operands' : '',
+ 'prefixes' : '',
+ 'meta' : '' }
+
+ Itab = [] # instruction table
+ ItabIdx = 1 # instruction table index
+ GtabIdx = 0 # group table index
+ GtabMeta = []
+
+ ItabLookup = {}
+
+ MnemonicAliases = ( "invalid", "3dnow", "none", "db", "pause" )
+
+ def __init__( self ):
+ # first itab entry (0) is Invalid
+ self.Itab.append( self.InvalidEntry )
+ self.MnemonicsTable.extend( self.MnemonicAliases )
+
+ def toGroupId( self, id ):
+ return 0x8000 | id
+
+ def genLookupTable( self, table, scope = '' ):
+ idxArray = [ ]
+ ( tabIdx, self.GtabIdx ) = ( self.GtabIdx, self.GtabIdx + 1 )
+ self.GtabMeta.append( { 'type' : table[ 'type' ], 'meta' : table[ 'meta' ] } )
+
+ for _idx in range( self.sizeOfTable( table[ 'type' ] ) ):
+ idx = "%02x" % _idx
+
+ e = self.InvalidEntry
+ i = self.InvalidEntryIdx
+
+ if idx in table[ 'entries' ].keys():
+ e = table[ 'entries' ][ idx ]
+
+ # leaf node (insn)
+ if e[ 'type' ] == 'insn':
+ ( i, self.ItabIdx ) = ( self.ItabIdx, self.ItabIdx + 1 )
+ self.Itab.append( e )
+ elif e[ 'type' ] != 'invalid':
+ i = self.genLookupTable( e, 'static' )
+
+ idxArray.append( i )
+
+ name = "ud_itab__%s" % tabIdx
+ self.ItabLookup[ tabIdx ] = name
+
+ self.ItabC.write( "\n" );
+ if len( scope ):
+ self.ItabC.write( scope + ' ' )
+ self.ItabC.write( "const uint16_t %s[] = {\n" % name )
+ for i in range( len( idxArray ) ):
+ if i > 0 and i % 4 == 0:
+ self.ItabC.write( "\n" )
+ if ( i%4 == 0 ):
+ self.ItabC.write( " /* %2x */" % i)
+ if idxArray[ i ] >= 0x8000:
+ self.ItabC.write( "%12s," % ("GROUP(%d)" % ( ~0x8000 & idxArray[ i ] )))
+ else:
+ self.ItabC.write( "%12d," % ( idxArray[ i ] ))
+ self.ItabC.write( "\n" )
+ self.ItabC.write( "};\n" )
+
+ return self.toGroupId( tabIdx )
+
+ def genLookupTableList( self ):
+ self.ItabC.write( "\n\n" );
+ self.ItabC.write( "struct ud_lookup_table_list_entry ud_lookup_table_list[] = {\n" )
+ for i in range( len( self.GtabMeta ) ):
+ f0 = self.ItabLookup[ i ] + ","
+ f1 = ( self.nameOfTable( self.GtabMeta[ i ][ 'type' ] ) ) + ","
+ f2 = "\"%s\"" % self.GtabMeta[ i ][ 'meta' ]
+ self.ItabC.write( " /* %03d */ { %s %s %s },\n" % ( i, f0, f1, f2 ) )
+ self.ItabC.write( "};" )
+
+ def genInsnTable( self ):
+ self.ItabC.write( "struct ud_itab_entry ud_itab[] = {\n" );
+ idx = 0
+ for e in self.Itab:
+ opr_c = [ "O_NONE", "O_NONE", "O_NONE" ]
+ pfx_c = []
+ opr = e[ 'operands' ]
+ for i in range(len(opr)):
+ if not (opr[i] in self.OperandDict.keys()):
+ print("error: invalid operand declaration: %s\n" % opr[i])
+ opr_c[i] = "O_" + opr[i]
+ opr = "%s %s %s" % (opr_c[0] + ",", opr_c[1] + ",", opr_c[2])
+
+ for p in e['prefixes']:
+ if not ( p in self.PrefixDict.keys() ):
+ print("error: invalid prefix specification: %s \n" % pfx)
+ pfx_c.append( self.PrefixDict[p] )
+ if len(e['prefixes']) == 0:
+ pfx_c.append( "P_none" )
+ pfx = "|".join( pfx_c )
+
+ self.ItabC.write( " /* %04d */ { UD_I%s %s, %s },\n" \
+ % ( idx, e[ 'mnemonic' ] + ',', opr, pfx ) )
+ idx += 1
+ self.ItabC.write( "};\n" )
+
+ self.ItabC.write( "\n\n" );
+ self.ItabC.write( "const char * ud_mnemonics_str[] = {\n" )
+ self.ItabC.write( ",\n ".join( [ "\"%s\"" % m for m in self.MnemonicsTable ] ) )
+ self.ItabC.write( "\n};\n" )
+
+
+ def genItabH( self, filePath ):
+ self.ItabH = open( filePath, "w" )
+
+ # Generate Table Type Enumeration
+ self.ItabH.write( "#ifndef UD_ITAB_H\n" )
+ self.ItabH.write( "#define UD_ITAB_H\n\n" )
+
+ self.ItabH.write("/* itab.h -- generated by udis86:scripts/ud_itab.py, do no edit */\n\n")
+
+ # table type enumeration
+ self.ItabH.write( "/* ud_table_type -- lookup table types (see decode.c) */\n" )
+ self.ItabH.write( "enum ud_table_type {\n " )
+ enum = [ self.TableInfo[ k ][ 'name' ] for k in self.TableInfo.keys() ]
+ self.ItabH.write( ",\n ".join( enum ) )
+ self.ItabH.write( "\n};\n\n" );
+
+ # mnemonic enumeration
+ self.ItabH.write( "/* ud_mnemonic -- mnemonic constants */\n" )
+ enum = "enum ud_mnemonic_code {\n "
+ enum += ",\n ".join( [ "UD_I%s" % m for m in self.MnemonicsTable ] )
+ enum += ",\n UD_MAX_MNEMONIC_CODE"
+ enum += "\n} UD_ATTR_PACKED;\n"
+ self.ItabH.write( enum )
+ self.ItabH.write( "\n" )
+
+ self.ItabH.write( "extern const char * ud_mnemonics_str[];\n" )
+
+ self.ItabH.write( "\n#endif /* UD_ITAB_H */\n" )
+
+ self.ItabH.close()
+
+
+ def genItabC( self, filePath ):
+ self.ItabC = open( filePath, "w" )
+ self.ItabC.write( "/* itab.c -- generated by udis86:scripts/ud_itab.py, do no edit" )
+ self.ItabC.write( " */\n" );
+ self.ItabC.write( "#include \"decode.h\"\n\n" );
+
+ self.ItabC.write( "#define GROUP(n) (0x8000 | (n))\n\n" )
+
+ self.genLookupTable( self.OpcodeTable0 )
+ self.genLookupTableList()
+
+ #
+ # Macros defining short-names for operands
+ #
+ self.ItabC.write("\n\n/* itab entry operand definitions (for readability) */\n");
+ operands = self.OperandDict.keys()
+ operands = sorted(operands)
+ for o in operands:
+ self.ItabC.write("#define O_%-7s { %-12s %-8s }\n" %
+ (o, self.OperandDict[o][0] + ",", self.OperandDict[o][1]));
+ self.ItabC.write("\n");
+
+ self.genInsnTable()
+
+ self.ItabC.close()
+
+ def genItab( self, location ):
+ self.genItabC(os.path.join(location, "itab.c"))
+ self.genItabH(os.path.join(location, "itab.h"))
+
+def usage():
+ print("usage: ud_itab.py ")
+
+def main():
+
+ if len(sys.argv) != 3:
+ usage()
+ sys.exit(1)
+
+ generator = UdItabGenerator()
+ optableXmlParser = ud_optable.UdOptableXmlParser()
+ optableXmlParser.parse( sys.argv[ 1 ], generator.addInsnDef )
+ generator.genItab(sys.argv[2])
+
+if __name__ == '__main__':
+ main()
diff --git a/UefiDriver/udis86/scripts/ud_opcode.py b/UefiDriver/udis86/scripts/ud_opcode.py
new file mode 100644
index 0000000..70cd226
--- /dev/null
+++ b/UefiDriver/udis86/scripts/ud_opcode.py
@@ -0,0 +1,243 @@
+# udis86 - scripts/ud_opcode.py
+#
+# Copyright (c) 2009 Vivek Thampi
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+class UdOpcodeTables:
+
+ TableInfo = {
+ 'opctbl' : { 'name' : 'UD_TAB__OPC_TABLE', 'size' : 256 },
+ '/sse' : { 'name' : 'UD_TAB__OPC_SSE', 'size' : 4 },
+ '/reg' : { 'name' : 'UD_TAB__OPC_REG', 'size' : 8 },
+ '/rm' : { 'name' : 'UD_TAB__OPC_RM', 'size' : 8 },
+ '/mod' : { 'name' : 'UD_TAB__OPC_MOD', 'size' : 2 },
+ '/m' : { 'name' : 'UD_TAB__OPC_MODE', 'size' : 2 },
+ '/x87' : { 'name' : 'UD_TAB__OPC_X87', 'size' : 64 },
+ '/a' : { 'name' : 'UD_TAB__OPC_ASIZE', 'size' : 3 },
+ '/o' : { 'name' : 'UD_TAB__OPC_OSIZE', 'size' : 3 },
+ '/3dnow' : { 'name' : 'UD_TAB__OPC_3DNOW', 'size' : 256 },
+ 'vendor' : { 'name' : 'UD_TAB__OPC_VENDOR', 'size' : 3 },
+ '/vex.p' : { 'name' : 'UD_TAB__OPC_VEX_P', 'size' : 4 },
+ '/vex.m' : { 'name' : 'UD_TAB__OPC_VEX_M', 'size' : 3 },
+ }
+
+ OpcodeTable0 = {
+ 'type' : 'opctbl',
+ 'entries' : {},
+ 'meta' : 'table0'
+ }
+
+ OpcExtIndex = {
+
+ # ssef2, ssef3, sse66
+ 'sse': {
+ 'none' : '00',
+ 'f2' : '01',
+ 'f3' : '02',
+ '66' : '03'
+ },
+
+ # /mod=
+ 'mod': {
+ '!11' : '00',
+ '11' : '01'
+ },
+
+ # /m=, /o=, /a=
+ 'mode': {
+ '16' : '00',
+ '32' : '01',
+ '64' : '02'
+ },
+
+ 'vendor' : {
+ 'amd' : '00',
+ 'intel' : '01',
+ 'any' : '02'
+ },
+
+ 'vex.p': {
+ 'none' : '00',
+ 'f2' : '01',
+ 'f3' : '02',
+ '66' : '03'
+ },
+
+ 'vex.m': {
+ 'none' : '00',
+ '38' : '01',
+ '3a' : '02',
+ },
+
+
+ }
+
+ InsnTable = []
+ MnemonicsTable = []
+
+ def sizeOfTable( self, t ):
+ return self.TableInfo[ t ][ 'size' ]
+
+ def nameOfTable( self, t ):
+ return self.TableInfo[ t ][ 'name' ]
+
+ #
+ # Updates a table entry: If the entry doesn't exist
+ # it will create the entry, otherwise, it will walk
+ # while validating the path.
+ #
+ def updateTable( self, table, index, type, meta ):
+ if not index in table[ 'entries' ]:
+ table[ 'entries' ][ index ] = { 'type' : type, 'entries' : {}, 'meta' : meta }
+ if table[ 'entries' ][ index ][ 'type' ] != type:
+ raise NameError( "error: violation in opcode mapping (overwrite) %s with %s." %
+ ( table[ 'entries' ][ index ], type) )
+ return table[ 'entries' ][ index ]
+
+ class Insn:
+ """An abstract type representing an instruction in the opcode map.
+ """
+
+ # A mapping of opcode extensions to their representational
+ # values used in the opcode map.
+ OpcExtMap = {
+ '/rm' : lambda v: "%02x" % int(v, 16),
+ '/x87' : lambda v: "%02x" % int(v, 16),
+ '/3dnow' : lambda v: "%02x" % int(v, 16),
+ '/reg' : lambda v: "%02x" % int(v, 16),
+ # modrm.mod
+ # (!11, 11) => (00, 01)
+ '/mod' : lambda v: '00' if v == '!11' else '01',
+ # Mode extensions:
+ # (16, 32, 64) => (00, 01, 02)
+ '/o' : lambda v: "%02x" % (int(v) / 32),
+ '/a' : lambda v: "%02x" % (int(v) / 32),
+ '/m' : lambda v: '00' if v == '!64' else '01',
+ # SSE
+ '/sse' : lambda v: UdOpcodeTables.OpcExtIndex['sse'][v],
+ # AVX
+ '/vex.p' : lambda v: UdOpcodeTables.OpcExtIndex['vex.p'][v],
+ '/vex.m' : lambda v: UdOpcodeTables.OpcExtIndex['vex.m'][v]
+ }
+
+ def __init__(self, prefixes, mnemonic, opcodes, operands, vendor):
+ self.opcodes = []
+ self.prefixes = prefixes
+ self.mnemonic = mnemonic
+ self.operands = operands
+ self.vendor = vendor
+ self.opcext = {}
+
+ # artificially add a /sse=none for 2 byte opcodes
+ if opcodes[0] == '0f' and opcodes[1] != '0f':
+ opcodes.append('/sse=none')
+
+ # begin the list with all plain opcodes
+ for opc in opcodes:
+ if not opc.startswith('/'):
+ self.opcodes.append(opc)
+
+ # re-order vex/xop prefixes to follow vex opcode
+ if self.opcodes[0] == 'c4' or self.opcodes[0] == 'c5':
+ for opc in opcodes:
+ if opc.startswith('/vex'):
+ self.opcodes.insert(1, opc)
+
+ # Add extensions. The order is important, and determines how
+ # well the opcode table is packed. Also note, /sse must be
+ # before /o, because /sse may consume operand size prefix
+ # affect the outcome of /o.
+ for ext in ('/mod', '/x87', '/reg', '/rm', '/sse',
+ '/o', '/a', '/m', '/3dnow'):
+ for opc in opcodes:
+ if opc.startswith(ext):
+ self.opcodes.append(opc)
+
+ def parse(self, table, insn):
+ # Walk down the tree, create levels as needed
+ assert not insn.opcodes[0].startswith("/")
+ index = insn.opcodes[0];
+ for opc in insn.opcodes[1:]:
+ if opc.startswith('/'):
+ ext, v= opc.split('=')
+ table = self.updateTable(table, index, ext, ext)
+ index = insn.OpcExtMap[ext](v)
+ insn.opcext[ext] = index
+ else:
+ table = self.updateTable(table, index, 'opctbl', index)
+ index = opc
+
+ # additional table for disambiguating vendor
+ if len(insn.vendor):
+ table = self.updateTable(table, index, 'vendor', insn.vendor)
+ index = self.OpcExtIndex['vendor'][insn.vendor]
+
+ # make leaf node entries
+ leaf = self.updateTable(table, index, 'insn', '')
+
+ leaf['mnemonic'] = insn.mnemonic
+ leaf['prefixes'] = insn.prefixes
+ leaf['operands'] = insn.operands
+
+ # add instruction to linear table of instruction forms
+ self.InsnTable.append({ 'prefixes' : insn.prefixes,
+ 'mnemonic' : insn.mnemonic,
+ 'operands' : insn.operands,
+ 'vendor' : insn.vendor,
+ 'opcext' : insn.opcext,
+ 'opcodes' : insn.opcodes })
+
+ # add mnemonic to mnemonic table
+ if not insn.mnemonic in self.MnemonicsTable:
+ self.MnemonicsTable.append(insn.mnemonic)
+
+
+ # Adds an instruction definition to the opcode tables
+ def addInsnDef( self, prefixes, mnemonic, opcodes, operands, vendor ):
+ insn = self.Insn(prefixes=prefixes,
+ mnemonic=mnemonic,
+ opcodes=opcodes,
+ operands=operands,
+ vendor=vendor)
+ try:
+ self.parse(self.OpcodeTable0, insn)
+ except:
+ self.print_tree()
+ raise
+
+ def print_table( self, table, pfxs ):
+ print("%s |" % pfxs)
+ keys = table[ 'entries' ].keys()
+ if ( len( keys ) ):
+ keys.sort()
+ for idx in keys:
+ e = table[ 'entries' ][ idx ]
+ if e[ 'type' ] == 'insn':
+ print("%s |-<%s>" % ( pfxs, idx )),
+ print("%s %s" % ( e[ 'mnemonic' ], ' '.join( e[ 'operands'] ) ))
+ else:
+ print("%s |-<%s> %s" % ( pfxs, idx, e['type'] ))
+ self.print_table( e, pfxs + ' |' )
+
+ def print_tree( self ):
+ self.print_table( self.OpcodeTable0, '' )
diff --git a/UefiDriver/udis86/scripts/ud_optable.py b/UefiDriver/udis86/scripts/ud_optable.py
new file mode 100644
index 0000000..e9e0b53
--- /dev/null
+++ b/UefiDriver/udis86/scripts/ud_optable.py
@@ -0,0 +1,100 @@
+# udis86 - scripts/ud_optable.py (optable.xml parser)
+#
+# Copyright (c) 2009 Vivek Thampi
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import os
+import sys
+from xml.dom import minidom
+
+class UdOptableXmlParser:
+
+ def parseDef( self, node ):
+ ven = ''
+ pfx = []
+ opc = []
+ opr = []
+ for def_node in node.childNodes:
+ if not def_node.localName:
+ continue
+ if def_node.localName == 'pfx':
+ pfx = def_node.firstChild.data.split();
+ elif def_node.localName == 'opc':
+ opc = def_node.firstChild.data.split();
+ elif def_node.localName == 'opr':
+ opr = def_node.firstChild.data.split();
+ elif def_node.localName == 'mode':
+ pfx.extend( def_node.firstChild.data.split() );
+ elif def_node.localName == 'syn':
+ pfx.extend( def_node.firstChild.data.split() );
+ elif def_node.localName == 'vendor':
+ ven = ( def_node.firstChild.data );
+ return ( pfx, opc, opr, ven )
+
+ def parse( self, xml, fn ):
+ xmlDoc = minidom.parse( xml )
+ self.TlNode = xmlDoc.firstChild
+
+ while self.TlNode and self.TlNode.localName != "x86optable":
+ self.TlNode = self.TlNode.nextSibling
+
+ for insnNode in self.TlNode.childNodes:
+ if not insnNode.localName:
+ continue
+ if insnNode.localName != "instruction":
+ print("warning: invalid insn node - %s" % insnNode.localName)
+ continue
+
+ mnemonic = insnNode.getElementsByTagName( 'mnemonic' )[ 0 ].firstChild.data
+ vendor = ''
+
+ for node in insnNode.childNodes:
+ if node.localName == 'vendor':
+ vendor = node.firstChild.data
+ elif node.localName == 'def':
+ ( prefixes, opcodes, operands, local_vendor ) = \
+ self.parseDef( node )
+ if ( len( local_vendor ) ):
+ vendor = local_vendor
+ # callback
+ fn( prefixes, mnemonic, opcodes, operands, vendor )
+
+
+def printFn( pfx, mnm, opc, opr, ven ):
+ print('def: ',)
+ if len( pfx ):
+ print(' '.join( pfx ),)
+ print("%s %s %s %s" %
+ ( mnm, ' '.join( opc ), ' '.join( opr ), ven ))
+
+
+def parse( xml, callback ):
+ parser = UdOptableXmlParser()
+ parser.parse( xml, callback )
+
+def main():
+ parser = UdOptableXmlParser()
+ parser.parse( sys.argv[ 1 ], printFn )
+
+if __name__ == "__main__":
+ main()
diff --git a/UefiDriver/udis86/tests/Makefile.am b/UefiDriver/udis86/tests/Makefile.am
new file mode 100644
index 0000000..f7cc17b
--- /dev/null
+++ b/UefiDriver/udis86/tests/Makefile.am
@@ -0,0 +1,98 @@
+#
+# Automake definitions for udis86 tests
+#
+check_PROGRAMS = \
+ symresolve \
+ bufoverrun \
+ libcheck
+
+bufoverrun_SOURCES = bufoverrun.c
+bufoverrun_LDADD = $(top_builddir)/libudis86/libudis86.la
+bufoverrun_CFLAGS = -I$(top_srcdir)/libudis86 -I$(top_srcdir)
+
+symresolve_SOURCES = symresolve.c
+symresolve_LDADD = $(top_builddir)/libudis86/libudis86.la
+symresolve_CFLAGS = -I$(top_srcdir)/libudis86 -I$(top_srcdir)
+
+libcheck_SOURCES = libcheck.c
+libcheck_LDADD = $(top_builddir)/libudis86/libudis86.la
+libcheck_CFLAGS = -I$(top_srcdir)/libudis86 -I$(top_srcdir)
+
+MAINTAINERCLEANFILES = Makefile.in
+
+DISTCLEANFILES = difftest.sh
+
+YASM = @YASM@
+PYTHON = @PYTHON@
+TESTDIS = $(top_builddir)/udcli/udcli
+
+EXTRA_DIST = \
+ $(srcdir)/asm \
+ $(srcdir)/oprgen.py \
+ $(srcdir)/symresolve.ref \
+ $(srcdir)/installcheck.c \
+ $(srcdir)/libcheck.c
+
+if HAVE_YASM
+tests: difftest test-buf-overrun test-sym-resolver test-libcheck
+else
+tests: warn_no_yasm test-buf-overrun test-sym-resolver test-libcheck
+endif
+
+SEED = 1984
+
+
+.PHONY: test-buf-overrun
+test-buf-overrun: bufoverrun
+ @./bufoverrun && echo "$@: passed"
+
+
+.PHONY: test-sym-resolver
+test-sym-resolver: symresolve
+ @$(top_builddir)/tests/$< > $@.out
+ @diff -w $(srcdir)/symresolve.ref $@.out && echo "$@: passed."
+
+.PHONY: test-libcheck
+test-libcheck: libcheck
+ @./libcheck && echo "$@: passed"
+
+#
+# generate operand tests
+#
+oprtest_generate = \
+ outdir=$(builddir)/_results/asm/$(1) && \
+ mkdir -p $${outdir} && \
+ PYTHONPATH=$(top_srcdir)/scripts $(PYTHON) $(top_srcdir)/tests/oprgen.py \
+ $(top_srcdir)/docs/x86/optable.xml $(SEED) $(1) >$${outdir}/oprtest.asm
+
+.PHONY: oprtest
+oprtest: oprgen.py
+ @echo "Generating operand tests."
+ @$(call oprtest_generate,64)
+ @$(call oprtest_generate,32)
+ @$(call oprtest_generate,16)
+
+
+.PHONY: difftest
+difftest: oprtest $(builddir)/difftest.sh
+ @sh $(builddir)/difftest.sh
+
+
+.PHONY: difftest-refup
+difftest-refup: $(builddir)/difftest.sh
+ @sh $(builddir)/difftest.sh refup
+
+
+.PHONY: warn_no_yasm
+warn_no_yasm:
+ @echo "*** YASM NOT FOUND: Poor Test Coverage ***"
+
+check-local: tests
+
+installcheck-local:
+ @$(CC) $(srcdir)/installcheck.c -o installcheck.bin -I$(includedir) -L$(libdir) -ludis86
+ @echo "$@: passed"
+
+clean-local:
+ rm -f $(builddir)/*.bin $(builddir)/*.out $(builddir)/*.pyc
+ rm -rf $(builddir)/_results
diff --git a/UefiDriver/udis86/tests/Makefile.in b/UefiDriver/udis86/tests/Makefile.in
new file mode 100644
index 0000000..8105797
--- /dev/null
+++ b/UefiDriver/udis86/tests/Makefile.in
@@ -0,0 +1,699 @@
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = symresolve$(EXEEXT) bufoverrun$(EXEEXT) \
+ libcheck$(EXEEXT)
+subdir = tests
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(srcdir)/difftest.sh.in $(top_srcdir)/build/depcomp
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/build/m4/libtool.m4 \
+ $(top_srcdir)/build/m4/ltoptions.m4 \
+ $(top_srcdir)/build/m4/ltsugar.m4 \
+ $(top_srcdir)/build/m4/ltversion.m4 \
+ $(top_srcdir)/build/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/ax_compare_version.m4 \
+ $(top_srcdir)/m4/ax_prog_sphinx_version.m4 \
+ $(top_srcdir)/m4/ax_prog_yasm_version.m4 \
+ $(top_srcdir)/m4/ax_with_prog.m4 \
+ $(top_srcdir)/m4/ax_with_python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = difftest.sh
+CONFIG_CLEAN_VPATH_FILES =
+am_bufoverrun_OBJECTS = bufoverrun-bufoverrun.$(OBJEXT)
+bufoverrun_OBJECTS = $(am_bufoverrun_OBJECTS)
+bufoverrun_DEPENDENCIES = $(top_builddir)/libudis86/libudis86.la
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+bufoverrun_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(bufoverrun_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_libcheck_OBJECTS = libcheck-libcheck.$(OBJEXT)
+libcheck_OBJECTS = $(am_libcheck_OBJECTS)
+libcheck_DEPENDENCIES = $(top_builddir)/libudis86/libudis86.la
+libcheck_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcheck_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_symresolve_OBJECTS = symresolve-symresolve.$(OBJEXT)
+symresolve_OBJECTS = $(am_symresolve_OBJECTS)
+symresolve_DEPENDENCIES = $(top_builddir)/libudis86/libudis86.la
+symresolve_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(symresolve_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(bufoverrun_SOURCES) $(libcheck_SOURCES) \
+ $(symresolve_SOURCES)
+DIST_SOURCES = $(bufoverrun_SOURCES) $(libcheck_SOURCES) \
+ $(symresolve_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SPHINX_BUILD = @SPHINX_BUILD@
+SPHINX_VERSION = @SPHINX_VERSION@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YASM = @YASM@
+YASM_VERSION = @YASM_VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+bufoverrun_SOURCES = bufoverrun.c
+bufoverrun_LDADD = $(top_builddir)/libudis86/libudis86.la
+bufoverrun_CFLAGS = -I$(top_srcdir)/libudis86 -I$(top_srcdir)
+symresolve_SOURCES = symresolve.c
+symresolve_LDADD = $(top_builddir)/libudis86/libudis86.la
+symresolve_CFLAGS = -I$(top_srcdir)/libudis86 -I$(top_srcdir)
+libcheck_SOURCES = libcheck.c
+libcheck_LDADD = $(top_builddir)/libudis86/libudis86.la
+libcheck_CFLAGS = -I$(top_srcdir)/libudis86 -I$(top_srcdir)
+MAINTAINERCLEANFILES = Makefile.in
+DISTCLEANFILES = difftest.sh
+TESTDIS = $(top_builddir)/udcli/udcli
+EXTRA_DIST = \
+ $(srcdir)/asm \
+ $(srcdir)/oprgen.py \
+ $(srcdir)/symresolve.ref \
+ $(srcdir)/installcheck.c \
+ $(srcdir)/libcheck.c
+
+SEED = 1984
+
+#
+# generate operand tests
+#
+oprtest_generate = \
+ outdir=$(builddir)/_results/asm/$(1) && \
+ mkdir -p $${outdir} && \
+ PYTHONPATH=$(top_srcdir)/scripts $(PYTHON) $(top_srcdir)/tests/oprgen.py \
+ $(top_srcdir)/docs/x86/optable.xml $(SEED) $(1) >$${outdir}/oprtest.asm
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+difftest.sh: $(top_builddir)/config.status $(srcdir)/difftest.sh.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+bufoverrun$(EXEEXT): $(bufoverrun_OBJECTS) $(bufoverrun_DEPENDENCIES) $(EXTRA_bufoverrun_DEPENDENCIES)
+ @rm -f bufoverrun$(EXEEXT)
+ $(AM_V_CCLD)$(bufoverrun_LINK) $(bufoverrun_OBJECTS) $(bufoverrun_LDADD) $(LIBS)
+libcheck$(EXEEXT): $(libcheck_OBJECTS) $(libcheck_DEPENDENCIES) $(EXTRA_libcheck_DEPENDENCIES)
+ @rm -f libcheck$(EXEEXT)
+ $(AM_V_CCLD)$(libcheck_LINK) $(libcheck_OBJECTS) $(libcheck_LDADD) $(LIBS)
+symresolve$(EXEEXT): $(symresolve_OBJECTS) $(symresolve_DEPENDENCIES) $(EXTRA_symresolve_DEPENDENCIES)
+ @rm -f symresolve$(EXEEXT)
+ $(AM_V_CCLD)$(symresolve_LINK) $(symresolve_OBJECTS) $(symresolve_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bufoverrun-bufoverrun.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcheck-libcheck.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symresolve-symresolve.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+bufoverrun-bufoverrun.o: bufoverrun.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(bufoverrun_CFLAGS) $(CFLAGS) -MT bufoverrun-bufoverrun.o -MD -MP -MF $(DEPDIR)/bufoverrun-bufoverrun.Tpo -c -o bufoverrun-bufoverrun.o `test -f 'bufoverrun.c' || echo '$(srcdir)/'`bufoverrun.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bufoverrun-bufoverrun.Tpo $(DEPDIR)/bufoverrun-bufoverrun.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bufoverrun.c' object='bufoverrun-bufoverrun.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(bufoverrun_CFLAGS) $(CFLAGS) -c -o bufoverrun-bufoverrun.o `test -f 'bufoverrun.c' || echo '$(srcdir)/'`bufoverrun.c
+
+bufoverrun-bufoverrun.obj: bufoverrun.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(bufoverrun_CFLAGS) $(CFLAGS) -MT bufoverrun-bufoverrun.obj -MD -MP -MF $(DEPDIR)/bufoverrun-bufoverrun.Tpo -c -o bufoverrun-bufoverrun.obj `if test -f 'bufoverrun.c'; then $(CYGPATH_W) 'bufoverrun.c'; else $(CYGPATH_W) '$(srcdir)/bufoverrun.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/bufoverrun-bufoverrun.Tpo $(DEPDIR)/bufoverrun-bufoverrun.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bufoverrun.c' object='bufoverrun-bufoverrun.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(bufoverrun_CFLAGS) $(CFLAGS) -c -o bufoverrun-bufoverrun.obj `if test -f 'bufoverrun.c'; then $(CYGPATH_W) 'bufoverrun.c'; else $(CYGPATH_W) '$(srcdir)/bufoverrun.c'; fi`
+
+libcheck-libcheck.o: libcheck.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcheck_CFLAGS) $(CFLAGS) -MT libcheck-libcheck.o -MD -MP -MF $(DEPDIR)/libcheck-libcheck.Tpo -c -o libcheck-libcheck.o `test -f 'libcheck.c' || echo '$(srcdir)/'`libcheck.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcheck-libcheck.Tpo $(DEPDIR)/libcheck-libcheck.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libcheck.c' object='libcheck-libcheck.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcheck_CFLAGS) $(CFLAGS) -c -o libcheck-libcheck.o `test -f 'libcheck.c' || echo '$(srcdir)/'`libcheck.c
+
+libcheck-libcheck.obj: libcheck.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcheck_CFLAGS) $(CFLAGS) -MT libcheck-libcheck.obj -MD -MP -MF $(DEPDIR)/libcheck-libcheck.Tpo -c -o libcheck-libcheck.obj `if test -f 'libcheck.c'; then $(CYGPATH_W) 'libcheck.c'; else $(CYGPATH_W) '$(srcdir)/libcheck.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcheck-libcheck.Tpo $(DEPDIR)/libcheck-libcheck.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libcheck.c' object='libcheck-libcheck.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcheck_CFLAGS) $(CFLAGS) -c -o libcheck-libcheck.obj `if test -f 'libcheck.c'; then $(CYGPATH_W) 'libcheck.c'; else $(CYGPATH_W) '$(srcdir)/libcheck.c'; fi`
+
+symresolve-symresolve.o: symresolve.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(symresolve_CFLAGS) $(CFLAGS) -MT symresolve-symresolve.o -MD -MP -MF $(DEPDIR)/symresolve-symresolve.Tpo -c -o symresolve-symresolve.o `test -f 'symresolve.c' || echo '$(srcdir)/'`symresolve.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/symresolve-symresolve.Tpo $(DEPDIR)/symresolve-symresolve.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='symresolve.c' object='symresolve-symresolve.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(symresolve_CFLAGS) $(CFLAGS) -c -o symresolve-symresolve.o `test -f 'symresolve.c' || echo '$(srcdir)/'`symresolve.c
+
+symresolve-symresolve.obj: symresolve.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(symresolve_CFLAGS) $(CFLAGS) -MT symresolve-symresolve.obj -MD -MP -MF $(DEPDIR)/symresolve-symresolve.Tpo -c -o symresolve-symresolve.obj `if test -f 'symresolve.c'; then $(CYGPATH_W) 'symresolve.c'; else $(CYGPATH_W) '$(srcdir)/symresolve.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/symresolve-symresolve.Tpo $(DEPDIR)/symresolve-symresolve.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='symresolve.c' object='symresolve-symresolve.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(symresolve_CFLAGS) $(CFLAGS) -c -o symresolve-symresolve.obj `if test -f 'symresolve.c'; then $(CYGPATH_W) 'symresolve.c'; else $(CYGPATH_W) '$(srcdir)/symresolve.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am: installcheck-local
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \
+ clean-checkPROGRAMS clean-generic clean-libtool clean-local \
+ cscopelist-am ctags ctags-am distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installcheck-local installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am
+
+
+@HAVE_YASM_TRUE@tests: difftest test-buf-overrun test-sym-resolver test-libcheck
+@HAVE_YASM_FALSE@tests: warn_no_yasm test-buf-overrun test-sym-resolver test-libcheck
+
+.PHONY: test-buf-overrun
+test-buf-overrun: bufoverrun
+ @./bufoverrun && echo "$@: passed"
+
+.PHONY: test-sym-resolver
+test-sym-resolver: symresolve
+ @$(top_builddir)/tests/$< > $@.out
+ @diff -w $(srcdir)/symresolve.ref $@.out && echo "$@: passed."
+
+.PHONY: test-libcheck
+test-libcheck: libcheck
+ @./libcheck && echo "$@: passed"
+
+.PHONY: oprtest
+oprtest: oprgen.py
+ @echo "Generating operand tests."
+ @$(call oprtest_generate,64)
+ @$(call oprtest_generate,32)
+ @$(call oprtest_generate,16)
+
+.PHONY: difftest
+difftest: oprtest $(builddir)/difftest.sh
+ @sh $(builddir)/difftest.sh
+
+.PHONY: difftest-refup
+difftest-refup: $(builddir)/difftest.sh
+ @sh $(builddir)/difftest.sh refup
+
+.PHONY: warn_no_yasm
+warn_no_yasm:
+ @echo "*** YASM NOT FOUND: Poor Test Coverage ***"
+
+check-local: tests
+
+installcheck-local:
+ @$(CC) $(srcdir)/installcheck.c -o installcheck.bin -I$(includedir) -L$(libdir) -ludis86
+ @echo "$@: passed"
+
+clean-local:
+ rm -f $(builddir)/*.bin $(builddir)/*.out $(builddir)/*.pyc
+ rm -rf $(builddir)/_results
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/UefiDriver/udis86/tests/asm/16/disp.asm b/UefiDriver/udis86/tests/asm/16/disp.asm
new file mode 100644
index 0000000..d471158
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/16/disp.asm
@@ -0,0 +1,6 @@
+[bits 16]
+ mov ax, [eax-0x10]
+ add bx, [esi+0x10]
+ add ax, [0xffff]
+ add ax, [esi+edi*4-0x10]
+ add ax, [bx+si-0x4877]
diff --git a/UefiDriver/udis86/tests/asm/16/test16.asm b/UefiDriver/udis86/tests/asm/16/test16.asm
new file mode 100644
index 0000000..15cda25
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/16/test16.asm
@@ -0,0 +1,5 @@
+[bits 16]
+ movzx eax, word [bx]
+ iretd
+ dpps xmm2, xmm1, 0x10
+ blendvpd xmm1, xmm2
diff --git a/UefiDriver/udis86/tests/asm/32/att.asm b/UefiDriver/udis86/tests/asm/32/att.asm
new file mode 100644
index 0000000..e90bfaf
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/att.asm
@@ -0,0 +1,3 @@
+[bits 32]
+ mov eax, 0x1234
+ mov eax, [0x1234]
diff --git a/UefiDriver/udis86/tests/asm/32/att.asm.Sref b/UefiDriver/udis86/tests/asm/32/att.asm.Sref
new file mode 100644
index 0000000..943f9be
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/att.asm.Sref
@@ -0,0 +1,2 @@
+0000000000000000 b834120000 mov $0x1234, %eax
+0000000000000005 a134120000 mov 0x1234, %eax
diff --git a/UefiDriver/udis86/tests/asm/32/att.asm.ref b/UefiDriver/udis86/tests/asm/32/att.asm.ref
new file mode 100644
index 0000000..0902c97
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/att.asm.ref
@@ -0,0 +1,2 @@
+0000000000000000 b834120000 mov eax, 0x1234
+0000000000000005 a134120000 mov eax, [0x1234]
diff --git a/UefiDriver/udis86/tests/asm/32/corner.asm b/UefiDriver/udis86/tests/asm/32/corner.asm
new file mode 100644
index 0000000..5a795a2
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/corner.asm
@@ -0,0 +1,5 @@
+[bits 32]
+
+ lar eax, [bx+si]
+ nop
+ pause
diff --git a/UefiDriver/udis86/tests/asm/32/corner.asm.ref b/UefiDriver/udis86/tests/asm/32/corner.asm.ref
new file mode 100644
index 0000000..086755c
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/corner.asm.ref
@@ -0,0 +1,3 @@
+0000000000000000 670f0200 lar eax, word [bx+si]
+0000000000000004 90 nop
+0000000000000005 f390 pause
diff --git a/UefiDriver/udis86/tests/asm/32/disp.asm b/UefiDriver/udis86/tests/asm/32/disp.asm
new file mode 100644
index 0000000..b6e4006
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/disp.asm
@@ -0,0 +1,6 @@
+[bits 32]
+ mov eax, [eax-0x10]
+ add eax, [esi+0x10]
+ add eax, [0x10]
+ add eax, [esi+edi*4+0x10]
+ add eax, [bx+si-0x4877]
diff --git a/UefiDriver/udis86/tests/asm/32/disp.asm.Sref b/UefiDriver/udis86/tests/asm/32/disp.asm.Sref
new file mode 100644
index 0000000..009e242
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/disp.asm.Sref
@@ -0,0 +1,5 @@
+0000000000000000 8b40f0 mov -0x10(%eax), %eax
+0000000000000003 034610 add 0x10(%esi), %eax
+0000000000000006 030510000000 add 0x10, %eax
+000000000000000c 0344be10 add 0x10(%esi,%edi,4), %eax
+0000000000000010 67038089b7 add -0x4877(%bx,%si), %eax
diff --git a/UefiDriver/udis86/tests/asm/32/invalid_seg.asm b/UefiDriver/udis86/tests/asm/32/invalid_seg.asm
new file mode 100644
index 0000000..93b171f
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/invalid_seg.asm
@@ -0,0 +1,2 @@
+[bits 32]
+ db 0x8C, 0x38
diff --git a/UefiDriver/udis86/tests/asm/32/invalid_seg.asm.ref b/UefiDriver/udis86/tests/asm/32/invalid_seg.asm.ref
new file mode 100644
index 0000000..1f40e08
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/invalid_seg.asm.ref
@@ -0,0 +1 @@
+0000000000000000 8c38 invalid
diff --git a/UefiDriver/udis86/tests/asm/32/obscure.asm b/UefiDriver/udis86/tests/asm/32/obscure.asm
new file mode 100644
index 0000000..8e26c34
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/obscure.asm
@@ -0,0 +1,12 @@
+
+ db 0xd1, 0xf6 ; shl Ev, 0x1
+ db 0xd0, 0xf6 ; shl Eb, 0x1
+ db 0xd9, 0xd9 ; fstp1 st1
+ db 0xdc, 0xd0 ; fcom2
+ db 0xdc, 0xd8 ; fcomp3
+ db 0xdd, 0xc8 ; fxch4
+ db 0xde, 0xd1 ; fcomp5
+ db 0xdf, 0xc3 ; fxch7
+ db 0xdf, 0xd0 ; fstp8
+ db 0xdf, 0xd8 ; fstp9
+ db 0x83, 0xe2, 0xdf ; and edx, 0xffffffdf (sign-extension)
diff --git a/UefiDriver/udis86/tests/asm/32/obscure.asm.ref b/UefiDriver/udis86/tests/asm/32/obscure.asm.ref
new file mode 100644
index 0000000..77aaf58
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/obscure.asm.ref
@@ -0,0 +1,11 @@
+0000000000000000 d1f6 shl esi, 1
+0000000000000002 d0f6 shl dh, 1
+0000000000000004 d9d9 fstp1 st1
+0000000000000006 dcd0 fcom2 st0
+0000000000000008 dcd8 fcomp3 st0
+000000000000000a ddc8 fxch4 st0
+000000000000000c ded1 fcomp5 st1
+000000000000000e dfc3 ffreep st3
+0000000000000010 dfd0 fstp8 st0
+0000000000000012 dfd8 fstp9 st0
+0000000000000014 83e2df and edx, 0xffffffdf
diff --git a/UefiDriver/udis86/tests/asm/32/reljmp.asm b/UefiDriver/udis86/tests/asm/32/reljmp.asm
new file mode 100644
index 0000000..cd9959a
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/reljmp.asm
@@ -0,0 +1,24 @@
+[bits 32]
+[org 0x80000000]
+
+l1:
+ nop
+ nop
+ nop
+ nop
+ nop
+
+ jmp l1
+ nop
+ jmp word l2
+
+ nop
+ nop
+ jmp dword l2
+ nop
+ nop
+ nop
+l2:
+ nop
+ nop
+ jmp l1
diff --git a/UefiDriver/udis86/tests/asm/32/reljmp.asm.ref b/UefiDriver/udis86/tests/asm/32/reljmp.asm.ref
new file mode 100644
index 0000000..aafcb3c
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/reljmp.asm.ref
@@ -0,0 +1,17 @@
+0000000080000000 90 nop
+0000000080000001 90 nop
+0000000080000002 90 nop
+0000000080000003 90 nop
+0000000080000004 90 nop
+0000000080000005 ebf9 jmp 0x80000000
+0000000080000007 90 nop
+0000000080000008 66e90a00 jmp 0x16
+000000008000000c 90 nop
+000000008000000d 90 nop
+000000008000000e e903000000 jmp 0x80000016
+0000000080000013 90 nop
+0000000080000014 90 nop
+0000000080000015 90 nop
+0000000080000016 90 nop
+0000000080000017 90 nop
+0000000080000018 ebe6 jmp 0x80000000
diff --git a/UefiDriver/udis86/tests/asm/32/sext.asm b/UefiDriver/udis86/tests/asm/32/sext.asm
new file mode 100644
index 0000000..a4f4900
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/sext.asm
@@ -0,0 +1,23 @@
+[bits 32]
+
+ ;; test sign extension
+
+ adc ax, -100
+ and edx, -3
+ or dx, -1000
+ or dx, -1
+ add edx, -1000
+ imul dx, bx, -100
+ imul edx, ebx, -1
+ imul edx, ebx, -128
+ imul edx, ebx, -129
+ imul ax, bx, -129
+ sub dword [eax], -1
+ sub word [eax], -2000
+ test eax, 1
+ test eax, -1
+ push byte -1
+ push word -1
+ push dword -1000
+ push word -1000
+
diff --git a/UefiDriver/udis86/tests/asm/32/sext.asm.ref b/UefiDriver/udis86/tests/asm/32/sext.asm.ref
new file mode 100644
index 0000000..99bc887
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/sext.asm.ref
@@ -0,0 +1,18 @@
+0000000000000000 6683d09c adc ax, 0xff9c
+0000000000000004 83e2fd and edx, 0xfffffffd
+0000000000000007 6681ca18fc or dx, 0xfc18
+000000000000000c 6683caff or dx, 0xffff
+0000000000000010 81c218fcffff add edx, 0xfffffc18
+0000000000000016 666bd39c imul dx, bx, 0xff9c
+000000000000001a 6bd3ff imul edx, ebx, 0xffffffff
+000000000000001d 6bd380 imul edx, ebx, 0xffffff80
+0000000000000020 69d37fffffff imul edx, ebx, 0xffffff7f
+0000000000000026 6669c37fff imul ax, bx, 0xff7f
+000000000000002b 8328ff sub dword [eax], 0xffffffff
+000000000000002e 66812830f8 sub word [eax], 0xf830
+0000000000000033 a901000000 test eax, 0x1
+0000000000000038 a9ffffffff test eax, 0xffffffff
+000000000000003d 6aff push 0xffffffff
+000000000000003f 666aff push 0xffff
+0000000000000042 6818fcffff push 0xfffffc18
+0000000000000047 666818fc push 0xfc18
diff --git a/UefiDriver/udis86/tests/asm/32/test32.asm b/UefiDriver/udis86/tests/asm/32/test32.asm
new file mode 100644
index 0000000..844b465
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/32/test32.asm
@@ -0,0 +1,282 @@
+[bits 32]
+ mov [0x1000], bx
+ mov [0x10], ax
+ mov ax, [0x10]
+ mov byte [bx+si], 0x10
+ mov byte [bx+si+0x10], 0x10
+ mov word [bp+0x10], 0x10
+ mov word [bp+di+0x10], 0x10
+ mov dword [si+0x10], 0x10
+ mov word [di+0x10], 0x10
+ mov dword [bx+0x10], 0x1000
+ mov word [bx+0x1000], 0x1000
+ mov dword [ebx+ecx*4], 0x100
+ mov [eax+eax*2], eax
+ mov [edx+esi*8], ebp
+ mov dword [ecx*4+0x490], 0x100
+ mov byte [cs:0x100000], 0x10
+ mov word [eax+0x10], 0x10
+ mov [eax+0x10], ax
+ mov [eax+0x1000], ebx
+ mov [ebp+eax+0x20], esi
+ mov [ebp+edi+0x100000], esp
+ mov byte [esp], 0x10
+ add al, 0x10
+ add eax, ebx
+ push es
+ pop es
+ adc eax, 0x10000
+ and [eax], al
+ daa
+ inc ax
+ inc edx
+ push eax
+ push ax
+ pushad
+ bound eax, [eax]
+ bound ax, [ecx]
+ bsr ax, ax
+ bsf eax, [bx+si]
+ bswap eax
+ bt [eax], ax
+ btr ax, 0x10
+ btc ebx, 0x10
+ bts word [ebx], 0x10
+ call ax
+ call word [bx+si]
+ call eax
+ call dword [eax+ecx]
+ call word 0x10:0x100
+ call dword 0x10:0x10000
+ call far word [eax]
+ call far dword [bp+si]
+ cbw
+ cwd
+ clc
+ cld
+ clflush [eax]
+ cmp eax, ebx
+ cmp ecx, [bx]
+ cmpsb
+ cmpsw
+ cmpsd
+ cmpxchg [eax], ax
+ cmpxchg8b [ebx]
+ cpuid
+ das
+ inc eax
+ inc word [ecx]
+ dec byte [si]
+ in al, 0x10
+ in ax, 0x10
+ in eax, 0x10
+ insb
+ insw
+ insd
+ int 0x10
+ into
+ lahf
+ lds ax, [eax]
+ les eax, [ebx]
+ lea ax, [eax]
+ lea eax, [bx+si]
+ leave
+ lodsb
+ lodsw
+ lodsd
+ test al, bl
+ test [eax], bl
+ test [eax], ebx
+ test [eax], bx
+ ret
+ ret 0x10
+ aad 0x10
+ aam 0x10
+ salc
+ hlt
+ cmc
+ lock xchg ebx, eax
+ repne mov eax, ebx
+ repe mov eax, 0x10
+ push cs
+ outsd
+ outsw
+ mov ax, es
+ mov bx, ds
+ mov [eax], es
+ mov [ebx+ecx], cs
+ mov cs, [ebx+ecx]
+ wait
+ pushfw
+ pushfd
+ lodsw
+ lodsd
+ retf 0x10
+ int3
+ into
+ iretw
+ iretd
+ lsl ax, [bx]
+ syscall
+ clts
+ sysret
+ movups xmm0, xmm1
+ mov dr0, eax
+ ror word [ebx], cl
+ wrmsr
+ rdmsr
+ rdtsc
+ rdtscp
+ rdpmc
+ sysenter
+ sysexit
+ cmovo eax, [eax]
+ cmovno eax, [bx]
+ cmovb eax, [eax]
+ cmovae eax, [bx]
+ cmovo eax, [eax]
+ cmovz eax, ebx
+ cmovnz eax, [eax]
+ cmovbe eax, [bx]
+ cmova eax, [bx]
+ movmskps eax, xmm0
+ movmskpd eax, xmm0
+ sqrtps xmm1, xmm0
+ rsqrtps xmm1, xmm0
+ rcpps xmm1, xmm0
+ andps xmm1, xmm0
+ orps xmm1, xmm0
+ xorps xmm1, xmm0
+ andnps xmm1, xmm0
+ sqrtss xmm1, xmm0
+ rsqrtss xmm1, xmm0
+ rcpss xmm1, xmm0
+ sqrtpd xmm1, xmm0
+ andpd xmm1, xmm0
+ andnpd xmm1, xmm0
+ orpd xmm1, xmm0
+ xorpd xmm1, xmm0
+ sqrtsd xmm1, xmm0
+ punpcklbw mm0, [eax]
+ punpcklwd mm0, mm1
+ punpckldq mm0, mm1
+ packsswb mm0, mm1
+ packsswb mm0, mm1
+ pcmpgtb mm0, mm1
+ pcmpgtw mm0, mm1
+ pcmpgtd mm0, mm1
+ packuswb mm0, mm1
+ punpcklbw xmm0, [eax]
+ punpcklwd xmm0, xmm1
+ punpckldq xmm0, xmm1
+ packsswb xmm0, xmm1
+ packsswb xmm0, xmm1
+ pcmpgtb xmm0, xmm1
+ pcmpgtw xmm0, xmm1
+ pcmpgtd xmm0, xmm1
+ packuswb xmm0, xmm1
+ pshufw mm0, mm1, 0x10
+ pcmpeqb mm0, mm1
+ pcmpeqw mm0, mm1
+ pcmpeqd mm0, mm1
+ pcmpeqb xmm0, xmm1
+ pcmpeqw xmm0, xmm1
+ pcmpeqd xmm0, xmm1
+ emms
+ pshufhw xmm0, xmm1, 0x10
+ pshufd xmm0, xmm1, 0x10
+ pshuflw xmm0, xmm1, 0x10
+ seto byte [eax]
+ setno byte [bx]
+ setz byte [es:eax+ecx*2+0x100]
+ push fs
+ pop fs
+ cpuid
+ bt [eax], eax
+ shld eax, ebx, 0x10
+ shld [eax], bx, cl
+ cmpxchg [eax], eax
+ lss eax, [eax]
+ btr [eax], eax
+ movnti [eax], eax
+ psrlw mm0, 0x10
+ fadd dword [eax]
+ imul eax, [eax], 0xf6
+ movd [eax], xmm0
+ movzx eax, word [eax]
+ push word [0x10]
+ insw
+ insd
+ fnstsw ax
+ fucomip st0, st1
+ fcomip st0, st7
+ fucomp st4
+ fucom st5
+ fstp st3
+ fst st1
+ ffree st0
+ fdiv st7, st0
+ fdivr st2, st0
+ fsub st4, st0
+ fsubr st6, st0
+ fmul st0, st0
+ fadd st5, st0
+ ficom word [eax]
+ fidivr word [eax]
+ fimul word [ebx]
+ fisub word [ecx]
+ fld qword [bx+si]
+ fisttp qword [edx+0x100]
+ fnstsw word [eax]
+ frstor [ebx]
+ prefetch [bx+si]
+ psrlq xmm0, 0x10
+ psrldq xmm0, 0x10
+ movsldup xmm0, [eax]
+ add [0xffffffff], eax
+ cvtsi2ss xmm1, dword [eax]
+ pop dword [eax]
+ out 0x0, al
+ lldt word [0x100]
+ lgdt [0x221]
+ sldt word [0x233]
+ sgdt [0x443]
+ lidt [eax+0x333]
+ lldt ax
+ ltr bx
+ verr cx
+ verw dx
+ sldt ax
+ str bx
+ str eax
+ and esp, 0xfc
+ psrlw xmm1, 0x10
+ psraw xmm7, 0x1
+ psllw xmm2, 0x23
+ fldenv [0x10]
+ fldenv [0x123]
+ fldcw word [0x100]
+ fnstcw word [0x10]
+ ficom word [eax+ebx+0x10]
+ fstp tword [0x10]
+ fadd qword [eax+ebx*2+0x1]
+ frstor [0x100]
+ fnstsw word [0x100]
+ fiadd word [0x100]
+ fild word [0x10]
+ monitor
+ mwait
+ lfence
+ mfence
+ sfence
+ vmrun
+ vmmcall
+ vmload
+ vmsave
+ stgi
+ clgi
+ skinit
+ invlpga
+ blendpd xmm1, xmm6, 0x8
+ psignw xmm4, [eax]
+ blendpd xmm1, [eax], 0x9
diff --git a/UefiDriver/udis86/tests/asm/64/amd/invalid.asm b/UefiDriver/udis86/tests/asm/64/amd/invalid.asm
new file mode 100644
index 0000000..17f65da
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/amd/invalid.asm
@@ -0,0 +1,7 @@
+;; Test amd specific 64bit instructions
+
+[bits 64]
+
+ ;; Invalid instructions in amd 64bit mode
+ db 0x0f, 0x34 ; sysenter (invalid)
+ db 0x0f, 0x35 ; sysexit (invalid)
diff --git a/UefiDriver/udis86/tests/asm/64/amd/invalid.asm.ref b/UefiDriver/udis86/tests/asm/64/amd/invalid.asm.ref
new file mode 100644
index 0000000..8005f0d
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/amd/invalid.asm.ref
@@ -0,0 +1,2 @@
+0000000000000000 0f34 invalid
+0000000000000002 0f35 invalid
diff --git a/UefiDriver/udis86/tests/asm/64/branch.asm b/UefiDriver/udis86/tests/asm/64/branch.asm
new file mode 100644
index 0000000..9284459
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/branch.asm
@@ -0,0 +1,21 @@
+;; Test branching instructions
+;;
+[bits 64]
+
+ jnz near x
+ jo near x
+ jno word x
+ jc near x
+ jnc word x
+ jae dword x
+ jcxz x
+ jecxz x
+ jrcxz x
+ jmp dword near x
+ call dword near x
+ jmp word x
+ jmp dword x
+ jmp word [eax]
+x: jmp qword [rax]
+ jmp word x
+ jmp dword x
diff --git a/UefiDriver/udis86/tests/asm/64/branch.asm.ref b/UefiDriver/udis86/tests/asm/64/branch.asm.ref
new file mode 100644
index 0000000..e42cf33
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/branch.asm.ref
@@ -0,0 +1,17 @@
+0000000000000000 0f853b000000 jnz 0x41
+0000000000000006 0f8035000000 jo 0x41
+000000000000000c 660f813000 jno 0x41
+0000000000000011 0f822a000000 jb 0x41
+0000000000000017 660f832500 jae 0x41
+000000000000001c 0f831f000000 jae 0x41
+0000000000000022 67e31c jecxz 0x41
+0000000000000025 67e319 jecxz 0x41
+0000000000000028 e317 jrcxz 0x41
+000000000000002a e912000000 jmp 0x41
+000000000000002f e80d000000 call 0x41
+0000000000000034 66e90900 jmp 0x41
+0000000000000038 e904000000 jmp 0x41
+000000000000003d 6766ff20 jmp word [eax]
+0000000000000041 ff20 jmp qword [rax]
+0000000000000043 66e9faff jmp 0x41
+0000000000000047 e9f5ffffff jmp 0x41
diff --git a/UefiDriver/udis86/tests/asm/64/disp.asm b/UefiDriver/udis86/tests/asm/64/disp.asm
new file mode 100644
index 0000000..e527775
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/disp.asm
@@ -0,0 +1,7 @@
+[bits 64]
+ mov ax, [eax-0x10]
+ add bx, [esi+0x10]
+ add rax, [0xffff]
+ add ax, [esi+edi*4-0x10]
+ add r8, [rax+rbx*4-0x80000000]
+ mov rax, [qword 0x800000000000]
diff --git a/UefiDriver/udis86/tests/asm/64/disp.asm.Sref b/UefiDriver/udis86/tests/asm/64/disp.asm.Sref
new file mode 100644
index 0000000..09662c3
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/disp.asm.Sref
@@ -0,0 +1,7 @@
+0000000000000000 67668b40f0 mov -0x10(%eax), %ax
+0000000000000005 6766035e10 add 0x10(%esi), %bx
+000000000000000a 48030425ffff0000 add 0xffff, %rax
+0000000000000012 67660344bef0 add -0x10(%esi,%edi,4), %ax
+0000000000000018 4c03849800000080 add -0x80000000(%rax,%rbx,4), %r8
+0000000000000020 48a1000000000080 mov 0x800000000000, %rax
+ -0000
diff --git a/UefiDriver/udis86/tests/asm/64/disp.asm.ref b/UefiDriver/udis86/tests/asm/64/disp.asm.ref
new file mode 100644
index 0000000..65c5859
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/disp.asm.ref
@@ -0,0 +1,7 @@
+0000000000000000 67668b40f0 mov ax, [eax-0x10]
+0000000000000005 6766035e10 add bx, [esi+0x10]
+000000000000000a 48030425ffff0000 add rax, [0xffff]
+0000000000000012 67660344bef0 add ax, [esi+edi*4-0x10]
+0000000000000018 4c03849800000080 add r8, [rax+rbx*4-0x80000000]
+0000000000000020 48a1000000000080 mov rax, [0x800000000000]
+ -0000
diff --git a/UefiDriver/udis86/tests/asm/64/intel/invalid.asm b/UefiDriver/udis86/tests/asm/64/intel/invalid.asm
new file mode 100644
index 0000000..3527050
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/intel/invalid.asm
@@ -0,0 +1,8 @@
+;; Test intel specific instructions in 64bit mode
+
+[bits 64]
+
+ ;; yasm doesn't seem to support a mode for intel
+ ;; specific instructions
+ db 0x0f, 0x34 ; sysenter
+ db 0x0f, 0x35 ; sysexit
diff --git a/UefiDriver/udis86/tests/asm/64/intel/invalid.asm.ref b/UefiDriver/udis86/tests/asm/64/intel/invalid.asm.ref
new file mode 100644
index 0000000..63eddce
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/intel/invalid.asm.ref
@@ -0,0 +1,2 @@
+0000000000000000 0f34 sysenter
+0000000000000002 0f35 sysexit
diff --git a/UefiDriver/udis86/tests/asm/64/reljmp.asm b/UefiDriver/udis86/tests/asm/64/reljmp.asm
new file mode 100644
index 0000000..531d93e
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/reljmp.asm
@@ -0,0 +1,24 @@
+[bits 64]
+[org 0x8000000000000000]
+
+l1:
+ nop
+ nop
+ nop
+ nop
+ nop
+
+ jmp l1
+ nop
+ jmp word l2
+
+ nop
+ nop
+ jmp dword l2
+ nop
+ nop
+ nop
+l2:
+ nop
+ nop
+ jmp l1
diff --git a/UefiDriver/udis86/tests/asm/64/reljmp.asm.ref b/UefiDriver/udis86/tests/asm/64/reljmp.asm.ref
new file mode 100644
index 0000000..75fb0ff
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/reljmp.asm.ref
@@ -0,0 +1,17 @@
+8000000000000000 90 nop
+8000000000000001 90 nop
+8000000000000002 90 nop
+8000000000000003 90 nop
+8000000000000004 90 nop
+8000000000000005 ebf9 jmp 0x8000000000000000
+8000000000000007 90 nop
+8000000000000008 66e90a00 jmp 0x16
+800000000000000c 90 nop
+800000000000000d 90 nop
+800000000000000e e903000000 jmp 0x8000000000000016
+8000000000000013 90 nop
+8000000000000014 90 nop
+8000000000000015 90 nop
+8000000000000016 90 nop
+8000000000000017 90 nop
+8000000000000018 ebe6 jmp 0x8000000000000000
diff --git a/UefiDriver/udis86/tests/asm/64/sext.asm b/UefiDriver/udis86/tests/asm/64/sext.asm
new file mode 100644
index 0000000..215e537
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/sext.asm
@@ -0,0 +1,19 @@
+[bits 64]
+
+ ;; test sign extension
+
+ adc al, -100
+ adc ax, -100
+ adc eax, -100
+ adc rax, -100
+ imul dx, bx, -100
+ imul edx, ebx, -100
+ imul rdx, r11, -100
+ push byte -1
+ push word -1
+ push dword -1000
+ push word -1000
+ push -1
+ push byte -1
+ push dword -1
+ push word -1
diff --git a/UefiDriver/udis86/tests/asm/64/sext.asm.ref b/UefiDriver/udis86/tests/asm/64/sext.asm.ref
new file mode 100644
index 0000000..aa6b935
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/sext.asm.ref
@@ -0,0 +1,15 @@
+0000000000000000 149c adc al, 0x9c
+0000000000000002 6683d09c adc ax, 0xff9c
+0000000000000006 83d09c adc eax, 0xffffff9c
+0000000000000009 4883d09c adc rax, 0xffffffffffffff9c
+000000000000000d 666bd39c imul dx, bx, 0xff9c
+0000000000000011 6bd39c imul edx, ebx, 0xffffff9c
+0000000000000014 496bd39c imul rdx, r11, 0xffffffffffffff9c
+0000000000000018 6aff push 0xffffffffffffffff
+000000000000001a 666aff push 0xffff
+000000000000001d 6818fcffff push 0xfffffffffffffc18
+0000000000000022 666818fc push 0xfc18
+0000000000000026 6aff push 0xffffffffffffffff
+0000000000000028 6aff push 0xffffffffffffffff
+000000000000002a 6aff push 0xffffffffffffffff
+000000000000002c 666aff push 0xffff
diff --git a/UefiDriver/udis86/tests/asm/64/test64.asm b/UefiDriver/udis86/tests/asm/64/test64.asm
new file mode 100644
index 0000000..9ee979f
--- /dev/null
+++ b/UefiDriver/udis86/tests/asm/64/test64.asm
@@ -0,0 +1,158 @@
+[bits 64]
+ mov rax, 0x102030405060708
+ mov [eax+0x10], ax
+ mov [eax+0x1000], ebx
+ mov [ebp+eax+0x40], esi
+ mov qword [ebp+edi+0x1000], 0x10
+ mov byte [esp], 0x10
+ mov [eax], rax
+ mov [r12], eax
+ mov [r13+r12+0x200], eax
+ mov [r8*4+0x670], sil
+ inc rax
+ dec rax
+ mov [rip+0x200], rax
+ mov rax, 0x10000
+ push rax
+ push r12
+ call qword [r8]
+ call qword [rax]
+ call far word [r8]
+ call far dword [rax]
+ cbw
+ cwde
+ cdqe
+ cwd
+ cdq
+ cqo
+ cmovl rax, [rax]
+ cmovge eax, [rax]
+ clflush [r14]
+ cmp [rax], rax
+ cmp rbx, r12
+ cmp r12d, r8d
+ cmpsb
+ cmpsw
+ cmpsd
+ cmpsq
+ cmpxchg [eax], r14
+ cmpxchg8b [ebx]
+ inc r12d
+ inc dword [rax]
+ dec r11w
+ hlt
+ imul rax, [eax+ebx*8+0x100000], 0x10
+ idiv dword [r12]
+ enter 0x100, 0x0
+ enter 0x100, 0x1
+ enter 0x100, 0x10
+ in al, 0x10
+ in ax, 0x10
+ in eax, 0x10
+ lfs eax, [eax]
+ lgs eax, [ebx]
+ lea eax, [rbx]
+ lea r11, [eax]
+ lodsb
+ lodsq
+ lodsd
+ push rax
+ push r11
+ xchg [eax], sil
+ xchg [eax], ebx
+ xchg [eax], bx
+ xchg r8, rax
+ xchg r9, rax
+ xchg cx, ax
+ movsd
+ movsq
+ mov al, r11b
+ mov sil, al
+ mov r11b, dil
+ ret 0x10
+ pop rax
+ pop r11
+ pop qword [eax]
+ insd
+ outsd
+ mov [r14d], cs
+ mov cs, [ebx+ecx]
+ pushfq
+ scasq
+ lsl ax, [rbx]
+ movups xmm0, [r12d]
+ movupd xmm0, [r12d]
+ movsldup xmm0, [r12d]
+ movups xmm0, xmm1
+ movups xmm10, xmm12
+ movups xmm0, xmm12
+ movlps xmm0, [rax]
+ movlps [rax], xmm0
+ unpcklps xmm4, xmm5
+ unpckhps xmm4, xmm5
+ movhps xmm3, [eax]
+ movhps [rax], xmm3
+ movss xmm0, [eax]
+ movss [eax], xmm0
+ movlpd [eax], xmm0
+ movlpd xmm0, [eax]
+ unpcklpd xmm2, xmm4
+ unpckhpd xmm3, [eax+ebx*8-0x1243]
+ movhpd xmm3, [rax]
+ movhpd [rax], xmm2
+ movsd xmm3, xmm4
+ movddup xmm3, [rax]
+ mov dr0, rax
+ mov rax, dr1
+ movnti [eax], eax
+ movnti [rax], rax
+ movd [eax], xmm0
+ movd [eax], xmm0
+ movd xmm11, qword [eax]
+ vmmcall
+ vmrun
+ clgi
+ stgi
+ mfence
+ lfence
+ sfence
+ clflush [rax]
+ mov cr8, rax
+ push qword [eax]
+ push word [eax]
+ add bh, bh
+ add dil, dil
+ add sil, bpl
+ add al, sil
+ add rax, r12
+ add eax, r12d
+ prefetcht0 [eax]
+ prefetchnta [eax]
+ prefetch [eax]
+ add [r8], r9b
+ mov [rax-0x1], eax
+ inc rax
+ jmp qword [eax]
+ jmp rax
+ mov [0x10], rax
+ mov rax, [0x10]
+ mov rax, 0x102030405060708
+ xchg r8, rax
+ push ax
+ push rax
+ push r11
+ mov rax, [0x100]
+ pmovmskb r12d, xmm14
+ movdq2q mm0, xmm13
+ psrlw xmm10, 0x10
+ psraw xmm7, 0x1
+ psllw xmm12, 0x23
+ swapgs
+ fadd dword [rax+rbx]
+ shl rsi, 1
+ cvtsi2ss xmm1, qword [eax]
+ cvtss2si rax, [eax]
+ cvttsd2si rax, [eax]
+ call 0x64
+ mpsadbw xmm7, xmm6, 0x7
+ popfq
diff --git a/UefiDriver/udis86/tests/bufoverrun.c b/UefiDriver/udis86/tests/bufoverrun.c
new file mode 100644
index 0000000..de52262
--- /dev/null
+++ b/UefiDriver/udis86/tests/bufoverrun.c
@@ -0,0 +1,17 @@
+#include
+#include
+
+int
+main() {
+ uint8_t raw[] = { 0xf0, 0x66, 0x36, 0x67, 0x65, 0x66, 0xf3, 0x67, 0xda };
+ uint8_t len = 9;
+ ud_t ud_obj;
+ ud_init(&ud_obj);
+ ud_set_mode(&ud_obj, 16);
+ ud_set_input_buffer(&ud_obj, raw, len);
+ ud_set_syntax(&ud_obj, UD_SYN_INTEL);
+ if (ud_disassemble(&ud_obj) != 0) {
+ return 0;
+ }
+ return 1;
+}
diff --git a/UefiDriver/udis86/tests/difftest.sh.in b/UefiDriver/udis86/tests/difftest.sh.in
new file mode 100644
index 0000000..e670fbf
--- /dev/null
+++ b/UefiDriver/udis86/tests/difftest.sh.in
@@ -0,0 +1,144 @@
+# udis86 - tests/difftest.sh.in
+#
+# Copyright (c) 2013 Vivek Thampi
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+udcli=@top_builddir@/udcli/udcli
+srcdir=@srcdir@
+builddir=@builddir@
+yasm=@YASM@
+
+
+function asm_org # (srcasm)
+{
+ cat $1 | sed -n 's/\[org \(.*\)\]/\1/p'
+}
+
+
+function vendor_opt # (vendor)
+{
+ if [ ! -z "$1" -a "$1" != "any" ]; then
+ echo "-v $1"
+ fi
+}
+
+
+function org_opt # (org)
+{
+ if [ ! -z "$1" ]; then
+ echo "-o $1"
+ fi
+}
+
+
+function update_ref # (srcasm, outasm, mode, vendor)
+{
+ local srcasm=$1
+ local outasm=$2
+ local mode=$3
+ local vendor=$4
+ local org=`org_opt $4`
+ local vendor=`vendor_opt $5`
+
+ $yasm -f bin ${srcasm} -o ${outasm}.bin &&
+ if [ -f "${srcasm}.ref" ]; then
+ echo "REFUP ${outasm}.out -> ${srcasm}.ref"
+ $udcli $vendor $org -${mode} ${outasm}.bin > ${outasm}.out &&
+ cp ${outasm}.out ${srcasm}.ref
+ fi &&
+ if [ -f "${srcasm}.Sref" ]; then
+ echo "REFUP ${outasm}.out -> ${srcasm}.Sref"
+ $udcli $vendor $org -att -${mode} ${outasm}.bin > ${outasm}.out &&
+ cp ${outasm}.out ${srcasm}.Sref
+ fi
+}
+
+
+
+function diff_test # (srcasm, outasm, mode, org, vendor)
+{
+ local srcasm=$1
+ local outasm=$2
+ local mode=$3
+ local vendor=$4
+ local org=`org_opt $4`
+ local vendor=`vendor_opt $5`
+
+ $yasm -f bin ${srcasm} -o ${outasm}.bin &&
+ if [ ! -f "${srcasm}.ref" ]; then
+ echo "[bits ${mode}]" > ${outasm}.out &&
+ $udcli $vendor $org -${mode} -noff -nohex ${outasm}.bin >> ${outasm}.out &&
+ diff -w ${srcasm} ${outasm}.out 2>&1 > ${outasm}.diff.log
+ else
+ $udcli ${vendor} $org -${mode} ${outasm}.bin > ${outasm}.out &&
+ diff -w ${srcasm}.ref ${outasm}.out 2>&1 > ${outasm}.diff.log
+ fi &&
+ if [ -f "${srcasm}.Sref" ]; then
+ $udcli ${vendor} $org -att -${mode} ${outasm}.bin > ${outasm}.out &&
+ diff -w ${srcasm}.Sref ${outasm}.out 2>&1 > ${outasm}.diff.log
+ fi &&
+ echo "DIFFTEST ${srcasm}: PASS" ||
+ ( echo "DIFFTEST ${srcasm}: ***FAIL*** (${outasm}.diff.log)" && return 1 )
+}
+
+
+function for_each_asm # (do_op)
+{
+ local do_op=$1
+ local rc=0
+ for mode in 16 32 64; do
+ for vendor in amd intel any; do
+ if [ "${vendor}" == "any" ]; then
+ asmdir=${srcdir}/asm/${mode}
+ outdir=${builddir}/_results/asm/${mode}
+ else
+ asmdir=${srcdir}/asm/${mode}/${vendor}
+ outdir=${builddir}/_results/asm/${mode}/${vendor}
+ fi
+
+ if [ ! -d "${asmdir}" ]; then
+ continue
+ fi
+
+ mkdir -p ${outdir} || ( echo "failed to create output dir" && exit 1 )
+
+ for a in `find ${asmdir} -maxdepth 1 -name "*.asm"` \
+ `find ${outdir} -maxdepth 1 -name "*.asm"`; do
+ srcasm=$a
+ outasm=${outdir}/`basename $a`
+ org=`asm_org $srcasm`
+ $do_op $srcasm $outasm $mode "$org" "$vendor" ||
+ rc=$?
+ done
+ done
+ done
+ return $rc
+}
+
+
+if [ "$1" == "refup" ]; then
+ for_each_asm update_ref && exit 0 || exit 1
+else
+ for_each_asm diff_test && exit 0 || exit 1
+fi
diff --git a/UefiDriver/udis86/tests/installcheck.c b/UefiDriver/udis86/tests/installcheck.c
new file mode 100644
index 0000000..71b96db
--- /dev/null
+++ b/UefiDriver/udis86/tests/installcheck.c
@@ -0,0 +1,18 @@
+#include
+#include
+
+int main(void)
+{
+ ud_t ud_obj;
+
+ ud_init(&ud_obj);
+ ud_set_input_file(&ud_obj, stdin);
+ ud_set_mode(&ud_obj, 64);
+ ud_set_syntax(&ud_obj, UD_SYN_INTEL);
+
+ while (ud_disassemble(&ud_obj)) {
+ printf("\t%s\n", ud_insn_asm(&ud_obj));
+ }
+
+ return 0;
+}
diff --git a/UefiDriver/udis86/tests/libcheck.c b/UefiDriver/udis86/tests/libcheck.c
new file mode 100644
index 0000000..66bea21
--- /dev/null
+++ b/UefiDriver/udis86/tests/libcheck.c
@@ -0,0 +1,223 @@
+/* udis86 - tests/libcheck.c
+ *
+ * Copyright (c) 2013 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include
+#include
+#include
+
+unsigned int testcase_check_count;
+unsigned int testcase_check_fails;
+
+#define TEST_DECL(name) \
+ const char * __testcase_name = name \
+
+#define TEST_CASE() \
+ do { \
+ volatile int __c = ++ testcase_check_count; \
+ if (0) __c += 1; \
+ do
+
+#define TEST_CASE_SET_FAIL() \
+ do { \
+ testcase_check_fails++; \
+ printf("Testcase %s: failure at line %d\n", __testcase_name, __LINE__); \
+ } while (0)
+
+#define TEST_CASE_REPORT_ACTUAL(v) \
+ printf("Testcase %s: actual = %d\n", __testcase_name, (v))
+#define TEST_CASE_REPORT_EXPECTED(v) \
+ printf("Testcase %s: expected = %d\n", __testcase_name, (v))
+
+#define TEST_CASE_END() \
+ while (0); \
+ } while (0)
+
+#define TEST_CHECK(cond) \
+ TEST_CASE() { \
+ int eval = (cond); \
+ if (!eval) { \
+ TEST_CASE_SET_FAIL(); \
+ } \
+ } TEST_CASE_END()
+
+#define TEST_CHECK_INT(expr, val) \
+ TEST_CASE() { \
+ int eval = (expr); \
+ int val2 = (val); \
+ if (eval != val2) { \
+ TEST_CASE_SET_FAIL(); \
+ TEST_CASE_REPORT_EXPECTED(val2); \
+ TEST_CASE_REPORT_ACTUAL(eval); \
+ } \
+ } TEST_CASE_END()
+
+#define TEST_CHECK_OP_REG(o, n, r) \
+ TEST_CHECK(ud_insn_opr(o, n)->type == UD_OP_REG && \
+ ud_insn_opr(o, n)->base == (r))
+
+
+static int
+input_callback(ud_t *u)
+{
+ int *n = (int *) ud_get_user_opaque_data(u);
+ if (*n == 0) {
+ return UD_EOI;
+ }
+ --*n;
+ return 0x90;
+}
+
+static void
+check_input(ud_t *ud_obj)
+{
+ TEST_DECL("check_input");
+ const uint8_t code[] = { 0x89, 0xc8 }; /* mov eax, ecx */
+ int i;
+
+ /* truncate buffer */
+ ud_set_mode(ud_obj, 32);
+ for (i = 0; i < 5; ++i) {
+ ud_set_input_buffer(ud_obj, code, (sizeof code) - 1);
+ TEST_CHECK(ud_disassemble(ud_obj) == 1);
+ TEST_CHECK(ud_insn_len(ud_obj) == 1);
+ TEST_CHECK(ud_obj->mnemonic == UD_Iinvalid);
+ }
+
+ /* input skip on buffer */
+ {
+ const uint8_t code[] = { 0x89, 0xc8, /* mov eax, ecx*/
+ 0x90 }; /* nop */
+ ud_set_input_buffer(ud_obj, code, (sizeof code));
+ ud_input_skip(ud_obj, 2);
+ TEST_CHECK_INT(ud_disassemble(ud_obj), 1);
+ TEST_CHECK_INT(ud_obj->mnemonic, UD_Inop);
+
+ ud_set_input_buffer(ud_obj, code, (sizeof code));
+ ud_input_skip(ud_obj, 0);
+ TEST_CHECK_INT(ud_disassemble(ud_obj), 2);
+ TEST_CHECK_INT(ud_obj->mnemonic, UD_Imov);
+ TEST_CHECK(ud_insn_ptr(ud_obj)[0] == 0x89);
+ TEST_CHECK(ud_insn_ptr(ud_obj)[1] == 0xc8);
+
+ /* bad skip */
+ ud_set_input_buffer(ud_obj, code, (sizeof code));
+ ud_input_skip(ud_obj, 3);
+ TEST_CHECK_INT(ud_disassemble(ud_obj), 0);
+ ud_input_skip(ud_obj, 1);
+ TEST_CHECK_INT(ud_disassemble(ud_obj), 0);
+ ud_set_input_buffer(ud_obj, code, (sizeof code));
+ ud_input_skip(ud_obj, 0);
+ TEST_CHECK_INT(ud_disassemble(ud_obj), 2);
+ ud_input_skip(ud_obj, 1000);
+ TEST_CHECK_INT(ud_disassemble(ud_obj), 0);
+ }
+
+ /* input hook test */
+ {
+ int n;
+ ud_set_user_opaque_data(ud_obj, (void *) &n);
+ ud_set_input_hook(ud_obj, &input_callback);
+
+ n = 0;
+ TEST_CHECK(ud_disassemble(ud_obj) == 0);
+
+ n = 1;
+ ud_set_input_hook(ud_obj, &input_callback);
+ TEST_CHECK_INT(ud_disassemble(ud_obj), 1);
+ TEST_CHECK(ud_insn_ptr(ud_obj)[0] == 0x90);
+ TEST_CHECK_INT(ud_obj->mnemonic, UD_Inop);
+
+ n = 2;
+ ud_set_input_hook(ud_obj, &input_callback);
+ ud_input_skip(ud_obj, 1);
+ TEST_CHECK(ud_disassemble(ud_obj) == 1);
+ TEST_CHECK(ud_obj->mnemonic == UD_Inop);
+ TEST_CHECK(ud_disassemble(ud_obj) == 0);
+ TEST_CHECK(ud_insn_len(ud_obj) == 0);
+ TEST_CHECK(ud_obj->mnemonic == UD_Iinvalid);
+
+ n = 1;
+ ud_input_skip(ud_obj, 2);
+ TEST_CHECK_INT(ud_disassemble(ud_obj), 0);
+ TEST_CHECK(ud_input_end(ud_obj));
+ }
+}
+
+static void
+check_mode(ud_t *ud_obj)
+{
+ TEST_DECL("check_mode");
+ const uint8_t code[] = { 0x89, 0xc8 }; /* mov eax, ecx */
+ ud_set_input_buffer(ud_obj, code, sizeof code);
+ ud_set_mode(ud_obj, 32);
+ TEST_CHECK(ud_disassemble(ud_obj) == 2);
+ TEST_CHECK_OP_REG(ud_obj, 0, UD_R_EAX);
+ TEST_CHECK_OP_REG(ud_obj, 1, UD_R_ECX);
+}
+
+static void
+check_disasm(ud_t *ud_obj)
+{
+ TEST_DECL("check_mode");
+ const uint8_t code[] = { 0x89, 0xc8, /* mov eax, ecx */
+ 0x90 }; /* nop */
+ ud_set_input_buffer(ud_obj, code, sizeof code);
+ ud_set_mode(ud_obj, 32);
+ ud_set_pc(ud_obj, 0x100);
+
+ TEST_CHECK(ud_disassemble(ud_obj) == 2);
+ TEST_CHECK(ud_insn_off(ud_obj) == 0x100);
+ TEST_CHECK(ud_insn_ptr(ud_obj)[0] == 0x89);
+ TEST_CHECK(ud_insn_ptr(ud_obj)[1] == 0xc8);
+ TEST_CHECK(ud_insn_mnemonic(ud_obj) == UD_Imov);
+ TEST_CHECK(strcmp(ud_lookup_mnemonic(UD_Imov), "mov") == 0);
+
+ TEST_CHECK(ud_disassemble(ud_obj) == 1);
+ TEST_CHECK(ud_insn_off(ud_obj) == 0x102);
+ TEST_CHECK(ud_insn_ptr(ud_obj)[0] == 0x90);
+ TEST_CHECK(ud_insn_mnemonic(ud_obj) == UD_Inop);
+ TEST_CHECK(strcmp(ud_lookup_mnemonic(UD_Inop), "nop") == 0);
+}
+
+int
+main(void)
+{
+ ud_t ud_obj;
+ ud_init(&ud_obj);
+ ud_set_syntax(&ud_obj, UD_SYN_INTEL);
+
+ check_input(&ud_obj);
+ check_mode(&ud_obj);
+ check_disasm(&ud_obj);
+
+ if (testcase_check_fails > 0) {
+ printf("libcheck result: %d checks, %d failures\n",
+ testcase_check_count, testcase_check_fails);
+ return 1;
+ }
+ return 0;
+}
+
+/* vim: set ts=2 sw=2 expandtab: */
diff --git a/UefiDriver/udis86/tests/oprgen.py b/UefiDriver/udis86/tests/oprgen.py
new file mode 100644
index 0000000..9ab7634
--- /dev/null
+++ b/UefiDriver/udis86/tests/oprgen.py
@@ -0,0 +1,755 @@
+# udis86 - test/testgen.py
+#
+# Copyright (c) 2009 Vivek Thampi
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import os
+import sys
+import random
+
+if ( len( os.getenv( 'UD_SCRIPT_DIR', "" ) ) ):
+ scriptsPath = os.getenv( 'UD_SCRIPT_DIR' ) + "/scripts"
+else:
+ scriptsPath = '../scripts'
+sys.path.append( scriptsPath );
+
+import ud_optable
+import ud_opcode
+
+def bits2name(bits):
+ bits2name_map = {
+ 8 : "byte",
+ 16 : "word",
+ 32 : "dword",
+ 64 : "qword",
+ 80 : "tword",
+ }
+ return bits2name_map[bits]
+
+
+class UdTestGenerator( ud_opcode.UdOpcodeTables ):
+
+ OprTable = []
+
+ ExcludeList = ( 'fcomp3', 'fcom2', 'fcomp5', 'fstp1', 'fstp8', 'fstp9',
+ 'fxch4', 'fxch7', 'nop', 'xchg', 'movd',
+ 'pmulhrw' # yasm bug
+ )
+
+ def __init__(self, mode):
+ self.mode = mode
+ pass
+
+ def OprMem(self, size=None, cast=False):
+ choices = []
+ if self.mode < 64:
+ choices = ["[bx+si+0x1234]",
+ "[bx+0x10]",
+ "[bp+di+0x27]",
+ "[di+0x100]"]
+ choices.extend(("[eax+ebx]", "[ebx+ecx*4]",
+ "[ebp+0x10]"))
+ if self.mode == 64:
+ choices.extend(("[rax+rbx]", "[rbx+r8-0x10]"))
+ addr = random.choice(choices)
+ if cast and size is not None:
+ addr = "%s %s" % (bits2name(size), addr)
+ return addr
+
+ def OprImm(self, size, cast=False):
+ imm = "0x%x" % random.randint(2, 1 << (size - 1))
+ if cast and size is not None:
+ imm = "%s %s" % (bits2name(size), imm)
+ return imm
+
+ def Gpr(self, size):
+ if size == 8:
+ choices = ['al', 'cl']
+ if self.mode == 64:
+ choices.extend(['sil', 'r10b'])
+ elif size == 16:
+ choices = ['ax', 'bp', 'dx']
+ if self.mode == 64:
+ choices.extend(['r8w', 'r14w'])
+ elif size == 32:
+ choices = ['eax', 'ebp', 'edx']
+ if self.mode == 64:
+ choices.extend(['r10d', 'r12d'])
+ elif size == 64:
+ choices = ['rax', 'rsi', 'rsp']
+ if self.mode == 64:
+ choices.extend(['r9', 'r13'])
+ return random.choice(choices)
+
+ def Xmm(self):
+ r = 16 if self.mode == 64 else 8
+ return "xmm%d" % random.choice(range(r))
+
+ def Mmx(self):
+ return "mm%d" % random.choice(range(8))
+
+ def Modrm_RM_GPR(self, size, cast=False):
+ return random.choice([self.Gpr(size),
+ self.OprMem(size=size, cast=cast)])
+
+ def Modrm_RM_XMM(self, size, cast=False):
+ return random.choice([self.Xmm(),
+ self.OprMem(size=size, cast=cast)])
+
+ def OprRxb(self, n):
+ regs = [ 'al', 'cl', 'dl', 'bl' ]
+ if self.mode == 64 and random.choice((False, True)):
+ regs += [ 'spl', 'bpl', 'sil', 'dil',
+ 'r8b', 'r9b', 'r10b', 'r11b',
+ 'r12b', 'r13b', 'r14b', 'r15b' ]
+ n |= random.choice((0, 8))
+ else:
+ regs += [ 'ah', 'ch', 'dh', 'bh' ]
+ return regs[n]
+
+ def OprRxw(self, n):
+ regs = [ 'ax', 'cx', 'dx', 'bx', 'sp', 'bp', 'si', 'di' ]
+ if self.mode == 64 and random.choice((False, True)):
+ regs += [ 'r8w', 'r9w', 'r10w', 'r11w',
+ 'r12w', 'r13w', 'r14w', 'r15w' ]
+ n |= random.choice((0, 8))
+ return regs[n]
+
+ def OprRxd(self, n):
+ regs = [ 'eax', 'ecx', 'edx', 'ebx', 'esp', 'ebp', 'esi', 'edi' ]
+ if self.mode == 64 and random.choice((False, True)):
+ regs += [ 'r8d', 'r9d', 'r10d', 'r11d',
+ 'r12d', 'r13d', 'r14d', 'r15d' ]
+ n |= random.choice((0, 8))
+ return regs[n]
+
+ def OprRxq(self, n):
+ regs = [ 'rax', 'rcx', 'rdx', 'rbx',
+ 'rsp', 'rbp', 'rsi', 'rdi',
+ 'r8', 'r9', 'r10', 'r11',
+ 'r12', 'r13', 'r14', 'r15' ]
+ n |= random.choice((0, 8))
+ return regs[n]
+
+ def OprRxv(self, n):
+ choices = [ self.OprRxw(n), self.OprRxd(n) ]
+ if self.mode == 64:
+ choices.append(self.OprRxq(n))
+ return random.choice(choices)
+
+ def OprRxz(self, n):
+ choices = [ self.OprRxw(n), self.OprRxd(n) ]
+ return random.choice(choices)
+
+ def OprRxy(self, n):
+ choices = [ self.OprRxd(n) ]
+ if self.mode == 64:
+ choices.append(self.OprRxq(n))
+ return random.choice(choices)
+
+ Opr_R0b = lambda s: s.OprRxb(0);
+ Opr_R1b = lambda s: s.OprRxb(1);
+ Opr_R2b = lambda s: s.OprRxb(2);
+ Opr_R3b = lambda s: s.OprRxb(3);
+ Opr_R4b = lambda s: s.OprRxb(4);
+ Opr_R5b = lambda s: s.OprRxb(5);
+ Opr_R6b = lambda s: s.OprRxb(6);
+ Opr_R7b = lambda s: s.OprRxb(7);
+
+ Opr_R0y = lambda s: s.OprRxy(0);
+ Opr_R1y = lambda s: s.OprRxy(1);
+ Opr_R2y = lambda s: s.OprRxy(2);
+ Opr_R3y = lambda s: s.OprRxy(3);
+ Opr_R4y = lambda s: s.OprRxy(4);
+ Opr_R5y = lambda s: s.OprRxy(5);
+ Opr_R6y = lambda s: s.OprRxy(6);
+ Opr_R7y = lambda s: s.OprRxy(7);
+
+ Opr_R0v = lambda s: s.OprRxv(0);
+ Opr_R1v = lambda s: s.OprRxv(1);
+ Opr_R2v = lambda s: s.OprRxv(2);
+ Opr_R3v = lambda s: s.OprRxv(3);
+ Opr_R4v = lambda s: s.OprRxv(4);
+ Opr_R5v = lambda s: s.OprRxv(5);
+ Opr_R6v = lambda s: s.OprRxv(6);
+ Opr_R7v = lambda s: s.OprRxv(7);
+
+ Opr_R0z = lambda s: s.OprRxz(0);
+ Opr_R1z = lambda s: s.OprRxz(1);
+ Opr_R2z = lambda s: s.OprRxz(2);
+ Opr_R3z = lambda s: s.OprRxz(3);
+ Opr_R4z = lambda s: s.OprRxz(4);
+ Opr_R5z = lambda s: s.OprRxz(5);
+ Opr_R6z = lambda s: s.OprRxz(6);
+ Opr_R7z = lambda s: s.OprRxz(7);
+
+ def Insn_Av(self):
+ return random.choice([("word 0x100:0x100",), ("dword 0x100:0xfaddbc",)])
+
+ def Opr_R(self):
+ if self.mode == 64:
+ return self.OprRxq(random.choice(range(8)))
+ return self.OprRxd(random.choice(range(8)));
+
+ def Opr_C(self):
+ return "cr3"
+
+ def Opr_D(self):
+ return "dr0"
+
+ def Opr_S(self):
+ return "fs"
+
+ def Opr_ST0(self):
+ return "st0"
+
+ def Opr_ST1(self):
+ return "st1"
+
+ def Opr_ST2(self):
+ return "st2"
+
+ def Opr_ST3(self):
+ return "st3"
+
+ def Opr_ST4(self):
+ return "st4"
+
+ def Opr_ST5(self):
+ return "st5"
+
+ def Opr_ST6(self):
+ return "st6"
+
+ def Opr_ST7(self):
+ return "st7"
+
+ def Opr_CS(self):
+ return "cs"
+
+ def Opr_GS(self):
+ return "gs"
+
+ def Opr_ES(self):
+ return "es"
+
+ def Opr_FS(self):
+ return "fs"
+
+ def Opr_DS(self):
+ return "ds"
+
+ def Opr_SS(self):
+ return "ss"
+
+ def Opr_Ib(self, cast=False):
+ return self.OprImm(8, cast=cast)
+
+ def Opr_Iw(self, cast=False):
+ return self.OprImm(16, cast=cast)
+
+ def Opr_Id(self, cast=False):
+ return self.OprImm(32, cast=cast)
+
+ def Opr_Iq(self, cast=False):
+ return self.OprImm(64, cast=cast)
+
+ def Opr_Iz(self, cast=False):
+ return random.choice((self.OprImm(16, cast=cast),
+ self.OprImm(32, cast=cast)))
+ Opr_sIz = Opr_Iz
+
+ def Opr_Iw(self, cast=False):
+ return self.OprImm(16, cast=cast)
+
+ def Opr_I1(self, cast=False):
+ return "1"
+
+ def Opr_eAX(self):
+ return random.choice(['ax', 'eax'])
+
+ def Opr_rAX(self):
+ choices = ['ax', 'eax']
+ if self.mode == 64:
+ choices.append('rax')
+ return random.choice(choices)
+
+ def Insn_rAX_Iz(self):
+ choices = [('ax', self.Opr_Iw()), ('eax', self.Opr_Id())]
+ if self.mode == 64:
+ choices.append(('rax', self.Opr_Id()))
+ return random.choice(choices)
+ Insn_rAX_sIz = Insn_rAX_Iz
+
+ def Insn_Rxv_Iv(self, n):
+ choices = [(self.OprRxw(n), self.Opr_Iw()),
+ (self.OprRxd(n), self.Opr_Id())]
+ if self.mode == 64:
+ choices.append((self.OprRxq(n), self.Opr_Iq()))
+ return random.choice(choices)
+
+ Insn_R0v_Iv = lambda s: s.Insn_Rxv_Iv(0)
+ Insn_R1v_Iv = lambda s: s.Insn_Rxv_Iv(1)
+ Insn_R2v_Iv = lambda s: s.Insn_Rxv_Iv(2)
+ Insn_R3v_Iv = lambda s: s.Insn_Rxv_Iv(3)
+ Insn_R4v_Iv = lambda s: s.Insn_Rxv_Iv(4)
+ Insn_R5v_Iv = lambda s: s.Insn_Rxv_Iv(5)
+ Insn_R6v_Iv = lambda s: s.Insn_Rxv_Iv(6)
+ Insn_R7v_Iv = lambda s: s.Insn_Rxv_Iv(7)
+
+ def Insn_Rxv_rAX(self, n):
+ choices = [(self.OprRxw(n), "ax"),
+ (self.OprRxd(n), "eax")]
+ if self.mode == 64:
+ choices.append((self.OprRxq(n), "rax"))
+ return random.choice(choices)
+
+ Insn_R0v_rAX = lambda s: s.Insn_Rxv_rAX(0)
+ Insn_R1v_rAX = lambda s: s.Insn_Rxv_rAX(1)
+ Insn_R2v_rAX = lambda s: s.Insn_Rxv_rAX(2)
+ Insn_R3v_rAX = lambda s: s.Insn_Rxv_rAX(3)
+ Insn_R4v_rAX = lambda s: s.Insn_Rxv_rAX(4)
+ Insn_R5v_rAX = lambda s: s.Insn_Rxv_rAX(5)
+ Insn_R6v_rAX = lambda s: s.Insn_Rxv_rAX(6)
+ Insn_R7v_rAX = lambda s: s.Insn_Rxv_rAX(7)
+
+ def Opr_Gb(self):
+ return self.Gpr(8)
+
+ def Opr_Gw(self):
+ return self.Gpr(16)
+
+ def Opr_Gd(self):
+ return self.Gpr(32)
+
+ def Opr_Gq(self):
+ return self.Gpr(64)
+
+ def Opr_Gz(self):
+ return random.choice([self.Gpr(16), self.Gpr(32)])
+
+ def Opr_Gv(self):
+ choices = [self.Gpr(16), self.Gpr(32)]
+ if self.mode == 64:
+ choices.append(self.Gpr(64))
+ return random.choice(choices)
+
+ def Opr_Gy(self):
+ choices = [self.Gpr(32)]
+ if self.mode == 64:
+ choices.append(self.Gpr(64))
+ return random.choice(choices)
+
+ def Opr_M(self):
+ return self.OprMem();
+
+ def Opr_U(self):
+ return self.Xmm();
+
+ def Opr_N(self):
+ return self.Mmx();
+
+ def Opr_Mb(self, cast=False):
+ return self.OprMem(size=8, cast=cast);
+
+ def Opr_Mw(self, cast=False):
+ return self.OprMem(size=16, cast=cast);
+
+ def Opr_Md(self, cast=False):
+ return self.OprMem(size=32, cast=cast);
+
+ def Opr_Mq(self, cast=False):
+ return self.OprMem(size=64, cast=cast);
+
+ def Opr_Mt(self, cast=True):
+ return self.OprMem(size=80, cast=cast);
+
+ def Opr_MwRd(self, cast=True):
+ return random.choice((self.Opr_Mw(cast=cast), self.Opr_Gd()))
+
+ def Opr_MwRv(self, cast=False):
+ return random.choice((self.Opr_Mw(cast=cast), self.Opr_Gv()))
+
+ def Opr_MwRy(self, cast=True):
+ return random.choice((self.Opr_Mw(cast=cast), self.Opr_Gy()))
+
+ def Opr_MdRy(self, cast=False):
+ return random.choice((self.Opr_Md(cast=cast), self.Opr_Gy()))
+
+ def Opr_MbRv(self, cast=False):
+ return random.choice((self.Opr_Mb(cast=cast), self.Opr_Gv()))
+
+ def Opr_MbRd(self, cast=False):
+ return random.choice((self.Opr_Mb(cast=cast), self.Opr_Gd()))
+
+ def Opr_MwRw(self, cast=False):
+ return random.choice((self.Opr_Mw(cast=cast), self.Opr_Gw()))
+
+ def Opr_MwU(self, cast=False):
+ return random.choice((self.Opr_Mw(cast=cast), self.Xmm()))
+
+ def Opr_MdU(self, cast=False):
+ return random.choice((self.Opr_Md(cast=cast), self.Xmm()))
+
+ def Opr_MqU(self, cast=False):
+ return random.choice((self.Opr_Mq(cast=cast), self.Xmm()))
+
+ def Insn_V_MwU(self, cast=False):
+ return (self.Opr_V(), self.Opr_MwU(cast=True))
+
+ def Insn_V_MdU(self, cast=False):
+ return (self.Opr_V(), self.Opr_MdU(cast=True))
+
+ def Insn_V_MqU(self, cast=False):
+ return (self.Opr_V(), self.Opr_MqU(cast=True))
+
+ def Insn_MbRv(self):
+ return [self.Opr_MbRv(cast=True)]
+
+ def Insn_MbRv_V_Ib(self):
+ return [self.Opr_MbRv(cast=True), self.Opr_V(), self.Opr_Ib()]
+
+ def Insn_V_MbRd_Ib(self):
+ return [self.Opr_V(), self.Opr_MbRd(cast=True), self.Opr_Ib()]
+
+ def Insn_MwRv(self):
+ return [self.Opr_MwRv(cast=True)]
+
+ def Insn_MwRd_V_Ib(self):
+ return [self.Opr_MwRd(cast=False), self.Opr_V(), self.Opr_Ib()]
+
+ def Insn_S_MwRv(self):
+ if self.mode == 64:
+ return [self.Opr_S(), self.Opr_MwRd(cast=False)]
+ if self.mode == 16:
+ return [self.Opr_S(), self.Opr_MwRw(cast=False)]
+ if self.mode == 32:
+ return [self.Opr_S(), self.Opr_MwRd(cast=False)]
+
+ def Insn_Mw(self):
+ return [self.Opr_Mw(cast=True)]
+
+ def Insn_Md(self):
+ return [self.Opr_Md(cast=True)]
+
+ def Insn_Mq(self):
+ return [self.Opr_Mq(cast=True)]
+
+ def Opr_Eb(self, cast=False):
+ return self.Modrm_RM_GPR(8, cast=cast)
+
+ def Opr_Ew(self, cast=False):
+ return self.Modrm_RM_GPR(16, cast=cast)
+
+ def Opr_Ed(self, cast=False):
+ return self.Modrm_RM_GPR(32, cast=cast)
+
+ def Opr_Eq(self, cast=False):
+ return self.Modrm_RM_GPR(64, cast=cast)
+
+ def Opr_Ey(self, cast=False):
+ choices = [self.Modrm_RM_GPR(32, cast=cast)]
+ if self.mode == 64:
+ choices.append(self.Modrm_RM_GPR(64, cast=cast))
+ return random.choice(choices)
+
+ def Insn_Fv(self):
+ return ("far "+ self.Opr_Mv(cast=True),)
+
+ def Insn_V_Ew_Ib(self):
+ return self.Opr_V(), self.Opr_Ew(cast=True), self.Opr_Ib()
+
+ def Insn_V_Eq_Ib(self):
+ return self.Opr_V(), self.Opr_Eq(cast=True), self.Opr_Ib()
+
+ def Insn_V_Mo(self):
+ return self.Opr_V(), self.Opr_M()
+
+ def Insn_V_Md_Ib(self):
+ return self.Opr_V(), self.Opr_Md(cast=True), self.Opr_Ib()
+
+ def Insn_V_Ed_Ib(self):
+ return self.Opr_V(), self.Opr_Ed(cast=True), self.Opr_Ib()
+
+ def Insn_P_Ew_Ib(self):
+ return self.Opr_P(), self.Opr_Ew(cast=True), self.Opr_Ib()
+
+ def Insn_V_Ey(self):
+ return self.Opr_V(), self.Opr_Ey(cast=True)
+
+ def Insn_Ey_V(self):
+ x, y = self.Insn_V_Ey()
+ return y, x
+
+ def Insn_P_Ey(self):
+ return self.Opr_P(), self.Opr_Ey(cast=True)
+
+ def Insn_Ey_P(self):
+ x, y = self.Insn_P_Ey()
+ return y, x
+
+ def Opr_Mv(self, cast=False):
+ choices = [self.Opr_Mw(cast), self.Opr_Md(cast)]
+ if self.mode == 64:
+ choices.append(self.Opr_Mq(cast))
+ return random.choice(choices)
+
+ def Opr_Ev(self, cast=False):
+ choices = [self.Opr_Ew(cast), self.Opr_Ed(cast)]
+ if self.mode == 64:
+ choices.append(self.Opr_Eq(cast))
+ return random.choice(choices)
+
+ def Insn_Ev(self):
+ choices = [self.Modrm_RM_GPR(16, cast=True),
+ self.Modrm_RM_GPR(32, cast=True)]
+ if self.mode == 64:
+ choices.append(self.Modrm_RM_GPR(64, cast=True))
+ return [random.choice(choices)]
+
+ def Opr_V(self):
+ return self.Xmm()
+
+ def Opr_W(self):
+ return random.choice([self.Xmm(), self.OprMem(size=128)])
+
+ def Opr_P(self):
+ return self.Mmx()
+
+ def Opr_Q(self, cast=False):
+ return random.choice([self.Mmx(), self.OprMem(size=64, cast=cast)])
+
+ def Opr_CL(self):
+ return "cl"
+
+ def Opr_AL(self):
+ return "al"
+
+ def Opr_Ob(self):
+ return "[0x100]"
+
+ def Insn_rAX_Ov(self):
+ choices = [ ("ax", "[0x100]"), ("eax", "[0x1000]") ]
+ if self.mode == 64:
+ choices.append(("rax", "[0x1223221]"))
+ return random.choice(choices)
+
+ def Insn_Ov_rAX(self):
+ x, y = self.Insn_rAX_Ov()
+ return y, x
+
+ def Opr_AX(self):
+ return "ax"
+
+ def Opr_DX(self):
+ return "dx"
+
+ def Insn_Eb_CL(self):
+ return self.Opr_Eb(cast=True), self.Opr_CL()
+
+ def Insn_Ev_CL(self):
+ return self.Opr_Ev(cast=True), self.Opr_CL()
+
+ def Insn_Eb(self):
+ return [self.Modrm_RM_GPR(size=8, cast=True)]
+
+ def Insn_Ew(self):
+ return [self.Modrm_RM_GPR(size=16, cast=True)]
+
+ def Insn_Ev_Gv(self):
+ choices = [ (self.Opr_Ew(), self.Opr_Gw()),
+ (self.Opr_Ed(), self.Opr_Gd()) ]
+ if self.mode == 64:
+ choices.append((self.Opr_Eq(), self.Opr_Gq()))
+ return random.choice(choices)
+
+ def Insn_Ev_Gy(self):
+ choices = [ (self.Opr_Ew(), self.Opr_Gd()),
+ (self.Opr_Ed(), self.Opr_Gd()) ]
+ if self.mode == 64:
+ choices.append((self.Opr_Eq(), self.Opr_Gq()))
+ return random.choice(choices)
+
+ def Insn_Ev_Gv_CL(self):
+ x, y = self.Insn_Ev_Gv();
+ return x, y, self.Opr_CL()
+
+ def Insn_Gv_Ev_CL(self):
+ x, y = self.Insn_Ev_Gv();
+ return y, x, self.Opr_CL()
+
+ def Insn_Gv_Ev_Ib(self):
+ x, y = self.Insn_Ev_Gv();
+ return y, x, self.Opr_Ib(cast=False)
+ Insn_Gv_Ev_sIb = Insn_Gv_Ev_Ib
+
+ def Insn_Gv_Ev_Iz(self):
+ choices = [ (self.Opr_Gw(), self.Opr_Ew(), self.Opr_Iw()),
+ (self.Opr_Gd(), self.Opr_Ed(), self.Opr_Id()) ]
+ if self.mode == 64:
+ choices.append((self.Opr_Gq(), self.Opr_Eq(), self.Opr_Iz()))
+ return random.choice(choices)
+
+ def Insn_Ev_Ib(self):
+ return self.Opr_Ev(cast=True), self.Opr_Ib()
+ Insn_Ev_sIb = Insn_Ev_Ib
+
+ def Insn_Gq_Ed(self):
+ return self.Opr_Gq(), self.Opr_Ed(cast=True)
+
+ def Insn_Gy_Eb(self):
+ return self.Opr_Gy(), self.Opr_Eb(cast=True)
+
+ def Insn_Gy_Ew(self):
+ return self.Opr_Gy(), self.Opr_Ew(cast=True)
+
+ def Insn_Ev_Iz(self):
+ choices = [(self.Opr_Ew(cast=True), self.Opr_Iw()),
+ (self.Opr_Ed(cast=True), self.Opr_Id())]
+ if self.mode == 64:
+ choices.append((self.Opr_Eq(cast=True), self.Opr_Id()))
+ return random.choice(choices)
+ Insn_Ev_sIz = Insn_Ev_Iz
+
+ def Insn_Gv_Ev(self):
+ x, y = self.Insn_Ev_Gv();
+ return (y, x)
+
+ def Insn_Gy_Ev(self):
+ x, y = self.Insn_Ev_Gy();
+ return (y, x)
+
+ def Insn_Gv_Eb(self):
+ return (self.Opr_Gv(), self.Opr_Eb(cast=True))
+
+ def Insn_Gv_Ew(self):
+ choices = [(self.Opr_Gw(), self.Opr_Ew(cast=False)),
+ (self.Opr_Gd(), self.Opr_Ew(cast=True))]
+ if self.mode == 64:
+ choices.append((self.Opr_Gq(), self.Opr_Ew(cast=True)))
+ return random.choice(choices)
+
+ def Insn_V_Q(self):
+ return [self.Opr_V(), self.Opr_Q(cast=True)]
+
+ def Insn_Eb_Ib(self):
+ return (self.Opr_Eb(cast=True), self.Opr_Ib(cast=False))
+
+ def Insn_Eb_I1(self):
+ return (self.Opr_Eb(cast=True), self.Opr_I1())
+
+ def Insn_Ev_I1(self):
+ return (self.Opr_Ev(cast=True), self.Opr_I1())
+
+ def Insn_Ev_Ib(self):
+ return (self.Opr_Ev(cast=True), self.Opr_Ib(cast=False))
+ Insn_Ev_sIb = Insn_Ev_Ib
+
+ def Insn_Ev_Gv_Ib(self):
+ choices = [ (self.Opr_Ew(), self.Opr_Gw(), self.Opr_Ib(cast=False)),
+ (self.Opr_Ed(), self.Opr_Gd(), self.Opr_Ib(cast=False)) ]
+ if self.mode == 64:
+ choices.append(
+ (self.Opr_Eq(), self.Opr_Gq(), self.Opr_Ib(cast=False)) )
+ return random.choice(choices)
+ Insn_Ev_Gv_sIb = Insn_Ev_Gv_Ib
+
+ def Insn_Ev_V_Ib(self):
+ return (self.Opr_Ev(cast=True), self.Opr_V(), self.Opr_Ib(cast=False))
+
+ def Insn_Ed_V_Ib(self):
+ return (self.Opr_Ed(cast=False), self.Opr_V(), self.Opr_Ib(cast=False))
+
+ def Insn_Ew_V_Ib(self):
+ return (self.Opr_Ew(cast=True), self.Opr_V(), self.Opr_Ib(cast=False))
+
+ def generate_yasm( self, mode, seed ):
+ opr_combos = {}
+ random.seed( seed )
+ print "[bits %s]" % mode
+ for insn in self.InsnTable:
+ if insn[ 'mnemonic' ] in self.ExcludeList:
+ continue
+ if insn[ 'vendor' ] == 'intel':
+ continue
+ if '/m' in insn['opcext']:
+ mode = insn['opcext']['/m']
+ if ( (mode == '00' and self.mode == 64) or
+ (mode == '01' and self.mode != 64) ):
+ continue
+ if '/o' in insn['opcext']:
+ osize = insn['opcext']['/o']
+ if (osize == '02' and self.mode != 64):
+ continue
+ if 'def64' in insn[ 'prefixes' ] and mode != '64':
+ continue
+
+ if len(insn['operands']) == 0:
+ continue
+ # print "\t%s" % insn['mnemonic']
+
+ if ( "Jb" in insn['operands'] or
+ "Jz" in insn['operands'] ):
+ continue
+
+ fusedName = '_'.join(insn['operands'])
+ if fusedName not in opr_combos:
+ opr_combos[fusedName] = { 'covered' : False, 'freq' : 0 }
+ opr_combos[fusedName]['freq'] += 1
+
+ fn = getattr(self, "Insn_" + fusedName , None)
+ if fn is not None:
+ operands = ", ".join(fn())
+ else:
+ oprgens = [ getattr(self, "Opr_" + opr, None)
+ for opr in insn['operands'] ]
+ if None not in oprgens:
+ operands = ", ".join([ oprgen() for oprgen in oprgens ])
+ else:
+ operands = None
+ if operands is not None:
+ print "\t%s %s" % (insn['mnemonic'], operands)
+ opr_combos[fusedName]['covered'] = True
+
+ # stats
+ total = 0
+ covered = 0
+ for combo in sorted(opr_combos, key=lambda k: opr_combos[k]['freq']):
+ total += 1
+ is_covered = opr_combos[combo]['covered']
+ covered += (1 if is_covered else 0)
+ if not is_covered:
+ sys.stderr.write("==> %12s : %5d\n" %
+ (combo, opr_combos[combo]['freq']))
+ sys.stderr.write("MODE%s: Coverage = %d / %d (%d%%)\n" %
+ (self.mode, covered, total, (100 * covered / total)))
+
+def main():
+ generator = UdTestGenerator(int(sys.argv[3]))
+ optableXmlParser = ud_optable.UdOptableXmlParser()
+ optableXmlParser.parse( sys.argv[ 1 ], generator.addInsnDef )
+
+ generator.generate_yasm( sys.argv[ 3 ], int( sys.argv[ 2 ] ) )
+
+if __name__ == '__main__':
+ main()
diff --git a/UefiDriver/udis86/tests/symresolve.c b/UefiDriver/udis86/tests/symresolve.c
new file mode 100644
index 0000000..cb91c63
--- /dev/null
+++ b/UefiDriver/udis86/tests/symresolve.c
@@ -0,0 +1,53 @@
+#include
+#include
+
+#if defined(__amd64__) || defined(__x86_64__)
+# define FMT "l"
+#else
+# define FMT "ll"
+#endif
+
+uint8_t bin[] = {
+ 0x01, 0xc0, 0xeb, 0x11, 0x01, 0xc0, 0xe8, 0x14,
+ 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x74,
+ 0x02, 0x01, 0xc0, 0x90, 0x90, 0xeb, 0xfe, 0x90,
+ 0x90, 0xeb, 0xf8, 0x90, 0x90, 0x74, 0xf6, 0x90,
+ 0x90, 0xe8, 0xf4, 0xff, 0xff, 0xff
+};
+
+static const char*
+resolve(struct ud *u, uint64_t addr, int64_t *offset)
+{
+ *offset = addr - 0x15;
+ return "target";
+}
+
+static void
+dis_loop(struct ud *ud_obj)
+{
+ while (ud_disassemble(ud_obj) != 0) {
+ printf("%016llx %-16s %s\n", ud_insn_off(ud_obj),
+ ud_insn_hex(ud_obj),
+ ud_insn_asm(ud_obj));
+ }
+}
+
+int
+main() {
+ ud_t ud_obj;
+ ud_init(&ud_obj);
+ ud_set_mode(&ud_obj, 32);
+ ud_set_input_buffer(&ud_obj, bin, sizeof(bin));
+ ud_set_syntax(&ud_obj, UD_SYN_INTEL);
+
+ printf("==> Without Symbol Resolution\n");
+ dis_loop(&ud_obj);
+
+ printf("==> With Symbol Resolution\n");
+ ud_set_pc(&ud_obj, 0);
+ ud_set_input_buffer(&ud_obj, bin, sizeof(bin));
+ ud_set_sym_resolver(&ud_obj, &resolve);
+ dis_loop(&ud_obj);
+
+ return 0;
+}
diff --git a/UefiDriver/udis86/tests/symresolve.ref b/UefiDriver/udis86/tests/symresolve.ref
new file mode 100644
index 0000000..b0b5eac
--- /dev/null
+++ b/UefiDriver/udis86/tests/symresolve.ref
@@ -0,0 +1,42 @@
+==> Without Symbol Resolution
+0000000000000000 01c0 add eax, eax
+0000000000000002 eb11 jmp 0x15
+0000000000000004 01c0 add eax, eax
+0000000000000006 e814000000 call 0x1f
+000000000000000b 01c0 add eax, eax
+000000000000000d 01c0 add eax, eax
+000000000000000f 7402 jz 0x13
+0000000000000011 01c0 add eax, eax
+0000000000000013 90 nop
+0000000000000014 90 nop
+0000000000000015 ebfe jmp 0x15
+0000000000000017 90 nop
+0000000000000018 90 nop
+0000000000000019 ebf8 jmp 0x13
+000000000000001b 90 nop
+000000000000001c 90 nop
+000000000000001d 74f6 jz 0x15
+000000000000001f 90 nop
+0000000000000020 90 nop
+0000000000000021 e8f4ffffff call 0x1a
+==> With Symbol Resolution
+0000000000000000 01c0 add eax, eax
+0000000000000002 eb11 jmp target
+0000000000000004 01c0 add eax, eax
+0000000000000006 e814000000 call target+10
+000000000000000b 01c0 add eax, eax
+000000000000000d 01c0 add eax, eax
+000000000000000f 7402 jz target-2
+0000000000000011 01c0 add eax, eax
+0000000000000013 90 nop
+0000000000000014 90 nop
+0000000000000015 ebfe jmp target
+0000000000000017 90 nop
+0000000000000018 90 nop
+0000000000000019 ebf8 jmp target-2
+000000000000001b 90 nop
+000000000000001c 90 nop
+000000000000001d 74f6 jz target
+000000000000001f 90 nop
+0000000000000020 90 nop
+0000000000000021 e8f4ffffff call target+5
diff --git a/UefiDriver/udis86/udcli/Makefile.am b/UefiDriver/udis86/udcli/Makefile.am
new file mode 100644
index 0000000..dfe2784
--- /dev/null
+++ b/UefiDriver/udis86/udcli/Makefile.am
@@ -0,0 +1,5 @@
+bin_PROGRAMS = udcli
+udcli_SOURCES = udcli.c
+udcli_CFLAGS = -I$(top_srcdir)/libudis86 -I$(top_srcdir)
+udcli_LDADD = $(top_builddir)/libudis86/libudis86.la
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/UefiDriver/udis86/udcli/Makefile.in b/UefiDriver/udis86/udcli/Makefile.in
new file mode 100644
index 0000000..394e8f3
--- /dev/null
+++ b/UefiDriver/udis86/udcli/Makefile.in
@@ -0,0 +1,617 @@
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2012 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__make_dryrun = \
+ { \
+ am__dry=no; \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+ *) \
+ for am__flg in $$MAKEFLAGS; do \
+ case $$am__flg in \
+ *=*|--*) ;; \
+ *n*) am__dry=yes; break;; \
+ esac; \
+ done;; \
+ esac; \
+ test $$am__dry = yes; \
+ }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = udcli$(EXEEXT)
+subdir = udcli
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/build/depcomp
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/build/m4/libtool.m4 \
+ $(top_srcdir)/build/m4/ltoptions.m4 \
+ $(top_srcdir)/build/m4/ltsugar.m4 \
+ $(top_srcdir)/build/m4/ltversion.m4 \
+ $(top_srcdir)/build/m4/lt~obsolete.m4 \
+ $(top_srcdir)/m4/ax_compare_version.m4 \
+ $(top_srcdir)/m4/ax_prog_sphinx_version.m4 \
+ $(top_srcdir)/m4/ax_prog_yasm_version.m4 \
+ $(top_srcdir)/m4/ax_with_prog.m4 \
+ $(top_srcdir)/m4/ax_with_python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_udcli_OBJECTS = udcli-udcli.$(OBJEXT)
+udcli_OBJECTS = $(am_udcli_OBJECTS)
+udcli_DEPENDENCIES = $(top_builddir)/libudis86/libudis86.la
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+udcli_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(udcli_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/build/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(udcli_SOURCES)
+DIST_SOURCES = $(udcli_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SPHINX_BUILD = @SPHINX_BUILD@
+SPHINX_VERSION = @SPHINX_VERSION@
+STRIP = @STRIP@
+VERSION = @VERSION@
+YASM = @YASM@
+YASM_VERSION = @YASM_VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+udcli_SOURCES = udcli.c
+udcli_CFLAGS = -I$(top_srcdir)/libudis86 -I$(top_srcdir)
+udcli_LDADD = $(top_builddir)/libudis86/libudis86.la
+MAINTAINERCLEANFILES = Makefile.in
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign udcli/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign udcli/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+udcli$(EXEEXT): $(udcli_OBJECTS) $(udcli_DEPENDENCIES) $(EXTRA_udcli_DEPENDENCIES)
+ @rm -f udcli$(EXEEXT)
+ $(AM_V_CCLD)$(udcli_LINK) $(udcli_OBJECTS) $(udcli_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udcli-udcli.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+udcli-udcli.o: udcli.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(udcli_CFLAGS) $(CFLAGS) -MT udcli-udcli.o -MD -MP -MF $(DEPDIR)/udcli-udcli.Tpo -c -o udcli-udcli.o `test -f 'udcli.c' || echo '$(srcdir)/'`udcli.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/udcli-udcli.Tpo $(DEPDIR)/udcli-udcli.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='udcli.c' object='udcli-udcli.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(udcli_CFLAGS) $(CFLAGS) -c -o udcli-udcli.o `test -f 'udcli.c' || echo '$(srcdir)/'`udcli.c
+
+udcli-udcli.obj: udcli.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(udcli_CFLAGS) $(CFLAGS) -MT udcli-udcli.obj -MD -MP -MF $(DEPDIR)/udcli-udcli.Tpo -c -o udcli-udcli.obj `if test -f 'udcli.c'; then $(CYGPATH_W) 'udcli.c'; else $(CYGPATH_W) '$(srcdir)/udcli.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/udcli-udcli.Tpo $(DEPDIR)/udcli-udcli.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='udcli.c' object='udcli-udcli.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(udcli_CFLAGS) $(CFLAGS) -c -o udcli-udcli.obj `if test -f 'udcli.c'; then $(CYGPATH_W) 'udcli.c'; else $(CYGPATH_W) '$(srcdir)/udcli.c'; fi`
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/UefiDriver/udis86/udcli/udcli.c b/UefiDriver/udis86/udcli/udcli.c
new file mode 100644
index 0000000..9b044ca
--- /dev/null
+++ b/UefiDriver/udis86/udcli/udcli.c
@@ -0,0 +1,273 @@
+/* udis86 - udcli/udcli.c
+ *
+ * Copyright (c) 2002-2013 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include
+#include
+#include
+#include
+#ifdef _MSC_VER
+#include "..\udis86.h"
+#define PACKAGE_STRING "udis86 pre-1.8"
+#else
+#include
+#include
+#endif
+
+#if defined(__APPLE__)
+# define FMT64 "ll"
+#elif defined(__amd64__) || defined(__x86_64__)
+# define FMT64 "l"
+# else
+# define FMT64 "ll"
+#endif
+
+#if defined(__DJGPP__) || defined(_WIN32)
+# include
+# include
+#endif
+
+#ifdef __DJGPP__
+# include /* for isatty() */
+# define _setmode setmode
+# define _fileno fileno
+# define _O_BINARY O_BINARY
+#endif
+
+/* help string */
+static char help[] =
+{
+ "Usage: %s [-option[s]] file\n"
+ "Options:\n"
+ " -16 : Set the disassembly mode to 16 bits. \n"
+ " -32 : Set the disassembly mode to 32 bits. (default)\n"
+ " -64 : Set the disassembly mode to 64 bits.\n"
+ " -intel : Set the output to INTEL (NASM like) syntax. (default)\n"
+ " -att : Set the output to AT&T (GAS like) syntax.\n"
+ " -v : Set vendor. = {intel, amd}.\n"
+ " -o : Set the value of program counter to . (default = 0)\n"
+ " -s : Set the number of bytes to skip before disassembly to .\n"
+ " -c : Set the number of bytes to disassemble to .\n"
+ " -x : Set the input mode to whitespace separated 8-bit numbers in\n"
+ " hexadecimal representation. Example: 0f 01 ae 00\n"
+ " -noff : Do not display the offset of instructions.\n"
+ " -nohex : Do not display the hexadecimal code of instructions.\n"
+ " -h : Display this help message.\n"
+ " --version: Show version.\n"
+ "\n"
+ "Udcli is a front-end to the Udis86 Disassembler Library.\n"
+ "http://udis86.sourceforge.net/\n"
+};
+
+FILE* fptr = NULL;
+uint64_t o_skip = 0;
+uint64_t o_count = 0;
+unsigned char o_do_count= 0;
+unsigned char o_do_off = 1;
+unsigned char o_do_hex = 1;
+unsigned char o_do_x = 0;
+unsigned o_vendor = UD_VENDOR_AMD;
+
+int input_hook_x(ud_t* u);
+int input_hook_file(ud_t* u);
+
+int main(int argc, char **argv)
+{
+ char *prog_path = *argv;
+ char *s;
+ ud_t ud_obj;
+
+ /* initialize */
+ ud_init(&ud_obj);
+ ud_set_mode(&ud_obj, 32);
+ ud_set_syntax(&ud_obj, UD_SYN_INTEL);
+
+#ifdef __DJGPP__
+ if ( !isatty( fileno( stdin ) ) )
+#endif
+#if defined(__DJGPP) || defined(_WIN32)
+ _setmode(_fileno(stdin), _O_BINARY);
+#endif
+
+ fptr = stdin;
+
+ argv++;
+
+ /* loop through the args */
+ while(--argc > 0) {
+ if (strcmp(*argv, "-h") == 0) {
+ printf(help, prog_path);
+ exit(EXIT_SUCCESS);
+ } else if (strcmp(*argv,"-16") == 0) {
+ ud_set_mode(&ud_obj, 16);
+ } else if (strcmp(*argv,"-32") == 0) {
+ ud_set_mode(&ud_obj, 32);
+ } else if (strcmp(*argv,"-64") == 0) {
+ ud_set_mode(&ud_obj, 64);
+ } else if (strcmp(*argv,"-intel") == 0)
+ ud_set_syntax(&ud_obj, UD_SYN_INTEL);
+ else if (strcmp(*argv,"-att") == 0)
+ ud_set_syntax(&ud_obj, UD_SYN_ATT);
+ else if (strcmp(*argv,"-noff") == 0)
+ o_do_off = 0;
+ else if (strcmp(*argv,"-nohex") == 0)
+ o_do_hex = 0;
+ else if (strcmp(*argv,"-x") == 0)
+ o_do_x = 1;
+ else if (strcmp(*argv,"-s") == 0)
+ if (--argc) {
+ s = *(++argv);
+ if (sscanf(s, "%" FMT64 "u", &o_skip) == 0)
+ fprintf(stderr, "Invalid value given for -s.\n");
+ } else {
+ fprintf(stderr, "No value given for -s.\n");
+ printf(help, prog_path);
+ exit(EXIT_FAILURE);
+ }
+ else if (strcmp(*argv,"-c") == 0)
+ if (--argc) {
+ o_do_count= 1;
+ s = *(++argv);
+ if (sscanf(s, "%" FMT64 "u", &o_count) == 0)
+ fprintf(stderr, "Invalid value given for -c.\n");
+ } else {
+ fprintf(stderr, "No value given for -c.\n");
+ printf(help, prog_path);
+ exit(EXIT_FAILURE);
+ }
+ else if (strcmp(*argv,"-v") == 0)
+ if (--argc) {
+ s = *(++argv);
+ if (*s == 'i')
+ ud_set_vendor(&ud_obj, UD_VENDOR_INTEL);
+ } else {
+ fprintf(stderr, "No value given for -v.\n");
+ printf(help, prog_path);
+ exit(EXIT_FAILURE);
+ }
+ else if (strcmp(*argv,"-o") == 0) {
+ if (--argc) {
+ uint64_t pc = 0;
+ s = *(++argv);
+ if (sscanf(s, "%" FMT64 "x", &pc) == 0)
+ fprintf(stderr, "Invalid value given for -o.\n");
+ ud_set_pc(&ud_obj, pc);
+ } else {
+ fprintf(stderr, "No value given for -o.\n");
+ printf(help, prog_path);
+ exit(EXIT_FAILURE);
+ }
+ } else if ( strcmp( *argv, "--version" ) == 0 ) {
+ fprintf(stderr, "%s\n", PACKAGE_STRING );
+ exit(0);
+ } else if((*argv)[0] == '-') {
+ fprintf(stderr, "Invalid option %s.\n", *argv);
+ printf(help, prog_path);
+ exit(EXIT_FAILURE);
+ } else {
+ static int i = 0;
+ s = *argv;
+ if (i) {
+ fprintf(stderr, "Multiple files specified.\n");
+ exit(EXIT_FAILURE);
+ } else i = 1;
+ if ((fptr = fopen(s, "rb")) == NULL) {
+ fprintf(stderr, "Failed to open file: %s.\n", s);
+ exit(EXIT_FAILURE);
+ }
+ }
+ argv++;
+ }
+
+ if (o_do_x)
+ ud_set_input_hook(&ud_obj, input_hook_x);
+ else ud_set_input_hook(&ud_obj, input_hook_file);
+
+ if (o_skip) {
+ o_count += o_skip;
+ ud_input_skip(&ud_obj, o_skip);
+ }
+
+ /* disassembly loop */
+ while (ud_disassemble(&ud_obj)) {
+ if (o_do_off)
+ printf("%016" FMT64 "x ", ud_insn_off(&ud_obj));
+ if (o_do_hex) {
+ const char* hex1, *hex2;
+ hex1 = ud_insn_hex(&ud_obj);
+ hex2 = hex1 + 16;
+ printf("%-16.16s %-24s", hex1, ud_insn_asm(&ud_obj));
+ if (strlen(hex1) > 16) {
+ printf("\n");
+ if (o_do_off)
+ printf("%15s -", "");
+ printf("%-16s", hex2);
+ }
+ }
+ else printf(" %-24s", ud_insn_asm(&ud_obj));
+
+ printf("\n");
+ }
+
+ exit(EXIT_SUCCESS);
+ return 0;
+}
+
+int input_hook_x(ud_t* u)
+{
+ unsigned int c, i;
+
+ if (o_do_count) {
+ if (! o_count)
+ return UD_EOI;
+ else --o_count;
+ }
+
+ i = fscanf(fptr, "%x", &c);
+
+ if (i == EOF)
+ return UD_EOI;
+ if (i == 0) {
+ fprintf(stderr, "Error: Invalid input, should be in hexadecimal form (8-bit).\n");
+ return UD_EOI;
+ }
+ if (c > 0xFF)
+ fprintf(stderr, "Warning: Casting non-8-bit input (%x), to %x.\n", c, c & 0xFF);
+ return (int) (c & 0xFF);
+}
+
+int input_hook_file(ud_t* u)
+{
+ int c;
+
+ if (o_do_count) {
+ if (! o_count) {
+ return -1;
+ } else o_count -- ;
+ }
+
+ if ((c = fgetc(fptr)) == EOF)
+ return UD_EOI;
+ return c;
+}
diff --git a/UefiDriver/udis86/udis86.h b/UefiDriver/udis86/udis86.h
new file mode 100644
index 0000000..bdd3857
--- /dev/null
+++ b/UefiDriver/udis86/udis86.h
@@ -0,0 +1,33 @@
+/* udis86 - udis86.h
+ *
+ * Copyright (c) 2002-2009 Vivek Thampi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef UDIS86_H
+#define UDIS86_H
+
+#include "libudis86/types.h"
+#include "libudis86/extern.h"
+#include "libudis86/itab.h"
+
+#endif
diff --git a/UefiDriver/utils.c b/UefiDriver/utils.c
new file mode 100644
index 0000000..16abbfd
--- /dev/null
+++ b/UefiDriver/utils.c
@@ -0,0 +1,97 @@
+#include "utils.h"
+#include "udis86/udis86.h"
+
+// Libraries
+#include
+#include
+
+VOID UtilPrintLoadedImageInfo( IN EFI_LOADED_IMAGE *ImageInfo )
+{
+ Print( L"\r\n[+] %s\r\n", ConvertDevicePathToText( ImageInfo->FilePath, TRUE, TRUE ) );
+ Print( L" ->ImageBase = %lx\r\n", ImageInfo->ImageBase );
+ Print( L" ->ImageSize = %lx\r\n", ImageInfo->ImageSize );
+}
+
+VOID UtilWaitForKey( VOID )
+{
+ UINTN index = 0;
+ EFI_INPUT_KEY key = { 0 };
+ gBS->WaitForEvent( 1, &gST->ConIn->WaitForKey, &index );
+ gST->ConIn->ReadKeyStroke( gST->ConIn, &key );
+}
+
+EFI_STATUS UtilFindPattern( IN UINT8* Pattern, IN UINT8 Wildcard, IN UINT32 PatternLength, VOID* Base, UINT32 Size, OUT VOID ** Found )
+{
+ if (Found == NULL || Pattern == NULL || Base == NULL)
+ return EFI_INVALID_PARAMETER;
+
+ for (UINT64 i = 0; i < Size - PatternLength; i++)
+ {
+ BOOLEAN found = TRUE;
+ for (UINT64 j = 0; j < PatternLength; j++)
+ {
+ if (Pattern[j] != Wildcard && Pattern[j] != ((UINT8*)Base)[i + j])
+ {
+ found = FALSE;
+ break;
+ }
+ }
+
+ if (found != FALSE)
+ {
+ *Found = (UINT8*)Base + i;
+ return EFI_SUCCESS;
+ }
+ }
+
+ return EFI_NOT_FOUND;
+}
+
+VOID* UtilCallAddress( IN VOID* CallAddress )
+{
+ UINT32 RelativeCallOffset = *(UINT32*)((UINT8*)CallAddress + 1);
+ return (VOID*)((UINT8*)CallAddress + RelativeCallOffset + 1 + sizeof( UINT32 ));
+}
+
+UINT32 UtilCalcRelativeCallOffset( IN VOID* CallAddress, IN VOID* TargetAddress )
+{
+ return (UINT32)(((UINT64)TargetAddress) - ((UINT64)CallAddress + 1 + sizeof( UINT32 )));
+}
+
+UINT32 UtilCodeSize( IN UINT8* CodeStart )
+{
+ for (int i = 1; i <= 1000; i++)
+ {
+ if (CodeStart[i - 1] == 0xCC)
+ return i - 1;
+ }
+ return 1000;
+}
+
+VOID UtilDisassembleCode( IN UINT8* CodeStart, IN VOID* VirtualAddress, IN UINT32 Length )
+{
+ ud_t u;
+ UINT32 codeSize = 0;
+ codeSize = Length;//UtilCodeSize( CodeStart );
+ ud_init( &u );
+ ud_set_input_buffer( &u, CodeStart, codeSize );
+ ud_set_pc( &u, (UINT64)VirtualAddress );
+ ud_set_mode( &u, 64 );
+ ud_set_syntax( &u, UD_SYN_INTEL );
+
+ while (ud_disassemble( &u ))
+ {
+ //int len = ud_insn_len(&u);
+ CHAR16 wcHex[256] = { 0 };
+ CHAR16 wcAsm[256] = { 0 };
+ uint64_t offset = ud_insn_off( &u );
+ const CHAR8* szHex = ud_insn_hex( &u );
+ const CHAR8* szAsm = ud_insn_asm( &u );
+ AsciiStrToUnicodeStr( szHex, (CHAR16*)wcHex );
+ AsciiStrToUnicodeStr( szAsm, (CHAR16*)wcAsm );
+ Print( L" %lx %-20s%-48s\n", offset, wcHex, wcAsm );
+ }
+}
+
+//for (int i = 1; i <= 64; i++)
+// Print( (i % 16 == 0) ? L"%02x\r\n" : (i % 8 == 0) ? L"%02x " : L"%02x ", ((UINT8*)oOslLoadImage)[i - 1] );
\ No newline at end of file
diff --git a/UefiDriver/utils.h b/UefiDriver/utils.h
new file mode 100644
index 0000000..336dc8d
--- /dev/null
+++ b/UefiDriver/utils.h
@@ -0,0 +1,42 @@
+#pragma once
+
+// Libraries
+#include
+
+// Protocols
+#include
+
+//
+// Print info about loaded image
+//
+VOID UtilPrintLoadedImageInfo( IN EFI_LOADED_IMAGE *ImageInfo );
+
+//
+// Wait for key to be pressed before further execution
+//
+VOID UtilWaitForKey( VOID );
+
+//
+// Find byte pattern starting at specified address
+//
+EFI_STATUS UtilFindPattern( IN UINT8* Pattern, IN UINT8 Wildcard, IN UINT32 PatternLength, VOID* Base, UINT32 Size, OUT VOID** Found );
+
+//
+// Get's call address from call instruction (0xE8)
+//
+VOID* UtilCallAddress( IN VOID* CallAddress );
+
+//
+// Calculates a relative offset to the target from the call address
+//
+UINT32 UtilCalcRelativeCallOffset( IN VOID* CallAddress, IN VOID* TargetAddress );
+
+//
+// Calculates code size by searching for next 0xCC INT3 instruction
+//
+UINT32 UtilCodeSize( IN UINT8* CodeStart );
+
+//
+// Displays x64 disassembly at specified address
+//
+VOID UtilDisassembleCode( IN UINT8* CodeStart, IN VOID* VirtualAddress, IN UINT32 Length );
\ No newline at end of file
diff --git a/bootkit.props b/bootkit.props
new file mode 100644
index 0000000..f5162bb
--- /dev/null
+++ b/bootkit.props
@@ -0,0 +1,81 @@
+
+
+
+
+ $(SolutionDir)..\edk2
+
+
+
+
+ .efi
+ $(SolutionDir)$(Platform)\$(Configuration)\obj\$(TargetName)\
+ $(EDK_PATH)\MdePkg\Include;$(EDK_PATH)\MdePkg\Include\X64;$(EDK_PATH)\CryptoPkg\Include;$(IncludePath)
+ $(SolutionDir)..\EDK-II\x64\Release\;$(LibraryPath)
+
+
+ ..\debugger\qemu.exe
+ -drive if=pflash,format=raw,file=OVMF-pure-efi.fd -drive file=fat:rw:..\samples\x64\release\,media=disk,if=virtio,format=raw -m 512 -M q35 -nodefaults -vga std
+ ..\..\debugger
+ Script
+ WindowsLocalDebugger
+
+
+
+ true
+ Level4
+ true
+ true
+ MinSpace
+ true
+ true
+ AnySuitable
+ SyncCThrow
+ false
+ false
+ true
+ $(SolutionDir)..\EDK-II\BaseLib\vshacks.h
+
+
+ true
+ false
+
+ /Gs32768 %(AdditionalOptions)
+
+
+
+
+ true
+ GlueLib.lib;BaseLib.lib;BaseDebugPrintErrorLevelLib.lib;BasePrintLib.lib;UefiLib.lib;UefiBootServicesTableLib.lib;UefiRuntimeServicesTableLib.lib;UefiDevicePathLibDevicePathProtocol.lib;UefiDebugLibConOut.lib;UefiMemoryLib.lib;UefiMemoryAllocationLib.lib;BaseSynchronizationLib.lib;UefiFileHandleLib.lib
+ DebugFastLink
+ EFI Boot Service Driver
+ Driver
+ true
+
+
+ UseFastLinkTimeCodeGeneration
+ 0
+ 32
+ false
+
+
+
+
+
+
+
+
+ /OPT:ICF=10 /IGNORE:4001 /IGNORE:4254 %(AdditionalOptions)
+ .rdata=.data
+ .xdata,D
+
+
+ EfiMain
+
+
+
+
+ $(EDK_PATH)
+ true
+
+
+
\ No newline at end of file
diff --git a/bootkit.sln b/bootkit.sln
new file mode 100644
index 0000000..85ee5e7
--- /dev/null
+++ b/bootkit.sln
@@ -0,0 +1,27 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UefiApplication", "UefiApplication\UefiApplication.vcxproj", "{79D78FD5-8F41-442F-944E-81774DC9DF39}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UefiDriver", "UefiDriver\UefiDriver.vcxproj", "{DF325AB7-67A6-473E-93FF-16955AFBC063}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {79D78FD5-8F41-442F-944E-81774DC9DF39}.Release|x64.ActiveCfg = Release|x64
+ {79D78FD5-8F41-442F-944E-81774DC9DF39}.Release|x64.Build.0 = Release|x64
+ {DF325AB7-67A6-473E-93FF-16955AFBC063}.Release|x64.ActiveCfg = Release|x64
+ {DF325AB7-67A6-473E-93FF-16955AFBC063}.Release|x64.Build.0 = Release|x64
+ {DF325AB7-67A6-473E-93FF-16955AFBC064}.Release|x64.ActiveCfg = Release|x64
+ {DF325AB7-67A6-473E-93FF-16955AFBC064}.Release|x64.Build.0 = Release|x64
+ {A2130067-15EA-4909-95E5-48CA36213CC4}.Release|x64.ActiveCfg = Release|x64
+ {A2130067-15EA-4909-95E5-48CA36213CC4}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal