]> rtime.felk.cvut.cz Git - lincan.git/commitdiff
Committed IXXAT iPC-I 165 (PCI) implemented by Radim Kalas from Unicontrols.cz.
authorppisa <ppisa>
Wed, 15 Jun 2005 12:02:30 +0000 (12:02 +0000)
committerppisa <ppisa>
Wed, 15 Jun 2005 12:02:30 +0000 (12:02 +0000)
This is initial unmodified code prepared against 0.3 version of the driver.
Small updates to mimic LinCAN core changes are required now.

lincan/include/ipci165.h [new file with mode: 0644]
lincan/include/ipci165_fw.h [new file with mode: 0644]
lincan/include/kthread.h [new file with mode: 0644]
lincan/include/main.h
lincan/src/Makefile.omk
lincan/src/boardlist.c
lincan/src/ipci165.c [new file with mode: 0644]
lincan/src/ipci165_fw.c [new file with mode: 0644]
lincan/src/kthread.c [new file with mode: 0644]

diff --git a/lincan/include/ipci165.h b/lincan/include/ipci165.h
new file mode 100644 (file)
index 0000000..7f50484
--- /dev/null
@@ -0,0 +1,182 @@
+/* ipci165.h
+ * Linux CAN-bus device driver for IXXAT iPC-I 165 (PCI) compatible HW.
+ * Written for new CAN driver version by Radim Kalas
+ * email:kalas@unicontrols.cz
+ * This software is released under the GPL-License.
+ * Version lincan-0.3  17 Jun 2004
+ */ 
+
+#include "../include/kthread.h"
+
+/* PCI device identification */
+#define IPCI165_VENDOR_ID    PCI_VENDOR_ID_PLX
+#define IPCI165_DEVICE_ID    PCI_DEVICE_ID_PLX_9050
+
+#define IPCI165_SUBSYSTEM_ID 0x1067   /* subsystem ID for IXXAT iPC-I 165 card */
+#define CP350_SUBSYSTEM_ID   0x1089   /* subsystem ID for PEP/Kontron CP350 card */
+
+
+/*****************************************************************************
+ * Control Registers Memory specific defines                                 *
+ *****************************************************************************/
+#define CRM_SIZE             0x80     /* region size */
+
+#define CRM_UCR              0x50     /* user control register */
+#define CRM_ICR              0x4C     /* interrupt control register */
+
+/*****************************************************************************
+ * DP-RAM (PCI Memory Window 2) specific defines                             *
+ *****************************************************************************/
+#define DPRAM_SIZE                 8*1024   /* DP-RAM size - PCI Memory Window 2 */
+
+#define OF_CMD_BUFFER                   0   /* Offset of Command Buffer \
+                                               (normal mode) */
+
+#define OF_CH1_TX_QUEUE              0x50   /* offset to TX queue for channel 1 */
+#define OF_CH2_TX_QUEUE             0x438   /* offset to TX queue for channel 2 */
+#define OF_CH1_RX_QUEUE             0x820   /* offset to RX queue for channel 1 */
+#define OF_CH2_RX_QUEUE             0xc08   /* offset to RX queue for channel 2 */
+
+#define OF_STATUS_BUFFER            0xff0   /* offset to status buffer */
+
+#define BCI_QUEUE_SIZE                 50   /* Size of TX and RX message queues \
+                                               (number of messages) */
+#define BCI_MSG_SIZE                   20   /* Size of one message */
+
+/*****************************************************************************
+ * Bootstrap loader specific defines                                         *
+ *****************************************************************************/
+
+/* identification strings offsets & lengths */
+#define BOARD_NAME_OFS               0x00   /* Name (string) */
+#define BOARD_NAME_LEN                  7   /* String length */
+
+#define HW_VERSION_OFS               0x20   /* Version (string) */
+#define HW_VERSION_LEN                  6   /* String length */
+
+#define MODE_OFS                    0x102   /* Mode (string) */
+#define MODE_LEN                       14   /* String length */
+
+#define TYPE_LEN                       11   /* Type length */
+
+/* FW loader command buffer offsets */
+#define OF_LD_SYNC                  0x100   /* Synchronization flag */
+#define OF_LD_CMD                   0x101   /* Command code */
+#define OF_LD_NUM                   0x102   /* Size of FW block */
+#define OF_LD_ADDRESS               0x104   /* Start Address of FW block */
+#define OF_LD_DATA                  0x108   /* Data of FW block */
+
+/* FW commands */
+#define LD_CMD_DOWNLOAD                 1   /* Download FW block */
+#define LD_CMD_START_FW                 2   /* Start FW */
+
+/*****************************************************************************
+ * BCI specific defines                                                      *
+ *****************************************************************************/
+
+/* BCI command buffer offsets */
+#define OF_BCI_SYNC                  0x00   /* Synchronization flag */
+#define OF_BCI_NUM                   0x01   /* Command size */
+#define OF_BCI_CMD                   0x04   /* Command code */
+#define OF_BCI_DATA                  0x05   /* Command data */
+#define BCI_CMD_MAX_LEN                76   /* Max command length */
+
+/* BCI commands */
+#define CMD_ID                          1   /* Get identification string */
+#define CMD_VERSION                     2   /* Get version number string */
+#define CMD_TEST                        3   /* Test the command buffer, invert data bytes */
+#define CMD_INIT_CAN                    4   /* Initialization of the CAN controller */
+#define CMD_START_CAN                   6   /* Start the CAN controller */
+#define CMD_STOP_CAN                    7   /* Stop the CAN controller */
+#define CMD_RESET_CAN                   8   /* Reset the CAN controller */
+#define CMD_SET_EXT_FILTER_MASK         9   /* Set global filter mask */
+#define CMD_CONFIG_RX_QUEUE            11   /* Config receive queue mode */
+#define CMD_GET_BOARD_INFO             12   /* Get board information */
+#define CMD_START_TIMER                13   /* Start cyclic timer */
+#define CMD_STOP_TIMER                 14   /* Stop cyclic timer */
+#define CMD_SET_ACC_MASK               15   /* Set acceptance mask */
+
+/* CMD_BOARD_INFO offsets */
+#define BOARD_INFO_SIZE                26   /* Size */
+#define OF_BOARD_INFO_VER               1   /* Version in BCD, UINT16 */
+#define OF_BOARD_INFO_CHIPS             3   /* Num of chips, UINT16 */
+#define OF_BOARD_INFO_CHIP1_TYPE        5   /* Type of first chip, UINT8[10] */
+#define OF_BOARD_INFO_CHIP2_TYPE       15   /* Type of second chip, UINT8[10] */
+
+/* baud rates BTR0, BTR1 for SJA1000 */
+#define BCI_10KB                0x67,0x2F
+#define BCI_20KB                0x53,0x2F
+#define BCI_50KB                0x47,0x2F
+#define BCI_100KB               0x43,0x2F
+#define BCI_125KB               0x03,0x1C
+#define BCI_250KB               0x01,0x1C
+#define BCI_500KB               0x00,0x1C
+#define BCI_1000KB              0x00,0x14
+
+#define CAN_FRAME_MIN_BIT_LEN          47   /* Min no of bits in CAN standard data frame */
+#define CAN_FRAME_MAX_BIT_LEN         111   /* Max no of bits in CAN standard data frame */
+
+/* BCI_CONFIG_RX Queue Modes */
+#define BCI_POLL_MODE                   0
+#define BCI_LATENCY_MODE                1
+#define BCI_THROUGHPUT_MODE             2
+
+/* BCI queue info */
+struct bci_queue_t {
+  int           idx;                       /* points to the active record in buffer */
+  unsigned long addr;                      /* start address of the message queue    */
+};
+
+/* ipci165 chip data */
+struct ipci165_chip_t {
+  struct bci_queue_t rx_queue;             /* RX queue info */
+  struct bci_queue_t tx_queue;             /* TX queue info */
+  kthread_t  kthread;                      /* kernel thread info  */
+  long       flags;                        /* flag for syncing with kernel thread */
+};
+
+#define CHIP_FLAG_BUS_OFF               1  /* bus-off signal to kthread */
+#define CHIP_FLAG_RESET                 2  /* chip is being reseted */
+
+
+/* RX & TX Queue message structure */
+#define BCI_MSG_STATUS                  0  /* status       (U8) */
+#define BCI_MSG_NUM                     1  /* size         (U8) */
+#define BCI_MSG_TIMESTAMP               2  /* timestamp    (U32)*/
+#define BCI_MSG_TYPE                    6  /* message type (U8) */
+
+/* CAN message */
+#define BCI_MSG_FRAME                   7  /* frame info   (U8) */
+#define BCI_MSG_ID                      8  /* ID 11/29b    (U16/U32) */
+#define BCI_MSG_STD_DATA               10  /* message data */
+#define BCI_MSG_EXT_DATA               12  /* message data */
+
+/* status message */
+#define BCI_MSG_CAN_STATUS              8  /* status info  (U16) */
+
+#define BCI_MSG_STATUS_FREE             0  /* message buffer is free */
+#define BCI_MSG_STATUS_FULL             1  /* message buffer is used */
+
+#define BCI_MSG_TYPE_CAN                0  /* message containing CAN frame */
+#define BCI_MSG_TYPE_STATUS             1  /* message containing status info */
+
+#define BCI_MSG_FRAME_RTR            0x40  /* RTR flag          */
+#define BCI_MSG_FRAME_EXT            0x80  /* Extended Frame    */
+
+#define BCI_TIMESTAMP_RES             125  /* Time stamp resolution in usec */
+
+/* status buffer */
+#define OF_CAN1_STATUS    (OF_STATUS_BUFFER + 0)
+#define OF_CAN1_LOAD      (OF_STATUS_BUFFER + 2)
+#define OF_CAN2_STATUS    (OF_STATUS_BUFFER + 4)
+#define OF_CAN2_LOAD      (OF_STATUS_BUFFER + 6)
+#define OF_CPU_LOAD       (OF_STATUS_BUFFER + 8)
+#define OF_LIFE_COUNTER   (OF_STATUS_BUFFER + 10)
+
+#define BCI_CAN_STATUS_INIT           0x0001 /* ctrl is in init mode */
+#define BCI_CAN_STATUS_WARNING_LEVEL  0x0002 /* warning level has been reached */
+#define BCI_CAN_STATUS_BUS_OFF        0x0004 /* ctrl disconnected from net */
+#define BCI_CAN_STATUS_DATA_OVERRUN   0x0008 /* overrun of can message happend */
+#define BCI_CAN_STATUS_RX             0x0010 /* ctrl is recieving */
+#define BCI_CAN_STATUS_TX             0x0020 /* ctrl is sending */
+#define BCI_CAN_STATUS_QUEUE_OVERRUN  0x0100 /* queue overrun */
diff --git a/lincan/include/ipci165_fw.h b/lincan/include/ipci165_fw.h
new file mode 100644 (file)
index 0000000..d0a0da4
--- /dev/null
@@ -0,0 +1,15 @@
+/* ipci165_fw.h
+ * Linux CAN-bus device driver firmware for IXXAT iPC-I 165 (PCI) compatible HW.
+ *
+ * email:kalas@unicontrols.cz
+ * This software is released under the GPL-License.
+ * Version lincan-0.3  17 Jun 2004
+ */
+
+struct ipci165_fw_t {
+  unsigned char len;
+  unsigned long addr;
+  unsigned char a_data[16];
+};
+
+extern struct ipci165_fw_t ipci165_fw[];
diff --git a/lincan/include/kthread.h b/lincan/include/kthread.h
new file mode 100644 (file)
index 0000000..1450f81
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef _KTHREAD_H
+#define _KTHREAD_H
+#include <linux/config.h>
+#include <linux/version.h>
+
+#include <linux/kernel.h>
+#include <linux/sched.h>
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40))
+  #include <linux/tqueue.h>
+  #define tasklet_struct tq_struct
+#else
+  #include <linux/devfs_fs_kernel.h>
+#endif
+
+#include <linux/wait.h>
+#include <linux/interrupt.h>
+
+#include <asm/unistd.h>
+#include <asm/semaphore.h>
+
+/* a structure to store all information we need
+   for our thread */
+typedef struct kthread_struct
+{
+        /* private data */
+
+        /* Linux task structure of thread */
+        struct task_struct *thread;
+        /* Task queue/Tasklet need to launch thread */
+        struct tasklet_struct tq;
+        /* function to be started as thread */
+        void (*function) (struct kthread_struct *kthread);
+        /* semaphore needed on start and creation of thread. */
+        struct semaphore startstop_sem;
+
+        /* public data */
+
+        /* queue thread is waiting on. Gets initialized by
+           init_kthread, can be used by thread itself.
+        */
+        wait_queue_head_t queue;
+        /* flag to tell thread whether to die or not.
+           When the thread receives a signal, it must check
+           the value of terminate and call exit_kthread and terminate
+           if set.
+        */
+        int terminate;
+        /* additional data to pass to kernel thread */
+        void *arg;
+} kthread_t;
+
+/* prototypes */
+
+/* start new kthread (called by creator) */
+void start_kthread(void (*func)(kthread_t *), kthread_t *kthread);
+
+/* stop a running thread (called by "killer") */
+void stop_kthread(kthread_t *kthread);
+
+/* setup thread environment (called by new thread) */
+void init_kthread(kthread_t *kthread, char *name);
+
+/* cleanup thread environment (called by thread upon receiving termination signal) */
+void exit_kthread(kthread_t *kthread);
+
+#endif
index f7afa85a46fc0eab7f04204115207f68288f8322..99a493dbb4f49a4cd1cb0adabdd8a6f95316722f 100644 (file)
@@ -80,6 +80,7 @@ struct candevice_t {
        int nr_all_chips;
        int nr_82527_chips;
        int nr_sja1000_chips;
        int nr_all_chips;
        int nr_82527_chips;
        int nr_sja1000_chips;
+       can_spinlock_t device_lock;
        struct canchip_t *chip[MAX_HW_CHIPS];
 
        struct hwspecops_t *hwspecops;
        struct canchip_t *chip[MAX_HW_CHIPS];
 
        struct hwspecops_t *hwspecops;
index 8280b8b28d255c8af1397b6aaf0d5d1e116f6864..b452ff8f6b37903c6851c0d1c352fc2ece856ca9 100644 (file)
@@ -2,7 +2,7 @@ lincan_cards_NAMES = pip pccan smartcan nsi cc_can104 ems_cpcpci \
                pc_i03 pcm3680 aim104 m437 pcccan ssv bfadcan pikronisa eb8245 \
                kv_pcican msmcan oscar adlink7841 unican virtual template
 
                pc_i03 pcm3680 aim104 m437 pcccan ssv bfadcan pikronisa eb8245 \
                kv_pcican msmcan oscar adlink7841 unican virtual template
 
-lincan_morecards_NAMES = hms30c7202_can ns_dev_can
+lincan_morecards_NAMES = hms30c7202_can ns_dev_can ipci165
 
 default_CONFIG = CONFIG_OC_LINCAN=y CONFIG_OC_LINCANRTL=n CONFIG_OC_LINCANVME=n
 default_CONFIG += CONFIG_OC_LINCAN_PORTIO_ONLY=n CONFIG_OC_LINCAN_MEMIO_ONLY=n
 
 default_CONFIG = CONFIG_OC_LINCAN=y CONFIG_OC_LINCANRTL=n CONFIG_OC_LINCANVME=n
 default_CONFIG += CONFIG_OC_LINCAN_PORTIO_ONLY=n CONFIG_OC_LINCAN_MEMIO_ONLY=n
@@ -28,6 +28,10 @@ ifeq ($(CONFIG_OC_LINCAN_CARD_unican),y)
 lincan_cards_SOURCES += unican_cl2.c
 endif
 
 lincan_cards_SOURCES += unican_cl2.c
 endif
 
+ifeq ($(CONFIG_OC_LINCAN_CARD_ipci165),y)
+lincan_cards_SOURCES += ipci165_fw.c kthread.c
+endif
+
 ifneq ($(filter hms30c7202_can ns_dev_can,$(lincan_cards_SELECTED)),)
 $(warning Not finished C_CAN support requested)
 lincan_cards_SOURCES += c_can.c c_can_irq.c 
 ifneq ($(filter hms30c7202_can ns_dev_can,$(lincan_cards_SELECTED)),)
 $(warning Not finished C_CAN support requested)
 lincan_cards_SOURCES += c_can.c c_can_irq.c 
index 739f30ed6ac97a0dd03ad2118566dc18c810c31f..1b0ddeb42b12c70f6532c62a409d76aaa251e925 100644 (file)
@@ -34,6 +34,7 @@ extern int msmcan_register(struct hwspecops_t *hwspecops);
 extern int unican_register(struct hwspecops_t *hwspecops);
 extern int unican_pci_register(struct hwspecops_t *hwspecops);
 extern int unican_vme_register(struct hwspecops_t *hwspecops);
 extern int unican_register(struct hwspecops_t *hwspecops);
 extern int unican_pci_register(struct hwspecops_t *hwspecops);
 extern int unican_vme_register(struct hwspecops_t *hwspecops);
+extern int ipci165_register(struct hwspecops_t *hwspecops);
 extern int pcan_dongle_register(struct hwspecops_t *hwspecops);
 extern int eb8245_register(struct hwspecops_t *hwspecops);
 extern int adlink7841_register(struct hwspecops_t *hwspecops);
 extern int pcan_dongle_register(struct hwspecops_t *hwspecops);
 extern int eb8245_register(struct hwspecops_t *hwspecops);
 extern int adlink7841_register(struct hwspecops_t *hwspecops);
@@ -109,6 +110,9 @@ const struct boardtype_t can_boardtypes[]={
     #ifdef CONFIG_OC_LINCAN_CARD_unican
        {"unican", unican_register, 1},
     #endif
     #ifdef CONFIG_OC_LINCAN_CARD_unican
        {"unican", unican_register, 1},
     #endif
+    #ifdef CONFIG_OC_LINCAN_CARD_ipci165
+       {"ipci165", ipci165_register, 0},
+    #endif
     #if defined(CONFIG_OC_LINCAN_CARD_unican)&&defined(CAN_ENABLE_PCI_SUPPORT)
        {"unican-pci", unican_pci_register, 0},
     #endif
     #if defined(CONFIG_OC_LINCAN_CARD_unican)&&defined(CAN_ENABLE_PCI_SUPPORT)
        {"unican-pci", unican_pci_register, 0},
     #endif
diff --git a/lincan/src/ipci165.c b/lincan/src/ipci165.c
new file mode 100644 (file)
index 0000000..3dbbcb3
--- /dev/null
@@ -0,0 +1,1523 @@
+/* ipci165.c
+ * Linux CAN-bus device driver for IXXAT iPC-I 165 (PCI) compatible HW.
+ * Written for new CAN driver version by Radim Kalas
+ * email:kalas@unicontrols.cz
+ * This software is released under the GPL-License.
+ * Version lincan-0.3  17 Jun 2004
+ */
+
+#include "../include/can.h"
+#include "../include/can_sysdep.h"
+#include "../include/main.h"
+#include "../include/setup.h"
+#include "../include/finish.h"
+#include "../include/ipci165.h"
+#include "../include/ipci165_fw.h"
+#include "../include/kthread.h"
+
+#include <ctype.h>
+
+can_irqreturn_t ipci165_irq_handler(int irq, void *dev_id, struct pt_regs *regs);
+int ipci165_baud_rate(struct canchip_t *chip, int rate, int clock, int sjw,
+                      int sampl_pt, int flags);
+int ipci165_set_btregs(struct canchip_t *chip, unsigned short btr0,
+                       unsigned short btr1);
+int ipci165_start_chip(struct canchip_t *chip);
+
+#ifdef CAN_DEBUG
+  void dump_mem(char *ptr, int size);
+#else
+#define dump_mem(a,b)
+#endif
+
+#define ipci165_load_btr(btr,btr0,btr1) {*btr = btr0; *(btr+1) = btr1;}
+
+/**
+ * ipci165_delay - Delay the execution
+ * @msdelay: milliseconds to wait
+ *
+ * Return value: no return value
+ * File: src/ipci165.c
+ */
+static void ipci165_delay(long msdelay)
+{
+#ifdef CAN_WITH_RTL
+  if(!rtl_rt_system_is_idle())
+  {
+    rtl_delay(1000000l*msdelay);
+  } else
+#endif /*CAN_WITH_RTL*/
+  {
+    set_current_state(TASK_UNINTERRUPTIBLE);
+    schedule_timeout((msdelay*HZ)/1000+1);
+  }
+}
+
+/**
+ * ipci165_generate_irq - Generate irq for HW
+ * @candev: Pointer to hardware/board specific functions
+ *
+ * Return value: The function returns zero on success or non zero on failure
+ * File: src/ipci165.c
+ */
+void ipci165_generate_irq(struct candevice_t *candev)
+{
+  unsigned long crm_addr = candev->io_addr;
+  writeb(readb(crm_addr + CRM_UCR) & 0xFB, crm_addr + CRM_UCR);
+  writeb(readb(crm_addr + CRM_UCR) | 0x04, crm_addr + CRM_UCR);
+}
+
+/**
+ * bci_command - Send command to controller
+ * @candev: Pointer to hardware/board specific functions
+ * @cmd: Command to be performed
+ * @size: Command data size
+ * @data: Command data
+ *
+ * Return value: The function returns zero on success or non zero on failure
+ * File: src/ipci165.c
+ */
+int bci_command(struct candevice_t *candev, char cmd, int size, char *data)
+{
+  unsigned long dpram_addr = candev->dev_base_addr;
+
+  DEBUGMSG ("ipci165_bci_command\n");
+
+  if (size > BCI_CMD_MAX_LEN)
+  {
+    DEBUGMSG ("ipci165_bci_command: parameter error\n");
+    return -EINVAL;
+  }
+
+  /* grant access to the command buffer */
+  can_spin_lock(candev->device_lock);
+
+  // check command buffer status
+  if (readb(dpram_addr + OF_BCI_SYNC) != 0)
+  {
+    /* something went wrong ... */
+    can_spin_unlock(candev->device_lock);
+    DEBUGMSG ("ipci165_bci_command: command buffer is busy\n");
+    return (-EBUSY);
+  }
+
+  // prepare command
+  writeb(cmd, dpram_addr + OF_BCI_CMD);
+  writeb(size + 1, dpram_addr + OF_BCI_NUM);
+  memcpy_toio(dpram_addr + OF_BCI_DATA, data, size);
+
+  // set flag for firmware
+  writeb(1, dpram_addr + OF_BCI_SYNC);
+
+  // generate interrupt to microcontroller
+  ipci165_generate_irq (candev);
+
+  return 0;
+}
+
+/**
+ * bci_response - Get response from controller
+ * @candev: Pointer to hardware/board specific functions
+ * @cmd: Command to get response for
+ * @size: Command data size
+ * @data: Command data
+ *
+ * Return value: The function returns zero on success or non zero on failure
+ * File: src/ipci165.c
+ */
+int bci_response(struct candevice_t *candev, char cmd, int *size, char *data)
+{
+  unsigned long dpram_addr = candev->dev_base_addr;
+  char tmp;
+  int delay;
+
+  DEBUGMSG ("ipci165_bci_response\n");
+
+  delay = 1000;
+  while (readb(dpram_addr + OF_BCI_SYNC) != 2)
+  {
+    /* wait 1 ms */
+    /*    ipci165_delay(1); */
+    udelay(100);
+    if (--delay == 0)
+    {
+      /* timeout occured */
+      /* release the lock */
+      can_spin_unlock(candev->device_lock);
+      CANMSG ("BCI timeout!\n");
+      return -EBUSY;
+    }
+  }
+
+  /* we will not copy the command filed, so decrement the size by 1 */
+  tmp = readb(dpram_addr + OF_BCI_NUM) - 1;
+  if (*size > tmp) *size = tmp;
+
+  if (readb(dpram_addr + OF_BCI_CMD) != cmd)
+  {
+    /* release the buffer */
+    writeb(0, dpram_addr + OF_BCI_SYNC);
+    /* unlock the access */
+    can_spin_unlock(candev->device_lock);
+
+    DEBUGMSG ("ipci165_bci_command: invalid answer\n");
+    return -EIO;
+  }
+  memcpy_fromio(data, dpram_addr + OF_BCI_DATA, *size);
+
+  /* release the buffer */
+  writeb(0, dpram_addr + OF_BCI_SYNC);
+  /* unlock the access */
+  can_spin_unlock(candev->device_lock);
+  return 0;
+}
+
+/**
+ * ipci165_restart_can - Flush queues and sestart can controller
+ * @candev: Pointer to hardware/board specific functions
+ * @chip_idx: chip number
+ *
+ * Return value: The function returns zero on success or non zero on failure
+ * File: src/ipci165.c
+ */
+int ipci165_restart_can(struct canchip_t *chip)
+{
+  char data[3];
+  int size;
+  int i;
+
+  struct ipci165_chip_t *chip_data;
+  unsigned long msg_ofs;
+
+  /* reset CAN */
+  data[0] = chip->chip_idx;
+  size = 1;
+  if (bci_command(chip->hostdevice, CMD_RESET_CAN, 1, data) ||
+      bci_response(chip->hostdevice, CMD_RESET_CAN, &size, data) ||
+      (data[0] == 0))
+  {
+    CANMSG ("CAN reset failed!\n");
+    return -ENODEV;
+  }
+
+  /* flush TX/RX queues in DP-RAM */
+  chip_data = (struct ipci165_chip_t *)chip->chip_data;
+  msg_ofs = BCI_MSG_STATUS;
+
+  for (i = 0; i< BCI_QUEUE_SIZE; i++)
+  {
+    writeb(BCI_MSG_STATUS_FREE, chip_data->rx_queue.addr + msg_ofs);
+    writeb(BCI_MSG_STATUS_FREE, chip_data->tx_queue.addr + msg_ofs);
+    msg_ofs += BCI_MSG_SIZE;
+  }
+
+  /* In- and output buffer re-initialization */
+  canqueue_ends_flush_inlist(chip->msgobj[0]->qends);
+  canqueue_ends_flush_outlist(chip->msgobj[0]->qends);
+
+  /* start CAN */
+  data[0] = chip->chip_idx;
+  size = 1;
+  if (bci_command(chip->hostdevice, CMD_START_CAN, 1, data) ||
+      bci_response(chip->hostdevice, CMD_START_CAN, &size, data) ||
+      (data[0] == 0))
+  {
+    CANMSG ("start chip failed!\n");
+    return -ENODEV;
+  }
+  return 0;
+}
+
+/* this is the thread function that we are executing */
+/**
+ * ipci165_kthread - Thread restarting can controller after bus-off.
+ * @kthread: pointer to kernel thread descriptor
+ * @chip_idx: chip number
+ *
+ * Return value: no return value
+ * File: src/ipci165.c
+ */
+void ipci165_kthread(kthread_t *kthread)
+{
+  struct canchip_t *chip = (struct canchip_t *)kthread->arg;
+  struct ipci165_chip_t *chip_data = (struct ipci165_chip_t *)chip->chip_data;
+
+  /* setup the thread environment */
+  init_kthread(kthread, "ipci165");
+
+  /* this is normal work to do */
+  CANMSG ("kernel thread started!\n");
+
+  /* an endless loop in which we are doing our work */
+  for(;;)
+  {
+    /* fall asleep */
+    wait_event_interruptible(kthread->queue,test_bit(CHIP_FLAG_BUS_OFF,&chip_data->flags));
+
+    /* We need to do a memory barrier here to be sure that
+    the flags are visible on all CPUs. */
+    mb();
+
+    /* here we are back from sleep because we caught a signal. */
+    if (kthread->terminate)
+    {
+      /* we received a request to terminate ourself */
+      break;
+    }
+
+    {
+      clear_bit(CHIP_FLAG_BUS_OFF,&chip_data->flags);
+      set_bit(CHIP_FLAG_RESET,&chip_data->flags);
+      /* this is normal work to do */
+      ipci165_restart_can(chip);
+
+      clear_bit(CHIP_FLAG_RESET,&chip_data->flags);
+
+      /* wait at least 100ms for next reset */
+      ipci165_delay(100);
+    }
+  }
+  /* here we go only in case of termination of the thread */
+
+  /* cleanup the thread, leave */
+  CANMSG ("kernel thread terminated!\n");
+  exit_kthread(kthread);
+
+  /* returning from the thread here calls the exit functions */
+}
+
+/**
+ * ipci165_qfull_latency - Compute delay to send out full tx queue
+ * @candev: Pointer to candevice/board structure
+ * @obj: pointer to message object state structure
+ *
+ * Return Value: The function returns computed delay in jiffies
+ * File: src/ipci165.c
+ */
+long ipci165_qfull_latency(struct msgobj_t *obj)
+{
+  long latency;
+  latency = obj->hostchip->baudrate;
+  if(latency){
+    latency=(long)HZ*(CAN_FRAME_MIN_BIT_LEN * BCI_QUEUE_SIZE)/latency + 1;
+  }
+
+  return latency;
+}
+
+/**
+ * ipci165_connect_irq: Installs interrupt routine and enable irq on HW
+ * @candev: Pointer to candevice/board structure
+ *
+ * Return Value: The function returns zero on success or %-ENODEV on failure
+ * File: src/ipci165.c
+ */
+int ipci165_connect_irq(struct candevice_t *candev)
+{
+  unsigned long crm_addr = candev->io_addr;
+  unsigned char icr;
+  DEBUGMSG ("ipci165_connect_irq\n");
+
+  /* install interrupt routine */
+  if (request_irq(candev->sysdevptr.pcidev->irq,
+                  ipci165_irq_handler,
+                  SA_SHIRQ,
+                  DEVICE_NAME,
+                  candev))
+    return -ENODEV;
+
+  // Enable interrupt to PC
+  writeb(readb(crm_addr + CRM_ICR) | 0x40, crm_addr + CRM_ICR);
+  udelay (100);
+  icr = readb(crm_addr + CRM_ICR);
+  return 0;
+}
+
+/**
+ * ipci165_disconnect_irq - Disable irq on HW
+ * @candev: Pointer to candevice/board structure
+ *
+ * Return Value: The function returns zero on success or %-ENODEV on failure
+ * File: src/ipci165.c
+ */
+void ipci165_disconnect_irq(struct candevice_t *candev)
+{
+  unsigned long crm_addr = candev->io_addr;
+  unsigned char icr;
+  DEBUGMSG ("ipci165_disconnect_irq\n");
+
+  // Enable interrupt to PC
+  writeb(readb(crm_addr + CRM_ICR) & ~0x40, crm_addr + CRM_ICR);
+  udelay (100);
+  icr = readb(crm_addr + CRM_ICR);
+  /* deinstall interrupt routine */
+  free_irq(candev->sysdevptr.pcidev->irq, candev);
+}
+
+/* * * CAN Functionality * * */
+
+/**
+ * ipci165_chip_config - Can chip configuration
+ * @chip: pointer to chip state structure
+ *
+ * Return Value: negative value reports error.
+ * File: src/ipci165.c
+ */
+int ipci165_chip_config(struct canchip_t *chip)
+{
+  struct ipci165_chip_t *chip_data = chip->chip_data;
+  char data[3];
+  int ret, size;
+
+  DEBUGMSG ("ipci165_chip_config[%i]\n",chip->chip_idx);
+
+  /* comupte the base address of tx and rx queue for the channel */
+  chip_data->tx_queue.addr = chip->chip_base_addr + OF_CH1_TX_QUEUE +
+      chip->chip_idx * (OF_CH2_TX_QUEUE-OF_CH1_TX_QUEUE);
+  chip_data->rx_queue.addr = chip->chip_base_addr + OF_CH1_RX_QUEUE +
+      chip->chip_idx * (OF_CH2_RX_QUEUE-OF_CH1_RX_QUEUE);
+
+  /* reset CAN */
+  data[0] = chip->chip_idx;
+
+  size = 1;
+  if (bci_command(chip->hostdevice, CMD_RESET_CAN, 1, data) ||
+      bci_response(chip->hostdevice, CMD_RESET_CAN, &size, data) ||
+      (data[0] == 0))
+  {
+    CANMSG ("CAN reset failed!\n");
+    return -ENODEV;
+  }
+
+  /* configure rx queue */
+  data[0] = chip->chip_idx;
+  data[1] = BCI_LATENCY_MODE;
+  data[2] = 0; /* dummy */
+
+  size = 1;
+  if (bci_command(chip->hostdevice, CMD_CONFIG_RX_QUEUE, 3, data) ||
+      bci_response(chip->hostdevice, CMD_CONFIG_RX_QUEUE, &size, data) ||
+      (data[0] == 0))
+  {
+    CANMSG ("config RX queue failed!\n");
+    return -ENODEV;
+  }
+  /* setup baud rate */
+  if (!chip->baudrate) chip->baudrate = 1000000;
+  if ((ret = ipci165_baud_rate(chip, chip->baudrate, chip->clock, 0, 0, 0))) return ret;
+
+  /* start can communication */
+  if ((ret = ipci165_start_chip(chip))) return ret;
+
+  return 0;
+}
+
+/**
+ * ipci165_baud_rate - Set communication parameters
+ * @chip: pointer to chip state structure
+ * @rate: baud rate in Hz
+ * @clock: not used
+ * @sjw: not used
+ * @sampl_pt: not used
+ * @flags: not used
+ *
+ * Return Value: negative value reports error.
+ * File: src/ipci165.c
+ */
+int ipci165_baud_rate(struct canchip_t *chip, int rate, int clock, int sjw,
+                      int sampl_pt, int flags)
+{
+  DEBUGMSG ("ipci165_baud_rate[%i]\n",chip->chip_idx);
+
+  switch (rate) {
+    case 10000:  return ipci165_set_btregs(chip, BCI_10KB);
+    case 20000:  return ipci165_set_btregs(chip, BCI_20KB);
+    case 50000:  return ipci165_set_btregs(chip, BCI_50KB);
+    case 100000: return ipci165_set_btregs(chip, BCI_100KB);
+    case 125000: return ipci165_set_btregs(chip, BCI_125KB);
+    case 250000: return ipci165_set_btregs(chip, BCI_250KB);
+    case 500000: return ipci165_set_btregs(chip, BCI_500KB);
+    case 1000000:return ipci165_set_btregs(chip, BCI_1000KB);
+    default: return -EINVAL;
+  }
+
+  return 0;
+}
+
+/**
+ * ipci165_set_btregs - Configure bitrate registers
+ * @chip: pointer to chip state structure
+ * @btr0: bitrate register 0
+ * @btr1: bitrate register 1
+ *
+ * Return Value: negative value reports error.
+ * File: src/ipci165.c
+ */
+int ipci165_set_btregs(struct canchip_t *chip, unsigned short btr0,
+                       unsigned short btr1)
+{
+  unsigned char data[3];
+  int size;
+
+  DEBUGMSG ("ipci165_set_btregs[%i]: btr0=%02x, btr1=%02x\n",chip->chip_idx,
+            (unsigned)btr0,(unsigned)btr1);
+  
+  /* configure the chip */
+  data[0] = chip->chip_idx;
+  data[1] = btr0;
+  data[2] = btr1;
+  
+  size = 1;
+  if (bci_command(chip->hostdevice, CMD_INIT_CAN, 3, data) ||
+      bci_response(chip->hostdevice, CMD_INIT_CAN, &size, data) ||
+      (data[0] == 0))
+  {
+    CANMSG ("baud rate setup failed!\n");
+    return -ENODEV;
+  }
+  return 0;
+}
+
+/**
+ * ipci165_stop_chip - Start chip message processing
+ * @chip: pointer to chip state structure
+ *
+ * Return Value: negative value reports error.
+ * File: src/ipci165.c
+ */
+int ipci165_start_chip(struct canchip_t *chip)
+{
+  char data[1];
+  int size;
+
+  DEBUGMSG ("ipci165_start_chip[%i]\n",chip->chip_idx);
+  
+  /* start CAN */
+  data[0] = chip->chip_idx;
+  
+  size = 1;
+  if (bci_command(chip->hostdevice, CMD_START_CAN, 1, data) ||
+      bci_response(chip->hostdevice, CMD_START_CAN, &size, data) ||
+      (data[0] == 0))
+  {
+    CANMSG ("start chip failed!\n");
+    return -ENODEV;
+  }
+  return 0;
+}
+
+/**
+ * ipci165_stop_chip -  Stop chip message processing
+ * @chip: pointer to chip state structure
+ *
+ * Return Value: negative value reports error.
+ * File: src/ipci165.c
+ */
+int ipci165_stop_chip(struct canchip_t *chip)
+{
+  char data[1];
+  int size;
+
+  DEBUGMSG ("ipci165_stop_chip[%i]\n",chip->chip_idx);
+  
+  /* configure the chip */
+  data[0] = chip->chip_idx;
+  
+  size = 1;
+  if (bci_command(chip->hostdevice, CMD_STOP_CAN, 1, data) ||
+      bci_response(chip->hostdevice, CMD_STOP_CAN, &size, data) ||
+      (data[0] == 0))
+  {
+    CANMSG ("stop chip failed!\n");
+    return -ENODEV;
+  }
+  return 0;
+}
+
+/**
+ * ipci165_pre_read_config - Prepare message object for message reception
+ * @chip: pointer to chip state structure
+ * @obj: pointer to message object state structure
+ *
+ * Return Value: negative value reports error.
+ *     Positive value indicates immediate reception of message.
+ * File: src/ipci165.c
+ */
+int ipci165_pre_read_config(struct canchip_t *chip, struct msgobj_t *obj)
+{
+  return 0;
+}
+
+/**
+ * ipci165_pre_write_config - Prepare message object for message transmission
+ * @chip: pointer to chip state structure
+ * @obj: pointer to message object state structure
+ * @msg: pointer to CAN message
+ *
+ * Return Value: negative value reports error.
+ * File: src/ipci165.c
+ */
+int ipci165_pre_write_config(struct canchip_t *chip, struct msgobj_t *obj,
+                             struct canmsg_t *msg)
+{
+  return 0;
+}
+
+/**
+ * ipci165_send_msg - Initiate message transmission
+ * @chip: pointer to chip state structure
+ * @obj: pointer to message object state structure
+ * @msg: pointer to CAN message
+ *
+ * This function is called after ipci165_pre_write_config() function,
+ * which prepares data in chip buffer.
+ * Return Value: negative value reports error.
+ * File: src/ipci165.c
+ */
+int ipci165_send_msg(struct canchip_t *chip, struct msgobj_t *obj,
+                     struct canmsg_t *msg)
+{
+  return 0;
+}
+
+/**
+ * ipci165_check_tx_stat - Checks state of transmission engine
+ * @chip: pointer to chip state structure
+ *
+ * Return Value: negative value reports error.
+ *     Positive return value indicates transmission under way status.
+ *     Zero value indicates finishing of all issued transmission requests.
+ * File: src/ipci165.c
+ */
+int ipci165_check_tx_stat(struct canchip_t *chip)
+{
+  return 0;
+}
+
+/**
+ * ipci165_irq_read_handler - ISR code responsible for receiving
+ * @chip: pointer to chip state structure
+ * @obj: pointer to attached queue description
+ *
+ * The main purpose of this function is to read message from CAN controller and
+ * transfer them to attached queues
+ * File: src/ipci165.c
+ */
+void ipci165_irq_read_handler(struct canchip_t *chip, struct msgobj_t *obj)
+{
+  struct ipci165_chip_t *chip_data = (struct ipci165_chip_t *)chip->chip_data;
+  struct bci_queue_t *queue = &(chip_data)->rx_queue;
+  unsigned long       queue_addr = queue->addr;
+  unsigned long       msg_addr   = queue_addr + queue->idx * BCI_MSG_SIZE;
+
+  int len;
+  unsigned char frame_info;
+  unsigned status;
+  unsigned short tmp16;
+  unsigned long  tmp32;
+
+  DEBUGMSG ("ipci165_irq_read_handler[%i]\n",chip->chip_idx);
+
+  do {
+    dump_mem(msg_addr, BCI_MSG_SIZE);
+    if (readb(msg_addr + BCI_MSG_TYPE) == BCI_MSG_TYPE_CAN)
+    {
+#if 0
+      printk("ST(0)=%x, ST(1)=%x\n",readw(chip->chip_base_addr+OF_CAN1_STATUS),
+             readw(chip->chip_base_addr+OF_CAN2_STATUS));
+      for (tmp16 = 0 ; tmp16 < BCI_QUEUE_SIZE ; tmp16 ++)
+        printk ("MSG_ST(%i)=%x\n",tmp16,readb(chip->chip_base_addr + OF_CH2_TX_QUEUE + tmp16*BCI_MSG_SIZE + BCI_MSG_STATUS));
+      /* this is a can message */
+      DEBUGMSG ("ipci165_irq_read_handler[%i]: message in buffer\n",chip->chip_idx);
+#endif
+
+      frame_info = readb(msg_addr + BCI_MSG_FRAME);
+      len =  frame_info & 0x0f;
+      if(len > CAN_MSG_LENGTH) len = CAN_MSG_LENGTH;
+      obj->rx_msg.length = len;
+      obj->rx_msg.flags  = (frame_info & BCI_MSG_FRAME_RTR ? MSG_RTR : 0);
+      obj->rx_msg.cob    = 0;
+      obj->rx_msg.timestamp.tv_sec = 0;
+      obj->rx_msg.timestamp.tv_usec = 
+          BCI_TIMESTAMP_RES * readl(msg_addr + BCI_MSG_TIMESTAMP);
+      /*  BCI_TIMESTAMP_RES * le32_to_cpu(readl(msg_addr + BCI_MSG_TIMESTAMP)); */
+
+      /* fill CAN message timestamp */
+      /* can_filltimestamp(&obj->rx_msg.timestamp); */
+
+      if (frame_info & BCI_MSG_FRAME_EXT)
+      {
+        /* extended frame - 29 bit identifier */
+        obj->rx_msg.flags |= MSG_EXT;
+        /* the ID is stored in motorola format (big endian), left justified  */
+        /* obj->rx_msg.id = be32_to_cpu(readl(msg_addr + BCI_MSG_ID) >> 3); */
+        memcpy_fromio(&tmp32, msg_addr + BCI_MSG_ID, 4);
+        obj->rx_msg.id = be32_to_cpu(tmp32 >> 3);
+        if (len > 0)
+          memcpy_fromio(obj->rx_msg.data, msg_addr + BCI_MSG_EXT_DATA, len);
+      } else
+      {
+        /* standard frame - 11 bit identifier */
+        /* the ID is stored in motorola format (big endian), left justified */
+        /* obj->rx_msg.id = be16_to_cpu(readw(msg_addr + BCI_MSG_ID) >> 5); */
+        memcpy_fromio(&tmp16, msg_addr + BCI_MSG_ID, 2);
+        obj->rx_msg.id = be16_to_cpu(tmp16 >> 5);
+        if (len > 0)
+          memcpy_fromio(obj->rx_msg.data, msg_addr + BCI_MSG_STD_DATA, len);
+      }
+      canque_filter_msg2edges(obj->qends, &obj->rx_msg);
+    }
+    else
+    {
+      /* this is a status message */
+      status = readw(msg_addr + BCI_MSG_CAN_STATUS);
+      DEBUGMSG ("ipci165_irq_read_handler[%i]: CAN status=%04x\n",chip->chip_idx, status);
+
+      /* wake up the reset thread if the CAN is in bus off */
+      if (status & BCI_CAN_STATUS_BUS_OFF) 
+      {
+        CANMSG ("BUS-OFF detected! Restarting\n");
+        set_bit(CHIP_FLAG_BUS_OFF,&chip_data->flags);
+        wake_up(&chip_data->kthread.queue);
+      }
+
+      if(obj->tx_slot)
+      {
+        canque_notify_inends(obj->tx_qedge, CANQUEUE_NOTIFY_ERRTX_BUS);
+      }
+
+    }
+    DEBUGMSG ("ipci165_irq_read_handler[%i]: device status\n", chip->chip_idx);
+    dump_mem(chip->chip_base_addr + OF_STATUS_BUFFER, 12);
+
+    /* update pointer */
+    queue->idx = (queue->idx + 1) % BCI_QUEUE_SIZE;
+    /* release the buffer */
+    writeb(BCI_MSG_STATUS_FREE, msg_addr + BCI_MSG_STATUS);
+    msg_addr = queue_addr + queue->idx * BCI_MSG_SIZE;
+
+  } while (readb(msg_addr + BCI_MSG_STATUS) == BCI_MSG_STATUS_FULL);
+
+}
+
+/**
+ * ipci165_irq_write_handler - ISR code responsible for transmitting
+ * @chip: pointer to chip state structure
+ * @obj: pointer to attached queue description
+ *
+ * The main purpose of this function is to read message from attached queues
+ * and transfer message contents into CAN controller chip.
+ * File: src/ipci165.c
+ */
+void ipci165_irq_write_handler(struct canchip_t *chip, struct msgobj_t *obj)
+{
+  struct ipci165_chip_t *chip_data = ((struct ipci165_chip_t *)chip->chip_data);
+  struct bci_queue_t *queue      = &chip_data->tx_queue;
+  unsigned long       queue_addr = queue->addr;
+  unsigned long       msg_addr   = queue_addr + queue->idx * BCI_MSG_SIZE;
+  struct canque_slot_t *tx_slot;
+
+  int len;
+  unsigned char frame_info, ext;
+  unsigned short tmp16;
+  unsigned long  tmp32;
+
+  DEBUGMSG ("ipci165_irq_write_handler[%i]\n",chip->chip_idx);
+
+  while ((canque_test_outslot(obj->qends, &obj->tx_qedge, &obj->tx_slot) >=0))
+  {
+    if (test_bit(CHIP_FLAG_RESET,&chip_data->flags) ||
+        (readb(msg_addr + BCI_MSG_STATUS) == BCI_MSG_STATUS_FULL))
+    {
+      canque_again_outslot(obj->qends, obj->tx_qedge, obj->tx_slot);
+
+      /* lost interrupt work around */
+      ipci165_generate_irq(obj->hostchip->hostdevice);
+
+      mod_timer(&obj->tx_timeout, jiffies + ipci165_qfull_latency(obj));
+      DEBUGMSG("ipci165_irq_write_handler[%i]: scheduled retry\n", chip->chip_idx);
+
+      return;
+    }
+
+    tx_slot = obj->tx_slot;
+    DEBUGMSG ("msg[%i] : id=%lx dlc=%x flg=%02x\n",
+              chip->chip_idx,
+              (unsigned long)tx_slot->msg.id,
+              (unsigned int)tx_slot->msg.length,
+              (unsigned int)tx_slot->msg.flags);
+    dump_mem(tx_slot->msg.data, tx_slot->msg.length);
+
+    len = tx_slot->msg.length;
+    if(len > CAN_MSG_LENGTH) len = CAN_MSG_LENGTH;
+
+    ext = tx_slot->msg.flags;
+    frame_info =
+        len |
+        ((tx_slot->msg.flags & MSG_RTR) ? BCI_MSG_FRAME_RTR : 0) |
+        ((tx_slot->msg.flags & MSG_EXT) ? BCI_MSG_FRAME_EXT : 0);
+
+    writeb(BCI_MSG_SIZE - 2, msg_addr + BCI_MSG_NUM);
+    writeb(BCI_MSG_TYPE_CAN, msg_addr + BCI_MSG_TYPE);
+    writeb(frame_info, msg_addr + BCI_MSG_FRAME);
+    if (frame_info & BCI_MSG_FRAME_EXT)
+    {
+      /* extended frame - 29 bit identifier */
+      /* the ID is stored in motorola format (big endian), left justified  */
+      tmp32 = be32_to_cpu(tx_slot->msg.id) << 3;
+      memcpy_toio(msg_addr + BCI_MSG_ID, &tmp32, 4);
+      if (len > 0)
+        memcpy_toio(msg_addr + BCI_MSG_EXT_DATA, tx_slot->msg.data, len);
+    } else
+    {
+      /* standard frame - 11 bit identifier */
+      /* the ID is stored in motorola format (big endian), left justified */
+      tmp16 = be16_to_cpu(tx_slot->msg.id) << 5;
+      memcpy_toio(msg_addr + BCI_MSG_ID, &tmp16, 2);
+      if (len > 0)
+        memcpy_toio(msg_addr + BCI_MSG_STD_DATA, tx_slot->msg.data, len);
+    }
+
+    dump_mem(msg_addr, BCI_MSG_SIZE);
+
+    /* update pointer */
+    queue->idx = (queue->idx + 1) % BCI_QUEUE_SIZE;
+    /* mark the buffer as full */
+    writeb(BCI_MSG_STATUS_FULL, msg_addr + BCI_MSG_STATUS);
+    /* wake up the controller */
+    ipci165_generate_irq(chip->hostdevice);
+
+    /* next message address */
+    msg_addr = queue_addr + queue->idx * BCI_MSG_SIZE;
+
+    /* Do local transmitted message distribution if enabled. */
+    /* This code should not be called directly there, because it breaks strict
+    behavior of queues if O_SYNC is set. */
+    if (processlocal){
+      obj->tx_slot->msg.flags |= MSG_LOCAL;
+      canque_filter_msg2edges(obj->qends, &obj->tx_slot->msg);
+    }
+    /* Free transmitted slot */
+    canque_free_outslot(obj->qends, obj->tx_qedge, obj->tx_slot);
+    obj->tx_slot = NULL;
+  }
+  return;
+}
+
+/**
+ * ipci165_irq_sync_activities - Synchronized access to write handler
+ * @chip: pointer to chip state structure
+ * @obj: pointer to attached queue description
+ *
+ * Return Value: The function always returns zero
+ * File: src/ipci165.c
+ */
+void ipci165_irq_sync_activities(struct canchip_t *chip, struct msgobj_t *obj)
+{
+  while(!can_msgobj_test_and_set_fl(obj,TX_LOCK)) 
+  {
+    if(can_msgobj_test_and_clear_fl(obj,TX_REQUEST)) 
+    {
+      ipci165_irq_write_handler(chip, obj);
+    }
+
+    can_msgobj_clear_fl(obj,TX_LOCK);
+    if(can_msgobj_test_fl(obj,TX_REQUEST))
+      continue;
+/*    if(can_msgobj_test_fl(obj,FILTCH_REQUEST) && !obj->tx_slot)
+    continue; */
+    break;
+  }
+}
+
+/**
+ * ipci165_irq_chip_handler - ISR for dedicated chip
+ * @chip: pointer to chip state structure
+ *
+ * The main purpose of this function is to perform all necessary channel
+ * operations as a reaction on signalled interrupt. 
+ * File: src/ipci165.c
+ */
+void ipci165_irq_chip_handler(struct canchip_t *chip)
+{
+  struct msgobj_t       *obj = chip->msgobj[0];
+  struct ipci165_chip_t *chip_data = chip->chip_data;
+  struct bci_queue_t    *queue; 
+
+  DEBUGMSG ("ipci165_irq_chip_handler[%i]\n",chip->chip_idx);
+
+  /* check receive queue for messages */
+  queue = &chip_data->rx_queue;
+  if (readb(queue->addr + queue->idx * BCI_MSG_SIZE + BCI_MSG_STATUS)
+      == BCI_MSG_STATUS_FULL)
+    ipci165_irq_read_handler(chip, obj);
+
+  queue = &chip_data->tx_queue;
+/*  if (readb(queue->addr + queue->idx * BCI_MSG_SIZE + BCI_MSG_STATUS)
+  == BCI_MSG_STATUS_FREE) */
+  {
+    can_msgobj_set_fl(obj,TX_REQUEST);
+
+    /* calls unican_irq_write_handler synchronized with other invocations */
+    ipci165_irq_sync_activities(chip, obj);
+  }
+
+}
+
+#define MAX_RETR 10
+
+/**
+ * ipci165_irq_handler - Interrupt service routine
+ * @irq: interrupt vector number, this value is system specific
+ * @dev_id: driver private pointer registered at time of request_irq() call.
+ *     The CAN driver uses this pointer to store relationship of interrupt
+ *     to chip state structure - @struct canchip_t
+ * @regs: system dependent value pointing to registers stored in exception frame
+ * 
+ * The interrupt handler is activated when the ipci165 controller generates
+ * an interrupt as a reaction an internal state change. The interrupt is
+ * acknowledged and ipci165_irq_chip_handler is called for every channel.
+ * File: src/ipci165.c
+ */
+can_irqreturn_t ipci165_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
+{
+  int retval;
+  struct candevice_t *candev = (struct candevice_t *)dev_id;
+
+  unsigned long crm_addr   = candev->io_addr;
+  unsigned long ucr1_addr  = crm_addr + CRM_UCR + 1;
+  struct canchip_t *chip;
+  unsigned char icr;
+  int i;
+
+  /* DEBUGMSG ("ipci165_irq_handler\n"); */
+
+  /* read interrupt control register (byte 0) */
+  icr = readb(crm_addr + CRM_ICR);
+
+  if ((icr & 0x44) == 0x44)
+  {
+    DEBUGMSG ("ipci165_irq_handler: pending interrupt\n");
+
+    /* confirm pending interrupt */
+    writeb(readb(ucr1_addr) | 0x01,  ucr1_addr);
+    writeb(readb(ucr1_addr) & ~0x01, ucr1_addr);
+
+    /* call interrupt handler for every channel */
+    for (i=0 ; i < candev->nr_all_chips ; i++)
+    {
+      chip = candev->chip[i];
+      if (chip->flags & CHIP_CONFIGURED)
+        ipci165_irq_chip_handler(candev->chip[i]);
+    }
+    DEBUGMSG ("ipci165_irq_handler: interrupt handled\n");
+
+    retval = CANCHIP_IRQ_HANDLED;
+  } else {
+    DEBUGMSG ("ipci165_irq_handler: not our interrupt\n");
+    retval = CANCHIP_IRQ_NONE;
+  }
+
+  return CAN_IRQ_RETVAL(retval);
+}
+
+/**
+ * ipci165_wakeup_tx - Wakeup TX processing
+ * @chip: pointer to chip state structure
+ * @obj: pointer to message object structure
+ *
+ * Function is responsible for initiating message transmition.
+ * It is responsible for clearing of object TX_REQUEST flag
+ *
+ * Return Value: negative value reports error.
+ * File: src/ipci165.c
+ */
+int ipci165_wakeup_tx(struct canchip_t *chip, struct msgobj_t *obj)
+{
+  DEBUGMSG ("ipci165_wakeup_tx\n");
+  can_preempt_disable();
+
+  can_msgobj_set_fl(obj,TX_REQUEST);
+
+  /* calls ipci165_irq_write_handler synchronized with other invocations
+  from kernel and IRQ context */
+  ipci165_irq_sync_activities(chip, obj);
+
+  can_preempt_enable();
+  DEBUGMSG ("ipci165_wakeup_tx: finished\n");
+
+  return 0;
+}
+
+void ipci165_do_tx_timeout(unsigned long data)
+{
+  struct msgobj_t *obj=(struct msgobj_t *)data;
+
+  DEBUGMSG ("ipci165_do_tx_timeout\n");
+
+  can_preempt_disable();
+
+  can_msgobj_set_fl(obj,TX_REQUEST);
+
+  /* calls ipci165_irq_write_handler synchronized with other invocations
+  from kernel and IRQ context */
+  ipci165_irq_sync_activities(obj->hostchip, obj);
+
+  can_preempt_enable();
+  DEBUGMSG ("ipci165_do_tx_timeout: finished\n");
+}
+
+/* * * iPC-I 165/PCI Board Functionality * * */
+
+/**
+ * ipci165_request_io - Reserve io or memory range for can board
+ * @candev: pointer to candevice/board which asks for io. Field @io_addr
+ *     of @candev is used in most cases to define start of the range
+ *
+ * Return Value: The function returns zero on success or %-ENODEV on failure
+ * File: src/ipci165.c
+ */
+int ipci165_request_io(struct candevice_t *candev)
+{
+  unsigned long dpram_addr;
+  unsigned long crm_addr;
+  unsigned long fix_addr;
+  int i,j;
+
+  DEBUGMSG ("ipci165_request_io\n");
+
+  crm_addr   = pci_resource_start(candev->sysdevptr.pcidev,0);
+  dpram_addr = pci_resource_start(candev->sysdevptr.pcidev,2);
+
+  DEBUGMSG ("ipci165_request_io: crm = 0x%lx, dpram = 0x%lx\n",crm_addr, dpram_addr);
+
+  /* verify, if our HW is buggy, and try to fix it */
+#if 0
+  if (test_bit (7, &crm_addr))
+  {
+    CANMSG ("Wrong PCI base address [0x%lx](PLX PCI9050 bug)!\n", dpram_addr);
+
+    fix_addr = pci_resource_start(candev->sysdevptr.pcidev,3);
+
+    if (fix_addr == 0)
+    {
+      CANMSG ("This card was not fixed!\n");
+
+      if (candev->io_addr == 0)
+      {
+        CANMSG ("You have to specify IO address parameter!\n");
+        return -EINVAL;
+      }
+      CANMSG ("Using specified IO address value for the memory [0x%lx]\n",
+              candev->io_addr);
+    }
+    else
+    {
+      CANMSG ("Fixed card. Using of 3 region [0x%lx]\n", fix_addr);
+      candev->io_addr = fix_addr;
+    }
+
+    pci_write_config_dword (candev->sysdevptr.pcidev,
+                            PCI_BASE_ADDRESS_0, fix_addr);
+  }
+#endif
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,21))
+  if(pci_request_region(candev->sysdevptr.pcidev, 2, "kv_ipci165_dpram") == 0)
+  {
+    if(pci_request_region(candev->sysdevptr.pcidev, 0, "kv_ipci165_reg") == 0)
+    {
+#else /*(LINUX_VERSION_CODE > KERNEL_VERSION(2,4,21))*/
+  if(pci_request_regions(candev->sysdevptr.pcidev, "kv_ipci165") == 0)
+  {
+#endif /*(LINUX_VERSION_CODE > KERNEL_VERSION(2,4,21))*/
+
+      if ((candev->dev_base_addr = (long) ioremap(dpram_addr, 
+           pci_resource_len(candev->sysdevptr.pcidev,2))))
+      {
+        DEBUGMSG ("ipci165_request_io: dpram remapped to 0x%lx\n", candev->dev_base_addr);
+
+        if ((candev->io_addr = (long) ioremap(crm_addr, 
+             pci_resource_len(candev->sysdevptr.pcidev,0))))
+        {
+          DEBUGMSG ("ipci165_request_io: crm remapped to 0x%lx\n", candev->io_addr);
+          /* all resources has been allocated */
+          candev->res_addr=candev->io_addr;
+
+          /* Because of my mapping, I cannot use the
+             can_base_addr_fixup(candev, remap_addr) to remap the addresses */
+          for(i=0;i<candev->nr_all_chips;i++)
+          {
+            candev->chip[i]->chip_base_addr = candev->dev_base_addr;
+            for(j=0;j<candev->chip[i]->max_objects;j++)
+              candev->chip[i]->msgobj[j]->obj_base_addr = candev->dev_base_addr;
+          }
+
+          return 0;
+
+        } else CANMSG("Unable to remap memory at: 0x%lx\n", crm_addr);
+        iounmap((void*)candev->io_addr);
+
+      } else CANMSG("Unable to remap memory at: 0x%lx\n", dpram_addr);
+      iounmap((void*)candev->dev_base_addr);
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,21))
+      pci_release_region(candev->sysdevptr.pcidev, 0);
+    } else CANMSG("Request of kv_ipci165_reg range failed\n");
+
+    pci_release_region(candev->sysdevptr.pcidev, 2);
+  } else CANMSG("Request of kv_ipci165_dpram range failed\n");
+
+#else /*(LINUX_VERSION_CODE > KERNEL_VERSION(2,4,21))*/
+    pci_release_regions(candev->sysdevptr.pcidev);
+  } else CANMSG("Request of kv_ipci165 regions failed\n");
+#endif /*(LINUX_VERSION_CODE > KERNEL_VERSION(2,4,21))*/
+
+  return -ENODEV;
+}
+
+/**
+ * ipci165_release_io - Free reserved io memory range
+ * @candev: pointer to candevice/board which releases io
+ *
+ * Return Value: The function always returns zero
+ * File: src/ipci165.c
+ */
+int ipci165_release_io(struct candevice_t *candev)
+{
+  struct ipci165_chip_t *chip_data;
+  int i;
+  
+  /* disable irq on HW */
+  ipci165_disconnect_irq(candev);
+
+#if 0
+  /* terminate the kernel threads */
+  for (i = 0 ; i < candev->nr_all_chips ; i++)
+  {
+    chip_data = (struct ipci165_chip_t *)candev->chip[i]->chip_data;
+    stop_kthread(&chip_data->restart_thread);
+  }
+#endif
+
+  iounmap((void*)candev->io_addr);
+  iounmap((void*)candev->dev_base_addr);
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,21))
+  pci_release_region(candev->sysdevptr.pcidev, 2);
+  pci_release_region(candev->sysdevptr.pcidev, 0);
+#else /*(LINUX_VERSION_CODE > KERNEL_VERSION(2,4,21))*/
+  pci_release_regions(candev->sysdevptr.pcidev);
+#endif /*(LINUX_VERSION_CODE > KERNEL_VERSION(2,4,21))*/
+
+  return 0;
+}
+
+/**
+ * ipci165_download_fw - Download FW into CAN hardware
+ * @candev: Pointer to candevice/board structure
+ *
+ * Return Value: returns zero on success
+ * File: src/ipci165.c
+ */
+int ipci165_download_fw(struct candevice_t *candev)
+{
+  unsigned long dpram_addr = candev->dev_base_addr;
+  char board_name[BOARD_NAME_LEN+1];
+  char hw_version[HW_VERSION_LEN+1];
+  char mode[MODE_LEN+1];
+
+  struct ipci165_fw_t *fwArray = ipci165_fw;
+  int attempt;
+
+  DEBUGMSG ("ipci165_download_fw\n");
+
+  /* read name and version */  
+  memcpy_fromio (board_name, dpram_addr + BOARD_NAME_OFS, BOARD_NAME_LEN);
+  board_name[BOARD_NAME_LEN] = 0;
+
+  memcpy_fromio (hw_version, dpram_addr + HW_VERSION_OFS, HW_VERSION_LEN);
+  hw_version[HW_VERSION_LEN] = 0;
+
+  CANMSG ("Board Name: %s\n", board_name);
+  CANMSG ("HW Version: %s\n", hw_version);
+
+/*
+  if ((hw_version[0] != 'V') && (hw_version[0] != 'v'))
+{
+  CANMSG ("This board is too old and not supported by the BCI !\n");
+  return -ENODEV;
+}
+*/
+
+  /* detect & test mode */
+  memcpy_fromio (mode, dpram_addr + MODE_OFS, MODE_LEN);
+  mode[MODE_LEN] = 0;
+
+  if (strncmp (mode, "PC-Loader V", 11))
+  {
+    CANMSG ("Unknown mode [%s], can't download firmware!\n",mode);
+    return -ENODEV;
+  }
+
+  while (fwArray->len)
+  {
+    /* fill buffer */
+    writeb(LD_CMD_DOWNLOAD, dpram_addr + OF_LD_CMD);
+    writeb(fwArray->len, dpram_addr + OF_LD_NUM);
+    writeb(0, dpram_addr + OF_LD_NUM + 1);
+
+    writel(fwArray->addr, dpram_addr + OF_LD_ADDRESS);
+    /*    writel already performes the cpu_to_le32 conversion by itself   */
+    /*    writel(cpu_to_le32(fwArray->addr), dpram_addr + OF_LD_ADDRESS); */
+
+    memcpy_toio(dpram_addr + OF_LD_DATA, fwArray->a_data, fwArray->len);
+
+#if 0
+    dump_mem((void *)(dpram_addr + OF_LD_SYNC), fwArray->len + 8);
+#endif
+    /* buffer is prepared, set flag for loader */
+    writeb(1, dpram_addr + OF_LD_SYNC);
+
+    /* update pointer */
+    fwArray++;
+
+    /* wait for the loader */
+    attempt = 1000;
+    while (readb(dpram_addr + OF_LD_SYNC) != 0)
+    {
+      udelay(100);
+      if (--attempt == 0)
+      {
+        /* timeout occured */
+        CANMSG ("Firmware download failed!\n");
+        return -ENODEV;
+      }
+    }
+  }
+  CANMSG ("Firmware downladed successfully\n");
+
+  /* start the FW */
+  writeb(LD_CMD_START_FW, dpram_addr + OF_LD_CMD);
+  writeb(1, dpram_addr + OF_LD_SYNC);
+  ipci165_delay (500);
+
+  return 0;
+}
+
+/**
+ * ipci165_reset - Hardware reset routine
+ * @candev: Pointer to candevice/board structure
+ *
+ * Return Value: The function returns zero on success or %-ENODEV on failure
+ * File: src/ipci165.c
+ */
+int ipci165_reset(struct candevice_t *candev)
+{
+  unsigned long crm_addr = candev->io_addr;
+  unsigned long test_data;
+  char buffer[BCI_CMD_MAX_LEN];
+  int i, size, chips;
+  unsigned char ucr;
+  struct canchip_t *chip;
+  struct ipci165_chip_t *chip_data;
+
+  DEBUGMSG ("ipci165_reset: hardware reset\n");
+
+  /* reset the HW */
+  ucr = readb(crm_addr + CRM_UCR + 3);
+  writeb(ucr | 0x40, crm_addr + CRM_UCR + 3);
+  udelay(100);
+  writeb(ucr & ~0x40, crm_addr + CRM_UCR + 3);
+
+  /* wait a little bit */
+  ipci165_delay(200);
+
+  /* download FW */
+  if (ipci165_download_fw(candev)) return -ENODEV;
+
+  /* enable irq on HW */
+  if (ipci165_connect_irq(candev))
+    {
+    CANMSG ("Interrupt routine installation for IRQ %i failed!\n",
+            candev->sysdevptr.pcidev->irq);
+    return -ENODEV;
+    }
+
+  /* test BCI interface */
+  test_data = 0x12345678;
+  size = sizeof(test_data);
+  if (bci_command(candev, CMD_TEST, size, (char *)&test_data) ||
+      bci_response(candev, CMD_TEST, &size, (char *)&test_data) ||
+      (test_data != ~0x12345678))
+  {
+    CANMSG ("BCI test failed! Test pattern is %lx\n", test_data);
+    return -ENODEV;
+  }
+
+  /* get Firmware identification */
+  /* send command, fw requests 1 dummy byte */
+  size = BCI_CMD_MAX_LEN;
+  if (bci_command(candev, CMD_ID, 1, (char *)&test_data) ||
+      bci_response(candev, CMD_ID, &size, buffer))
+  {
+    CANMSG ("Firmware Identification reading failed!\n");
+    return -ENODEV;
+  }
+  CANMSG ("Firmware: %s\n",buffer);
+
+  /* get Firmware version */
+  /* send command, fw requests 1 dummy byte */
+  size = BCI_CMD_MAX_LEN;
+  if (bci_command(candev, CMD_VERSION, 1, (char *)&test_data) ||
+      bci_response(candev, CMD_VERSION, &size, buffer))
+  {
+    CANMSG ("Firmware Version reading failed!\n");
+    return -ENODEV;
+  }
+  CANMSG ("Version: %s\n",buffer);
+
+  /* get Board Info */
+  /* send command, fw requests 1 dummy byte */
+  size = BOARD_INFO_SIZE;
+  if (bci_command(candev, CMD_GET_BOARD_INFO, 1, (char *)&test_data) ||
+      bci_response(candev, CMD_GET_BOARD_INFO, &size, (char *) buffer))
+  {
+    CANMSG ("Get Board Info failed!\n");
+    return -ENODEV;
+  }
+
+  chips = le16_to_cpu(*(unsigned short*)(buffer+OF_BOARD_INFO_CHIPS));
+  /* shouldn't be, but who knows ... */
+  if (chips > 2) chips = 2;
+
+  CANMSG ("Chips: %i\n",chips);
+  CANMSG ("Chip 1 Type: %s\n",buffer+OF_BOARD_INFO_CHIP1_TYPE);
+
+  /* update board info */
+  if (chips == 1)
+  {
+    /* we have to correct the number in candev and release allocated
+       structures */
+    candev->nr_all_chips = chips;
+    canchip_done(candev->chip[1]);
+
+  } else CANMSG ("Chip 2 Type: %s\n",buffer+OF_BOARD_INFO_CHIP2_TYPE); 
+
+  /* start kernel threads */
+  for (i = 0 ; i < chips ; i++)
+  {
+    chip = candev->chip[i];
+    chip_data = (struct ipci165_chip_t *)chip->chip_data;
+    chip_data->kthread.arg = chip;
+    start_kthread(ipci165_kthread, &chip_data->kthread);
+  }
+
+  CANMSG ("HW is up and working.\n");
+  return 0;
+}
+
+/**
+ * ipci165_init_hw_data - Initialize hardware cards
+ * @candev: Pointer to candevice/board structure
+ *
+ * Return Value: The function always returns zero
+ * File: src/ipci165.c
+ */
+int ipci165_init_hw_data(struct candevice_t *candev)
+{
+  struct pci_dev *pcidev = NULL;
+  unsigned short SubsystemID;
+
+  DEBUGMSG ("ipci165_init_hw_data\n");
+
+  /* find iPC-I 165 on PCI bus */
+  do
+  {
+    pcidev = pci_find_device(IPCI165_VENDOR_ID, IPCI165_DEVICE_ID, pcidev);
+    if(pcidev == NULL) return -ENODEV;
+
+    /* check subvendor ID */
+    pci_read_config_word (pcidev, PCI_SUBSYSTEM_ID, &SubsystemID);
+    if ((SubsystemID != IPCI165_SUBSYSTEM_ID) &&
+        (SubsystemID != CP350_SUBSYSTEM_ID))
+      break;
+  }
+  while(can_check_dev_taken(pcidev));
+
+  /* enable it */
+  if (pci_enable_device (pcidev))
+  {
+    CANMSG ("Cannot enable PCI device\n");
+    return -EIO;
+  }
+
+  candev->sysdevptr.pcidev = pcidev;
+  candev->res_addr=0;
+  candev->nr_82527_chips=0;
+  candev->nr_sja1000_chips=0;
+  /* we do not know yet, whether our HW has one or two chan chips. Let's
+     prepare configuration for maximal configuration = 2. This will be
+     corrected later on */
+  candev->nr_all_chips=2; 
+  candev->flags |= CANDEV_PROGRAMMABLE_IRQ*0;
+  /* initialize device spinlock */
+  can_spin_lock_init(candev->device_lock);
+
+  return 0;
+}
+
+#define CHIP_TYPE "ipci165"
+
+/**
+ * ipci165_init_chip_data - Initialize chips
+ * @candev: Pointer to candevice/board structure)
+ * @chipnr: Number of the CAN chip on the hardware card
+ *
+ * Return Value: The function always returns zero
+ * File: src/ipci165.c
+ */
+int ipci165_init_chip_data(struct candevice_t *candev, int chipnr)
+{
+  struct canchip_t      *chip = candev->chip[chipnr];
+  struct ipci165_chip_t *chip_data;
+
+  DEBUGMSG ("ipci165_init_chip_data\n");
+
+  chip->chip_type = CHIP_TYPE;
+  chip->chip_base_addr = 0; /* mapping not known yet */
+  chip->clock = 10000000;
+  chip->int_clk_reg = 0x0;
+  chip->int_bus_reg = 0x0;
+  chip->max_objects = 1;
+
+#if 0
+  /* initialize interrupt handling only for channel 0. The interrupt
+     is shared between the channels so we have to work it out in one
+     interrupt routine. */
+  if (chipnr == 0)
+  {
+    chip->chipspecops->irq_handler=ipci165_irq_handler;
+    chip->chip_irq=candev->sysdevptr.pcidev->irq;
+    chip->flags |= CHIP_IRQ_PCI;
+  } else
+  {
+    chip->chipspecops->irq_handler=NULL;
+  }
+#else
+  chip->chipspecops->irq_handler = NULL;
+  chip->chip_irq = 0;
+  chip->flags |= CHIP_IRQ_CUSTOM;
+#endif
+
+  chip_data = can_checked_malloc(sizeof(struct ipci165_chip_t));
+  if(!chip_data) return -ENOMEM;
+  chip_data->rx_queue.idx = 0;
+  chip_data->rx_queue.addr = 0;
+  chip_data->tx_queue.idx = 0;
+  chip_data->tx_queue.addr = 0;
+  chip->chip_data = chip_data;
+
+  CANMSG("initializing ipci165 chip operations\n");
+  chip->chipspecops->chip_config=ipci165_chip_config;
+  chip->chipspecops->baud_rate=ipci165_baud_rate;
+  chip->chipspecops->set_btregs=ipci165_set_btregs;
+  chip->chipspecops->start_chip=ipci165_start_chip;
+  chip->chipspecops->stop_chip=ipci165_stop_chip;
+  chip->chipspecops->pre_read_config=ipci165_pre_read_config;
+  chip->chipspecops->wakeup_tx=ipci165_wakeup_tx;
+  chip->chipspecops->filtch_rq=NULL;
+  chip->chipspecops->irq_accept=NULL;
+
+  chip->chipspecops->standard_mask=NULL;
+  chip->chipspecops->extended_mask=NULL;
+  chip->chipspecops->message15_mask=NULL;
+  chip->chipspecops->clear_objects=NULL;
+  chip->chipspecops->config_irqs=NULL;
+  chip->chipspecops->pre_write_config=NULL;
+  chip->chipspecops->send_msg=NULL;
+  chip->chipspecops->check_tx_stat=NULL;
+  chip->chipspecops->remote_request=NULL;
+  chip->chipspecops->enable_configuration=NULL;
+  chip->chipspecops->disable_configuration=NULL;
+
+  return 0;
+}
+
+/**
+ * ipci165_init_obj_data - Initialize message buffers
+ * @chip: Pointer to chip specific structure
+ * @objnr: Number of the message buffer
+ *
+ * Return Value: The function always returns zero
+ * File: src/ipci165.c
+ */
+int ipci165_init_obj_data(struct canchip_t *chip, int objnr)
+{
+  struct msgobj_t *obj=chip->msgobj[objnr];
+  
+  DEBUGMSG ("ipci165_init_obj_data\n");
+  
+  obj->obj_base_addr = 0; /* not known yet */
+  obj->tx_timeout.function = ipci165_do_tx_timeout;
+  obj->tx_timeout.data = (unsigned long)obj;
+  return 0;
+}
+
+/**
+ * ipci165_program_irq - Program interrupts
+ * @candev: Pointer to candevice/board structure
+ *
+ * Return value: The function returns zero on success or %-ENODEV on failure
+ * File: src/ipci165.c
+ */
+int ipci165_program_irq(struct candevice_t *candev)
+{
+  return 0;
+}
+
+/**
+ * ipci165_register - Register Board Support Functions
+ * @candev: Pointer to hardware/board specific functions
+ *
+ * Return value: The function returns zero on success or %-ENODEV on failure
+ * File: src/ipci165.c
+ */
+int ipci165_register(struct hwspecops_t *hwspecops)
+{
+  hwspecops->request_io = ipci165_request_io;
+  hwspecops->release_io = ipci165_release_io;
+  hwspecops->reset = ipci165_reset;
+  hwspecops->init_hw_data = ipci165_init_hw_data;
+  hwspecops->init_chip_data = ipci165_init_chip_data;
+  hwspecops->init_obj_data = ipci165_init_obj_data;
+  hwspecops->write_register = NULL;
+  hwspecops->read_register = NULL;
+  hwspecops->program_irq = ipci165_program_irq;
+  return 0;
+}
+
+#ifdef CAN_DEBUG
+void dump_mem(char *ptr, int size)
+{
+  int to, j;
+  unsigned char str[80], buf[16];
+  char *strp;
+
+  for (; size > 0; size -= 16)
+  {
+    to = size > 16 ? 16 : size;
+    memcpy (buf,ptr, to);
+    strp = str;
+    for (j = 0; j < to ; j++)
+      strp += sprintf(strp, "%02x ",buf[j]);
+    for (; j < 16 ; j++) 
+      strp += sprintf(strp, "   ");
+    for (j = 0; j < to ; j++)
+      *strp++= isprint(buf[j]) ? buf[j] : '.';
+
+    DEBUGMSG ("[%lx] %s\n", (long unsigned)ptr, str);
+    ptr += to;
+  }
+}
+#endif
diff --git a/lincan/src/ipci165_fw.c b/lincan/src/ipci165_fw.c
new file mode 100644 (file)
index 0000000..33377c2
--- /dev/null
@@ -0,0 +1,5611 @@
+
+/************************************************************************
+** BCI Firmware for IPCI165 ISA and PCI generated from the Intel HEX file
+************************************************************************/  
+  
+
+#include "../include/ipci165_fw.h"
+  
+struct ipci165_fw_t ipci165_fw[] =
+{
+  {
+    0x10, 0x0000C02AUL,
+    {
+    0x55, 0x4E, 0x4B, 0x4E, 0x4F, 0x57, 0x4E, 0x00, 0x53, 0x4A, 0x41, 0x31,
+        0x30, 0x30, 0x30, 0x00}
+  }
+  , 
+  {
+    0x08, 0x000000AEUL,
+    {
+    0x03, 0x04, 0x56, 0x34, 0x2E, 0x30, 0x33, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002B00UL,
+    {
+    0x2A, 0x40, 0x00, 0x10, 0x42, 0x61, 0x73, 0x69, 0x63, 0x20, 0x43, 0x41,
+        0x4E, 0x20, 0x69, 0x6E}
+  }
+  , 
+  {
+    0x10, 0x00002B10UL,
+    {
+    0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x69, 0x72, 0x6D,
+        0x77, 0x61, 0x72, 0x65}
+  }
+  , 
+  {
+    0x0E, 0x00002B20UL,
+    {
+    0x20, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x50, 0x43, 0x2D, 0x49, 0x31, 0x36,
+        0x35, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B2EUL,
+    {
+    0x02, 0x40, 0x2A, 0x10, 0x00, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000016D4UL,
+    {
+    0xF0, 0x48, 0x07, 0xF8, 0xF8, 0x00, 0x2D, 0x06, 0x09, 0x82, 0x3D, 0x07,
+        0xE0, 0x08, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000016E4UL,
+    {
+    0x38, 0x23, 0x0D, 0x03, 0xE0, 0x78, 0xCA, 0x00, 0x38, 0x23, 0x9A, 0x04,
+        0x0B, 0x00, 0x04, 0x8F}
+  }
+  , 
+  {
+    0x10, 0x000016F4UL,
+    {
+    0x12, 0xFD, 0xF2, 0xF4, 0x12, 0xFD, 0x3D, 0x06, 0xCA, 0x00, 0xDC, 0x21,
+        0xF2, 0xF4, 0x14, 0xFD}
+  }
+  , 
+  {
+    0x06, 0x00001704UL,
+    {
+    0xF6, 0xF4, 0x12, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000170AUL,
+    {
+    0xEC, 0xFE, 0xEC, 0xFF, 0xE6, 0xF8, 0x82, 0x10, 0xCA, 0x00, 0xAC, 0x1E,
+        0xF0, 0x64, 0xF0, 0x75}
+  }
+  , 
+  {
+    0x10, 0x0000171AUL,
+    {
+    0xF6, 0xF4, 0x7C, 0x10, 0xF6, 0xF5, 0x7E, 0x10, 0x70, 0x65, 0xEA, 0x20,
+        0xFA, 0x1B, 0xF2, 0xFF}
+  }
+  , 
+  {
+    0x10, 0x0000172AUL,
+    {
+    0x7E, 0x10, 0xF2, 0xFE, 0x7C, 0x10, 0xDC, 0x0F, 0xA9, 0x8E, 0x29, 0x82,
+        0x2D, 0x35, 0x29, 0x82}
+  }
+  , 
+  {
+    0x10, 0x0000173AUL,
+    {
+    0x8D, 0x4B, 0x2D, 0x70, 0x29, 0x82, 0xEA, 0x20, 0x8A, 0x18, 0x29, 0x82,
+        0xEA, 0x80, 0xF6, 0x18}
+  }
+  , 
+  {
+    0x10, 0x0000174AUL,
+    {
+    0xEA, 0x20, 0x60, 0x19, 0x29, 0x83, 0xEA, 0x20, 0xCA, 0x19, 0x29, 0x82,
+        0xEA, 0x80, 0x28, 0x1A}
+  }
+  , 
+  {
+    0x10, 0x0000175AUL,
+    {
+    0xEA, 0x20, 0xCE, 0x1A, 0x29, 0x82, 0xEA, 0x80, 0x1E, 0x1B, 0xEA, 0x20,
+        0x4C, 0x1B, 0x07, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x0000176AUL,
+    {
+    0x0E, 0x00, 0xEA, 0x30, 0xD6, 0x1B, 0xE1, 0x18, 0xF7, 0xF8, 0x2C, 0x10,
+        0xE6, 0xFC, 0x2A, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000177AUL,
+    {
+    0xE6, 0xFA, 0x00, 0x10, 0xE6, 0xFB, 0x01, 0x00, 0xE6, 0xF8, 0x2D, 0x10,
+        0xE6, 0xF9, 0x01, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000178AUL,
+    {
+    0xCA, 0x00, 0x1A, 0x29, 0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00,
+        0xE6, 0xF8, 0x4C, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000179AUL,
+    {
+    0xCA, 0x00, 0xD8, 0x1E, 0xEA, 0x00, 0xFA, 0x1B, 0xE1, 0x28, 0xF7, 0xF8,
+        0x2C, 0x10, 0xE0, 0x6C}
+  }
+  , 
+  {
+    0x10, 0x000017AAUL,
+    {
+    0xE6, 0xFA, 0xB0, 0x00, 0xE6, 0xFB, 0x00, 0x00, 0xE6, 0xF8, 0x2D, 0x10,
+        0xE6, 0xF9, 0x01, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000017BAUL,
+    {
+    0xCA, 0x00, 0x1A, 0x29, 0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00,
+        0xE6, 0xF8, 0x4C, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000017CAUL,
+    {
+    0xCA, 0x00, 0xD8, 0x1E, 0xEA, 0x00, 0xFA, 0x1B, 0xDC, 0x0F, 0xA9, 0x8E,
+        0xF7, 0xF8, 0x2C, 0x10}
+  }
+  , 
+  {
+    0x10, 0x000017DAUL,
+    {
+    0xE1, 0x18, 0xF7, 0xF8, 0x81, 0x10, 0x0D, 0x0F, 0xC2, 0xF7, 0x81, 0x10,
+        0xF2, 0xF5, 0x7E, 0x10}
+  }
+  , 
+  {
+    0x10, 0x000017EAUL,
+    {
+    0xF2, 0xF4, 0x7C, 0x10, 0x00, 0x47, 0xDC, 0x05, 0xA9, 0xA4, 0x57, 0xFA,
+        0xFF, 0x00, 0xE4, 0xA7}
+  }
+  , 
+  {
+    0x10, 0x000017FAUL,
+    {
+    0x2C, 0x10, 0x25, 0x8F, 0x81, 0x10, 0xF3, 0xF8, 0x82, 0x10, 0x43, 0xF8,
+        0x81, 0x10, 0xED, 0xEC}
+  }
+  , 
+  {
+    0x10, 0x0000180AUL,
+    {
+    0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00, 0xC2, 0xF8, 0x82, 0x10,
+        0xCA, 0x00, 0xD8, 0x1E}
+  }
+  , 
+  {
+    0x10, 0x0000181AUL,
+    {
+    0xEA, 0x00, 0xFA, 0x1B, 0xF2, 0xF5, 0x7E, 0x10, 0xF2, 0xF4, 0x7C, 0x10,
+        0xDC, 0x05, 0xF4, 0x84}
+  }
+  , 
+  {
+    0x10, 0x0000182AUL,
+    {
+    0x03, 0x00, 0xC0, 0x8B, 0xF2, 0xF4, 0x7C, 0x10, 0xDC, 0x05, 0xF4, 0x84,
+        0x02, 0x00, 0xC0, 0x8A}
+  }
+  , 
+  {
+    0x10, 0x0000183AUL,
+    {
+    0xE0, 0x19, 0xF2, 0xF4, 0x7C, 0x10, 0xDC, 0x05, 0xF4, 0x84, 0x01, 0x00,
+        0xC0, 0x88, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000184AUL,
+    {
+    0x18, 0x02, 0x49, 0x81, 0x3D, 0x0F, 0xE1, 0x48, 0xF7, 0xF8, 0x2C, 0x10,
+        0xE1, 0x18, 0xF7, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x0000185AUL,
+    {
+    0x2D, 0x10, 0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00, 0xE0, 0x28,
+        0xCA, 0x00, 0xD8, 0x1E}
+  }
+  , 
+  {
+    0x10, 0x0000186AUL,
+    {
+    0xEA, 0x00, 0xFA, 0x1B, 0xE1, 0x48, 0xF7, 0xF8, 0x2C, 0x10, 0xF7, 0x8E,
+        0x2D, 0x10, 0xE6, 0xF9}
+  }
+  , 
+  {
+    0x10, 0x0000187AUL,
+    {
+    0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00, 0xE0, 0x28, 0xCA, 0x00, 0xD8, 0x1E,
+        0xEA, 0x00, 0xFA, 0x1B}
+  }
+  , 
+  {
+    0x10, 0x0000188AUL,
+    {
+    0xF2, 0xF5, 0x7E, 0x10, 0xF2, 0xF4, 0x7C, 0x10, 0xDC, 0x05, 0xF4, 0x84,
+        0x01, 0x00, 0xF7, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x0000189AUL,
+    {
+    0x80, 0x10, 0xC2, 0xF8, 0x80, 0x10, 0xCA, 0x00, 0x64, 0x04, 0x49, 0x81,
+        0x3D, 0x0E, 0xE1, 0x68}
+  }
+  , 
+  {
+    0x10, 0x000018AAUL,
+    {
+    0xF7, 0xF8, 0x2C, 0x10, 0xE1, 0x18, 0xF7, 0xF8, 0x2D, 0x10, 0xE6, 0xF9,
+        0x2C, 0x10, 0xE6, 0xFA}
+  }
+  , 
+  {
+    0x10, 0x000018BAUL,
+    {
+    0x01, 0x00, 0xE0, 0x28, 0xCA, 0x00, 0xD8, 0x1E, 0x0D, 0x0C, 0xE1, 0x68,
+        0xF7, 0xF8, 0x2C, 0x10}
+  }
+  , 
+  {
+    0x10, 0x000018CAUL,
+    {
+    0xF7, 0x8E, 0x2D, 0x10, 0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00,
+        0xE0, 0x28, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000018DAUL,
+    {
+    0xD8, 0x1E, 0xF3, 0xF8, 0x80, 0x10, 0x3D, 0x05, 0xE0, 0x28, 0xCA, 0x00,
+        0x28, 0x24, 0xEA, 0x00}
+  }
+  , 
+  {
+    0x0C, 0x000018EAUL,
+    {
+    0xFA, 0x1B, 0xE0, 0x38, 0xCA, 0x00, 0x28, 0x24, 0xEA, 0x00, 0xFA, 0x1B}
+  }
+  , 
+  {
+    0x10, 0x000018F6UL,
+    {
+    0xF2, 0xF5, 0x7E, 0x10, 0xF2, 0xF4, 0x7C, 0x10, 0xDC, 0x05, 0xF4, 0x84,
+        0x01, 0x00, 0xF7, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00001906UL,
+    {
+    0x80, 0x10, 0x49, 0x80, 0x3D, 0x04, 0xE0, 0x28, 0xCA, 0x00, 0x6A, 0x24,
+        0x0D, 0x03, 0xE0, 0x38}
+  }
+  , 
+  {
+    0x10, 0x00001916UL,
+    {
+    0xCA, 0x00, 0x6A, 0x24, 0xC2, 0xF8, 0x80, 0x10, 0xCA, 0x00, 0xA0, 0x05,
+        0x49, 0x81, 0x3D, 0x0F}
+  }
+  , 
+  {
+    0x10, 0x00001926UL,
+    {
+    0xE1, 0x78, 0xF7, 0xF8, 0x2C, 0x10, 0xE1, 0x18, 0xF7, 0xF8, 0x2D, 0x10,
+        0xE6, 0xF9, 0x2C, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00001936UL,
+    {
+    0xE6, 0xFA, 0x01, 0x00, 0xE0, 0x28, 0xCA, 0x00, 0xD8, 0x1E, 0xEA, 0x00,
+        0xFA, 0x1B, 0xE1, 0x78}
+  }
+  , 
+  {
+    0x10, 0x00001946UL,
+    {
+    0xF7, 0xF8, 0x2C, 0x10, 0xF7, 0x8E, 0x2D, 0x10, 0xE6, 0xF9, 0x2C, 0x10,
+        0xE6, 0xFA, 0x01, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001956UL,
+    {
+    0xE0, 0x28, 0xCA, 0x00, 0xD8, 0x1E, 0xEA, 0x00, 0xFA, 0x1B, 0xF2, 0xF5,
+        0x7E, 0x10, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00001966UL,
+    {
+    0x7C, 0x10, 0xDC, 0x05, 0xF4, 0x84, 0x01, 0x00, 0xF7, 0xF8, 0x80, 0x10,
+        0x49, 0x80, 0x3D, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00001976UL,
+    {
+    0xE0, 0x28, 0xCA, 0x00, 0x6A, 0x24, 0x0D, 0x03, 0xE0, 0x38, 0xCA, 0x00,
+        0x6A, 0x24, 0xC2, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00001986UL,
+    {
+    0x80, 0x10, 0xCA, 0x00, 0x44, 0x06, 0x49, 0x81, 0x3D, 0x0F, 0xE1, 0x88,
+        0xF7, 0xF8, 0x2C, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00001996UL,
+    {
+    0xE1, 0x18, 0xF7, 0xF8, 0x2D, 0x10, 0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA,
+        0x01, 0x00, 0xE0, 0x28}
+  }
+  , 
+  {
+    0x10, 0x000019A6UL,
+    {
+    0xCA, 0x00, 0xD8, 0x1E, 0xEA, 0x00, 0xFA, 0x1B, 0xE1, 0x88, 0xF7, 0xF8,
+        0x2C, 0x10, 0xF7, 0x8E}
+  }
+  , 
+  {
+    0x10, 0x000019B6UL,
+    {
+    0x2D, 0x10, 0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00, 0xE0, 0x28,
+        0xCA, 0x00, 0xD8, 0x1E}
+  }
+  , 
+  {
+    0x10, 0x000019C6UL,
+    {
+    0xEA, 0x00, 0xFA, 0x1B, 0xF2, 0xF5, 0x7E, 0x10, 0xF2, 0xF4, 0x7C, 0x10,
+        0xDC, 0x05, 0xF4, 0x84}
+  }
+  , 
+  {
+    0x10, 0x000019D6UL,
+    {
+    0x02, 0x00, 0xC0, 0x89, 0xF2, 0xF4, 0x7C, 0x10, 0xDC, 0x05, 0xF4, 0x84,
+        0x01, 0x00, 0xC0, 0x88}
+  }
+  , 
+  {
+    0x10, 0x000019E6UL,
+    {
+    0xCA, 0x00, 0x76, 0x1E, 0x49, 0x81, 0x3D, 0x0F, 0xE1, 0xB8, 0xF7, 0xF8,
+        0x2C, 0x10, 0xE1, 0x18}
+  }
+  , 
+  {
+    0x10, 0x000019F6UL,
+    {
+    0xF7, 0xF8, 0x2D, 0x10, 0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00,
+        0xE0, 0x28, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001A06UL,
+    {
+    0xD8, 0x1E, 0xEA, 0x00, 0xFA, 0x1B, 0xE1, 0xB8, 0xF7, 0xF8, 0x2C, 0x10,
+        0xF7, 0x8E, 0x2D, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00001A16UL,
+    {
+    0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00, 0xE0, 0x28, 0xCA, 0x00,
+        0xD8, 0x1E, 0xEA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001A26UL,
+    {
+    0xFA, 0x1B, 0xE1, 0xC8, 0xF7, 0xF8, 0x2C, 0x10, 0xD7, 0x00, 0x00, 0x00,
+        0xF2, 0xF4, 0xAE, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001A36UL,
+    {
+    0xF6, 0xF4, 0x2E, 0x10, 0xF6, 0x8E, 0x30, 0x10, 0xF3, 0xF8, 0x2D, 0x11,
+        0x49, 0x81, 0x3D, 0x0F}
+  }
+  , 
+  {
+    0x10, 0x00001A46UL,
+    {
+    0xE0, 0x14, 0xF6, 0xF4, 0x30, 0x10, 0xE0, 0x8C, 0xE6, 0xFA, 0x32, 0xC0,
+        0xE6, 0xFB, 0x00, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001A56UL,
+    {
+    0xE6, 0xF8, 0x32, 0x10, 0xE6, 0xF9, 0x01, 0x00, 0xCA, 0x00, 0x1A, 0x29,
+        0x0D, 0x0B, 0xE0, 0x8C}
+  }
+  , 
+  {
+    0x10, 0x00001A66UL,
+    {
+    0xE6, 0xFA, 0x2A, 0xC0, 0xE6, 0xFB, 0x00, 0x00, 0xE6, 0xF8, 0x32, 0x10,
+        0xE6, 0xF9, 0x01, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001A76UL,
+    {
+    0xCA, 0x00, 0x1A, 0x29, 0xF3, 0xF8, 0x2C, 0x11, 0x49, 0x81, 0x3D, 0x11,
+        0xF2, 0xF4, 0x30, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00001A86UL,
+    {
+    0x08, 0x41, 0xF6, 0xF4, 0x30, 0x10, 0xE0, 0x8C, 0xE6, 0xFA, 0x32, 0xC0,
+        0xE6, 0xFB, 0x00, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001A96UL,
+    {
+    0xE6, 0xF8, 0x3C, 0x10, 0xE6, 0xF9, 0x01, 0x00, 0xCA, 0x00, 0x1A, 0x29,
+        0x0D, 0x0B, 0xE0, 0x8C}
+  }
+  , 
+  {
+    0x10, 0x00001AA6UL,
+    {
+    0xE6, 0xFA, 0x2A, 0xC0, 0xE6, 0xFB, 0x00, 0x00, 0xE6, 0xF8, 0x3C, 0x10,
+        0xE6, 0xF9, 0x01, 0x00}
+  }
+  , 
+  {
+    0x0C, 0x00001AB6UL,
+    {
+    0xCA, 0x00, 0x1A, 0x29, 0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001AC2UL,
+    {
+    0xE6, 0xF8, 0x1A, 0x00, 0xCA, 0x00, 0xD8, 0x1E, 0xEA, 0x00, 0xFA, 0x1B,
+        0x8A, 0x04, 0x19, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001AD2UL,
+    {
+    0xBE, 0x88, 0xCC, 0x00, 0xF2, 0xF5, 0x7E, 0x10, 0xF2, 0xF4, 0x7C, 0x10,
+        0xDC, 0x05, 0xD4, 0x44}
+  }
+  , 
+  {
+    0x10, 0x00001AE2UL,
+    {
+    0x02, 0x00, 0xF6, 0xF4, 0x14, 0xFD, 0x7C, 0x14, 0xF6, 0xF4, 0x14, 0xFD,
+        0xF6, 0xF4, 0x12, 0xFD}
+  }
+  , 
+  {
+    0x10, 0x00001AF2UL,
+    {
+    0x0F, 0x04, 0xBF, 0x88, 0xE1, 0xD8, 0xF7, 0xF8, 0x2C, 0x10, 0xE1, 0x18,
+        0xF7, 0xF8, 0x2D, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00001B02UL,
+    {
+    0x0D, 0x05, 0xE1, 0xD8, 0xF7, 0xF8, 0x2C, 0x10, 0xF7, 0x8E, 0x2D, 0x10,
+        0xE6, 0xF9, 0x2C, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00001B12UL,
+    {
+    0xE6, 0xFA, 0x01, 0x00, 0xE0, 0x28, 0xCA, 0x00, 0xD8, 0x1E, 0x0D, 0x6E,
+        0x9A, 0x04, 0x08, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001B22UL,
+    {
+    0x0E, 0x04, 0xE1, 0xE8, 0xF7, 0xF8, 0x2C, 0x10, 0xE1, 0x18, 0xF7, 0xF8,
+        0x2D, 0x10, 0x0D, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00001B32UL,
+    {
+    0xE1, 0xE8, 0xF7, 0xF8, 0x2C, 0x10, 0xF7, 0x8E, 0x2D, 0x10, 0xE6, 0xF9,
+        0x2C, 0x10, 0xE6, 0xFA}
+  }
+  , 
+  {
+    0x10, 0x00001B42UL,
+    {
+    0x01, 0x00, 0xE0, 0x28, 0xCA, 0x00, 0xD8, 0x1E, 0x0D, 0x57, 0xF2, 0xF7,
+        0x7E, 0x10, 0xF2, 0xF6}
+  }
+  , 
+  {
+    0x10, 0x00001B52UL,
+    {
+    0x7C, 0x10, 0x06, 0xF6, 0x08, 0x00, 0xDC, 0x17, 0x98, 0x46, 0xA8, 0x56,
+        0x88, 0x50, 0x88, 0x40}
+  }
+  , 
+  {
+    0x10, 0x00001B62UL,
+    {
+    0xF2, 0xF5, 0x7E, 0x10, 0xF2, 0xF4, 0x7C, 0x10, 0x08, 0x44, 0xDC, 0x15,
+        0x98, 0xB4, 0xA8, 0xC4}
+  }
+  , 
+  {
+    0x10, 0x00001B72UL,
+    {
+    0xF2, 0xF4, 0x7C, 0x10, 0xDC, 0x05, 0xF4, 0x84, 0x03, 0x00, 0xC0, 0x8A,
+        0xF2, 0xF4, 0x7C, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00001B82UL,
+    {
+    0xDC, 0x05, 0xF4, 0x84, 0x02, 0x00, 0xC0, 0x89, 0xF2, 0xF4, 0x7C, 0x10,
+        0xDC, 0x05, 0xF4, 0x84}
+  }
+  , 
+  {
+    0x10, 0x00001B92UL,
+    {
+    0x01, 0x00, 0xC0, 0x88, 0xCA, 0x00, 0x1A, 0x03, 0x08, 0x04, 0x49, 0x81,
+        0x3D, 0x0E, 0xE1, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00001BA2UL,
+    {
+    0xF7, 0xF8, 0x2C, 0x10, 0xE1, 0x18, 0xF7, 0xF8, 0x2D, 0x10, 0xE6, 0xF9,
+        0x2C, 0x10, 0xE6, 0xFA}
+  }
+  , 
+  {
+    0x10, 0x00001BB2UL,
+    {
+    0x01, 0x00, 0xE0, 0x28, 0xCA, 0x00, 0xD8, 0x1E, 0x0D, 0x1F, 0xE1, 0xF8,
+        0xF7, 0xF8, 0x2C, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00001BC2UL,
+    {
+    0xF7, 0x8E, 0x2D, 0x10, 0xE6, 0xF9, 0x2C, 0x10, 0xE6, 0xFA, 0x01, 0x00,
+        0xE0, 0x28, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001BD2UL,
+    {
+    0xD8, 0x1E, 0x0D, 0x12, 0xF2, 0xF7, 0x7E, 0x10, 0xF2, 0xF6, 0x7C, 0x10,
+        0xDC, 0x07, 0xA9, 0x86}
+  }
+  , 
+  {
+    0x10, 0x00001BE2UL,
+    {
+    0x57, 0xF8, 0xFF, 0x00, 0xDC, 0x07, 0xB9, 0x86, 0xF2, 0xFA, 0x7E, 0x10,
+        0xF2, 0xF9, 0x7C, 0x10}
+  }
+  , 
+  {
+    0x0E, 0x00001BF2UL,
+    {
+    0xC2, 0xF8, 0x82, 0x10, 0xCA, 0x00, 0xD8, 0x1E, 0xFC, 0xFF, 0xFC, 0xFE,
+        0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001C00UL,
+    {
+    0xEC, 0xFD, 0xEC, 0xFE, 0xEC, 0xFF, 0xF0, 0xD8, 0x28, 0x02, 0x0D, 0x0F,
+        0xE0, 0x09, 0xF0, 0x4D}
+  }
+  , 
+  {
+    0x10, 0x00001C10UL,
+    {
+    0xC0, 0x88, 0xCA, 0x00, 0x70, 0x2A, 0x49, 0x80, 0x2D, 0x10, 0xF0, 0xAF,
+        0xF0, 0x9E, 0xE0, 0x08}
+  }
+  , 
+  {
+    0x10, 0x00001C20UL,
+    {
+    0xCA, 0x00, 0x8A, 0x08, 0xE0, 0x08, 0xCA, 0x00, 0xFA, 0x20, 0xF0, 0x90,
+        0xE0, 0x08, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001C30UL,
+    {
+    0xA2, 0x20, 0xF0, 0xE4, 0xF0, 0xF5, 0x70, 0x45, 0x3D, 0xE9, 0x08, 0x02,
+        0xFC, 0xFF, 0xFC, 0xFE}
+  }
+  , 
+  {
+    0x04, 0x00001C40UL,
+    {
+    0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001C44UL,
+    {
+    0xEC, 0xFD, 0xEC, 0xFE, 0xEC, 0xFF, 0xF0, 0xD8, 0x28, 0x02, 0x0D, 0x0F,
+        0xE0, 0x19, 0xF0, 0x4D}
+  }
+  , 
+  {
+    0x10, 0x00001C54UL,
+    {
+    0xC0, 0x88, 0xCA, 0x00, 0x70, 0x2A, 0x49, 0x80, 0x2D, 0x10, 0xF0, 0xAF,
+        0xF0, 0x9E, 0xE0, 0x18}
+  }
+  , 
+  {
+    0x10, 0x00001C64UL,
+    {
+    0xCA, 0x00, 0x8A, 0x08, 0xE0, 0x18, 0xCA, 0x00, 0xFA, 0x20, 0xF0, 0x90,
+        0xE0, 0x18, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001C74UL,
+    {
+    0xA2, 0x20, 0xF0, 0xE4, 0xF0, 0xF5, 0x70, 0x45, 0x3D, 0xE9, 0x08, 0x02,
+        0xFC, 0xFF, 0xFC, 0xFE}
+  }
+  , 
+  {
+    0x04, 0x00001C84UL,
+    {
+    0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001C88UL,
+    {
+    0xEC, 0xFE, 0xEC, 0xFF, 0x0D, 0x0E, 0xE0, 0x08, 0xCA, 0x00, 0x18, 0x1F,
+        0x49, 0x80, 0x2D, 0x0F}
+  }
+  , 
+  {
+    0x10, 0x00001C98UL,
+    {
+    0xF0, 0xBF, 0xF0, 0xAE, 0xE6, 0xF9, 0x12, 0x00, 0xE0, 0x08, 0xCA, 0x00,
+        0x56, 0x1F, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001CA8UL,
+    {
+    0x18, 0x0C, 0xCA, 0x00, 0xB8, 0x0B, 0xF0, 0xE4, 0xF0, 0xF5, 0x70, 0x45,
+        0x3D, 0xEC, 0xFC, 0xFF}
+  }
+  , 
+  {
+    0x04, 0x00001CB8UL,
+    {
+    0xFC, 0xFE, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001CBCUL,
+    {
+    0xEC, 0xFE, 0xEC, 0xFF, 0x0D, 0x0E, 0xE0, 0x18, 0xCA, 0x00, 0x18, 0x1F,
+        0x49, 0x80, 0x2D, 0x0F}
+  }
+  , 
+  {
+    0x10, 0x00001CCCUL,
+    {
+    0xF0, 0xBF, 0xF0, 0xAE, 0xE6, 0xF9, 0x12, 0x00, 0xE0, 0x18, 0xCA, 0x00,
+        0x56, 0x1F, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001CDCUL,
+    {
+    0x34, 0x0C, 0xCA, 0x00, 0xE8, 0x0B, 0xF0, 0xE4, 0xF0, 0xF5, 0x70, 0x45,
+        0x3D, 0xEC, 0xFC, 0xFF}
+  }
+  , 
+  {
+    0x04, 0x00001CECUL,
+    {
+    0xFC, 0xFE, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001CF0UL,
+    {
+    0x06, 0xF0, 0xF4, 0xFF, 0xE0, 0x08, 0xCA, 0x00, 0xA0, 0x0A, 0xB8, 0x40,
+        0xC2, 0xF4, 0xF4, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00001D00UL,
+    {
+    0xC4, 0x40, 0x02, 0x00, 0xE0, 0x18, 0xCA, 0x00, 0xA0, 0x0A, 0xC4, 0x40,
+        0x04, 0x00, 0xC2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00001D10UL,
+    {
+    0xF3, 0xFC, 0xC4, 0x40, 0x06, 0x00, 0xC2, 0xF4, 0xF0, 0x10, 0xC4, 0x40,
+        0x08, 0x00, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x00001D20UL,
+    {
+    0x2A, 0x10, 0x24, 0x8F, 0x2A, 0x10, 0xC4, 0x50, 0x0A, 0x00, 0xF0, 0xA0,
+        0xE0, 0x0B, 0x06, 0xFA}
+  }
+  , 
+  {
+    0x10, 0x00001D30UL,
+    {
+    0x00, 0x00, 0x16, 0xFB, 0x01, 0x00, 0xE0, 0xC9, 0xE0, 0x08, 0xCA, 0x00,
+        0x80, 0x21, 0x06, 0xF0}
+  }
+  , 
+  {
+    0x04, 0x00001D40UL,
+    {
+    0x0C, 0x00, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001D44UL,
+    {
+    0xE6, 0x8A, 0xAF, 0x04, 0xE6, 0x0D, 0x02, 0x20, 0xE6, 0x8B, 0xAF, 0x04,
+        0xE6, 0x0E, 0x40, 0x20}
+  }
+  , 
+  {
+    0x10, 0x00001D54UL,
+    {
+    0xE6, 0x8C, 0x5F, 0x04, 0xE6, 0x0F, 0x08, 0x10, 0xE6, 0x8D, 0xAF, 0x04,
+        0x0E, 0x04, 0xE0, 0x28}
+  }
+  , 
+  {
+    0x10, 0x00001D64UL,
+    {
+    0xCA, 0x00, 0x18, 0x26, 0xE0, 0x88, 0xCA, 0x00, 0xFA, 0x27, 0xE0, 0x49,
+        0xE0, 0x08, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001D74UL,
+    {
+    0xFE, 0x01, 0xE0, 0x59, 0xE0, 0x18, 0xCA, 0x00, 0xFE, 0x01, 0xE0, 0x68,
+        0xCA, 0x00, 0x1C, 0x01}
+  }
+  , 
+  {
+    0x10, 0x00001D84UL,
+    {
+    0xE0, 0x18, 0xCA, 0x00, 0xE0, 0x1D, 0xE0, 0x29, 0xE0, 0x08, 0xCA, 0x00,
+        0xEE, 0x1D, 0xE0, 0x39}
+  }
+  , 
+  {
+    0x10, 0x00001D94UL,
+    {
+    0xE0, 0x18, 0xCA, 0x00, 0xEE, 0x1D, 0xE0, 0x49, 0xE0, 0x08, 0xCA, 0x00,
+        0x0E, 0x1E, 0xE0, 0x59}
+  }
+  , 
+  {
+    0x10, 0x00001DA4UL,
+    {
+    0xE0, 0x18, 0xCA, 0x00, 0x0E, 0x1E, 0xCA, 0x00, 0x2E, 0x1E, 0xE6, 0xFC,
+        0x2A, 0x00, 0xE6, 0xFA}
+  }
+  , 
+  {
+    0x10, 0x00001DB4UL,
+    {
+    0x00, 0x10, 0xE6, 0xFB, 0x01, 0x00, 0xE0, 0x48, 0xE6, 0xF9, 0x20, 0x00,
+        0xCA, 0x00, 0x1A, 0x29}
+  }
+  , 
+  {
+    0x10, 0x00001DC4UL,
+    {
+    0xE0, 0x6C, 0xE6, 0xFA, 0xB0, 0x00, 0xE6, 0xFB, 0x00, 0x00, 0xE6, 0xF8,
+        0x2E, 0x00, 0xE6, 0xF9}
+  }
+  , 
+  {
+    0x0C, 0x00001DD4UL,
+    {
+    0x20, 0x00, 0xCA, 0x00, 0x1A, 0x29, 0xCA, 0x00, 0xAC, 0x24, 0x0D, 0xFD}
+  }
+  , 
+  {
+    0x10, 0x00002A70UL,
+    {
+    0xEC, 0xFD, 0xEC, 0xFE, 0xF0, 0xD9, 0xF0, 0xE8, 0xF0, 0x49, 0x49, 0x80,
+        0x3D, 0x06, 0xF0, 0x4E}
+  }
+  , 
+  {
+    0x10, 0x00002A80UL,
+    {
+    0xC0, 0x89, 0xE0, 0x08, 0xCA, 0x00, 0x48, 0x25, 0x0D, 0x0A, 0xF0, 0x4D,
+        0x49, 0x81, 0x3D, 0x06}
+  }
+  , 
+  {
+    0x10, 0x00002A90UL,
+    {
+    0xF0, 0x4E, 0xC0, 0x89, 0xE0, 0x18, 0xCA, 0x00, 0x48, 0x25, 0x0D, 0x01,
+        0xE1, 0x08, 0xFC, 0xFE}
+  }
+  , 
+  {
+    0x04, 0x00002AA0UL,
+    {
+    0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002AA4UL,
+    {
+    0xEC, 0xFD, 0xF0, 0xD8, 0xF0, 0x48, 0x49, 0x80, 0x3D, 0x04, 0xE0, 0x08,
+        0xCA, 0x00, 0xA4, 0x25}
+  }
+  , 
+  {
+    0x10, 0x00002AB4UL,
+    {
+    0x0D, 0x06, 0xF0, 0x4D, 0x49, 0x81, 0x3D, 0x03, 0xE0, 0x18, 0xCA, 0x00,
+        0xA4, 0x25, 0xFC, 0xFD}
+  }
+  , 
+  {
+    0x02, 0x00002AC4UL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002AC6UL,
+    {
+    0xEC, 0xFD, 0xF0, 0xD8, 0xF0, 0x48, 0x49, 0x80, 0x3D, 0x09, 0xE0, 0x08,
+        0xCA, 0x00, 0xFE, 0x25}
+  }
+  , 
+  {
+    0x10, 0x00002AD6UL,
+    {
+    0x48, 0x40, 0x3D, 0x02, 0xE1, 0x08, 0x0D, 0x0F, 0xE1, 0x18, 0x0D, 0x0D,
+        0xF0, 0x4D, 0x49, 0x81}
+  }
+  , 
+  {
+    0x10, 0x00002AE6UL,
+    {
+    0x3D, 0x09, 0xE0, 0x18, 0xCA, 0x00, 0xFE, 0x25, 0x48, 0x40, 0x3D, 0x02,
+        0xE1, 0x08, 0x0D, 0x03}
+  }
+  , 
+  {
+    0x0A, 0x00002AF6UL,
+    {
+    0xE1, 0x18, 0x0D, 0x01, 0xE1, 0x08, 0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B34UL,
+    {
+    0x02, 0x40, 0x5A, 0x11, 0x01, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B3AUL,
+    {
+    0x02, 0x40, 0x5C, 0x11, 0x01, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B40UL,
+    {
+    0x01, 0x40, 0x5E, 0x11, 0x08, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B46UL,
+    {
+    0x02, 0x40, 0x00, 0xFD, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B4CUL,
+    {
+    0x02, 0x40, 0x02, 0xFD, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B52UL,
+    {
+    0x02, 0x40, 0x04, 0xFD, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B58UL,
+    {
+    0x02, 0x40, 0x06, 0xFD, 0x00, 0x00}
+  }
+  , 
+  {
+    0x02, 0x00002B5EUL,
+    {
+    0x04, 0x81}
+  }
+  , 
+  {
+    0x02, 0x00002B60UL,
+    {
+    0x84, 0x82}
+  }
+  , 
+  {
+    0x02, 0x00002B62UL,
+    {
+    0x04, 0x83}
+  }
+  , 
+  {
+    0x02, 0x00002B64UL,
+    {
+    0x84, 0x84}
+  }
+  , 
+  {
+    0x02, 0x00002B66UL,
+    {
+    0x84, 0x85}
+  }
+  , 
+  {
+    0x02, 0x00002B68UL,
+    {
+    0x84, 0x86}
+  }
+  , 
+  {
+    0x02, 0x00002B6AUL,
+    {
+    0x04, 0x87}
+  }
+  , 
+  {
+    0x02, 0x00002B6CUL,
+    {
+    0x04, 0x88}
+  }
+  , 
+  {
+    0x02, 0x00002B6EUL,
+    {
+    0x84, 0x89}
+  }
+  , 
+  {
+    0x02, 0x00002B70UL,
+    {
+    0x84, 0x8A}
+  }
+  , 
+  {
+    0x10, 0x000022E6UL,
+    {
+    0xF0, 0x48, 0x07, 0xF8, 0xF0, 0x00, 0x2D, 0x14, 0x07, 0xF8, 0xF0, 0x00,
+        0x2D, 0x13, 0x29, 0x81}
+  }
+  , 
+  {
+    0x10, 0x000022F6UL,
+    {
+    0x2D, 0x13, 0x07, 0xF8, 0xF1, 0x00, 0x2D, 0x12, 0x29, 0x81, 0x2D, 0x12,
+        0x07, 0xF8, 0xF3, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002306UL,
+    {
+    0x2D, 0x11, 0x29, 0x81, 0x2D, 0x11, 0x07, 0xF8, 0x3A, 0x00, 0x3D, 0x10,
+        0xE1, 0x08, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002316UL,
+    {
+    0xE1, 0x18, 0xCB, 0x00, 0xE1, 0x28, 0xCB, 0x00, 0xE1, 0x38, 0xCB, 0x00,
+        0xE1, 0x48, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002326UL,
+    {
+    0xE1, 0x58, 0xCB, 0x00, 0xE1, 0x68, 0xCB, 0x00, 0xE1, 0x78, 0xCB, 0x00,
+        0xE7, 0xF8, 0xFF, 0x00}
+  }
+  , 
+  {
+    0x02, 0x00002336UL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002338UL,
+    {
+    0xF0, 0x48, 0x47, 0xF8, 0x08, 0x00, 0x9D, 0x42, 0xC0, 0x84, 0x5C, 0x24,
+        0x06, 0xF4, 0x4A, 0x23}
+  }
+  , 
+  {
+    0x10, 0x00002348UL,
+    {
+    0x9C, 0x04, 0xEA, 0x00, 0x6A, 0x23, 0xEA, 0x00, 0x70, 0x23, 0xEA, 0x00,
+        0x7C, 0x23, 0xEA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002358UL,
+    {
+    0x88, 0x23, 0xEA, 0x00, 0x94, 0x23, 0xEA, 0x00, 0xA0, 0x23, 0xEA, 0x00,
+        0xAC, 0x23, 0xEA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002368UL,
+    {
+    0xB8, 0x23, 0x4A, 0x04, 0x03, 0xA5, 0xCB, 0x00, 0x9A, 0x04, 0x2D, 0x90,
+        0x0F, 0x02, 0xD1, 0x80}
+  }
+  , 
+  {
+    0x10, 0x00002378UL,
+    {
+    0x7F, 0xCA, 0xCB, 0x00, 0x9A, 0x04, 0x27, 0x80, 0x0F, 0x01, 0xD1, 0x80,
+        0x7F, 0xC6, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002388UL,
+    {
+    0x9A, 0x04, 0x21, 0x70, 0x1F, 0x01, 0xD1, 0x80, 0x7F, 0xC6, 0xCB, 0x00,
+        0x9A, 0x04, 0x1B, 0x60}
+  }
+  , 
+  {
+    0x10, 0x00002398UL,
+    {
+    0x0F, 0x00, 0xD1, 0x80, 0x7F, 0xC2, 0xCB, 0x00, 0x9A, 0x04, 0x15, 0x50,
+        0x1F, 0x00, 0xD1, 0x80}
+  }
+  , 
+  {
+    0x10, 0x000023A8UL,
+    {
+    0x7F, 0xC2, 0xCB, 0x00, 0x9A, 0x04, 0x0F, 0x40, 0xEF, 0x00, 0xD1, 0x80,
+        0x7F, 0xC2, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000023B8UL,
+    {
+    0x9A, 0x04, 0x09, 0x20, 0xFF, 0x00, 0xD1, 0x80, 0x7F, 0xC2, 0xCB, 0x00,
+        0xF0, 0x48, 0xC0, 0x89}
+  }
+  , 
+  {
+    0x08, 0x000023C8UL,
+    {
+    0xE0, 0x38, 0xCA, 0x00, 0x84, 0x00, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000023D0UL,
+    {
+    0xE1, 0x0A, 0xF0, 0x48, 0xC0, 0x84, 0xE4, 0xA4, 0xCF, 0x10, 0xF0, 0x48,
+        0x47, 0xF8, 0x08, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000023E0UL,
+    {
+    0x9D, 0x1D, 0xC0, 0x84, 0x5C, 0x14, 0x06, 0xF4, 0xEC, 0x23, 0x9C, 0x04,
+        0x0D, 0x07, 0x0D, 0x08}
+  }
+  , 
+  {
+    0x10, 0x000023F0UL,
+    {
+    0x0D, 0x09, 0x0D, 0x0A, 0x0D, 0x0B, 0x0D, 0x0C, 0x0D, 0x0D, 0x0D, 0x0E,
+        0x5E, 0x03, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002400UL,
+    {
+    0x0E, 0x02, 0xCB, 0x00, 0x0E, 0x01, 0xCB, 0x00, 0x1E, 0x01, 0xCB, 0x00,
+        0x0E, 0x00, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002410UL,
+    {
+    0x1E, 0x00, 0xCB, 0x00, 0xEE, 0x00, 0xCB, 0x00, 0xFE, 0x00, 0xCB, 0x00,
+        0xF0, 0x48, 0xC0, 0x89}
+  }
+  , 
+  {
+    0x08, 0x00002420UL,
+    {
+    0xE0, 0x58, 0xCA, 0x00, 0x84, 0x00, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002428UL,
+    {
+    0xF0, 0x48, 0x47, 0xF8, 0x08, 0x00, 0x9D, 0x1C, 0xC0, 0x84, 0x5C, 0x14,
+        0x06, 0xF4, 0x3A, 0x24}
+  }
+  , 
+  {
+    0x10, 0x00002438UL,
+    {
+    0x9C, 0x04, 0x0D, 0x07, 0x0D, 0x08, 0x0D, 0x09, 0x0D, 0x0A, 0x0D, 0x0B,
+        0x0D, 0x0C, 0x0D, 0x0D}
+  }
+  , 
+  {
+    0x10, 0x00002448UL,
+    {
+    0x0D, 0x0E, 0xAF, 0x04, 0xCB, 0x00, 0x9F, 0x04, 0xCB, 0x00, 0x8F, 0x04,
+        0xCB, 0x00, 0x7F, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00002458UL,
+    {
+    0xCB, 0x00, 0x6F, 0x04, 0xCB, 0x00, 0x5F, 0x04, 0xCB, 0x00, 0x4F, 0x04,
+        0xCB, 0x00, 0x2F, 0x04}
+  }
+  , 
+  {
+    0x02, 0x00002468UL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000246AUL,
+    {
+    0xF0, 0x48, 0x47, 0xF8, 0x08, 0x00, 0x9D, 0x1C, 0xC0, 0x84, 0x5C, 0x14,
+        0x06, 0xF4, 0x7C, 0x24}
+  }
+  , 
+  {
+    0x10, 0x0000247AUL,
+    {
+    0x9C, 0x04, 0x0D, 0x07, 0x0D, 0x08, 0x0D, 0x09, 0x0D, 0x0A, 0x0D, 0x0B,
+        0x0D, 0x0C, 0x0D, 0x0D}
+  }
+  , 
+  {
+    0x10, 0x0000248AUL,
+    {
+    0x0D, 0x0E, 0xAE, 0x04, 0xCB, 0x00, 0x9E, 0x04, 0xCB, 0x00, 0x8E, 0x04,
+        0xCB, 0x00, 0x7E, 0x04}
+  }
+  , 
+  {
+    0x10, 0x0000249AUL,
+    {
+    0xCB, 0x00, 0x6E, 0x04, 0xCB, 0x00, 0x5E, 0x04, 0xCB, 0x00, 0x4E, 0x04,
+        0xCB, 0x00, 0x2E, 0x04}
+  }
+  , 
+  {
+    0x02, 0x000024AAUL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000024ACUL,
+    {
+    0xF2, 0xF4, 0x06, 0xFD, 0x3D, 0x0A, 0xCA, 0x00, 0xA4, 0x26, 0x0D, 0xFA,
+        0x0D, 0x06, 0xAA, 0x03}
+  }
+  , 
+  {
+    0x10, 0x000024BCUL,
+    {
+    0x01, 0x50, 0x0D, 0x03, 0xE0, 0x08, 0xCA, 0x00, 0xF0, 0x1C, 0xF2, 0xF4,
+        0x06, 0xFD, 0x3D, 0xF7}
+  }
+  , 
+  {
+    0x02, 0x000024CCUL,
+    {
+    0x0D, 0xEF}
+  }
+  , 
+  {
+    0x10, 0x000024CEUL,
+    {
+    0x0D, 0x06, 0xAA, 0x02, 0x01, 0x00, 0x0D, 0x03, 0xE0, 0x18, 0xCA, 0x00,
+        0x0A, 0x17, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x06, 0x000024DEUL,
+    {
+    0x04, 0xFD, 0x3D, 0xF7, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000024E4UL,
+    {
+    0x0D, 0x0D, 0xAA, 0x01, 0x01, 0x10, 0x0D, 0x04, 0xE0, 0x38, 0xCA, 0x00,
+        0x44, 0x1C, 0x0D, 0x06}
+  }
+  , 
+  {
+    0x10, 0x000024F4UL,
+    {
+    0xAA, 0x01, 0x01, 0x00, 0x0D, 0x03, 0xE0, 0x28, 0xCA, 0x00, 0x00, 0x1C,
+        0xF2, 0xF4, 0x02, 0xFD}
+  }
+  , 
+  {
+    0x04, 0x00002504UL,
+    {
+    0x3D, 0xF0, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002508UL,
+    {
+    0x0D, 0x1B, 0xAA, 0x00, 0x01, 0xF0, 0x0D, 0x04, 0xE0, 0x78, 0xCA, 0x00,
+        0xB2, 0x26, 0x0D, 0x14}
+  }
+  , 
+  {
+    0x10, 0x00002518UL,
+    {
+    0xAA, 0x00, 0x01, 0xE0, 0x0D, 0x04, 0xE0, 0x68, 0xCA, 0x00, 0x50, 0x0C,
+        0x0D, 0x0D, 0xAA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002528UL,
+    {
+    0x01, 0x10, 0x0D, 0x04, 0xE0, 0x58, 0xCA, 0x00, 0xBC, 0x1C, 0x0D, 0x06,
+        0xAA, 0x00, 0x01, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002538UL,
+    {
+    0x0D, 0x03, 0xE0, 0x48, 0xCA, 0x00, 0x88, 0x1C, 0xF2, 0xF4, 0x00, 0xFD,
+        0x3D, 0xE2, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002548UL,
+    {
+    0xF0, 0x48, 0x29, 0x81, 0x2D, 0x13, 0x09, 0x81, 0x3D, 0x22, 0xBE, 0x88,
+        0xCC, 0x00, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00002558UL,
+    {
+    0x5C, 0x11, 0x3D, 0x07, 0xF0, 0x49, 0x29, 0x82, 0x3D, 0x01, 0x3F, 0x04,
+        0xBF, 0x88, 0xE1, 0x08}
+  }
+  , 
+  {
+    0x10, 0x00002568UL,
+    {
+    0xCB, 0x00, 0x04, 0x8F, 0x5C, 0x11, 0xBF, 0x88, 0xE1, 0x18, 0xCB, 0x00,
+        0xBE, 0x88, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002578UL,
+    {
+    0xF2, 0xF4, 0x5A, 0x11, 0x3D, 0x07, 0xF0, 0x49, 0x29, 0x83, 0x3D, 0x01,
+        0x1F, 0x04, 0xBF, 0x88}
+  }
+  , 
+  {
+    0x10, 0x00002588UL,
+    {
+    0xE1, 0x08, 0xCB, 0x00, 0x04, 0x8F, 0x5A, 0x11, 0xBF, 0x88, 0xE1, 0x18,
+        0xCB, 0x00, 0xF0, 0x48}
+  }
+  , 
+  {
+    0x0C, 0x00002598UL,
+    {
+    0xC0, 0x89, 0xE0, 0x48, 0xCA, 0x00, 0x84, 0x00, 0xE1, 0x08, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000025A4UL,
+    {
+    0xF0, 0x48, 0x29, 0x81, 0x2D, 0x13, 0x09, 0x81, 0x3D, 0x22, 0xBE, 0x88,
+        0xCC, 0x00, 0x24, 0x8F}
+  }
+  , 
+  {
+    0x10, 0x000025B4UL,
+    {
+    0x5C, 0x11, 0xBF, 0x88, 0xAA, 0x04, 0x01, 0x30, 0x0D, 0x07, 0xBE, 0x88,
+        0xCC, 0x00, 0x9A, 0x04}
+  }
+  , 
+  {
+    0x10, 0x000025C4UL,
+    {
+    0x03, 0x80, 0x0F, 0x01, 0xD1, 0x80, 0x7F, 0xC6, 0xBF, 0x88, 0xCB, 0x00,
+        0xBE, 0x88, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000025D4UL,
+    {
+    0x24, 0x8F, 0x5A, 0x11, 0xBF, 0x88, 0xAA, 0x04, 0x01, 0x10, 0x0D, 0x07,
+        0xBE, 0x88, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000025E4UL,
+    {
+    0x9A, 0x04, 0x03, 0x70, 0x1F, 0x01, 0xD1, 0x80, 0x7F, 0xC6, 0xBF, 0x88,
+        0xCB, 0x00, 0xF0, 0x48}
+  }
+  , 
+  {
+    0x0A, 0x000025F4UL,
+    {
+    0xC0, 0x89, 0xE0, 0x48, 0xCA, 0x00, 0x84, 0x00, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000025FEUL,
+    {
+    0xF0, 0x48, 0x29, 0x81, 0x2D, 0x05, 0x09, 0x81, 0x3D, 0x06, 0xF2, 0xF4,
+        0x5C, 0x11, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x0A, 0x0000260EUL,
+    {
+    0xF2, 0xF4, 0x5A, 0x11, 0xCB, 0x00, 0xE0, 0x04, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000291AUL,
+    {
+    0x48, 0xC0, 0x2D, 0x08, 0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88,
+        0x08, 0x81, 0x28, 0xC1}
+  }
+  , 
+  {
+    0x06, 0x0000292AUL,
+    {
+    0x48, 0xC0, 0x3D, 0xF8, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002930UL,
+    {
+    0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B,
+        0x99, 0x8A, 0xDC, 0x09}
+  }
+  , 
+  {
+    0x10, 0x00002940UL,
+    {
+    0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88,
+        0x08, 0x81, 0xDC, 0x0B}
+  }
+  , 
+  {
+    0x10, 0x00002950UL,
+    {
+    0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A,
+        0xDC, 0x09, 0xB9, 0x88}
+  }
+  , 
+  {
+    0x10, 0x00002960UL,
+    {
+    0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81,
+        0xDC, 0x0B, 0x99, 0x8A}
+  }
+  , 
+  {
+    0x10, 0x00002970UL,
+    {
+    0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0xA9, 0x8A, 0xDC, 0x09,
+        0xB9, 0x88, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002980UL,
+    {
+    0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B,
+        0x99, 0x8A, 0xDC, 0x09}
+  }
+  , 
+  {
+    0x10, 0x00002990UL,
+    {
+    0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88,
+        0x08, 0x81, 0xDC, 0x0B}
+  }
+  , 
+  {
+    0x10, 0x000029A0UL,
+    {
+    0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A,
+        0xDC, 0x09, 0xB9, 0x88}
+  }
+  , 
+  {
+    0x10, 0x000029B0UL,
+    {
+    0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81,
+        0xDC, 0x0B, 0x99, 0x8A}
+  }
+  , 
+  {
+    0x10, 0x000029C0UL,
+    {
+    0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09,
+        0xB9, 0x88, 0x08, 0x81}
+  }
+  , 
+  {
+    0x10, 0x000029D0UL,
+    {
+    0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B,
+        0x99, 0x8A, 0xDC, 0x09}
+  }
+  , 
+  {
+    0x10, 0x000029E0UL,
+    {
+    0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88,
+        0x08, 0x81, 0xDC, 0x0B}
+  }
+  , 
+  {
+    0x10, 0x000029F0UL,
+    {
+    0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0xA9, 0x8A,
+        0xDC, 0x09, 0xB9, 0x88}
+  }
+  , 
+  {
+    0x02, 0x00002A00UL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002A02UL,
+    {
+    0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B,
+        0x99, 0x8A, 0xDC, 0x09}
+  }
+  , 
+  {
+    0x10, 0x00002A12UL,
+    {
+    0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88,
+        0x08, 0x81, 0xDC, 0x0B}
+  }
+  , 
+  {
+    0x10, 0x00002A22UL,
+    {
+    0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A,
+        0xDC, 0x09, 0xB9, 0x88}
+  }
+  , 
+  {
+    0x10, 0x00002A32UL,
+    {
+    0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81,
+        0xDC, 0x0B, 0x99, 0x8A}
+  }
+  , 
+  {
+    0x10, 0x00002A42UL,
+    {
+    0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09,
+        0xB9, 0x88, 0x08, 0x81}
+  }
+  , 
+  {
+    0x10, 0x00002A52UL,
+    {
+    0xDC, 0x0B, 0x99, 0x8A, 0xDC, 0x09, 0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B,
+        0x99, 0x8A, 0xDC, 0x09}
+  }
+  , 
+  {
+    0x0E, 0x00002A62UL,
+    {
+    0xB9, 0x88, 0x08, 0x81, 0xDC, 0x0B, 0xA9, 0x8A, 0xDC, 0x09, 0xB9, 0x88,
+        0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000C000UL,
+    {
+    0x0A, 0x20, 0x43, 0x43, 0x49, 0x5F, 0x49, 0x6E, 0x73, 0x74, 0x61, 0x6C,
+        0x6C, 0x3A, 0x20, 0x5A}
+  }
+  , 
+  {
+    0x10, 0x0000C010UL,
+    {
+    0x75, 0x65, 0x72, 0x73, 0x74, 0x20, 0x54, 0x61, 0x73, 0x6B, 0x73, 0x20,
+        0x72, 0x65, 0x67, 0x69}
+  }
+  , 
+  {
+    0x0A, 0x0000C020UL,
+    {
+    0x73, 0x74, 0x69, 0x65, 0x72, 0x65, 0x6E, 0x20, 0x21, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B72UL,
+    {
+    0x01, 0x40, 0x4A, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B78UL,
+    {
+    0x01, 0x40, 0x4B, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B7EUL,
+    {
+    0x01, 0x40, 0x4C, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B84UL,
+    {
+    0x01, 0x40, 0x4D, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B8AUL,
+    {
+    0x01, 0x40, 0x4E, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B90UL,
+    {
+    0x01, 0x40, 0x4F, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B96UL,
+    {
+    0x01, 0x40, 0x50, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002B9CUL,
+    {
+    0x01, 0x40, 0x51, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x0E, 0x00001DE0UL,
+    {
+    0xF0, 0x48, 0xF7, 0xF8, 0x4C, 0x11, 0xE1, 0x18, 0x75, 0xF8, 0x4D, 0x11,
+        0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001DEEUL,
+    {
+    0xF0, 0x48, 0x29, 0x81, 0x2D, 0x06, 0x09, 0x81, 0x3D, 0x07, 0xF0, 0x49,
+        0xF7, 0xF8, 0x51, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001DFEUL,
+    {
+    0x0D, 0x03, 0xF0, 0x49, 0xF7, 0xF8, 0x50, 0x11, 0xE1, 0x28, 0x75, 0xF8,
+        0x4D, 0x11, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001E0EUL,
+    {
+    0xF0, 0x48, 0x29, 0x81, 0x2D, 0x06, 0x09, 0x81, 0x3D, 0x07, 0xF0, 0x49,
+        0xF7, 0xF8, 0x4F, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001E1EUL,
+    {
+    0x0D, 0x03, 0xF0, 0x49, 0xF7, 0xF8, 0x4E, 0x11, 0xE1, 0x48, 0x75, 0xF8,
+        0x4D, 0x11, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001E2EUL,
+    {
+    0xF3, 0xF8, 0x4D, 0x11, 0x49, 0x87, 0x2D, 0x06, 0xE6, 0xF8, 0x00, 0xC0,
+        0xCA, 0x00, 0x36, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001E3EUL,
+    {
+    0xE1, 0x08, 0xCB, 0x00, 0xE0, 0x04, 0xE6, 0xF5, 0x20, 0x00, 0xF6, 0xF4,
+        0x46, 0x11, 0xF6, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x00001E4EUL,
+    {
+    0x48, 0x11, 0xE6, 0xF4, 0x00, 0x20, 0xF6, 0xF4, 0x42, 0x11, 0xF6, 0xF5,
+        0x44, 0x11, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001E5EUL,
+    {
+    0x80, 0x22, 0x7E, 0xE6, 0x7F, 0xE7, 0xE6, 0xCA, 0x59, 0x00, 0xD1, 0x90,
+        0x66, 0xE0, 0xFF, 0xCF}
+  }
+  , 
+  {
+    0x08, 0x00001E6EUL,
+    {
+    0x76, 0xE0, 0x00, 0x20, 0xE1, 0x18, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001E76UL,
+    {
+    0xF0, 0x49, 0x49, 0x80, 0x2D, 0x06, 0x49, 0x81, 0x2D, 0x04, 0x49, 0x82,
+        0x2D, 0x02, 0xE1, 0x08}
+  }
+  , 
+  {
+    0x10, 0x00001E86UL,
+    {
+    0xCB, 0x00, 0xF0, 0x48, 0x49, 0x80, 0x3D, 0x04, 0xF0, 0x49, 0xF7, 0xF8,
+        0x4B, 0x11, 0x0D, 0x09}
+  }
+  , 
+  {
+    0x10, 0x00001E96UL,
+    {
+    0xF0, 0x48, 0x49, 0x81, 0x3D, 0x04, 0xF0, 0x49, 0xF7, 0xF8, 0x4A, 0x11,
+        0x0D, 0x02, 0xE1, 0x08}
+  }
+  , 
+  {
+    0x06, 0x00001EA6UL,
+    {
+    0xCB, 0x00, 0xE1, 0x18, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001EACUL,
+    {
+    0xF2, 0xF7, 0x48, 0x11, 0xF2, 0xF6, 0x46, 0x11, 0xDC, 0x07, 0xA9, 0x86,
+        0x49, 0x81, 0x3D, 0x0B}
+  }
+  , 
+  {
+    0x10, 0x00001EBCUL,
+    {
+    0xDC, 0x17, 0xF4, 0x86, 0x01, 0x00, 0xCC, 0x00, 0xB9, 0x88, 0xF2, 0xF5,
+        0x48, 0x11, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x0C, 0x00001ECCUL,
+    {
+    0x46, 0x11, 0x08, 0x44, 0xCB, 0x00, 0xE0, 0x04, 0xE0, 0x05, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001ED8UL,
+    {
+    0xEC, 0xFD, 0xF0, 0x69, 0xF0, 0x7A, 0xF0, 0xD8, 0xF0, 0x48, 0xC0, 0x8C,
+        0xF0, 0xBA, 0xF0, 0xA9}
+  }
+  , 
+  {
+    0x10, 0x00001EE8UL,
+    {
+    0xF2, 0xF9, 0x48, 0x11, 0xF2, 0xF8, 0x46, 0x11, 0x08, 0x84, 0xCA, 0x00,
+        0x1A, 0x29, 0xF0, 0x6D}
+  }
+  , 
+  {
+    0x10, 0x00001EF8UL,
+    {
+    0xF2, 0xF5, 0x48, 0x11, 0xF2, 0xF4, 0x46, 0x11, 0xDC, 0x05, 0xE4, 0xC4,
+        0x01, 0x00, 0xE1, 0x2C}
+  }
+  , 
+  {
+    0x10, 0x00001F08UL,
+    {
+    0xF2, 0xF5, 0x48, 0x11, 0xF2, 0xF4, 0x46, 0x11, 0xDC, 0x05, 0xB9, 0xC4,
+        0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001F18UL,
+    {
+    0xF0, 0x48, 0x29, 0x81, 0x2D, 0x0E, 0x09, 0x81, 0x3D, 0x18, 0xF2, 0xF5,
+        0x40, 0x11, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00001F28UL,
+    {
+    0x3E, 0x11, 0xDC, 0x05, 0xA9, 0x84, 0x3D, 0x02, 0x0F, 0xF4, 0x0D, 0x01,
+        0x0E, 0xF4, 0x69, 0x81}
+  }
+  , 
+  {
+    0x10, 0x00001F38UL,
+    {
+    0xCB, 0x00, 0xF2, 0xF5, 0x38, 0x11, 0xF2, 0xF4, 0x36, 0x11, 0xDC, 0x05,
+        0xA9, 0x84, 0x3D, 0x02}
+  }
+  , 
+  {
+    0x0E, 0x00001F48UL,
+    {
+    0x0F, 0xF4, 0x0D, 0x01, 0x0E, 0xF4, 0x69, 0x81, 0xCB, 0x00, 0xE1, 0x08,
+        0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001F56UL,
+    {
+    0xEC, 0xFD, 0xEC, 0xFE, 0xEC, 0xFF, 0xF0, 0xEA, 0xF0, 0xFB, 0xF0, 0xD9,
+        0xF0, 0x48, 0x29, 0x81}
+  }
+  , 
+  {
+    0x10, 0x00001F66UL,
+    {
+    0x2D, 0x4E, 0x09, 0x81, 0xEA, 0x30, 0x98, 0x20, 0xF2, 0xF9, 0x40, 0x11,
+        0xF2, 0xF8, 0x3E, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001F76UL,
+    {
+    0xDC, 0x09, 0xA9, 0x88, 0xEA, 0x30, 0x98, 0x20, 0xF0, 0x6D, 0xDC, 0x09,
+        0xE4, 0xC8, 0x01, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001F86UL,
+    {
+    0xF0, 0x4D, 0xC0, 0x8C, 0xF0, 0xBF, 0xF0, 0xAE, 0xF2, 0xF9, 0x40, 0x11,
+        0xF2, 0xF8, 0x3E, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001F96UL,
+    {
+    0x08, 0x82, 0xCA, 0x00, 0x1A, 0x29, 0xE1, 0x1C, 0xF2, 0xF5, 0x40, 0x11,
+        0xF2, 0xF4, 0x3E, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001FA6UL,
+    {
+    0xDC, 0x05, 0xB9, 0xC4, 0xE6, 0xF4, 0x14, 0x00, 0x04, 0xF4, 0x3E, 0x11,
+        0xF2, 0xF9, 0x48, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001FB6UL,
+    {
+    0xF2, 0xF8, 0x46, 0x11, 0xF0, 0x68, 0x06, 0xF6, 0x08, 0x0C, 0xF0, 0x79,
+        0x22, 0xF6, 0x3E, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001FC6UL,
+    {
+    0x32, 0xF7, 0x40, 0x11, 0xED, 0x06, 0x06, 0xF8, 0x20, 0x08, 0xF6, 0xF8,
+        0x3E, 0x11, 0xF6, 0xF9}
+  }
+  , 
+  {
+    0x10, 0x00001FD6UL,
+    {
+    0x40, 0x11, 0xF3, 0xF8, 0x4B, 0x11, 0x49, 0x81, 0x3D, 0x03, 0xCA, 0x00,
+        0xDC, 0x21, 0x0D, 0x0D}
+  }
+  , 
+  {
+    0x10, 0x00001FE6UL,
+    {
+    0xF3, 0xF8, 0x4B, 0x11, 0x49, 0x82, 0x3D, 0x09, 0xF2, 0xF5, 0x40, 0x11,
+        0xF2, 0xF4, 0x3E, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001FF6UL,
+    {
+    0xDC, 0x05, 0xA9, 0x84, 0x2D, 0x02, 0xCA, 0x00, 0xDC, 0x21, 0xE1, 0x18,
+        0x0D, 0x4B, 0xF2, 0xF9}
+  }
+  , 
+  {
+    0x10, 0x00002006UL,
+    {
+    0x38, 0x11, 0xF2, 0xF8, 0x36, 0x11, 0xDC, 0x09, 0xA9, 0x88, 0x3D, 0x43,
+        0xF0, 0x6D, 0xDC, 0x09}
+  }
+  , 
+  {
+    0x10, 0x00002016UL,
+    {
+    0xE4, 0xC8, 0x01, 0x00, 0xF0, 0x4D, 0xC0, 0x8C, 0xF0, 0xBF, 0xF0, 0xAE,
+        0xF2, 0xF9, 0x38, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00002026UL,
+    {
+    0xF2, 0xF8, 0x36, 0x11, 0x08, 0x82, 0xCA, 0x00, 0x1A, 0x29, 0xE1, 0x1C,
+        0xF2, 0xF5, 0x38, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00002036UL,
+    {
+    0xF2, 0xF4, 0x36, 0x11, 0xDC, 0x05, 0xB9, 0xC4, 0xE6, 0xF4, 0x14, 0x00,
+        0x04, 0xF4, 0x36, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00002046UL,
+    {
+    0xF2, 0xF9, 0x48, 0x11, 0xF2, 0xF8, 0x46, 0x11, 0xF0, 0x68, 0x06, 0xF6,
+        0xF0, 0x0F, 0xF0, 0x79}
+  }
+  , 
+  {
+    0x10, 0x00002056UL,
+    {
+    0x22, 0xF6, 0x36, 0x11, 0x32, 0xF7, 0x38, 0x11, 0xED, 0x06, 0x06, 0xF8,
+        0x08, 0x0C, 0xF6, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00002066UL,
+    {
+    0x36, 0x11, 0xF6, 0xF9, 0x38, 0x11, 0xF3, 0xF8, 0x4A, 0x11, 0x49, 0x81,
+        0x3D, 0x03, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002076UL,
+    {
+    0xDC, 0x21, 0x0D, 0x0D, 0xF3, 0xF8, 0x4A, 0x11, 0x49, 0x82, 0x3D, 0x09,
+        0xF2, 0xF5, 0x38, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00002086UL,
+    {
+    0xF2, 0xF4, 0x36, 0x11, 0xDC, 0x05, 0xA9, 0x84, 0x2D, 0x02, 0xCA, 0x00,
+        0xDC, 0x21, 0xE1, 0x18}
+  }
+  , 
+  {
+    0x0C, 0x00002096UL,
+    {
+    0x0D, 0x01, 0xE1, 0x08, 0xFC, 0xFF, 0xFC, 0xFE, 0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000020A2UL,
+    {
+    0xF0, 0x48, 0x29, 0x81, 0x2D, 0x14, 0x09, 0x81, 0x3D, 0x24, 0xF2, 0xF7,
+        0x3C, 0x11, 0xF2, 0xF6}
+  }
+  , 
+  {
+    0x10, 0x000020B2UL,
+    {
+    0x3A, 0x11, 0xDC, 0x07, 0xA9, 0x86, 0x2D, 0x1D, 0xDC, 0x17, 0xF4, 0x86,
+        0x01, 0x00, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000020C2UL,
+    {
+    0xB9, 0x89, 0xF2, 0xF5, 0x3C, 0x11, 0xF2, 0xF4, 0x3A, 0x11, 0x08, 0x42,
+        0xCB, 0x00, 0xF2, 0xF7}
+  }
+  , 
+  {
+    0x10, 0x000020D2UL,
+    {
+    0x34, 0x11, 0xF2, 0xF6, 0x32, 0x11, 0xDC, 0x07, 0xA9, 0x86, 0x2D, 0x0B,
+        0xDC, 0x17, 0xF4, 0x86}
+  }
+  , 
+  {
+    0x10, 0x000020E2UL,
+    {
+    0x01, 0x00, 0xCC, 0x00, 0xB9, 0x89, 0xF2, 0xF5, 0x34, 0x11, 0xF2, 0xF4,
+        0x32, 0x11, 0x08, 0x42}
+  }
+  , 
+  {
+    0x08, 0x000020F2UL,
+    {
+    0xCB, 0x00, 0xE0, 0x04, 0xE0, 0x05, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000020FAUL,
+    {
+    0xF0, 0x48, 0x29, 0x81, 0x2D, 0x21, 0x09, 0x81, 0x3D, 0x3D, 0xE1, 0x0C,
+        0xF2, 0xF5, 0x3C, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000210AUL,
+    {
+    0xF2, 0xF4, 0x3A, 0x11, 0xDC, 0x05, 0xB9, 0xC4, 0xE6, 0xF4, 0x14, 0x00,
+        0x04, 0xF4, 0x3A, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000211AUL,
+    {
+    0xF2, 0xF9, 0x48, 0x11, 0xF2, 0xF8, 0x46, 0x11, 0xF0, 0x68, 0x06, 0xF6,
+        0x38, 0x04, 0xF0, 0x79}
+  }
+  , 
+  {
+    0x10, 0x0000212AUL,
+    {
+    0x22, 0xF6, 0x3A, 0x11, 0x32, 0xF7, 0x3C, 0x11, 0xED, 0x25, 0x06, 0xF8,
+        0x50, 0x00, 0xF6, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x0000213AUL,
+    {
+    0x3A, 0x11, 0xF6, 0xF9, 0x3C, 0x11, 0xCB, 0x00, 0xE1, 0x0C, 0xF2, 0xF5,
+        0x34, 0x11, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x0000214AUL,
+    {
+    0x32, 0x11, 0xDC, 0x05, 0xB9, 0xC4, 0xE6, 0xF4, 0x14, 0x00, 0x04, 0xF4,
+        0x32, 0x11, 0xF2, 0xF9}
+  }
+  , 
+  {
+    0x10, 0x0000215AUL,
+    {
+    0x48, 0x11, 0xF2, 0xF8, 0x46, 0x11, 0xF0, 0x68, 0x06, 0xF6, 0x20, 0x08,
+        0xF0, 0x79, 0x22, 0xF6}
+  }
+  , 
+  {
+    0x10, 0x0000216AUL,
+    {
+    0x32, 0x11, 0x32, 0xF7, 0x34, 0x11, 0xED, 0x06, 0x06, 0xF8, 0x38, 0x04,
+        0xF6, 0xF8, 0x32, 0x11}
+  }
+  , 
+  {
+    0x06, 0x0000217AUL,
+    {
+    0xF6, 0xF9, 0x34, 0x11, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002180UL,
+    {
+    0xEC, 0xFE, 0xEC, 0xFF, 0xF0, 0x2A, 0xF0, 0x3B, 0xF0, 0x78, 0xE1, 0x0C,
+        0xF2, 0xF5, 0x44, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00002190UL,
+    {
+    0xF2, 0xF4, 0x42, 0x11, 0xDC, 0x05, 0xB9, 0xC4, 0xF2, 0xFF, 0x44, 0x11,
+        0xF2, 0xFE, 0x42, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000021A0UL,
+    {
+    0xDC, 0x0F, 0xA9, 0x8E, 0x3D, 0x14, 0xF0, 0x49, 0xC0, 0x8C, 0xF2, 0xF9,
+        0x48, 0x11, 0xF2, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x000021B0UL,
+    {
+    0x46, 0x11, 0x00, 0x87, 0x06, 0xF8, 0xF0, 0x0F, 0xCA, 0x00, 0x1A, 0x29,
+        0xE1, 0x1C, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x000021C0UL,
+    {
+    0x44, 0x11, 0xF2, 0xF4, 0x42, 0x11, 0xDC, 0x05, 0xB9, 0xC4, 0xE1, 0x18,
+        0x0D, 0x04, 0xE1, 0x1C}
+  }
+  , 
+  {
+    0x0C, 0x000021D0UL,
+    {
+    0xDC, 0x0F, 0xB9, 0xCE, 0xE1, 0x08, 0xFC, 0xFF, 0xFC, 0xFE, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x0C, 0x000021DCUL,
+    {
+    0xBE, 0x88, 0xCC, 0x00, 0x7F, 0xE6, 0x7E, 0xE6, 0xBF, 0x88, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000021E8UL,
+    {
+    0xC6, 0x03, 0x03, 0x00, 0xCC, 0x00, 0xF6, 0xF0, 0x00, 0xFC, 0xC6, 0x08,
+        0x00, 0xFC, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000021F8UL,
+    {
+    0xEC, 0x00, 0xC6, 0x87, 0x10, 0x00, 0xEC, 0x06, 0xEC, 0x07, 0xF2, 0xF5,
+        0x40, 0x11, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00002208UL,
+    {
+    0x3E, 0x11, 0xDC, 0x05, 0xA9, 0x84, 0x3D, 0x04, 0xC2, 0xF8, 0x4F, 0x11,
+        0xCA, 0x00, 0x38, 0x23}
+  }
+  , 
+  {
+    0x10, 0x00002218UL,
+    {
+    0xF2, 0xF5, 0x38, 0x11, 0xF2, 0xF4, 0x36, 0x11, 0xDC, 0x05, 0xA9, 0x84,
+        0x3D, 0x04, 0xC2, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00002228UL,
+    {
+    0x4E, 0x11, 0xCA, 0x00, 0x38, 0x23, 0xF2, 0xF5, 0x3C, 0x11, 0xF2, 0xF4,
+        0x3A, 0x11, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00002238UL,
+    {
+    0xA9, 0x84, 0x2D, 0x04, 0xC2, 0xF8, 0x51, 0x11, 0xCA, 0x00, 0x38, 0x23,
+        0xF2, 0xF5, 0x34, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00002248UL,
+    {
+    0xF2, 0xF4, 0x32, 0x11, 0xDC, 0x05, 0xA9, 0x84, 0x2D, 0x04, 0xC2, 0xF8,
+        0x50, 0x11, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002258UL,
+    {
+    0x38, 0x23, 0xF2, 0xF5, 0x48, 0x11, 0xF2, 0xF4, 0x46, 0x11, 0xDC, 0x05,
+        0xA9, 0x84, 0x49, 0x81}
+  }
+  , 
+  {
+    0x10, 0x00002268UL,
+    {
+    0x3D, 0x04, 0xC2, 0xF8, 0x4C, 0x11, 0xCA, 0x00, 0x38, 0x23, 0xFC, 0x07,
+        0xFC, 0x06, 0xFC, 0x87}
+  }
+  , 
+  {
+    0x08, 0x00002278UL,
+    {
+    0xFC, 0x00, 0xFC, 0x08, 0xFC, 0x03, 0xFB, 0x88}
+  }
+  , 
+  {
+    0x10, 0x00002280UL,
+    {
+    0xE6, 0xFB, 0x00, 0x20, 0xE0, 0x0A, 0xE0, 0x08, 0xE6, 0xF9, 0x80, 0x00,
+        0xCA, 0x00, 0x94, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002290UL,
+    {
+    0xF2, 0xFB, 0x48, 0x11, 0xF2, 0xFA, 0x46, 0x11, 0xF0, 0x4A, 0x06, 0xF4,
+        0x50, 0x00, 0xF6, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x000022A0UL,
+    {
+    0x3A, 0x11, 0xF6, 0xFB, 0x3C, 0x11, 0xF0, 0x6A, 0x06, 0xF6, 0x38, 0x04,
+        0xF6, 0xF6, 0x32, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000022B0UL,
+    {
+    0xF6, 0xFB, 0x34, 0x11, 0xF0, 0x8A, 0x06, 0xF8, 0x20, 0x08, 0xF6, 0xF8,
+        0x3E, 0x11, 0xF6, 0xFB}
+  }
+  , 
+  {
+    0x10, 0x000022C0UL,
+    {
+    0x40, 0x11, 0x06, 0xFA, 0x08, 0x0C, 0xF6, 0xFA, 0x36, 0x11, 0xF6, 0xFB,
+        0x38, 0x11, 0xE0, 0x08}
+  }
+  , 
+  {
+    0x10, 0x000022D0UL,
+    {
+    0xE1, 0x1E, 0xF2, 0xF5, 0x44, 0x11, 0xF2, 0xF4, 0x42, 0x11, 0x00, 0x48,
+        0xDC, 0x05, 0xB9, 0xE4}
+  }
+  , 
+  {
+    0x06, 0x000022E0UL,
+    {
+    0x80, 0xF8, 0x8D, 0xF7, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002BA2UL,
+    {
+    0x01, 0x40, 0x2C, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002BA8UL,
+    {
+    0x01, 0x40, 0x2D, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002BAEUL,
+    {
+    0x01, 0x40, 0x30, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002BB4UL,
+    {
+    0x01, 0x40, 0x31, 0x11, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002BBAUL,
+    {
+    0x01, 0x40, 0xF0, 0xFC, 0x02, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002BC0UL,
+    {
+    0x01, 0x40, 0xF1, 0xFC, 0x02, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000011CUL,
+    {
+    0xEC, 0xFD, 0xF0, 0xD8, 0xFE, 0x04, 0xEE, 0x04, 0x1E, 0x05, 0x0E, 0x05,
+        0xF6, 0x8E, 0x10, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000012CUL,
+    {
+    0xF6, 0x8E, 0x18, 0x11, 0xF6, 0x8E, 0x0C, 0x11, 0xF6, 0x8E, 0x14, 0x11,
+        0xF6, 0x8E, 0x26, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000013CUL,
+    {
+    0xF6, 0x8E, 0x28, 0x11, 0xF6, 0x8E, 0xFE, 0x10, 0xF6, 0x8E, 0x00, 0x11,
+        0xF6, 0x8E, 0x1E, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000014CUL,
+    {
+    0xF6, 0x8E, 0x20, 0x11, 0xF6, 0x8E, 0xF6, 0x10, 0xF6, 0x8E, 0xF8, 0x10,
+        0xF6, 0x8E, 0x0E, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000015CUL,
+    {
+    0xF6, 0x8E, 0x16, 0x11, 0xF6, 0x8E, 0x0A, 0x11, 0xF6, 0x8E, 0x12, 0x11,
+        0xF6, 0x8E, 0x22, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000016CUL,
+    {
+    0xF6, 0x8E, 0x24, 0x11, 0xF6, 0x8E, 0xFA, 0x10, 0xF6, 0x8E, 0xFC, 0x10,
+        0xF6, 0x8E, 0x1A, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000017CUL,
+    {
+    0xF6, 0x8E, 0x1C, 0x11, 0xF6, 0x8E, 0xF2, 0x10, 0xF6, 0x8E, 0xF4, 0x10,
+        0xE6, 0xF4, 0x00, 0x40}
+  }
+  , 
+  {
+    0x10, 0x0000018CUL,
+    {
+    0xE6, 0xF5, 0x20, 0x00, 0xF6, 0xF4, 0x06, 0x11, 0xF6, 0xF5, 0x08, 0x11,
+        0xE6, 0xF4, 0x00, 0x48}
+  }
+  , 
+  {
+    0x10, 0x0000019CUL,
+    {
+    0xF6, 0xF4, 0x02, 0x11, 0xF6, 0xF5, 0x04, 0x11, 0x5F, 0xE7, 0x6F, 0xE7,
+        0x5F, 0xE6, 0x6F, 0xE6}
+  }
+  , 
+  {
+    0x10, 0x000001ACUL,
+    {
+    0x5E, 0xE6, 0xCA, 0x00, 0x8A, 0x0D, 0x5F, 0xE6, 0xCA, 0x00, 0x8A, 0x0D,
+        0x6E, 0xE6, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000001BCUL,
+    {
+    0x8A, 0x0D, 0x6F, 0xE6, 0xCA, 0x00, 0x8A, 0x0D, 0xD1, 0x90, 0x66, 0xE0,
+        0xFF, 0xF0, 0x76, 0xE0}
+  }
+  , 
+  {
+    0x10, 0x000001CCUL,
+    {
+    0x00, 0x0A, 0xE6, 0xC8, 0x68, 0x00, 0xE6, 0xC9, 0x69, 0x00, 0xE0, 0x08,
+        0xCA, 0x00, 0x3C, 0x0D}
+  }
+  , 
+  {
+    0x10, 0x000001DCUL,
+    {
+    0xF7, 0xF8, 0x2D, 0x11, 0xE0, 0x18, 0xCA, 0x00, 0x3C, 0x0D, 0xF7, 0xF8,
+        0x2C, 0x11, 0xF0, 0x4D}
+  }
+  , 
+  {
+    0x10, 0x000001ECUL,
+    {
+    0xF7, 0xF8, 0xF2, 0xFC, 0xE0, 0x89, 0xC2, 0xF8, 0xF2, 0xFC, 0xCA, 0x00,
+        0x00, 0x27, 0xFC, 0xFD}
+  }
+  , 
+  {
+    0x02, 0x000001FCUL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000001FEUL,
+    {
+    0xF0, 0x48, 0x29, 0x81, 0x2D, 0x06, 0x09, 0x81, 0x3D, 0x07, 0xF0, 0x49,
+        0xF7, 0xF8, 0x31, 0x11}
+  }
+  , 
+  {
+    0x0A, 0x0000020EUL,
+    {
+    0xCB, 0x00, 0xF0, 0x49, 0xF7, 0xF8, 0x30, 0x11, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000218UL,
+    {
+    0xEC, 0xFD, 0xEC, 0xFE, 0xEC, 0xFF, 0xF0, 0xDB, 0xF0, 0xEA, 0xF0, 0xF9,
+        0x88, 0x80, 0xA9, 0x80}
+  }
+  , 
+  {
+    0x10, 0x00000228UL,
+    {
+    0xC0, 0x88, 0xCA, 0x00, 0x44, 0x06, 0x47, 0xF8, 0xFF, 0x00, 0x3D, 0x03,
+        0xE7, 0xF8, 0xFF, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000238UL,
+    {
+    0x0D, 0x6B, 0xF6, 0x8C, 0x2A, 0x11, 0xA9, 0x80, 0x29, 0x81, 0x2D, 0x31,
+        0x09, 0x81, 0x3D, 0x5E}
+  }
+  , 
+  {
+    0x10, 0x00000248UL,
+    {
+    0xF0, 0x4F, 0xF7, 0xF8, 0x2F, 0x11, 0xE6, 0x8C, 0x6E, 0x04, 0xF0, 0x6E,
+        0xF2, 0xF5, 0x08, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000258UL,
+    {
+    0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x06, 0x00, 0xF0, 0x6D,
+        0xF2, 0xF5, 0x08, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000268UL,
+    {
+    0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x07, 0x00, 0xE7, 0xFC,
+        0x5E, 0x00, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x00000278UL,
+    {
+    0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x08, 0x00,
+        0xE7, 0xFC, 0x2F, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000288UL,
+    {
+    0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4,
+        0x04, 0x00, 0xE1, 0x9C}
+  }
+  , 
+  {
+    0x10, 0x00000298UL,
+    {
+    0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xB9, 0xC4,
+        0x0D, 0x32, 0xF0, 0x4F}
+  }
+  , 
+  {
+    0x10, 0x000002A8UL,
+    {
+    0xF7, 0xF8, 0x2E, 0x11, 0xE6, 0x8C, 0x6E, 0x04, 0xF0, 0x6E, 0xF2, 0xF5,
+        0x04, 0x11, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x000002B8UL,
+    {
+    0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x06, 0x00, 0xF0, 0x6D, 0xF2, 0xF5,
+        0x04, 0x11, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x000002C8UL,
+    {
+    0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x07, 0x00, 0xE7, 0xFC, 0x5E, 0x00,
+        0xF2, 0xF5, 0x04, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000002D8UL,
+    {
+    0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x08, 0x00, 0xE7, 0xFC,
+        0x2F, 0x00, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x000002E8UL,
+    {
+    0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x04, 0x00,
+        0xE1, 0x9C, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x000002F8UL,
+    {
+    0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xB9, 0xC4, 0x0D, 0x03,
+        0xE7, 0xF8, 0xFF, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000308UL,
+    {
+    0x0D, 0x03, 0xF2, 0x8C, 0x2A, 0x11, 0xE1, 0x18, 0x08, 0x02, 0xFC, 0xFF,
+        0xFC, 0xFE, 0xFC, 0xFD}
+  }
+  , 
+  {
+    0x02, 0x00000318UL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000031AUL,
+    {
+    0x88, 0xC0, 0x88, 0xB0, 0xF0, 0x48, 0x29, 0x81, 0x2D, 0x4F, 0x09, 0x81,
+        0xEA, 0x30, 0x58, 0x04}
+  }
+  , 
+  {
+    0x10, 0x0000032AUL,
+    {
+    0xF0, 0x49, 0x49, 0x80, 0x3D, 0x22, 0xF0, 0x4A, 0x49, 0x80, 0x3D, 0x09,
+        0xA8, 0x40, 0xF6, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x0000033AUL,
+    {
+    0x10, 0x11, 0xD4, 0x40, 0x04, 0x00, 0xF6, 0xF4, 0x18, 0x11, 0xEA, 0x00,
+        0x5E, 0x04, 0xF0, 0x4A}
+  }
+  , 
+  {
+    0x10, 0x0000034AUL,
+    {
+    0x49, 0x81, 0x3D, 0x10, 0xA8, 0x40, 0xD4, 0x50, 0x02, 0x00, 0xF6, 0xF4,
+        0x26, 0x11, 0xF6, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x0000035AUL,
+    {
+    0x28, 0x11, 0xD4, 0x40, 0x04, 0x00, 0xD4, 0x50, 0x06, 0x00, 0xF6, 0xF4,
+        0xFE, 0x10, 0xF6, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x0000036AUL,
+    {
+    0x00, 0x11, 0x0D, 0x78, 0xE7, 0xF8, 0xFF, 0x00, 0x0D, 0x76, 0xF0, 0x49,
+        0x49, 0x81, 0x3D, 0x21}
+  }
+  , 
+  {
+    0x10, 0x0000037AUL,
+    {
+    0xF0, 0x4A, 0x49, 0x80, 0x3D, 0x08, 0xA8, 0x40, 0xF6, 0xF4, 0x0C, 0x11,
+        0xD4, 0x40, 0x04, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000038AUL,
+    {
+    0xF6, 0xF4, 0x14, 0x11, 0x0D, 0x67, 0xF0, 0x4A, 0x49, 0x81, 0x3D, 0x10,
+        0xA8, 0x40, 0xD4, 0x50}
+  }
+  , 
+  {
+    0x10, 0x0000039AUL,
+    {
+    0x02, 0x00, 0xF6, 0xF4, 0x1E, 0x11, 0xF6, 0xF5, 0x20, 0x11, 0xD4, 0x40,
+        0x04, 0x00, 0xD4, 0x50}
+  }
+  , 
+  {
+    0x10, 0x000003AAUL,
+    {
+    0x06, 0x00, 0xF6, 0xF4, 0xF6, 0x10, 0xF6, 0xF5, 0xF8, 0x10, 0x0D, 0x54,
+        0xE7, 0xF8, 0xFF, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000003BAUL,
+    {
+    0x0D, 0x52, 0xE7, 0xF8, 0xFF, 0x00, 0x0D, 0x4F, 0xF0, 0x49, 0x49, 0x80,
+        0x3D, 0x21, 0xF0, 0x4A}
+  }
+  , 
+  {
+    0x10, 0x000003CAUL,
+    {
+    0x49, 0x80, 0x3D, 0x08, 0xA8, 0x40, 0xF6, 0xF4, 0x0E, 0x11, 0xD4, 0x40,
+        0x04, 0x00, 0xF6, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x000003DAUL,
+    {
+    0x16, 0x11, 0x0D, 0x40, 0xF0, 0x4A, 0x49, 0x81, 0x3D, 0x10, 0xA8, 0x40,
+        0xD4, 0x50, 0x02, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000003EAUL,
+    {
+    0xF6, 0xF4, 0x22, 0x11, 0xF6, 0xF5, 0x24, 0x11, 0xD4, 0x40, 0x04, 0x00,
+        0xD4, 0x50, 0x06, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000003FAUL,
+    {
+    0xF6, 0xF4, 0xFA, 0x10, 0xF6, 0xF5, 0xFC, 0x10, 0x0D, 0x2D, 0xE7, 0xF8,
+        0xFF, 0x00, 0x0D, 0x2B}
+  }
+  , 
+  {
+    0x10, 0x0000040AUL,
+    {
+    0xF0, 0x49, 0x49, 0x81, 0x3D, 0x21, 0xF0, 0x4A, 0x49, 0x80, 0x3D, 0x08,
+        0xA8, 0x40, 0xF6, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x0000041AUL,
+    {
+    0x0A, 0x11, 0xD4, 0x40, 0x04, 0x00, 0xF6, 0xF4, 0x12, 0x11, 0x0D, 0x1C,
+        0xF0, 0x4A, 0x49, 0x81}
+  }
+  , 
+  {
+    0x10, 0x0000042AUL,
+    {
+    0x3D, 0x10, 0xA8, 0x40, 0xD4, 0x50, 0x02, 0x00, 0xF6, 0xF4, 0x1A, 0x11,
+        0xF6, 0xF5, 0x1C, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000043AUL,
+    {
+    0xD4, 0x40, 0x04, 0x00, 0xD4, 0x50, 0x06, 0x00, 0xF6, 0xF4, 0xF2, 0x10,
+        0xF6, 0xF5, 0xF4, 0x10}
+  }
+  , 
+  {
+    0x10, 0x0000044AUL,
+    {
+    0x0D, 0x09, 0xE7, 0xF8, 0xFF, 0x00, 0x0D, 0x07, 0xE7, 0xF8, 0xFF, 0x00,
+        0x0D, 0x04, 0xE7, 0xF8}
+  }
+  , 
+  {
+    0x0A, 0x0000045AUL,
+    {
+    0xFF, 0x00, 0x0D, 0x01, 0xE1, 0x18, 0x08, 0x04, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000464UL,
+    {
+    0xEC, 0xFD, 0xEC, 0xFE, 0xEC, 0xFF, 0x28, 0x02, 0xF6, 0x8C, 0x2A, 0x11,
+        0xF0, 0x48, 0x29, 0x81}
+  }
+  , 
+  {
+    0x10, 0x00000474UL,
+    {
+    0x2D, 0x47, 0x09, 0x81, 0xEA, 0x30, 0x8A, 0x05, 0xF3, 0xF8, 0x2D, 0x11,
+        0x49, 0x81, 0x2D, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00000484UL,
+    {
+    0xE7, 0xF8, 0xFF, 0x00, 0xEA, 0x00, 0x96, 0x05, 0xFE, 0x04, 0x1E, 0x05,
+        0xF6, 0x8E, 0xEE, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000494UL,
+    {
+    0xF6, 0x8E, 0xEA, 0xFC, 0xF6, 0x8E, 0xE6, 0xFC, 0xCE, 0x04, 0x0D, 0x03,
+        0xE0, 0x08, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000004A4UL,
+    {
+    0xFA, 0x20, 0xF0, 0x90, 0xE0, 0x08, 0xCA, 0x00, 0xA2, 0x20, 0xF0, 0xE4,
+        0xF0, 0xF5, 0x70, 0x45}
+  }
+  , 
+  {
+    0x10, 0x000004B4UL,
+    {
+    0x3D, 0xF5, 0xCA, 0x00, 0x90, 0x26, 0xE0, 0x08, 0xCA, 0x00, 0xC6, 0x2A,
+        0x49, 0x80, 0x3D, 0x03}
+  }
+  , 
+  {
+    0x10, 0x000004C4UL,
+    {
+    0xE0, 0x08, 0xCA, 0x00, 0xA4, 0x2A, 0xE6, 0x8C, 0x6E, 0x04, 0xE1, 0x9C,
+        0xF2, 0xF5, 0x08, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000004D4UL,
+    {
+    0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xB9, 0xC4, 0xE0, 0x8D, 0x0D, 0x07,
+        0xF0, 0x6D, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x000004E4UL,
+    {
+    0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xB9, 0xC4, 0xF2, 0xF5,
+        0x08, 0x11, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x000004F4UL,
+    {
+    0x06, 0x11, 0xDC, 0x05, 0xA9, 0x84, 0x8A, 0xF4, 0xF1, 0x00, 0xCA, 0x00,
+        0x9A, 0x26, 0x0D, 0x46}
+  }
+  , 
+  {
+    0x10, 0x00000504UL,
+    {
+    0xF3, 0xF8, 0x2C, 0x11, 0x49, 0x81, 0x2D, 0x03, 0xE7, 0xF8, 0xFF, 0x00,
+        0x0D, 0x42, 0xEE, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00000514UL,
+    {
+    0x0E, 0x05, 0xF6, 0x8E, 0xEC, 0xFC, 0xF6, 0x8E, 0xE8, 0xFC, 0xF6, 0x8E,
+        0xE4, 0xFC, 0xBE, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00000524UL,
+    {
+    0x0D, 0x03, 0xE0, 0x18, 0xCA, 0x00, 0xFA, 0x20, 0xF0, 0x90, 0xE0, 0x18,
+        0xCA, 0x00, 0xA2, 0x20}
+  }
+  , 
+  {
+    0x10, 0x00000534UL,
+    {
+    0xF0, 0xE4, 0xF0, 0xF5, 0x70, 0x45, 0x3D, 0xF5, 0xCA, 0x00, 0x90, 0x26,
+        0xE0, 0x18, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000544UL,
+    {
+    0xC6, 0x2A, 0x49, 0x80, 0x3D, 0x03, 0xE0, 0x18, 0xCA, 0x00, 0xA4, 0x2A,
+        0xE6, 0x8C, 0x6E, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00000554UL,
+    {
+    0xE1, 0x9C, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05,
+        0xB9, 0xC4, 0xE0, 0x8D}
+  }
+  , 
+  {
+    0x10, 0x00000564UL,
+    {
+    0x0D, 0x07, 0xF0, 0x6D, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11,
+        0xDC, 0x05, 0xB9, 0xC4}
+  }
+  , 
+  {
+    0x10, 0x00000574UL,
+    {
+    0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xA9, 0x84,
+        0x8A, 0xF4, 0xF1, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000584UL,
+    {
+    0xCA, 0x00, 0x9A, 0x26, 0x0D, 0x03, 0xE7, 0xF8, 0xFF, 0x00, 0x0D, 0x03,
+        0xF2, 0x8C, 0x2A, 0x11}
+  }
+  , 
+  {
+    0x0C, 0x00000594UL,
+    {
+    0xE1, 0x18, 0x08, 0x02, 0xFC, 0xFF, 0xFC, 0xFE, 0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000005A0UL,
+    {
+    0xF6, 0x8C, 0x2A, 0x11, 0xF0, 0x48, 0x29, 0x81, 0x2D, 0x24, 0x09, 0x81,
+        0x3D, 0x44, 0xF3, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x000005B0UL,
+    {
+    0x2D, 0x11, 0x49, 0x81, 0x2D, 0x03, 0xE7, 0xF8, 0xFF, 0x00, 0xCB, 0x00,
+        0xE6, 0x8C, 0x6E, 0x04}
+  }
+  , 
+  {
+    0x10, 0x000005C0UL,
+    {
+    0xCA, 0x00, 0x90, 0x26, 0xE1, 0x2C, 0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4,
+        0x06, 0x11, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x000005D0UL,
+    {
+    0xE4, 0xC4, 0x01, 0x00, 0xF2, 0xF9, 0x08, 0x11, 0xF2, 0xF8, 0x06, 0x11,
+        0xDC, 0x09, 0xF4, 0x88}
+  }
+  , 
+  {
+    0x10, 0x000005E0UL,
+    {
+    0x02, 0x00, 0x9A, 0xF4, 0xF7, 0x20, 0xE1, 0x1C, 0xDC, 0x09, 0xB9, 0xC8,
+        0xCA, 0x00, 0x9A, 0x26}
+  }
+  , 
+  {
+    0x10, 0x000005F0UL,
+    {
+    0x0D, 0x25, 0xF3, 0xF8, 0x2C, 0x11, 0x49, 0x81, 0x2D, 0x03, 0xE7, 0xF8,
+        0xFF, 0x00, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000600UL,
+    {
+    0xE6, 0x8C, 0x6E, 0x04, 0xCA, 0x00, 0x90, 0x26, 0xE1, 0x2C, 0xF2, 0xF5,
+        0x04, 0x11, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00000610UL,
+    {
+    0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x01, 0x00, 0xF2, 0xF9, 0x04, 0x11,
+        0xF2, 0xF8, 0x02, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000620UL,
+    {
+    0xDC, 0x09, 0xF4, 0x88, 0x02, 0x00, 0x9A, 0xF4, 0xF7, 0x20, 0xE1, 0x1C,
+        0xDC, 0x09, 0xB9, 0xC8}
+  }
+  , 
+  {
+    0x10, 0x00000630UL,
+    {
+    0xCA, 0x00, 0x9A, 0x26, 0x0D, 0x03, 0xE7, 0xF8, 0xFF, 0x00, 0xCB, 0x00,
+        0xF2, 0x8C, 0x2A, 0x11}
+  }
+  , 
+  {
+    0x04, 0x00000640UL,
+    {
+    0xE1, 0x18, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000644UL,
+    {
+    0xEC, 0xFE, 0xEC, 0xFF, 0x28, 0x02, 0xF6, 0x8C, 0x2A, 0x11, 0xF0, 0x48,
+        0x29, 0x81, 0xEA, 0x20}
+  }
+  , 
+  {
+    0x10, 0x00000654UL,
+    {
+    0x6C, 0x07, 0x09, 0x81, 0xEA, 0x30, 0x76, 0x08, 0xF3, 0xF8, 0x2D, 0x11,
+        0x49, 0x81, 0x2D, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00000664UL,
+    {
+    0xE7, 0xF8, 0xFF, 0x00, 0xEA, 0x00, 0x82, 0x08, 0xCA, 0x00, 0x90, 0x26,
+        0x5E, 0xE6, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000674UL,
+    {
+    0x8A, 0x0D, 0x5F, 0xE6, 0xCA, 0x00, 0x8A, 0x0D, 0xE6, 0x8C, 0x6E, 0x04,
+        0xE7, 0xFC, 0x80, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000684UL,
+    {
+    0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4,
+        0x1F, 0x00, 0xE7, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000694UL,
+    {
+    0xFF, 0x00, 0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05,
+        0xE4, 0xC4, 0x10, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000006A4UL,
+    {
+    0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4,
+        0x11, 0x00, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x000006B4UL,
+    {
+    0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x12, 0x00,
+        0xF2, 0xF5, 0x08, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000006C4UL,
+    {
+    0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x13, 0x00, 0xF2, 0xF5,
+        0x08, 0x11, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x000006D4UL,
+    {
+    0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x14, 0x00, 0xF2, 0xF5, 0x08, 0x11,
+        0xF2, 0xF4, 0x06, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000006E4UL,
+    {
+    0xDC, 0x05, 0xE4, 0xC4, 0x15, 0x00, 0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4,
+        0x06, 0x11, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x000006F4UL,
+    {
+    0xE4, 0xC4, 0x16, 0x00, 0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11,
+        0xDC, 0x05, 0xE4, 0xC4}
+  }
+  , 
+  {
+    0x10, 0x00000704UL,
+    {
+    0x17, 0x00, 0xCA, 0x00, 0x9A, 0x26, 0xFE, 0x04, 0x1E, 0x05, 0xF6, 0x8E,
+        0xEE, 0xFC, 0xF6, 0x8E}
+  }
+  , 
+  {
+    0x10, 0x00000714UL,
+    {
+    0xEA, 0xFC, 0xF6, 0x8E, 0xE6, 0xFC, 0xCE, 0x04, 0xF6, 0x8E, 0x10, 0x11,
+        0xF6, 0x8E, 0x18, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000724UL,
+    {
+    0xF6, 0x8E, 0x0C, 0x11, 0xF6, 0x8E, 0x14, 0x11, 0xF6, 0x8E, 0x26, 0x11,
+        0xF6, 0x8E, 0x28, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000734UL,
+    {
+    0xF6, 0x8E, 0xFE, 0x10, 0xF6, 0x8E, 0x00, 0x11, 0xF6, 0x8E, 0x1E, 0x11,
+        0xF6, 0x8E, 0x20, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000744UL,
+    {
+    0xF6, 0x8E, 0xF6, 0x10, 0xF6, 0x8E, 0xF8, 0x10, 0x0D, 0x03, 0xE0, 0x08,
+        0xCA, 0x00, 0xFA, 0x20}
+  }
+  , 
+  {
+    0x10, 0x00000754UL,
+    {
+    0xF0, 0x90, 0xE0, 0x08, 0xCA, 0x00, 0xA2, 0x20, 0xF0, 0x64, 0xF0, 0x75,
+        0xF0, 0xE4, 0xF0, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x00000764UL,
+    {
+    0x70, 0x65, 0x3D, 0xF3, 0xEA, 0x00, 0x7C, 0x08, 0xF3, 0xF8, 0x2C, 0x11,
+        0x49, 0x81, 0x2D, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00000774UL,
+    {
+    0xE7, 0xF8, 0xFF, 0x00, 0xEA, 0x00, 0x82, 0x08, 0x6E, 0xE6, 0xCA, 0x00,
+        0x8A, 0x0D, 0x6F, 0xE6}
+  }
+  , 
+  {
+    0x10, 0x00000784UL,
+    {
+    0xCA, 0x00, 0x8A, 0x0D, 0xE6, 0x8C, 0x6E, 0x04, 0xCA, 0x00, 0x90, 0x26,
+        0xE7, 0xFC, 0x80, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000794UL,
+    {
+    0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4,
+        0x1F, 0x00, 0xE7, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000007A4UL,
+    {
+    0xFF, 0x00, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05,
+        0xE4, 0xC4, 0x10, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000007B4UL,
+    {
+    0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4,
+        0x11, 0x00, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x000007C4UL,
+    {
+    0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x12, 0x00,
+        0xF2, 0xF5, 0x04, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000007D4UL,
+    {
+    0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x13, 0x00, 0xF2, 0xF5,
+        0x04, 0x11, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x000007E4UL,
+    {
+    0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x14, 0x00, 0xF2, 0xF5, 0x04, 0x11,
+        0xF2, 0xF4, 0x02, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000007F4UL,
+    {
+    0xDC, 0x05, 0xE4, 0xC4, 0x15, 0x00, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4,
+        0x02, 0x11, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00000804UL,
+    {
+    0xE4, 0xC4, 0x16, 0x00, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11,
+        0xDC, 0x05, 0xE4, 0xC4}
+  }
+  , 
+  {
+    0x10, 0x00000814UL,
+    {
+    0x17, 0x00, 0xCA, 0x00, 0x9A, 0x26, 0xEE, 0x04, 0x0E, 0x05, 0xF6, 0x8E,
+        0xEC, 0xFC, 0xF6, 0x8E}
+  }
+  , 
+  {
+    0x10, 0x00000824UL,
+    {
+    0xE8, 0xFC, 0xF6, 0x8E, 0xE4, 0xFC, 0xBE, 0x04, 0xF6, 0x8E, 0x0E, 0x11,
+        0xF6, 0x8E, 0x16, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000834UL,
+    {
+    0xF6, 0x8E, 0x0A, 0x11, 0xF6, 0x8E, 0x12, 0x11, 0xF6, 0x8E, 0x22, 0x11,
+        0xF6, 0x8E, 0x24, 0x11}
+  }
+  , 
+  {
+    0x0C, 0x00000844UL,
+    {
+    0xF6, 0x8E, 0xFA, 0x10, 0xF6, 0x8E, 0xFC, 0x10, 0xF6, 0x8E, 0x1A, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000850UL,
+    {
+    0xF6, 0x8E, 0x1C, 0x11, 0xF6, 0x8E, 0xF2, 0x10, 0xF6, 0x8E, 0xF4, 0x10,
+        0x0D, 0x03, 0xE0, 0x18}
+  }
+  , 
+  {
+    0x10, 0x00000860UL,
+    {
+    0xCA, 0x00, 0xFA, 0x20, 0xF0, 0x90, 0xE0, 0x18, 0xCA, 0x00, 0xA2, 0x20,
+        0xF0, 0x64, 0xF0, 0x75}
+  }
+  , 
+  {
+    0x10, 0x00000870UL,
+    {
+    0x70, 0x65, 0x3D, 0xF5, 0x0D, 0x03, 0xE7, 0xF8, 0xFF, 0x00, 0x0D, 0x03,
+        0xF2, 0x8C, 0x2A, 0x11}
+  }
+  , 
+  {
+    0x0A, 0x00000880UL,
+    {
+    0xE1, 0x18, 0x08, 0x02, 0xFC, 0xFF, 0xFC, 0xFE, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000088AUL,
+    {
+    0xEC, 0xFD, 0xEC, 0xFE, 0xEC, 0xFF, 0xF0, 0xE9, 0xF0, 0xFA, 0xF6, 0x8C,
+        0x2A, 0x11, 0xF0, 0x48}
+  }
+  , 
+  {
+    0x10, 0x0000089AUL,
+    {
+    0x29, 0x81, 0x2D, 0x7D, 0x09, 0x81, 0xEA, 0x30, 0x8C, 0x0A, 0xE6, 0x8C,
+        0x6E, 0x04, 0xDC, 0x0F}
+  }
+  , 
+  {
+    0x10, 0x000008AAUL,
+    {
+    0xF4, 0xAE, 0x05, 0x00, 0xF0, 0xD5, 0xC0, 0xA5, 0x7C, 0x75, 0x9A, 0xF5,
+        0x3D, 0x00, 0xF0, 0x6D}
+  }
+  , 
+  {
+    0x10, 0x000008BAUL,
+    {
+    0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4,
+        0x10, 0x00, 0xDC, 0x0F}
+  }
+  , 
+  {
+    0x10, 0x000008CAUL,
+    {
+    0xF4, 0x8E, 0x06, 0x00, 0xF2, 0xF7, 0x08, 0x11, 0xF2, 0xF6, 0x06, 0x11,
+        0xDC, 0x07, 0xE4, 0x86}
+  }
+  , 
+  {
+    0x10, 0x000008DAUL,
+    {
+    0x11, 0x00, 0xDC, 0x0F, 0xF4, 0x8E, 0x07, 0x00, 0xF2, 0xF7, 0x08, 0x11,
+        0xF2, 0xF6, 0x06, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000008EAUL,
+    {
+    0xDC, 0x07, 0xE4, 0x86, 0x12, 0x00, 0xDC, 0x0F, 0xF4, 0x8E, 0x08, 0x00,
+        0xF2, 0xF7, 0x08, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000008FAUL,
+    {
+    0xF2, 0xF6, 0x06, 0x11, 0xDC, 0x07, 0xE4, 0x86, 0x13, 0x00, 0xDC, 0x0F,
+        0xF4, 0x8E, 0x09, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000090AUL,
+    {
+    0xF2, 0xF7, 0x08, 0x11, 0xF2, 0xF6, 0x06, 0x11, 0xDC, 0x07, 0xE4, 0x86,
+        0x14, 0x00, 0xF0, 0xAE}
+  }
+  , 
+  {
+    0x10, 0x0000091AUL,
+    {
+    0x06, 0xFA, 0x0A, 0x00, 0xF0, 0xBF, 0xF2, 0xF9, 0x08, 0x11, 0xF2, 0xF8,
+        0x06, 0x11, 0x06, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x0000092AUL,
+    {
+    0x15, 0x00, 0xCA, 0x00, 0x30, 0x29, 0x0D, 0x2A, 0xF0, 0x6D, 0x67, 0xFC,
+        0x7F, 0x00, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x0000093AUL,
+    {
+    0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x10, 0x00,
+        0xDC, 0x0F, 0xF4, 0x8E}
+  }
+  , 
+  {
+    0x10, 0x0000094AUL,
+    {
+    0x06, 0x00, 0xF2, 0xF7, 0x08, 0x11, 0xF2, 0xF6, 0x06, 0x11, 0xDC, 0x07,
+        0xE4, 0x86, 0x11, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000095AUL,
+    {
+    0xDC, 0x0F, 0xF4, 0x8E, 0x07, 0x00, 0xF2, 0xF7, 0x08, 0x11, 0xF2, 0xF6,
+        0x06, 0x11, 0xDC, 0x07}
+  }
+  , 
+  {
+    0x10, 0x0000096AUL,
+    {
+    0xE4, 0x86, 0x12, 0x00, 0xF0, 0xAE, 0x06, 0xFA, 0x08, 0x00, 0xF0, 0xBF,
+        0xF2, 0xF9, 0x08, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000097AUL,
+    {
+    0xF2, 0xF8, 0x06, 0x11, 0x06, 0xF8, 0x13, 0x00, 0xCA, 0x00, 0x30, 0x29,
+        0xE1, 0x1C, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x0000098AUL,
+    {
+    0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x01, 0x00,
+        0x0D, 0x7D, 0xE6, 0x8C}
+  }
+  , 
+  {
+    0x10, 0x0000099AUL,
+    {
+    0x6E, 0x04, 0xDC, 0x0F, 0xF4, 0xAE, 0x05, 0x00, 0xF0, 0xD5, 0xC0, 0xA5,
+        0x7C, 0x75, 0x9A, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x000009AAUL,
+    {
+    0x3D, 0x00, 0xF0, 0x6D, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11,
+        0xDC, 0x05, 0xE4, 0xC4}
+  }
+  , 
+  {
+    0x10, 0x000009BAUL,
+    {
+    0x10, 0x00, 0xDC, 0x0F, 0xF4, 0x8E, 0x06, 0x00, 0xF2, 0xF7, 0x04, 0x11,
+        0xF2, 0xF6, 0x02, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000009CAUL,
+    {
+    0xDC, 0x07, 0xE4, 0x86, 0x11, 0x00, 0xDC, 0x0F, 0xF4, 0x8E, 0x07, 0x00,
+        0xF2, 0xF7, 0x04, 0x11}
+  }
+  , 
+  {
+    0x10, 0x000009DAUL,
+    {
+    0xF2, 0xF6, 0x02, 0x11, 0xDC, 0x07, 0xE4, 0x86, 0x12, 0x00, 0xDC, 0x0F,
+        0xF4, 0x8E, 0x08, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000009EAUL,
+    {
+    0xF2, 0xF7, 0x04, 0x11, 0xF2, 0xF6, 0x02, 0x11, 0xDC, 0x07, 0xE4, 0x86,
+        0x13, 0x00, 0xDC, 0x0F}
+  }
+  , 
+  {
+    0x10, 0x000009FAUL,
+    {
+    0xF4, 0x8E, 0x09, 0x00, 0xF2, 0xF7, 0x04, 0x11, 0xF2, 0xF6, 0x02, 0x11,
+        0xDC, 0x07, 0xE4, 0x86}
+  }
+  , 
+  {
+    0x10, 0x00000A0AUL,
+    {
+    0x14, 0x00, 0xF0, 0xAE, 0x06, 0xFA, 0x0A, 0x00, 0xF0, 0xBF, 0xF2, 0xF9,
+        0x04, 0x11, 0xF2, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00000A1AUL,
+    {
+    0x02, 0x11, 0x06, 0xF8, 0x15, 0x00, 0xCA, 0x00, 0x30, 0x29, 0x0D, 0x2A,
+        0xF0, 0x6D, 0x67, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000A2AUL,
+    {
+    0x7F, 0x00, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05,
+        0xE4, 0xC4, 0x10, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000A3AUL,
+    {
+    0xDC, 0x0F, 0xF4, 0x8E, 0x06, 0x00, 0xF2, 0xF7, 0x04, 0x11, 0xF2, 0xF6,
+        0x02, 0x11, 0xDC, 0x07}
+  }
+  , 
+  {
+    0x10, 0x00000A4AUL,
+    {
+    0xE4, 0x86, 0x11, 0x00, 0xDC, 0x0F, 0xF4, 0x8E, 0x07, 0x00, 0xF2, 0xF7,
+        0x04, 0x11, 0xF2, 0xF6}
+  }
+  , 
+  {
+    0x10, 0x00000A5AUL,
+    {
+    0x02, 0x11, 0xDC, 0x07, 0xE4, 0x86, 0x12, 0x00, 0xF0, 0xAE, 0x06, 0xFA,
+        0x08, 0x00, 0xF0, 0xBF}
+  }
+  , 
+  {
+    0x10, 0x00000A6AUL,
+    {
+    0xF2, 0xF9, 0x04, 0x11, 0xF2, 0xF8, 0x02, 0x11, 0x06, 0xF8, 0x13, 0x00,
+        0xCA, 0x00, 0x30, 0x29}
+  }
+  , 
+  {
+    0x10, 0x00000A7AUL,
+    {
+    0xE1, 0x1C, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05,
+        0xE4, 0xC4, 0x01, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000A8AUL,
+    {
+    0x0D, 0x03, 0xE7, 0xF8, 0xFF, 0x00, 0x0D, 0x03, 0xF2, 0x8C, 0x2A, 0x11,
+        0xE1, 0x18, 0xFC, 0xFF}
+  }
+  , 
+  {
+    0x06, 0x00000A9AUL,
+    {
+    0xFC, 0xFE, 0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000AA0UL,
+    {
+    0xEC, 0xFD, 0xEC, 0xFE, 0xEC, 0xFF, 0xE0, 0x0D, 0xF6, 0x8C, 0x2A, 0x11,
+        0xF0, 0x48, 0x29, 0x81}
+  }
+  , 
+  {
+    0x10, 0x00000AB0UL,
+    {
+    0x2D, 0x3E, 0x09, 0x81, 0x3D, 0x78, 0xF3, 0xF8, 0x2D, 0x11, 0x49, 0x81,
+        0x3D, 0x35, 0xE6, 0x8C}
+  }
+  , 
+  {
+    0x10, 0x00000AC0UL,
+    {
+    0x6E, 0x04, 0xF2, 0xF7, 0x08, 0x11, 0xF2, 0xF6, 0x06, 0x11, 0xDC, 0x07,
+        0xF4, 0x86, 0x02, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000AD0UL,
+    {
+    0xF0, 0xE4, 0x66, 0xFE, 0xD6, 0x00, 0xDC, 0x07, 0xA9, 0x86, 0xF0, 0xF4,
+        0x68, 0xF1, 0xF0, 0x4F}
+  }
+  , 
+  {
+    0x10, 0x00000AE0UL,
+    {
+    0x49, 0x80, 0x2D, 0x01, 0xE0, 0x1D, 0x9A, 0xFE, 0x01, 0x60, 0x78, 0xD2,
+        0x9A, 0xFE, 0x01, 0x70}
+  }
+  , 
+  {
+    0x10, 0x00000AF0UL,
+    {
+    0x78, 0xD4, 0x9A, 0xFE, 0x01, 0x10, 0x3F, 0xFD, 0x9A, 0xFE, 0x04, 0x40,
+        0xF0, 0x4F, 0x49, 0x80}
+  }
+  , 
+  {
+    0x10, 0x00000B00UL,
+    {
+    0x3D, 0x01, 0x4F, 0xFD, 0xF0, 0x4E, 0x69, 0x84, 0xC0, 0x84, 0x3D, 0x04,
+        0xF0, 0x4F, 0x49, 0x80}
+  }
+  , 
+  {
+    0x10, 0x00000B10UL,
+    {
+    0x3D, 0x01, 0x5F, 0xFD, 0x9A, 0x04, 0x01, 0xC0, 0x8F, 0xFD, 0xBB, 0x4E,
+        0xF0, 0x64, 0xF0, 0x75}
+  }
+  , 
+  {
+    0x10, 0x00000B20UL,
+    {
+    0x70, 0x65, 0x3D, 0x43, 0x9F, 0xFD, 0x0D, 0x41, 0xE6, 0xFD, 0xFF, 0xFF,
+        0x0D, 0x3E, 0xF3, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00000B30UL,
+    {
+    0x2C, 0x11, 0x49, 0x81, 0x3D, 0x35, 0xE6, 0x8C, 0x6E, 0x04, 0xF2, 0xF7,
+        0x04, 0x11, 0xF2, 0xF6}
+  }
+  , 
+  {
+    0x10, 0x00000B40UL,
+    {
+    0x02, 0x11, 0xDC, 0x07, 0xF4, 0x86, 0x02, 0x00, 0xF0, 0xE4, 0x66, 0xFE,
+        0xD6, 0x00, 0xDC, 0x07}
+  }
+  , 
+  {
+    0x10, 0x00000B50UL,
+    {
+    0xA9, 0x86, 0xF0, 0xF4, 0x68, 0xF1, 0xF0, 0x4F, 0x49, 0x80, 0x2D, 0x01,
+        0xE0, 0x1D, 0x9A, 0xFE}
+  }
+  , 
+  {
+    0x10, 0x00000B60UL,
+    {
+    0x01, 0x60, 0x78, 0xD2, 0x9A, 0xFE, 0x01, 0x70, 0x78, 0xD4, 0x9A, 0xFE,
+        0x01, 0x10, 0x3F, 0xFD}
+  }
+  , 
+  {
+    0x10, 0x00000B70UL,
+    {
+    0x9A, 0xFE, 0x04, 0x40, 0xF0, 0x4F, 0x49, 0x80, 0x3D, 0x01, 0x4F, 0xFD,
+        0xF0, 0x4E, 0x69, 0x84}
+  }
+  , 
+  {
+    0x10, 0x00000B80UL,
+    {
+    0xC0, 0x84, 0x3D, 0x04, 0xF0, 0x4F, 0x49, 0x80, 0x3D, 0x01, 0x5F, 0xFD,
+        0x9A, 0x04, 0x01, 0xB0}
+  }
+  , 
+  {
+    0x10, 0x00000B90UL,
+    {
+    0x8F, 0xFD, 0xBB, 0x2A, 0xF0, 0x64, 0xF0, 0x75, 0x70, 0x65, 0x3D, 0x07,
+        0x9F, 0xFD, 0x0D, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00000BA0UL,
+    {
+    0xE6, 0xFD, 0xFF, 0xFF, 0x0D, 0x02, 0xE6, 0xFD, 0xFF, 0xFF, 0xF2, 0x8C,
+        0x2A, 0x11, 0xF0, 0x4D}
+  }
+  , 
+  {
+    0x08, 0x00000BB0UL,
+    {
+    0xFC, 0xFF, 0xFC, 0xFE, 0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000BB8UL,
+    {
+    0xF2, 0xF4, 0xE6, 0xFC, 0x3D, 0x03, 0xE0, 0x04, 0xE0, 0x05, 0xCB, 0x00,
+        0xF2, 0xF5, 0xEE, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000BC8UL,
+    {
+    0xE6, 0xF4, 0x12, 0x00, 0x1B, 0x54, 0xF2, 0xF9, 0x0C, 0xFE, 0xF2, 0xF8,
+        0x0E, 0xFE, 0xE6, 0xF6}
+  }
+  , 
+  {
+    0x10, 0x00000BD8UL,
+    {
+    0x20, 0xFD, 0xE6, 0xF7, 0x02, 0x00, 0xF0, 0x46, 0x00, 0x48, 0xF0, 0x57,
+        0x10, 0x59, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000BE8UL,
+    {
+    0xF2, 0xF4, 0xE4, 0xFC, 0x3D, 0x03, 0xE0, 0x04, 0xE0, 0x05, 0xCB, 0x00,
+        0xF2, 0xF5, 0xEC, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000BF8UL,
+    {
+    0xE6, 0xF4, 0x12, 0x00, 0x1B, 0x54, 0xF2, 0xF9, 0x0C, 0xFE, 0xF2, 0xF8,
+        0x0E, 0xFE, 0xE6, 0xF6}
+  }
+  , 
+  {
+    0x10, 0x00000C08UL,
+    {
+    0x00, 0x00, 0xE6, 0xF7, 0x02, 0x00, 0xF0, 0x46, 0x00, 0x48, 0xF0, 0x57,
+        0x10, 0x59, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000C18UL,
+    {
+    0x24, 0x8F, 0xEE, 0xFC, 0xF2, 0xF4, 0xEE, 0xFC, 0x46, 0xF4, 0x10, 0x0E,
+        0x3D, 0x02, 0xF6, 0x8E}
+  }
+  , 
+  {
+    0x0C, 0x00000C28UL,
+    {
+    0xEE, 0xFC, 0x6E, 0xC8, 0x04, 0x8F, 0xE6, 0xFC, 0x6F, 0xC8, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000C34UL,
+    {
+    0x24, 0x8F, 0xEC, 0xFC, 0xF2, 0xF4, 0xEC, 0xFC, 0x46, 0xF4, 0x10, 0x0E,
+        0x3D, 0x02, 0xF6, 0x8E}
+  }
+  , 
+  {
+    0x0C, 0x00000C44UL,
+    {
+    0xEC, 0xFC, 0x6E, 0xC9, 0x04, 0x8F, 0xE4, 0xFC, 0x6F, 0xC9, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000C50UL,
+    {
+    0xF6, 0x8C, 0x2A, 0x11, 0xF3, 0xF8, 0x2D, 0x11, 0x49, 0x81, 0x3D, 0x30,
+        0xE6, 0x8C, 0x6E, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00000C60UL,
+    {
+    0xF2, 0xF7, 0x08, 0x11, 0xF2, 0xF6, 0x06, 0x11, 0xDC, 0x07, 0xF4, 0x86,
+        0x02, 0x00, 0xC0, 0x84}
+  }
+  , 
+  {
+    0x10, 0x00000C70UL,
+    {
+    0x66, 0xF4, 0x30, 0x00, 0x48, 0x40, 0xBD, 0x02, 0x24, 0x8F, 0xE2, 0xFC,
+        0xDC, 0x07, 0xA9, 0x86}
+  }
+  , 
+  {
+    0x10, 0x00000C80UL,
+    {
+    0x9A, 0xF4, 0x08, 0x00, 0xE7, 0xF8, 0x64, 0x00, 0xF7, 0xF8, 0xF1, 0xFC,
+        0xF6, 0x8E, 0xE2, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000C90UL,
+    {
+    0xF7, 0x8E, 0xF4, 0xFC, 0x05, 0x8F, 0xF1, 0xFC, 0xF3, 0xF8, 0xF1, 0xFC,
+        0x49, 0x80, 0x3D, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00000CA0UL,
+    {
+    0xC2, 0xF4, 0xF4, 0xFC, 0x02, 0xF4, 0xE2, 0xFC, 0x7C, 0x14, 0xF7, 0xF8,
+        0xF4, 0xFC, 0xE7, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00000CB0UL,
+    {
+    0x64, 0x00, 0xF7, 0xF8, 0xF1, 0xFC, 0xF6, 0x8E, 0xE2, 0xFC, 0x0D, 0x02,
+        0xF7, 0x8E, 0xF4, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000CC0UL,
+    {
+    0xF3, 0xF8, 0x2C, 0x11, 0x49, 0x81, 0x3D, 0x30, 0xE6, 0x8C, 0x6E, 0x04,
+        0xF2, 0xF7, 0x04, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000CD0UL,
+    {
+    0xF2, 0xF6, 0x02, 0x11, 0xDC, 0x07, 0xF4, 0x86, 0x02, 0x00, 0xC0, 0x84,
+        0x66, 0xF4, 0x30, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000CE0UL,
+    {
+    0x48, 0x40, 0xBD, 0x02, 0x24, 0x8F, 0xE0, 0xFC, 0xDC, 0x07, 0xA9, 0x86,
+        0x9A, 0xF4, 0x08, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000CF0UL,
+    {
+    0xE7, 0xF8, 0x64, 0x00, 0xF7, 0xF8, 0xF0, 0xFC, 0xF6, 0x8E, 0xE0, 0xFC,
+        0xF7, 0x8E, 0xF3, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000D00UL,
+    {
+    0x05, 0x8F, 0xF0, 0xFC, 0xF3, 0xF8, 0xF0, 0xFC, 0x49, 0x80, 0x3D, 0x10,
+        0xC2, 0xF4, 0xF3, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000D10UL,
+    {
+    0x02, 0xF4, 0xE0, 0xFC, 0x7C, 0x14, 0xF7, 0xF8, 0xF3, 0xFC, 0xE7, 0xF8,
+        0x64, 0x00, 0xF7, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00000D20UL,
+    {
+    0xF0, 0xFC, 0xF6, 0x8E, 0xE0, 0xFC, 0x0D, 0x02, 0xF7, 0x8E, 0xF3, 0xFC,
+        0xF2, 0x8C, 0x2A, 0x11}
+  }
+  , 
+  {
+    0x0C, 0x00000D30UL,
+    {
+    0xE0, 0x89, 0xC2, 0xF8, 0xF2, 0xFC, 0xCA, 0x00, 0x00, 0x27, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000D3CUL,
+    {
+    0xE1, 0x0C, 0xF6, 0x8C, 0x2A, 0x11, 0xF0, 0x48, 0x29, 0x81, 0x2D, 0x10,
+        0x09, 0x81, 0x3D, 0x1B}
+  }
+  , 
+  {
+    0x10, 0x00000D4CUL,
+    {
+    0xE6, 0x8C, 0x6E, 0x04, 0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11,
+        0xDC, 0x05, 0xF4, 0x84}
+  }
+  , 
+  {
+    0x10, 0x00000D5CUL,
+    {
+    0x03, 0x00, 0x47, 0xF8, 0xE0, 0x00, 0x3D, 0x0F, 0xE1, 0x1C, 0x0D, 0x0D,
+        0xE6, 0x8C, 0x6E, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00000D6CUL,
+    {
+    0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xF4, 0x84,
+        0x03, 0x00, 0x47, 0xF8}
+  }
+  , 
+  {
+    0x0E, 0x00000D7CUL,
+    {
+    0xE0, 0x00, 0x3D, 0x01, 0xE1, 0x1C, 0xF2, 0x8C, 0x2A, 0x11, 0xF1, 0x8C,
+        0xCB, 0x00}
+  }
+  , 
+  {
+    0x0A, 0x00000D8AUL,
+    {
+    0xE0, 0x05, 0x86, 0xF5, 0xE7, 0x03, 0x8D, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x02, 0x00002BC6UL,
+    {
+    0x04, 0x8D}
+  }
+  , 
+  {
+    0x02, 0x00002BC8UL,
+    {
+    0x04, 0x8E}
+  }
+  , 
+  {
+    0x02, 0x00002BCAUL,
+    {
+    0x04, 0x8F}
+  }
+  , 
+  {
+    0x02, 0x00002BCCUL,
+    {
+    0x05, 0x80}
+  }
+  , 
+  {
+    0x02, 0x00002BCEUL,
+    {
+    0x05, 0x81}
+  }
+  , 
+  {
+    0x10, 0x00000D94UL,
+    {
+    0xC6, 0x03, 0x03, 0x00, 0xCC, 0x00, 0xF6, 0xF0, 0x20, 0xFC, 0xC6, 0x08,
+        0x20, 0xFC, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000DA4UL,
+    {
+    0xEC, 0x00, 0xC6, 0x87, 0x10, 0x00, 0xEC, 0x06, 0xEC, 0x07, 0xF6, 0x8C,
+        0xFA, 0xFC, 0xE6, 0x8C}
+  }
+  , 
+  {
+    0x10, 0x00000DB4UL,
+    {
+    0x6E, 0x04, 0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05,
+        0xF4, 0x84, 0x03, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000DC4UL,
+    {
+    0xF7, 0xF8, 0x58, 0x11, 0xF3, 0xF8, 0x58, 0x11, 0x9A, 0xF4, 0x18, 0x00,
+        0xF2, 0xF4, 0xE6, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000DD4UL,
+    {
+    0x46, 0xF4, 0x10, 0x0E, 0x2D, 0x0A, 0xF2, 0xFA, 0x08, 0x11, 0xF2, 0xF9,
+        0x06, 0x11, 0x06, 0xF9}
+  }
+  , 
+  {
+    0x10, 0x00000DE4UL,
+    {
+    0x10, 0x00, 0xE0, 0x08, 0xCA, 0x00, 0x48, 0x11, 0x0D, 0x01, 0xCF, 0x04,
+        0xE1, 0x4C, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x00000DF4UL,
+    {
+    0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x01, 0x00,
+        0xF3, 0xF8, 0x58, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000E04UL,
+    {
+    0x9A, 0xF4, 0x03, 0x10, 0xE0, 0x08, 0xCA, 0x00, 0xA4, 0x2A, 0xC2, 0xF4,
+        0x58, 0x11, 0x66, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00000E14UL,
+    {
+    0x2C, 0x00, 0xEA, 0x20, 0x44, 0x0F, 0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4,
+        0x06, 0x11, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00000E24UL,
+    {
+    0xF4, 0x84, 0x02, 0x00, 0xF7, 0xF8, 0x59, 0x11, 0xF3, 0xF8, 0x59, 0x11,
+        0x9A, 0xF4, 0x04, 0x70}
+  }
+  , 
+  {
+    0x10, 0x00000E34UL,
+    {
+    0x8A, 0x04, 0x02, 0xF0, 0xFF, 0x04, 0xDF, 0x04, 0xF3, 0xF8, 0x59, 0x11,
+        0x9A, 0xF4, 0x02, 0x60}
+  }
+  , 
+  {
+    0x10, 0x00000E44UL,
+    {
+    0x9A, 0x05, 0x08, 0x10, 0xF3, 0xF8, 0x59, 0x11, 0x67, 0xF8, 0x40, 0x00,
+        0xC0, 0x84, 0x3D, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00000E54UL,
+    {
+    0x9A, 0x05, 0x03, 0x10, 0x3A, 0x05, 0x05, 0x11, 0xDF, 0x04, 0xF3, 0xF8,
+        0x58, 0x11, 0x9A, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00000E64UL,
+    {
+    0x13, 0x30, 0xDF, 0x04, 0xE1, 0x4C, 0x0D, 0x07, 0xF2, 0xF5, 0x08, 0x11,
+        0xF2, 0xF4, 0x06, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000E74UL,
+    {
+    0xDC, 0x05, 0xE4, 0xC4, 0x01, 0x00, 0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4,
+        0x06, 0x11, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00000E84UL,
+    {
+    0xF4, 0x84, 0x02, 0x00, 0x8A, 0xF4, 0xF0, 0x00, 0x9A, 0x04, 0x5A, 0xD0,
+        0xF2, 0xF4, 0xE6, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000E94UL,
+    {
+    0x46, 0xF4, 0x10, 0x0E, 0x2D, 0x53, 0xF2, 0xF5, 0xEA, 0xFC, 0xE6, 0xF4,
+        0x12, 0x00, 0x1B, 0x54}
+  }
+  , 
+  {
+    0x10, 0x00000EA4UL,
+    {
+    0xF2, 0xF9, 0x0C, 0xFE, 0xF2, 0xF8, 0x0E, 0xFE, 0xE6, 0xF6, 0x20, 0xFD,
+        0xE6, 0xF7, 0x02, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000EB4UL,
+    {
+    0xF0, 0x46, 0x00, 0x48, 0xF0, 0x57, 0x10, 0x59, 0xF6, 0xF4, 0xF6, 0xFC,
+        0xF6, 0xF5, 0xF8, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000EC4UL,
+    {
+    0xCA, 0x00, 0x2A, 0x28, 0xF6, 0xF4, 0x54, 0x11, 0xF6, 0xF5, 0x56, 0x11,
+        0xE0, 0x08, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000ED4UL,
+    {
+    0xA0, 0x0A, 0xF6, 0xF4, 0x52, 0x11, 0xF2, 0xF4, 0x54, 0x11, 0xF2, 0xF5,
+        0x56, 0x11, 0xF2, 0xF3}
+  }
+  , 
+  {
+    0x10, 0x00000EE4UL,
+    {
+    0xF8, 0xFC, 0xF2, 0xF2, 0xF6, 0xFC, 0xCA, 0x00, 0x62, 0x00, 0xF2, 0xF6,
+        0x52, 0x11, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x00000EF4UL,
+    {
+    0xF8, 0xFC, 0xF2, 0xF4, 0xF6, 0xFC, 0x08, 0x46, 0x18, 0x50, 0xDC, 0x05,
+        0xB8, 0x64, 0xE1, 0x1C}
+  }
+  , 
+  {
+    0x10, 0x00000F04UL,
+    {
+    0xF2, 0xF5, 0xF8, 0xFC, 0xF2, 0xF4, 0xF6, 0xFC, 0x08, 0x44, 0x18, 0x50,
+        0xDC, 0x05, 0xB9, 0xC4}
+  }
+  , 
+  {
+    0x10, 0x00000F14UL,
+    {
+    0x24, 0x8F, 0xEA, 0xFC, 0xF2, 0xF5, 0xEA, 0xFC, 0xE6, 0xF4, 0x10, 0x0E,
+        0xF2, 0x07, 0xEA, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000F24UL,
+    {
+    0x5B, 0x44, 0xF2, 0xF4, 0x0C, 0xFE, 0xF2, 0xF6, 0x0E, 0xFE, 0xF6, 0xF4,
+        0xEA, 0xFC, 0x24, 0x8F}
+  }
+  , 
+  {
+    0x10, 0x00000F34UL,
+    {
+    0xE6, 0xFC, 0xC2, 0xF8, 0x31, 0x11, 0xCA, 0x00, 0x38, 0x23, 0x0D, 0x01,
+        0xCF, 0x04, 0xDE, 0x04}
+  }
+  , 
+  {
+    0x10, 0x00000F44UL,
+    {
+    0xF2, 0xF5, 0x08, 0x11, 0xF2, 0xF4, 0x06, 0x11, 0xDC, 0x05, 0xF4, 0x84,
+        0x03, 0x00, 0xF7, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00000F54UL,
+    {
+    0x58, 0x11, 0x49, 0x80, 0xEA, 0x30, 0xC8, 0x0D, 0xF2, 0x8C, 0xFA, 0xFC,
+        0xFC, 0x07, 0xFC, 0x06}
+  }
+  , 
+  {
+    0x0A, 0x00000F64UL,
+    {
+    0xFC, 0x87, 0xFC, 0x00, 0xFC, 0x08, 0xFC, 0x03, 0xFB, 0x88}
+  }
+  , 
+  {
+    0x10, 0x00000F6EUL,
+    {
+    0xC6, 0x03, 0x03, 0x00, 0xCC, 0x00, 0xF6, 0xF0, 0x20, 0xFC, 0xC6, 0x08,
+        0x20, 0xFC, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000F7EUL,
+    {
+    0xEC, 0x00, 0xC6, 0x87, 0x10, 0x00, 0xEC, 0x06, 0xEC, 0x07, 0xF6, 0x8C,
+        0xFA, 0xFC, 0xE6, 0x8C}
+  }
+  , 
+  {
+    0x10, 0x00000F8EUL,
+    {
+    0x6E, 0x04, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05,
+        0xF4, 0x84, 0x03, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000F9EUL,
+    {
+    0xF7, 0xF8, 0x58, 0x11, 0xF3, 0xF8, 0x58, 0x11, 0x9A, 0xF4, 0x18, 0x00,
+        0xF2, 0xF4, 0xE4, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00000FAEUL,
+    {
+    0x46, 0xF4, 0x10, 0x0E, 0x2D, 0x0A, 0xF2, 0xFA, 0x04, 0x11, 0xF2, 0xF9,
+        0x02, 0x11, 0x06, 0xF9}
+  }
+  , 
+  {
+    0x10, 0x00000FBEUL,
+    {
+    0x10, 0x00, 0xE0, 0x18, 0xCA, 0x00, 0x48, 0x11, 0x0D, 0x01, 0xBF, 0x04,
+        0xE1, 0x4C, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x00000FCEUL,
+    {
+    0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xE4, 0xC4, 0x01, 0x00,
+        0xF3, 0xF8, 0x58, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00000FDEUL,
+    {
+    0x9A, 0xF4, 0x03, 0x10, 0xE0, 0x18, 0xCA, 0x00, 0xA4, 0x2A, 0xC2, 0xF4,
+        0x58, 0x11, 0x66, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00000FEEUL,
+    {
+    0x2C, 0x00, 0xEA, 0x20, 0x1E, 0x11, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4,
+        0x02, 0x11, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00000FFEUL,
+    {
+    0xF4, 0x84, 0x02, 0x00, 0xF7, 0xF8, 0x59, 0x11, 0xF3, 0xF8, 0x59, 0x11,
+        0x9A, 0xF4, 0x04, 0x70}
+  }
+  , 
+  {
+    0x10, 0x0000100EUL,
+    {
+    0x8A, 0x04, 0x02, 0xE0, 0xEF, 0x04, 0xDF, 0x04, 0xF3, 0xF8, 0x59, 0x11,
+        0x9A, 0xF4, 0x02, 0x60}
+  }
+  , 
+  {
+    0x10, 0x0000101EUL,
+    {
+    0x9A, 0x05, 0x08, 0x00, 0xF3, 0xF8, 0x59, 0x11, 0x67, 0xF8, 0x40, 0x00,
+        0xC0, 0x84, 0x3D, 0x05}
+  }
+  , 
+  {
+    0x10, 0x0000102EUL,
+    {
+    0x9A, 0x05, 0x03, 0x00, 0x3A, 0x05, 0x05, 0x00, 0xDF, 0x04, 0xF3, 0xF8,
+        0x58, 0x11, 0x9A, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x0000103EUL,
+    {
+    0x13, 0x30, 0xDF, 0x04, 0xE1, 0x4C, 0x0D, 0x07, 0xF2, 0xF5, 0x04, 0x11,
+        0xF2, 0xF4, 0x02, 0x11}
+  }
+  , 
+  {
+    0x10, 0x0000104EUL,
+    {
+    0xDC, 0x05, 0xE4, 0xC4, 0x01, 0x00, 0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4,
+        0x02, 0x11, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x0000105EUL,
+    {
+    0xF4, 0x84, 0x02, 0x00, 0x8A, 0xF4, 0xF0, 0x00, 0x9A, 0x04, 0x5A, 0xD0,
+        0xF2, 0xF4, 0xE4, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x0000106EUL,
+    {
+    0x46, 0xF4, 0x10, 0x0E, 0x2D, 0x53, 0xF2, 0xF5, 0xE8, 0xFC, 0xE6, 0xF4,
+        0x12, 0x00, 0x1B, 0x54}
+  }
+  , 
+  {
+    0x10, 0x0000107EUL,
+    {
+    0xF2, 0xF9, 0x0C, 0xFE, 0xF2, 0xF8, 0x0E, 0xFE, 0xE6, 0xF6, 0x00, 0x00,
+        0xE6, 0xF7, 0x02, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000108EUL,
+    {
+    0xF0, 0x46, 0x00, 0x48, 0xF0, 0x57, 0x10, 0x59, 0xF6, 0xF4, 0xF6, 0xFC,
+        0xF6, 0xF5, 0xF8, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x0000109EUL,
+    {
+    0xCA, 0x00, 0x2A, 0x28, 0xF6, 0xF4, 0x54, 0x11, 0xF6, 0xF5, 0x56, 0x11,
+        0xE0, 0x18, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000010AEUL,
+    {
+    0xA0, 0x0A, 0xF6, 0xF4, 0x52, 0x11, 0xF2, 0xF4, 0x54, 0x11, 0xF2, 0xF5,
+        0x56, 0x11, 0xF2, 0xF3}
+  }
+  , 
+  {
+    0x10, 0x000010BEUL,
+    {
+    0xF8, 0xFC, 0xF2, 0xF2, 0xF6, 0xFC, 0xCA, 0x00, 0x62, 0x00, 0xF2, 0xF6,
+        0x52, 0x11, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x000010CEUL,
+    {
+    0xF8, 0xFC, 0xF2, 0xF4, 0xF6, 0xFC, 0x08, 0x46, 0x18, 0x50, 0xDC, 0x05,
+        0xB8, 0x64, 0xE1, 0x1C}
+  }
+  , 
+  {
+    0x10, 0x000010DEUL,
+    {
+    0xF2, 0xF5, 0xF8, 0xFC, 0xF2, 0xF4, 0xF6, 0xFC, 0x08, 0x44, 0x18, 0x50,
+        0xDC, 0x05, 0xB9, 0xC4}
+  }
+  , 
+  {
+    0x10, 0x000010EEUL,
+    {
+    0x24, 0x8F, 0xE8, 0xFC, 0xF2, 0xF5, 0xE8, 0xFC, 0xE6, 0xF4, 0x10, 0x0E,
+        0xF2, 0x07, 0xE8, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000010FEUL,
+    {
+    0x5B, 0x44, 0xF2, 0xF4, 0x0C, 0xFE, 0xF2, 0xF6, 0x0E, 0xFE, 0xF6, 0xF4,
+        0xE8, 0xFC, 0x24, 0x8F}
+  }
+  , 
+  {
+    0x10, 0x0000110EUL,
+    {
+    0xE4, 0xFC, 0xC2, 0xF8, 0x30, 0x11, 0xCA, 0x00, 0x38, 0x23, 0x0D, 0x01,
+        0xBF, 0x04, 0xDE, 0x04}
+  }
+  , 
+  {
+    0x10, 0x0000111EUL,
+    {
+    0xF2, 0xF5, 0x04, 0x11, 0xF2, 0xF4, 0x02, 0x11, 0xDC, 0x05, 0xF4, 0x84,
+        0x03, 0x00, 0xF7, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x0000112EUL,
+    {
+    0x58, 0x11, 0x49, 0x80, 0xEA, 0x30, 0xA2, 0x0F, 0xF2, 0x8C, 0xFA, 0xFC,
+        0xFC, 0x07, 0xFC, 0x06}
+  }
+  , 
+  {
+    0x0A, 0x0000113EUL,
+    {
+    0xFC, 0x87, 0xFC, 0x00, 0xFC, 0x08, 0xFC, 0x03, 0xFB, 0x88}
+  }
+  , 
+  {
+    0x10, 0x00001148UL,
+    {
+    0xEC, 0xFD, 0xEC, 0xFE, 0xEC, 0xFF, 0xF0, 0xE9, 0xF0, 0xFA, 0x06, 0xF0,
+        0xF6, 0xFF, 0xF0, 0x48}
+  }
+  , 
+  {
+    0x10, 0x00001158UL,
+    {
+    0x49, 0x80, 0xEA, 0x30, 0x20, 0x14, 0xF2, 0xF5, 0xEA, 0xFC, 0xE6, 0xF4,
+        0x12, 0x00, 0x1B, 0x54}
+  }
+  , 
+  {
+    0x10, 0x00001168UL,
+    {
+    0xF2, 0xF9, 0x0C, 0xFE, 0xF2, 0xF8, 0x0E, 0xFE, 0xE6, 0xF6, 0x20, 0xFD,
+        0xE6, 0xF7, 0x02, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001178UL,
+    {
+    0xF0, 0x46, 0x00, 0x48, 0xF0, 0x57, 0x10, 0x59, 0xF6, 0xF4, 0xFC, 0xFC,
+        0xF6, 0xF5, 0xFE, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00001188UL,
+    {
+    0xDC, 0x0F, 0xA9, 0x8E, 0x8A, 0xF4, 0x02, 0x70, 0xEA, 0x00, 0xF6, 0x12,
+        0xF0, 0xBF, 0xF0, 0xAE}
+  }
+  , 
+  {
+    0x10, 0x00001198UL,
+    {
+    0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC, 0x08, 0x44, 0x18, 0x50,
+        0x08, 0x41, 0x18, 0x50}
+  }
+  , 
+  {
+    0x10, 0x000011A8UL,
+    {
+    0xF0, 0x84, 0xF0, 0x95, 0xCA, 0x00, 0x80, 0x29, 0xF2, 0xF3, 0xFE, 0xFC,
+        0xF2, 0xF2, 0xFC, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000011B8UL,
+    {
+    0x08, 0x26, 0x18, 0x30, 0xCA, 0x00, 0x54, 0x00, 0xC4, 0x40, 0x02, 0x00,
+        0xC4, 0x50, 0x04, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000011C8UL,
+    {
+    0xD4, 0x40, 0x04, 0x00, 0x66, 0xF4, 0xFF, 0xF8, 0xC4, 0x40, 0x04, 0x00,
+        0xF2, 0xF5, 0xFE, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000011D8UL,
+    {
+    0xF2, 0xF4, 0xFC, 0xFC, 0x08, 0x45, 0x18, 0x50, 0xDC, 0x05, 0xA9, 0x84,
+        0xC0, 0x84, 0x7C, 0x64}
+  }
+  , 
+  {
+    0x10, 0x000011E8UL,
+    {
+    0x9A, 0xF4, 0x05, 0x00, 0xF4, 0x80, 0x05, 0x00, 0x79, 0x84, 0xE4, 0x80,
+        0x05, 0x00, 0xD4, 0x40}
+  }
+  , 
+  {
+    0x10, 0x000011F8UL,
+    {
+    0x02, 0x00, 0xD4, 0x50, 0x04, 0x00, 0x62, 0xF4, 0x26, 0x11, 0x62, 0xF5,
+        0x28, 0x11, 0x22, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00001208UL,
+    {
+    0xFE, 0x10, 0x32, 0xF5, 0x00, 0x11, 0x3D, 0x2E, 0xCA, 0x00, 0x2A, 0x28,
+        0xF0, 0x64, 0xF0, 0x75}
+  }
+  , 
+  {
+    0x10, 0x00001218UL,
+    {
+    0xC4, 0x40, 0x06, 0x00, 0xC4, 0x50, 0x08, 0x00, 0xF2, 0xF3, 0xFE, 0xFC,
+        0xF2, 0xF2, 0xFC, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00001228UL,
+    {
+    0xCA, 0x00, 0x62, 0x00, 0xE1, 0x0C, 0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4,
+        0xFC, 0xFC, 0x08, 0x44}
+  }
+  , 
+  {
+    0x10, 0x00001238UL,
+    {
+    0x18, 0x50, 0xDC, 0x05, 0xB9, 0xC4, 0x24, 0x8F, 0xEA, 0xFC, 0xF2, 0xF5,
+        0xEA, 0xFC, 0xE6, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00001248UL,
+    {
+    0x10, 0x0E, 0xF2, 0x07, 0xEA, 0xFC, 0x5B, 0x44, 0xF2, 0xF4, 0x0C, 0xFE,
+        0xF2, 0xF6, 0x0E, 0xFE}
+  }
+  , 
+  {
+    0x10, 0x00001258UL,
+    {
+    0xF6, 0xF4, 0xEA, 0xFC, 0x24, 0x8F, 0xE6, 0xFC, 0xC2, 0xF8, 0x31, 0x11,
+        0xCA, 0x00, 0x38, 0x23}
+  }
+  , 
+  {
+    0x10, 0x00001268UL,
+    {
+    0xEA, 0x00, 0xC8, 0x16, 0xD4, 0x40, 0x02, 0x00, 0xD4, 0x50, 0x04, 0x00,
+        0x62, 0xF4, 0x1E, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001278UL,
+    {
+    0x62, 0xF5, 0x20, 0x11, 0x22, 0xF4, 0xF6, 0x10, 0x32, 0xF5, 0xF8, 0x10,
+        0xEA, 0x30, 0xC8, 0x16}
+  }
+  , 
+  {
+    0x10, 0x00001288UL,
+    {
+    0xCA, 0x00, 0x2A, 0x28, 0xF0, 0x64, 0xF0, 0x75, 0xC4, 0x40, 0x06, 0x00,
+        0xC4, 0x50, 0x08, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001298UL,
+    {
+    0xF2, 0xF3, 0xFE, 0xFC, 0xF2, 0xF2, 0xFC, 0xFC, 0xCA, 0x00, 0x62, 0x00,
+        0xE1, 0x2C, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x000012A8UL,
+    {
+    0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC, 0x08, 0x44, 0x18, 0x50, 0xDC, 0x05,
+        0xB9, 0xC4, 0xF2, 0xF7}
+  }
+  , 
+  {
+    0x10, 0x000012B8UL,
+    {
+    0xFE, 0xFC, 0xF2, 0xF6, 0xFC, 0xFC, 0x08, 0x64, 0x18, 0x70, 0xDC, 0x17,
+        0xA9, 0x86, 0xB9, 0x86}
+  }
+  , 
+  {
+    0x10, 0x000012C8UL,
+    {
+    0x24, 0x8F, 0xEA, 0xFC, 0xF2, 0xF5, 0xEA, 0xFC, 0xE6, 0xF4, 0x10, 0x0E,
+        0xF2, 0x07, 0xEA, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000012D8UL,
+    {
+    0x5B, 0x44, 0xF2, 0xF4, 0x0C, 0xFE, 0xF2, 0xF6, 0x0E, 0xFE, 0xF6, 0xF4,
+        0xEA, 0xFC, 0x24, 0x8F}
+  }
+  , 
+  {
+    0x10, 0x000012E8UL,
+    {
+    0xE6, 0xFC, 0xC2, 0xF8, 0x31, 0x11, 0xCA, 0x00, 0x38, 0x23, 0xEA, 0x00,
+        0xC8, 0x16, 0xF0, 0xBF}
+  }
+  , 
+  {
+    0x10, 0x000012F8UL,
+    {
+    0xF0, 0xAE, 0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC, 0x08, 0x44,
+        0x18, 0x50, 0x08, 0x41}
+  }
+  , 
+  {
+    0x10, 0x00001308UL,
+    {
+    0x18, 0x50, 0xF0, 0x84, 0xF0, 0x95, 0xCA, 0x00, 0x02, 0x2A, 0xF2, 0xF5,
+        0xFE, 0xFC, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00001318UL,
+    {
+    0xFC, 0xFC, 0x08, 0x46, 0x18, 0x50, 0xDC, 0x05, 0xA8, 0x44, 0xB8, 0x40,
+        0x66, 0xF4, 0xFF, 0xE0}
+  }
+  , 
+  {
+    0x10, 0x00001328UL,
+    {
+    0xB8, 0x40, 0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC, 0x08, 0x45,
+        0x18, 0x50, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00001338UL,
+    {
+    0xA9, 0x84, 0xC0, 0x84, 0x7C, 0x64, 0x9A, 0xF4, 0x06, 0x00, 0xF4, 0x80,
+        0x01, 0x00, 0x77, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00001348UL,
+    {
+    0x10, 0x00, 0xE4, 0x80, 0x01, 0x00, 0xA8, 0xD0, 0xF0, 0x4D, 0x62, 0xF4,
+        0x10, 0x11, 0x42, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00001358UL,
+    {
+    0x18, 0x11, 0x3D, 0x2E, 0xCA, 0x00, 0x2A, 0x28, 0xF0, 0x64, 0xF0, 0x75,
+        0xC4, 0x40, 0x06, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001368UL,
+    {
+    0xC4, 0x50, 0x08, 0x00, 0xF2, 0xF3, 0xFE, 0xFC, 0xF2, 0xF2, 0xFC, 0xFC,
+        0xCA, 0x00, 0x62, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001378UL,
+    {
+    0xE1, 0x0C, 0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC, 0x08, 0x44,
+        0x18, 0x50, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00001388UL,
+    {
+    0xB9, 0xC4, 0x24, 0x8F, 0xEA, 0xFC, 0xF2, 0xF5, 0xEA, 0xFC, 0xE6, 0xF4,
+        0x10, 0x0E, 0xF2, 0x07}
+  }
+  , 
+  {
+    0x10, 0x00001398UL,
+    {
+    0xEA, 0xFC, 0x5B, 0x44, 0xF2, 0xF4, 0x0C, 0xFE, 0xF2, 0xF6, 0x0E, 0xFE,
+        0xF6, 0xF4, 0xEA, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000013A8UL,
+    {
+    0x24, 0x8F, 0xE6, 0xFC, 0xC2, 0xF8, 0x31, 0x11, 0xCA, 0x00, 0x38, 0x23,
+        0xEA, 0x00, 0xC8, 0x16}
+  }
+  , 
+  {
+    0x10, 0x000013B8UL,
+    {
+    0x62, 0xFD, 0x0C, 0x11, 0x42, 0xFD, 0x14, 0x11, 0xEA, 0x30, 0xC8, 0x16,
+        0xCA, 0x00, 0x2A, 0x28}
+  }
+  , 
+  {
+    0x10, 0x000013C8UL,
+    {
+    0xF0, 0x64, 0xF0, 0x75, 0xC4, 0x40, 0x06, 0x00, 0xC4, 0x50, 0x08, 0x00,
+        0xF2, 0xF3, 0xFE, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000013D8UL,
+    {
+    0xF2, 0xF2, 0xFC, 0xFC, 0xCA, 0x00, 0x62, 0x00, 0xE1, 0x2C, 0xF2, 0xF5,
+        0xFE, 0xFC, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x0E, 0x000013E8UL,
+    {
+    0xFC, 0xFC, 0x08, 0x44, 0x18, 0x50, 0xDC, 0x05, 0xB9, 0xC4, 0x24, 0x8F,
+        0xEA, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000013F6UL,
+    {
+    0xF2, 0xF5, 0xEA, 0xFC, 0xE6, 0xF4, 0x10, 0x0E, 0xF2, 0x07, 0xEA, 0xFC,
+        0x5B, 0x44, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00001406UL,
+    {
+    0x0C, 0xFE, 0xF2, 0xF6, 0x0E, 0xFE, 0xF6, 0xF4, 0xEA, 0xFC, 0x24, 0x8F,
+        0xE6, 0xFC, 0xC2, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x00001416UL,
+    {
+    0x31, 0x11, 0xCA, 0x00, 0x38, 0x23, 0xEA, 0x00, 0xC8, 0x16, 0xF2, 0xF5,
+        0xE8, 0xFC, 0xE6, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00001426UL,
+    {
+    0x12, 0x00, 0x1B, 0x54, 0xF2, 0xF9, 0x0C, 0xFE, 0xF2, 0xF8, 0x0E, 0xFE,
+        0xE6, 0xF6, 0x00, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001436UL,
+    {
+    0xE6, 0xF7, 0x02, 0x00, 0xF0, 0x46, 0x00, 0x48, 0xF0, 0x57, 0x10, 0x59,
+        0xF6, 0xF4, 0xFC, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00001446UL,
+    {
+    0xF6, 0xF5, 0xFE, 0xFC, 0xDC, 0x0F, 0xA9, 0x8E, 0x8A, 0xF4, 0x02, 0x70,
+        0xEA, 0x00, 0xA6, 0x15}
+  }
+  , 
+  {
+    0x10, 0x00001456UL,
+    {
+    0xF0, 0xBF, 0xF0, 0xAE, 0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC,
+        0x08, 0x44, 0x18, 0x50}
+  }
+  , 
+  {
+    0x10, 0x00001466UL,
+    {
+    0x08, 0x41, 0x18, 0x50, 0xF0, 0x84, 0xF0, 0x95, 0xCA, 0x00, 0x80, 0x29,
+        0xF2, 0xF3, 0xFE, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00001476UL,
+    {
+    0xF2, 0xF2, 0xFC, 0xFC, 0x08, 0x26, 0x18, 0x30, 0xCA, 0x00, 0x54, 0x00,
+        0xC4, 0x40, 0x02, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001486UL,
+    {
+    0xC4, 0x50, 0x04, 0x00, 0xD4, 0x40, 0x04, 0x00, 0x66, 0xF4, 0xFF, 0xF8,
+        0xC4, 0x40, 0x04, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001496UL,
+    {
+    0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC, 0x08, 0x45, 0x18, 0x50,
+        0xDC, 0x05, 0xA9, 0x84}
+  }
+  , 
+  {
+    0x10, 0x000014A6UL,
+    {
+    0xC0, 0x84, 0x7C, 0x64, 0x9A, 0xF4, 0x05, 0x00, 0xF4, 0x80, 0x05, 0x00,
+        0x79, 0x84, 0xE4, 0x80}
+  }
+  , 
+  {
+    0x10, 0x000014B6UL,
+    {
+    0x05, 0x00, 0xD4, 0x40, 0x02, 0x00, 0xD4, 0x50, 0x04, 0x00, 0x62, 0xF4,
+        0x22, 0x11, 0x62, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x000014C6UL,
+    {
+    0x24, 0x11, 0x22, 0xF4, 0xFA, 0x10, 0x32, 0xF5, 0xFC, 0x10, 0x3D, 0x2E,
+        0xCA, 0x00, 0x2A, 0x28}
+  }
+  , 
+  {
+    0x10, 0x000014D6UL,
+    {
+    0xF0, 0x64, 0xF0, 0x75, 0xC4, 0x40, 0x06, 0x00, 0xC4, 0x50, 0x08, 0x00,
+        0xF2, 0xF3, 0xFE, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000014E6UL,
+    {
+    0xF2, 0xF2, 0xFC, 0xFC, 0xCA, 0x00, 0x62, 0x00, 0xE1, 0x0C, 0xF2, 0xF5,
+        0xFE, 0xFC, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x000014F6UL,
+    {
+    0xFC, 0xFC, 0x08, 0x44, 0x18, 0x50, 0xDC, 0x05, 0xB9, 0xC4, 0x24, 0x8F,
+        0xE8, 0xFC, 0xF2, 0xF5}
+  }
+  , 
+  {
+    0x10, 0x00001506UL,
+    {
+    0xE8, 0xFC, 0xE6, 0xF4, 0x10, 0x0E, 0xF2, 0x07, 0xE8, 0xFC, 0x5B, 0x44,
+        0xF2, 0xF4, 0x0C, 0xFE}
+  }
+  , 
+  {
+    0x10, 0x00001516UL,
+    {
+    0xF2, 0xF6, 0x0E, 0xFE, 0xF6, 0xF4, 0xE8, 0xFC, 0x24, 0x8F, 0xE4, 0xFC,
+        0xC2, 0xF8, 0x30, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001526UL,
+    {
+    0xCA, 0x00, 0x38, 0x23, 0xEA, 0x00, 0xC8, 0x16, 0xD4, 0x40, 0x02, 0x00,
+        0xD4, 0x50, 0x04, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001536UL,
+    {
+    0x62, 0xF4, 0x1A, 0x11, 0x62, 0xF5, 0x1C, 0x11, 0x22, 0xF4, 0xF2, 0x10,
+        0x32, 0xF5, 0xF4, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00001546UL,
+    {
+    0xEA, 0x30, 0xC8, 0x16, 0xCA, 0x00, 0x2A, 0x28, 0xF0, 0x64, 0xF0, 0x75,
+        0xC4, 0x40, 0x06, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001556UL,
+    {
+    0xC4, 0x50, 0x08, 0x00, 0xF2, 0xF3, 0xFE, 0xFC, 0xF2, 0xF2, 0xFC, 0xFC,
+        0xCA, 0x00, 0x62, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001566UL,
+    {
+    0xE1, 0x2C, 0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC, 0x08, 0x44,
+        0x18, 0x50, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00001576UL,
+    {
+    0xB9, 0xC4, 0x24, 0x8F, 0xE8, 0xFC, 0xF2, 0xF5, 0xE8, 0xFC, 0xE6, 0xF4,
+        0x10, 0x0E, 0xF2, 0x07}
+  }
+  , 
+  {
+    0x10, 0x00001586UL,
+    {
+    0xE8, 0xFC, 0x5B, 0x44, 0xF2, 0xF4, 0x0C, 0xFE, 0xF2, 0xF6, 0x0E, 0xFE,
+        0xF6, 0xF4, 0xE8, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x00001596UL,
+    {
+    0x24, 0x8F, 0xE4, 0xFC, 0xC2, 0xF8, 0x30, 0x11, 0xCA, 0x00, 0x38, 0x23,
+        0xEA, 0x00, 0xC8, 0x16}
+  }
+  , 
+  {
+    0x10, 0x000015A6UL,
+    {
+    0xF0, 0xBF, 0xF0, 0xAE, 0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC,
+        0x08, 0x44, 0x18, 0x50}
+  }
+  , 
+  {
+    0x10, 0x000015B6UL,
+    {
+    0x08, 0x41, 0x18, 0x50, 0xF0, 0x84, 0xF0, 0x95, 0xCA, 0x00, 0x02, 0x2A,
+        0xF2, 0xF5, 0xFE, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000015C6UL,
+    {
+    0xF2, 0xF4, 0xFC, 0xFC, 0x08, 0x46, 0x18, 0x50, 0xDC, 0x05, 0xA8, 0x44,
+        0xB8, 0x40, 0x66, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x000015D6UL,
+    {
+    0xFF, 0xE0, 0xB8, 0x40, 0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC,
+        0x08, 0x45, 0x18, 0x50}
+  }
+  , 
+  {
+    0x10, 0x000015E6UL,
+    {
+    0xDC, 0x05, 0xA9, 0x84, 0xC0, 0x84, 0x7C, 0x64, 0x9A, 0xF4, 0x06, 0x00,
+        0xF4, 0x80, 0x01, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000015F6UL,
+    {
+    0x77, 0xF8, 0x10, 0x00, 0xE4, 0x80, 0x01, 0x00, 0xA8, 0xD0, 0xF0, 0x4D,
+        0x62, 0xF4, 0x0E, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00001606UL,
+    {
+    0x42, 0xF4, 0x16, 0x11, 0x3D, 0x2D, 0xCA, 0x00, 0x2A, 0x28, 0xF0, 0x64,
+        0xF0, 0x75, 0xC4, 0x40}
+  }
+  , 
+  {
+    0x10, 0x00001616UL,
+    {
+    0x06, 0x00, 0xC4, 0x50, 0x08, 0x00, 0xF2, 0xF3, 0xFE, 0xFC, 0xF2, 0xF2,
+        0xFC, 0xFC, 0xCA, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00001626UL,
+    {
+    0x62, 0x00, 0xE1, 0x0C, 0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC,
+        0x08, 0x44, 0x18, 0x50}
+  }
+  , 
+  {
+    0x10, 0x00001636UL,
+    {
+    0xDC, 0x05, 0xB9, 0xC4, 0x24, 0x8F, 0xE8, 0xFC, 0xF2, 0xF5, 0xE8, 0xFC,
+        0xE6, 0xF4, 0x10, 0x0E}
+  }
+  , 
+  {
+    0x10, 0x00001646UL,
+    {
+    0xF2, 0x07, 0xE8, 0xFC, 0x5B, 0x44, 0xF2, 0xF4, 0x0C, 0xFE, 0xF2, 0xF6,
+        0x0E, 0xFE, 0xF6, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00001656UL,
+    {
+    0xE8, 0xFC, 0x24, 0x8F, 0xE4, 0xFC, 0xC2, 0xF8, 0x30, 0x11, 0xCA, 0x00,
+        0x38, 0x23, 0x0D, 0x31}
+  }
+  , 
+  {
+    0x10, 0x00001666UL,
+    {
+    0x62, 0xFD, 0x0A, 0x11, 0x42, 0xFD, 0x12, 0x11, 0x3D, 0x2C, 0xCA, 0x00,
+        0x2A, 0x28, 0xF0, 0x64}
+  }
+  , 
+  {
+    0x10, 0x00001676UL,
+    {
+    0xF0, 0x75, 0xC4, 0x40, 0x06, 0x00, 0xC4, 0x50, 0x08, 0x00, 0xF2, 0xF3,
+        0xFE, 0xFC, 0xF2, 0xF2}
+  }
+  , 
+  {
+    0x06, 0x00001686UL,
+    {
+    0xFC, 0xFC, 0xCA, 0x00, 0x62, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000168CUL,
+    {
+    0xE1, 0x2C, 0xF2, 0xF5, 0xFE, 0xFC, 0xF2, 0xF4, 0xFC, 0xFC, 0x08, 0x44,
+        0x18, 0x50, 0xDC, 0x05}
+  }
+  , 
+  {
+    0x10, 0x0000169CUL,
+    {
+    0xB9, 0xC4, 0x24, 0x8F, 0xE8, 0xFC, 0xF2, 0xF5, 0xE8, 0xFC, 0xE6, 0xF4,
+        0x10, 0x0E, 0xF2, 0x07}
+  }
+  , 
+  {
+    0x10, 0x000016ACUL,
+    {
+    0xE8, 0xFC, 0x5B, 0x44, 0xF2, 0xF4, 0x0C, 0xFE, 0xF2, 0xF6, 0x0E, 0xFE,
+        0xF6, 0xF4, 0xE8, 0xFC}
+  }
+  , 
+  {
+    0x10, 0x000016BCUL,
+    {
+    0x24, 0x8F, 0xE4, 0xFC, 0xC2, 0xF8, 0x30, 0x11, 0xCA, 0x00, 0x38, 0x23,
+        0x06, 0xF0, 0x0A, 0x00}
+  }
+  , 
+  {
+    0x08, 0x000016CCUL,
+    {
+    0xFC, 0xFF, 0xFC, 0xFE, 0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002BD0UL,
+    {
+    0x02, 0x40, 0x84, 0x10, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002BD6UL,
+    {
+    0x02, 0x40, 0x86, 0x10, 0x01, 0x00}
+  }
+  , 
+  {
+    0x08, 0x00002BDCUL,
+    {
+    0x04, 0x40, 0x88, 0x10, 0x00, 0x00, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002BE4UL,
+    {
+    0x02, 0x40, 0xCC, 0x10, 0x00, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002BEAUL,
+    {
+    0x01, 0x40, 0xF0, 0x10, 0x00, 0x00}
+  }
+  , 
+  {
+    0x04, 0x00002618UL,
+    {
+    0xEC, 0xFD, 0xF0, 0xD8}
+  }
+  , 
+  {
+    0x10, 0x0000261CUL,
+    {
+    0xCA, 0x00, 0xA8, 0x27, 0xE6, 0xF4, 0xCE, 0x02, 0xF6, 0xF4, 0x86, 0x10,
+        0xF0, 0x4D, 0xF7, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x0000262CUL,
+    {
+    0xCE, 0x10, 0xE0, 0x06, 0xE1, 0x0A, 0xE4, 0xA6, 0xCF, 0x10, 0x86, 0xF6,
+        0x1F, 0x00, 0x8D, 0xFB}
+  }
+  , 
+  {
+    0x10, 0x0000263CUL,
+    {
+    0xE1, 0x1A, 0xC2, 0xF4, 0x5E, 0x11, 0xE4, 0xA4, 0xCF, 0x10, 0xF0, 0x4D,
+        0x49, 0x81, 0x2D, 0x19}
+  }
+  , 
+  {
+    0x10, 0x0000264CUL,
+    {
+    0xF0, 0x4D, 0x49, 0x82, 0x2D, 0x16, 0xF0, 0x4D, 0x49, 0x84, 0x2D, 0x13,
+        0xF0, 0x4D, 0x47, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x0000265CUL,
+    {
+    0x08, 0x00, 0x2D, 0x0F, 0xF0, 0x4D, 0x47, 0xF8, 0x10, 0x00, 0x2D, 0x0B,
+        0xF0, 0x4D, 0x47, 0xF8}
+  }
+  , 
+  {
+    0x10, 0x0000266CUL,
+    {
+    0x20, 0x00, 0x2D, 0x07, 0xF0, 0x4D, 0xC0, 0x89, 0xE0, 0x28, 0xCA, 0x00,
+        0x84, 0x00, 0xE0, 0x4D}
+  }
+  , 
+  {
+    0x10, 0x0000267CUL,
+    {
+    0xF0, 0x4D, 0xF0, 0x4D, 0xC0, 0x88, 0xCA, 0x00, 0xD6, 0x27, 0xCA, 0x00,
+        0xC6, 0x27, 0xBF, 0x88}
+  }
+  , 
+  {
+    0x04, 0x0000268CUL,
+    {
+    0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x0A, 0x00002690UL,
+    {
+    0xD1, 0xA0, 0x6E, 0xCA, 0x6E, 0xC6, 0x6E, 0xC2, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x0A, 0x0000269AUL,
+    {
+    0xD1, 0xA0, 0x6F, 0xCA, 0x6F, 0xC6, 0x6F, 0xC2, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x0E, 0x000026A4UL,
+    {
+    0xBB, 0xF5, 0x24, 0x8F, 0x88, 0x10, 0x34, 0x8F, 0x8A, 0x10, 0xBB, 0xF5,
+        0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000026B2UL,
+    {
+    0xF2, 0xF6, 0x86, 0x10, 0xF2, 0xF8, 0x88, 0x10, 0xF2, 0xF9, 0x8A, 0x10,
+        0xF6, 0xF8, 0x0E, 0xFE}
+  }
+  , 
+  {
+    0x10, 0x000026C2UL,
+    {
+    0xF6, 0xF9, 0x0C, 0xFE, 0x7B, 0x66, 0xF2, 0xF7, 0x0E, 0xFE, 0x46, 0xF7,
+        0x63, 0x00, 0xFD, 0x0C}
+  }
+  , 
+  {
+    0x10, 0x000026D2UL,
+    {
+    0xE6, 0xF6, 0x64, 0x00, 0xF6, 0xF8, 0x0E, 0xFE, 0xF6, 0xF9, 0x0C, 0xFE,
+        0x7B, 0x66, 0xF6, 0x07}
+  }
+  , 
+  {
+    0x10, 0x000026E2UL,
+    {
+    0x86, 0x10, 0xF7, 0x8E, 0xF0, 0x10, 0x0D, 0x06, 0xF1, 0xAE, 0xE7, 0xF8,
+        0x64, 0x00, 0x21, 0x8A}
+  }
+  , 
+  {
+    0x0C, 0x000026F2UL,
+    {
+    0xF7, 0xF8, 0xF0, 0x10, 0xF6, 0x8E, 0x88, 0x10, 0xF6, 0x8E, 0x8A, 0x10}
+  }
+  , 
+  {
+    0x02, 0x000026FEUL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002700UL,
+    {
+    0xBE, 0x88, 0xCC, 0x00, 0xC2, 0xF5, 0xCE, 0x10, 0xF6, 0xF9, 0x0E, 0xFE,
+        0x5B, 0x55, 0xF2, 0xF6}
+  }
+  , 
+  {
+    0x10, 0x00002710UL,
+    {
+    0x0E, 0xFE, 0x48, 0x60, 0x3D, 0x01, 0x08, 0x61, 0xF0, 0x56, 0x02, 0xF5,
+        0xCC, 0x10, 0xF0, 0x48}
+  }
+  , 
+  {
+    0x10, 0x00002720UL,
+    {
+    0xC0, 0x86, 0xF0, 0x46, 0x5C, 0x14, 0xC4, 0x54, 0x8C, 0x10, 0xE1, 0x1A,
+        0xE4, 0xA6, 0xCF, 0x10}
+  }
+  , 
+  {
+    0x02, 0x00002730UL,
+    {
+    0xBF, 0x88}
+  }
+  , 
+  {
+    0x02, 0x00002732UL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x04, 0x00002734UL,
+    {
+    0xEC, 0xFD, 0xEC, 0xFE}
+  }
+  , 
+  {
+    0x10, 0x00002738UL,
+    {
+    0xF2, 0xF5, 0x84, 0x10, 0xC2, 0xF4, 0xCE, 0x10, 0x04, 0xF4, 0x84, 0x10,
+        0xF0, 0x45, 0x52, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x00002748UL,
+    {
+    0x84, 0x10, 0xF0, 0x54, 0x62, 0xF5, 0x84, 0x10, 0xF0, 0x85, 0xCA, 0x00,
+        0x7C, 0x00, 0xC0, 0x88}
+  }
+  , 
+  {
+    0x10, 0x00002758UL,
+    {
+    0xCA, 0x00, 0xD4, 0x16, 0x24, 0x8F, 0xCC, 0x10, 0xE0, 0x0D, 0xE6, 0xFE,
+        0xCF, 0x10, 0x0D, 0x02}
+  }
+  , 
+  {
+    0x10, 0x00002768UL,
+    {
+    0x08, 0xD1, 0xF0, 0x4D, 0x99, 0x8E, 0x49, 0x81, 0x3D, 0xFB, 0xF0, 0x4D,
+        0x43, 0xF8, 0x5E, 0x11}
+  }
+  , 
+  {
+    0x10, 0x00002778UL,
+    {
+    0x9D, 0x14, 0xF0, 0x4D, 0xC0, 0x84, 0x5C, 0x14, 0xD4, 0x44, 0x8C, 0x10,
+        0x42, 0xF4, 0xCC, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00002788UL,
+    {
+    0x3D, 0x09, 0xE1, 0x0A, 0xF0, 0x4D, 0xC0, 0x84, 0xE4, 0xA4, 0xCF, 0x10,
+        0xF0, 0x4D, 0xC0, 0x88}
+  }
+  , 
+  {
+    0x0A, 0x00002798UL,
+    {
+    0xCA, 0x00, 0x38, 0x23, 0x08, 0xD1, 0xF0, 0x4D, 0x0D, 0xE2}
+  }
+  , 
+  {
+    0x06, 0x000027A2UL,
+    {
+    0xFC, 0xFE, 0xFC, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x02, 0x00000084UL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000027A8UL,
+    {
+    0xE6, 0x8A, 0xAF, 0x04, 0xE6, 0x0D, 0x02, 0x20, 0xE6, 0x8B, 0xAF, 0x04,
+        0xE6, 0x0E, 0x40, 0x20}
+  }
+  , 
+  {
+    0x0E, 0x000027B8UL,
+    {
+    0xE6, 0x8C, 0x5F, 0x04, 0xE6, 0x0F, 0x08, 0x10, 0xE6, 0x8D, 0xAF, 0x04,
+        0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000027C6UL,
+    {
+    0xD1, 0xA0, 0xE6, 0xCA, 0x44, 0x00, 0xE6, 0xC6, 0x48, 0x00, 0xE6, 0xC2,
+        0x4C, 0x00, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000027D6UL,
+    {
+    0xE6, 0xA2, 0x80, 0x00, 0xF0, 0x48, 0xC0, 0x85, 0xE6, 0xF4, 0xC4, 0x09,
+        0x0B, 0x54, 0xF2, 0xF4}
+  }
+  , 
+  {
+    0x10, 0x000027E6UL,
+    {
+    0x0E, 0xFE, 0x28, 0x41, 0xF6, 0xF4, 0x10, 0xFD, 0xF2, 0x22, 0x10, 0xFD,
+        0xE6, 0xB2, 0x58, 0x00}
+  }
+  , 
+  {
+    0x04, 0x000027F6UL,
+    {
+    0x6F, 0xA2, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000027FAUL,
+    {
+    0xE6, 0xA1, 0x80, 0x00, 0xE6, 0xA0, 0x27, 0x00, 0xF0, 0x48, 0xC0, 0x85,
+        0xE6, 0xF4, 0xC4, 0x09}
+  }
+  , 
+  {
+    0x10, 0x0000280AUL,
+    {
+    0xF6, 0xF4, 0x0E, 0xFE, 0x4B, 0x55, 0xF2, 0xF4, 0x0E, 0xFE, 0x28, 0x41,
+        0xF6, 0xF4, 0x40, 0xFE}
+  }
+  , 
+  {
+    0x10, 0x0000281AUL,
+    {
+    0xE6, 0xB1, 0x70, 0x00, 0xF6, 0x8E, 0x0C, 0xFD, 0xF6, 0x8E, 0x0E, 0xFD,
+        0x6F, 0xA1, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x0000282AUL,
+    {
+    0xBE, 0x88, 0xCC, 0x00, 0xF2, 0xF6, 0x0C, 0xFD, 0xF2, 0xF7, 0x0E, 0xFD,
+        0xBF, 0x88, 0xF0, 0x46}
+  }
+  , 
+  {
+    0x02, 0x0000283AUL,
+    {
+    0xF0, 0x57}
+  }
+  , 
+  {
+    0x02, 0x0000283CUL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x06, 0x0000283EUL,
+    {
+    0xF2, 0xF4, 0x0C, 0xFD, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002844UL,
+    {
+    0xBE, 0x88, 0xCC, 0x00, 0xF6, 0xF8, 0x0C, 0xFD, 0xF6, 0xF9, 0x0E, 0xFD,
+        0xBF, 0x88, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002854UL,
+    {
+    0xC6, 0x03, 0x03, 0x00, 0xCC, 0x00, 0xF6, 0xF0, 0x40, 0xFC, 0xC6, 0x08,
+        0x40, 0xFC, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002864UL,
+    {
+    0xEC, 0x00, 0xC6, 0x87, 0x10, 0x00, 0xEC, 0x06, 0xEC, 0x07, 0xCA, 0x00,
+        0x08, 0x25, 0xFC, 0x07}
+  }
+  , 
+  {
+    0x0C, 0x00002874UL,
+    {
+    0xFC, 0x06, 0xFC, 0x87, 0xFC, 0x00, 0xFC, 0x08, 0xFC, 0x03, 0xFB, 0x88}
+  }
+  , 
+  {
+    0x10, 0x00002880UL,
+    {
+    0xC6, 0x03, 0x03, 0x00, 0xCC, 0x00, 0xF6, 0xF0, 0x60, 0xFC, 0xC6, 0x08,
+        0x60, 0xFC, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002890UL,
+    {
+    0xEC, 0x00, 0xC6, 0x87, 0x10, 0x00, 0xEC, 0x06, 0xEC, 0x07, 0xCA, 0x00,
+        0xE4, 0x24, 0xFC, 0x07}
+  }
+  , 
+  {
+    0x0C, 0x000028A0UL,
+    {
+    0xFC, 0x06, 0xFC, 0x87, 0xFC, 0x00, 0xFC, 0x08, 0xFC, 0x03, 0xFB, 0x88}
+  }
+  , 
+  {
+    0x10, 0x000028ACUL,
+    {
+    0xC6, 0x03, 0x03, 0x00, 0xCC, 0x00, 0xF6, 0xF0, 0x80, 0xFC, 0xC6, 0x08,
+        0x80, 0xFC, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000028BCUL,
+    {
+    0xEC, 0x00, 0xC6, 0x87, 0x10, 0x00, 0xEC, 0x06, 0xEC, 0x07, 0xCA, 0x00,
+        0xCE, 0x24, 0xFC, 0x07}
+  }
+  , 
+  {
+    0x0C, 0x000028CCUL,
+    {
+    0xFC, 0x06, 0xFC, 0x87, 0xFC, 0x00, 0xFC, 0x08, 0xFC, 0x03, 0xFB, 0x88}
+  }
+  , 
+  {
+    0x10, 0x000028D8UL,
+    {
+    0xC6, 0x03, 0x03, 0x00, 0xCC, 0x00, 0xF6, 0xF0, 0xA0, 0xFC, 0xC6, 0x08,
+        0xA0, 0xFC, 0xCC, 0x00}
+  }
+  , 
+  {
+    0x10, 0x000028E8UL,
+    {
+    0xEC, 0x00, 0xC6, 0x87, 0x10, 0x00, 0xEC, 0x06, 0xEC, 0x07, 0xD1, 0x00,
+        0x02, 0x22, 0x10, 0xFD}
+  }
+  , 
+  {
+    0x10, 0x000028F8UL,
+    {
+    0xCA, 0x00, 0x34, 0x27, 0xFC, 0x07, 0xFC, 0x06, 0xFC, 0x87, 0xFC, 0x00,
+        0xFC, 0x08, 0xFC, 0x03}
+  }
+  , 
+  {
+    0x02, 0x00002908UL,
+    {
+    0xFB, 0x88}
+  }
+  , 
+  {
+    0x10, 0x0000290AUL,
+    {
+    0xC6, 0x03, 0x03, 0x00, 0x24, 0x8F, 0x0C, 0xFD, 0x34, 0x8F, 0x0E, 0xFD,
+        0xFC, 0x03, 0xFB, 0x88}
+  }
+  , 
+  {
+    0x08, 0x0000007CUL,
+    {
+    0x2B, 0x88, 0xE0, 0xF4, 0x20, 0x48, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002BF2UL,
+    {
+    0xA5, 0x5A, 0xA5, 0xA5, 0x0A, 0x86, 0x3F, 0x2E, 0x1A, 0x86, 0x00, 0xD2,
+        0x1A, 0x89, 0x00, 0xFB}
+  }
+  , 
+  {
+    0x10, 0x00002C02UL,
+    {
+    0x0A, 0x89, 0x6F, 0x00, 0xE6, 0x0A, 0x0C, 0xFA, 0xE6, 0x00, 0x04, 0x00,
+        0xE6, 0x01, 0x05, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002C12UL,
+    {
+    0xE6, 0x02, 0x06, 0x00, 0xE6, 0x08, 0xC0, 0xFC, 0xB5, 0x4A, 0xB5, 0xB5,
+        0xE6, 0xF0, 0x00, 0x10}
+  }
+  , 
+  {
+    0x10, 0x00002C22UL,
+    {
+    0xE6, 0xF9, 0x00, 0x00, 0xE6, 0xF8, 0x10, 0x2D, 0xF0, 0x18, 0x70, 0x19,
+        0x2D, 0x29, 0xE0, 0x05}
+  }
+  , 
+  {
+    0x10, 0x00002C32UL,
+    {
+    0xDC, 0x09, 0x98, 0x28, 0x2D, 0x25, 0xF0, 0x32, 0xDC, 0x09, 0x98, 0x48,
+        0xAA, 0xF2, 0x1B, 0xE0}
+  }
+  , 
+  {
+    0x10, 0x00002C42UL,
+    {
+    0xAA, 0xF2, 0x0E, 0xF0, 0xF0, 0x34, 0x7C, 0x33, 0x0E, 0xF3, 0x06, 0xF3,
+        0x00, 0xFD, 0xE0, 0x15}
+  }
+  , 
+  {
+    0x10, 0x00002C52UL,
+    {
+    0x4C, 0x54, 0x91, 0x50, 0x68, 0x5B, 0xB8, 0x53, 0x08, 0x41, 0x28, 0x21,
+        0x3D, 0xF3, 0x0D, 0xE7}
+  }
+  , 
+  {
+    0x10, 0x00002C62UL,
+    {
+    0xDC, 0x09, 0x98, 0x38, 0xDC, 0x44, 0xB9, 0xA3, 0x08, 0x31, 0x18, 0x40,
+        0x76, 0xF3, 0x00, 0xC0}
+  }
+  , 
+  {
+    0x10, 0x00002C72UL,
+    {
+    0x28, 0x21, 0x7D, 0xF8, 0x0D, 0xDC, 0xB9, 0xA4, 0x08, 0x41, 0x28, 0x21,
+        0x7D, 0xFC, 0x0D, 0xD7}
+  }
+  , 
+  {
+    0x10, 0x00002C82UL,
+    {
+    0xE6, 0xF9, 0x00, 0x00, 0xE6, 0xF8, 0x00, 0x2B, 0xE6, 0x03, 0x03, 0x00,
+        0xDC, 0x09, 0xA8, 0x28}
+  }
+  , 
+  {
+    0x10, 0x00002C92UL,
+    {
+    0x2D, 0x3C, 0x08, 0x82, 0x18, 0x90, 0xAA, 0xF2, 0x29, 0xF0, 0xF0, 0x42,
+        0x66, 0xF2, 0xFF, 0x3F}
+  }
+  , 
+  {
+    0x10, 0x00002CA2UL,
+    {
+    0x3D, 0x05, 0xE0, 0x04, 0xDC, 0x09, 0xA8, 0x28, 0x08, 0x82, 0x18, 0x90,
+        0xDC, 0x09, 0xA8, 0x38}
+  }
+  , 
+  {
+    0x10, 0x00002CB2UL,
+    {
+    0x08, 0x82, 0x18, 0x90, 0x8A, 0xF4, 0x06, 0xE0, 0xF6, 0xF3, 0x06, 0xFE,
+        0xDC, 0x09, 0xA8, 0x38}
+  }
+  , 
+  {
+    0x10, 0x00002CC2UL,
+    {
+    0x08, 0x82, 0x18, 0x90, 0xDC, 0x09, 0xA9, 0xA8, 0x08, 0x81, 0x18, 0x90,
+        0xB9, 0xA3, 0x08, 0x31}
+  }
+  , 
+  {
+    0x10, 0x00002CD2UL,
+    {
+    0x8A, 0xF4, 0x06, 0xE0, 0x8A, 0xF3, 0x04, 0xE0, 0x06, 0x03, 0x01, 0x00,
+        0x76, 0xF3, 0x00, 0xC0}
+  }
+  , 
+  {
+    0x10, 0x00002CE2UL,
+    {
+    0x28, 0x21, 0x3D, 0xF0, 0x9A, 0xF8, 0xD0, 0x00, 0x08, 0x81, 0x0D, 0xCE,
+        0xC0, 0x43, 0x5C, 0x13}
+  }
+  , 
+  {
+    0x10, 0x00002CF2UL,
+    {
+    0x76, 0xF3, 0x00, 0xFD, 0xE0, 0x14, 0xF1, 0xA5, 0x4C, 0x45, 0x8A, 0xF2,
+        0x03, 0x70, 0x91, 0x40}
+  }
+  , 
+  {
+    0x0E, 0x00002D02UL,
+    {
+    0x68, 0x4B, 0x0D, 0x01, 0x78, 0x4B, 0xB8, 0x43, 0x0D, 0xBF, 0xFA, 0x00,
+        0x44, 0x1D}
+  }
+  , 
+  {
+    0x0E, 0x00000054UL,
+    {
+    0xDC, 0x03, 0xA8, 0x42, 0x08, 0x22, 0x18, 0x30, 0xDC, 0x03, 0xA8, 0x52,
+        0xCB, 0x00}
+  }
+  , 
+  {
+    0x0E, 0x00000062UL,
+    {
+    0xDC, 0x03, 0xB8, 0x42, 0x08, 0x22, 0x18, 0x30, 0xDC, 0x03, 0xB8, 0x52,
+        0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000094UL,
+    {
+    0xF0, 0x28, 0xF0, 0x39, 0x0D, 0x05, 0x28, 0xB1, 0xF0, 0x6A, 0xDC, 0x49,
+        0xB9, 0xC8, 0x08, 0x81}
+  }
+  , 
+  {
+    0x0A, 0x000000A4UL,
+    {
+    0x48, 0xB0, 0x3D, 0xF9, 0xF0, 0x42, 0xF0, 0x53, 0xCB, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000036UL,
+    {
+    0xEC, 0xFD, 0xF0, 0xD8, 0x0D, 0x04, 0x99, 0x8D, 0xD0, 0x88, 0xCA, 0x00,
+        0x04, 0x00, 0xA9, 0x8D}
+  }
+  , 
+  {
+    0x0E, 0x00000046UL,
+    {
+    0x3D, 0xFA, 0xE0, 0xA8, 0xCA, 0x00, 0x04, 0x00, 0xE0, 0x04, 0xFC, 0xFD,
+        0xCB, 0x00}
+  }
+  , 
+  {
+    0x02, 0x00002BF0UL,
+    {
+    0x00, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000004UL,
+    {
+    0x46, 0xF8, 0x0A, 0x00, 0x3D, 0x03, 0xE0, 0xD8, 0xBB, 0x01, 0xE0, 0xA8,
+        0x9A, 0xB7, 0x0A, 0x70}
+  }
+  , 
+  {
+    0x10, 0x00000014UL,
+    {
+    0x46, 0x59, 0x13, 0x00, 0x3D, 0x07, 0x7E, 0xB7, 0x9A, 0xB7, 0xFE, 0x70,
+        0x46, 0x59, 0x11, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00000024UL,
+    {
+    0x3D, 0xFA, 0x7E, 0xB7, 0x9A, 0xB6, 0xFE, 0x70, 0x7E, 0xB6, 0xF6, 0xF8,
+        0xB0, 0xFE, 0xF0, 0x48}
+  }
+  , 
+  {
+    0x02, 0x00000034UL,
+    {
+    0xCB, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002D10UL,
+    {
+    0x82, 0x80, 0x04, 0x00, 0x00, 0xD0}
+  }
+  , 
+  {
+    0x04, 0x00002D16UL,
+    {
+    0x03, 0x40, 0x12, 0xFD}
+  }
+  , 
+  {
+    0x04, 0x00002D1AUL,
+    {
+    0x01, 0x00, 0x40, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002D1EUL,
+    {
+    0x04, 0x80, 0x04, 0x00, 0x5A, 0xD1}
+  }
+  , 
+  {
+    0x04, 0x00002D24UL,
+    {
+    0x07, 0x40, 0x00, 0xFD}
+  }
+  , 
+  {
+    0x04, 0x00002D28UL,
+    {
+    0x0A, 0x00, 0x41, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002D2CUL,
+    {
+    0x1F, 0x80, 0x04, 0x00, 0x32, 0xD1}
+  }
+  , 
+  {
+    0x06, 0x00002D32UL,
+    {
+    0x3F, 0x80, 0x04, 0x00, 0xF2, 0xD0}
+  }
+  , 
+  {
+    0x10, 0x00002D38UL,
+    {
+    0xFF, 0xBF, 0x08, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x09, 0x00, 0x00, 0xC0,
+        0xFF, 0xBF, 0x0A, 0x00}
+  }
+  , 
+  {
+    0x10, 0x00002D48UL,
+    {
+    0x00, 0xC0, 0xFF, 0xBF, 0x0B, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x0C, 0x00,
+        0x00, 0xC0, 0xFF, 0xBF}
+  }
+  , 
+  {
+    0x10, 0x00002D58UL,
+    {
+    0x0D, 0x00, 0x00, 0xC0, 0xFF, 0xBF, 0x0E, 0x00, 0x00, 0xC0, 0x3F, 0xBA,
+        0x0F, 0x00, 0x00, 0xC0}
+  }
+  , 
+  {
+    0x04, 0x00002D68UL,
+    {
+    0x14, 0x40, 0xE0, 0xFC}
+  }
+  , 
+  {
+    0x04, 0x00002D6CUL,
+    {
+    0x02, 0x00, 0x4B, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002D70UL,
+    {
+    0x07, 0x80, 0x04, 0x00, 0x52, 0xD1}
+  }
+  , 
+  {
+    0x04, 0x00002D76UL,
+    {
+    0x09, 0x40, 0xF6, 0xFC}
+  }
+  , 
+  {
+    0x04, 0x00002D7AUL,
+    {
+    0x05, 0x00, 0x4D, 0x00}
+  }
+  , 
+  {
+    0x06, 0x00002D7EUL,
+    {
+    0x6C, 0x80, 0x04, 0x00, 0x84, 0xD0}
+  }
+  , 
+  {
+    0x04, 0x00002D84UL,
+    {
+    0x05, 0x40, 0x0C, 0xFD}
+  }
+  , 
+  {
+    0x02, 0x00002D88UL,
+    {
+    0x00, 0x00}
+  }
+  , 
+  {
+    0x04, 0x00000000UL,
+    {
+    0xFA, 0x00, 0xF2, 0x2B}
+  }
+  , 
+  {
+    0x04, 0x00000070UL,
+    {
+    0xFA, 0x00, 0x94, 0x0D}
+  }
+  , 
+  {
+    0x04, 0x00000074UL,
+    {
+    0xFA, 0x00, 0x6E, 0x0F}
+  }
+  , 
+  {
+    0x04, 0x00000078UL,
+    {
+    0xFA, 0x00, 0xE8, 0x21}
+  }
+  , 
+  {
+    0x04, 0x0000008CUL,
+    {
+    0xFA, 0x00, 0x0A, 0x29}
+  }
+  , 
+  {
+    0x04, 0x00000090UL,
+    {
+    0xFA, 0x00, 0xD8, 0x28}
+  }
+  , 
+  {
+    0x04, 0x00000110UL,
+    {
+    0xFA, 0x00, 0x54, 0x28}
+  }
+  , 
+  {
+    0x04, 0x00000114UL,
+    {
+    0xFA, 0x00, 0x80, 0x28}
+  }
+  , 
+  {
+    0x04, 0x00000118UL,
+    {
+    0xFA, 0x00, 0xAC, 0x28}
+  }
+  , 
+  {
+  0, 0,}
+
+};
+
+
+
diff --git a/lincan/src/kthread.c b/lincan/src/kthread.c
new file mode 100644 (file)
index 0000000..d2531b9
--- /dev/null
@@ -0,0 +1,190 @@
+#include <linux/config.h>
+#include <linux/version.h>
+
+#if defined(MODVERSIONS)
+#include <linux/modversions.h>
+#endif
+#include <linux/kernel.h>
+#include <linux/sched.h>
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40))
+  #include <linux/tqueue.h>
+#else
+  #include <linux/devfs_fs_kernel.h>
+#endif
+
+#include <linux/wait.h>
+#include <linux/signal.h>
+#include <linux/interrupt.h>
+
+
+#include <asm/semaphore.h>
+#include <linux/smp_lock.h>
+
+#include "../include/kthread.h"
+
+/* private functions */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40))
+static void kthread_launcher(void *data)
+#else
+static void kthread_launcher(unsigned long data)
+#endif
+{
+  kthread_t *kthread = (kthread_t *)data;
+
+  kernel_thread((int (*)(void *))kthread->function, (void *)kthread, 0);
+}
+
+/* public functions */
+
+/* create a new kernel thread. Called by the creator. */
+void start_kthread(void (*func)(kthread_t *), kthread_t *kthread)
+{
+    /* initialize the semaphore:
+       we start with the semaphore locked. The new kernel
+       thread will setup its stuff and unlock it. This
+       control flow (the one that creates the thread) blocks
+       in the down operation below until the thread has reached
+       the up() operation.
+    */
+    init_MUTEX_LOCKED(&kthread->startstop_sem);
+
+    /* store the function to be executed in the data passed to
+       the launcher */
+    kthread->function=func;
+
+    /* create the new thread my running a task through keventd */
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40))
+
+    /* initialize the task queue structure */
+    kthread->tq.sync = 0;
+    INIT_LIST_HEAD(&kthread->tq.list);
+    kthread->tq.routine = kthread_launcher;
+    kthread->tq.data = kthread;
+
+    /* and schedule it for execution */
+    schedule_task(&kthread->tq);
+#else
+    /* initialize tasklet */
+    tasklet_init(&kthread->tq, kthread_launcher, (unsigned long)kthread);
+    /* and schedule it for execution */
+    tasklet_schedule(&kthread->tq);
+#endif
+
+    /* wait till it has reached the setup_thread routine */
+    down(&kthread->startstop_sem);
+}
+
+/* stop a kernel thread. Called by the removing instance */
+void stop_kthread(kthread_t *kthread)
+{
+    if (kthread->thread == NULL)
+    {
+        printk("stop_kthread: killing non existing thread!\n");
+        return;
+    }
+
+    /* this function needs to be protected with the big
+    kernel lock (lock_kernel()). The lock must be
+       grabbed before changing the terminate
+    flag and released after the down() call. */
+    lock_kernel();
+
+    /* initialize the semaphore. We lock it here, the
+       leave_thread call of the thread to be terminated
+       will unlock it. As soon as we see the semaphore
+       unlocked, we know that the thread has exited.
+    */
+    init_MUTEX_LOCKED(&kthread->startstop_sem);
+
+    /* We need to do a memory barrier here to be sure that
+       the flags are visible on all CPUs. 
+    */
+    mb();
+
+    /* set flag to request thread termination */
+    kthread->terminate = 1;
+
+    /* We need to do a memory barrier here to be sure that
+       the flags are visible on all CPUs. 
+    */
+    mb();
+    kill_proc(kthread->thread->pid, SIGKILL, 1);
+
+    /* block till thread terminated */
+    down(&kthread->startstop_sem);
+
+    /* release the big kernel lock */
+    unlock_kernel();
+
+    /* now we are sure the thread is in zombie state. We
+       notify keventd to clean the process up.
+    */
+    kill_proc(2, SIGCHLD, 1);
+
+}
+
+/* initialize new created thread. Called by the new thread. */
+void init_kthread(kthread_t *kthread, char *name)
+{
+    /* fill in thread structure */
+    kthread->thread = current;
+
+    /* initialise termination flag */
+    kthread->terminate = 0;
+
+    /* initialise wait queue */
+    init_waitqueue_head(&kthread->queue);
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,40))
+    /* lock the kernel. A new kernel thread starts without
+      the big kernel lock, regardless of the lock state
+      of the creator (the lock level is *not* inheritated)
+    */
+    lock_kernel();
+/*    daemonize(); */
+
+    /* set signal mask to what we want to respond */
+    siginitsetinv(&current->blocked, sigmask(SIGKILL)|sigmask(SIGINT)|sigmask(SIGTERM));
+
+    /* set name of this process (max 15 chars + 0 !) */
+    sprintf(current->comm, name);
+
+    /* let others run */
+    unlock_kernel();
+#else
+
+    daemonize(name);
+#endif
+
+    /* tell the creator that we are ready and let him continue */
+    up(&kthread->startstop_sem);
+}
+
+/* cleanup of thread. Called by the exiting thread. */
+void exit_kthread(kthread_t *kthread)
+{
+    /* we are terminating */
+
+    /* lock the kernel, the exit will unlock it */
+    lock_kernel();
+    kthread->thread = NULL;
+    mb();
+
+    /* notify the stop_kthread() routine that we are terminating. */
+    up(&kthread->startstop_sem);
+    /* the kernel_thread that called clone() does a do_exit here. */
+
+    /* there is no race here between execution of the "killer" and real termination
+       of the thread (race window between up and do_exit), since both the
+       thread and the "killer" function are running with the kernel lock held.
+       The kernel lock will be freed after the thread exited, so the code
+       is really not executed anymore as soon as the unload functions gets
+       the kernel lock back.
+       The init process may not have made the cleanup of the process here,
+       but the cleanup can be done safely with the module unloaded.
+    */
+
+}
+