Attached...
/****************************************************************
 *
 *     kawasaki.c - driver for KL5KUSB101 based USB->Ethernet
 *
 *     (c) 2000 Interlan Communications
 *
 *     Original author: The Zapman
 *                      Based off of (and with thanks to) Petko Manolov's pegaus.c 
driver.
 *                      Also many thanks to Joel Silverman at Kawasaki for providing 
the firmware
 *                              and driver resources.
 *
 *              This program is free software; you can redistribute it and/or modify it
 *              under the terms of the GNU General Public License as published by the
 *              Free Software Foundation; either version 2, or (at your option) any
 *              later version.
 *
 *              This program is distributed in the hope that it will be useful,
 *              but WITHOUT ANY WARRANTY; without even the implied warranty of
 *              MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *              GNU General Public License for more details.
 *              
 *              You should have received a copy of the GNU General Public License
 *              along with this program; if not, write to the Free Software Foundation,
 *              Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
 *
 ****************************************************************/
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/malloc.h>
#include <linux/string.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/usb.h>
#include <linux/types.h>
#include <asm/semaphore.h>

#include "kawethfw.h"

#define KAWETH_MTU                                                              1642
#define KAWETH_BUF_SIZE                                         1800
#define KAWETH_TX_TIMEOUT                                       (5 * HZ)
#define KAWETH_FIRMWARE_BUF_SIZE        4096

#define KAWETH_STATUS_BROKEN                    0x0000001

#define KAWETH_COMMAND_GET_ETHERNET_DESC                0x00
#define KAWETH_COMMAND_GET_MAC                                                  0x06
#define KAWETH_COMMAND_SCAN                                                            
         0xFF

MODULE_AUTHOR("Michael Zappe <[EMAIL PROTECTED]>");
MODULE_DESCRIPTION("KL5USB101 USB Ethernet driver");

static void *kaweth_probe(struct usb_device *dev, unsigned int ifnum);
static void kaweth_disconnect(struct usb_device *dev, void *ptr);

/****************************************************************
 *     kaweth_driver
 ****************************************************************/
static struct usb_driver kaweth_driver = {
        name:           "kaweth",
        probe:          kaweth_probe,
        disconnect:     kaweth_disconnect,
};

typedef struct { __u8 addr[6]; }  __attribute__ ((packed)) eth_addr_t;

/****************************************************************
 *     usb_eth_dev
 ****************************************************************/
struct usb_eth_dev {
        char *name;
        __u16 vendor;
        __u16 device;
        void *pdata;
};

/****************************************************************
 *     kaweth_device
 ****************************************************************/
struct kaweth_device
{
        spinlock_t device_lock;

        __u32 status;

        struct usb_device *dev;
        struct net_device *net;
        wait_queue_head_t control_wait;

        struct urb tx_urb;
        struct urb rx_urb;
        __u8 firmware_buf[KAWETH_FIRMWARE_BUF_SIZE];
        __u8 tx_buf[KAWETH_BUF_SIZE];
        __u8 rx_buf[KAWETH_BUF_SIZE];

        struct
        {
                __u8 size;
                __u8 reserved1;
                __u8 reserved2;
                eth_addr_t hw_addr;
                __u32 statistics_mask;
                __u16 segment_size;
                __u16 max_multicast_filters;
                __u8 reserved3;
        } configuration __attribute__ ((packed));

        struct net_device_stats stats;
};

/****************************************************************
 *     usb_dev_id
 ****************************************************************/
static struct usb_eth_dev usb_dev_id[] = {
        { "NetGear EA-101", 0x0846, 0x1001, NULL },
        { NULL, 0, 0, NULL }
};

/****************************************************************
 *     kaweth_check_device_ids
 ****************************************************************/
static int kaweth_check_device_ids(__u16 vendor, __u16 product)
{
        int i=0;
        
        while (usb_dev_id[i].name)
        {
                if((usb_dev_id[i].vendor == vendor) && 
                         (usb_dev_id[i].device == product))
                        {
                                printk("%s connected...\n", usb_dev_id[i].name);
                                
                                return 0;
                        }
                i++;
        }
        return  1;
}

/****************************************************************
 *     kaweth_control_complete
 ****************************************************************/
static void kaweth_control_complete(struct urb *urb)
{
        struct kaweth_device *kaweth = (struct kaweth_device *)urb->context;

        printk("Control completion on device %x\n", (int)kaweth);
        
        if(waitqueue_active(&kaweth->control_wait))
        {
                wake_up(&kaweth->control_wait);
        }
}

/****************************************************************
 *     kaweth_control
 ****************************************************************/
static int kaweth_control(struct kaweth_device *dev,
                                                                                       
                 unsigned int pipe, 
                                                                                       
                 __u8 request, 
                                                                                       
                 __u8 requesttype, 
                                                                                       
                 __u16 value, 
                                                                                       
                 __u16 index,
                                                                                       
                 void *data, 
                                                                                       
                 __u16 size, 
                                                                                       
                 int timeout)
{
        DECLARE_WAITQUEUE(wait, current);
        purb_t urb = usb_alloc_urb(0);
        devrequest *dr = kmalloc(sizeof(devrequest), GFP_KERNEL);
        int status;

        printk("Sizeof devrequest: %d\n", sizeof(*dr));
        
        if(!urb || !dr)
        {
                if(urb) kfree(urb);

                return -ENOMEM;
        }

        spin_lock(&dev->device_lock);
        
        urb->dev = dev->dev;
        urb->pipe = pipe;
        urb->setup_packet = (void *)dr;
        urb->transfer_flags = 0;
        urb->transfer_buffer = (void *)data;
        urb->transfer_buffer_length = size;
        urb->actual_length = size;
        urb->complete = kaweth_control_complete;
        urb->context = dev;

        dr->requesttype = requesttype;
        dr->request = request;
        dr->value = value;
        dr->index = index;
        dr->length = size;

        printk("Request type: %x  Request: %x  Value: %x Index: %x Length: %x\n",
                                 (int)dr->requesttype,
                                 (int)dr->request,
                                 (int)dr->value,
                                 (int)dr->index,
                                 (int)dr->length); 

        init_waitqueue_head(&dev->control_wait);

        current->state = TASK_INTERRUPTIBLE;
        
        add_wait_queue(&dev->control_wait, &wait);

        status = usb_submit_urb(urb);

        if(status)
        {
                usb_free_urb(urb);
                remove_wait_queue(&dev->control_wait, &wait);
                spin_unlock(&dev->device_lock);
                return status;
        }

        if(urb->status == -EINPROGRESS)
        {
                while(timeout && urb->status == -EINPROGRESS)
                {
                        status = timeout = schedule_timeout(timeout);
                }
        }
        else
        {
                status = 1;
        }

        remove_wait_queue(&dev->control_wait, &wait);

        if(!status)
        {
                usb_unlink_urb(urb);

                printk("Timeout\n");

                status = -ETIMEDOUT;
        }
        else
        {
                status = urb->status;
        }

        spin_unlock(&dev->device_lock);

        printk("Actual length: %d, length %d\n", urb->actual_length, 
urb->transfer_buffer_length);

        usb_free_urb(urb);
        kfree(dr);
        
        return status;  
}

/****************************************************************
 *     kaweth_read_configuration
 ****************************************************************/
static int kaweth_read_configuration(struct kaweth_device *kaweth)
{
        int retval;

        printk("Reading kaweth configuration\n");

        retval = kaweth_control(kaweth,
                                                                        
usb_rcvctrlpipe(kaweth->dev, 0),
                                                                        
KAWETH_COMMAND_GET_ETHERNET_DESC,
                                                                        
USB_TYPE_VENDOR | USB_DIR_IN | USB_RECIP_DEVICE,
                                                                        0,
                                                                        0,
                                                                        (void 
*)&kaweth->configuration,
                                                                        
sizeof(kaweth->configuration),
                                                                        60);

        printk("Length: %d (%d)\n", kaweth->configuration.size, 
sizeof(kaweth->configuration));
        printk("Read configuration MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n",
                                 (int)kaweth->configuration.hw_addr.addr[0],
                                 (int)kaweth->configuration.hw_addr.addr[1],
                                 (int)kaweth->configuration.hw_addr.addr[2],
                                 (int)kaweth->configuration.hw_addr.addr[3],
                                 (int)kaweth->configuration.hw_addr.addr[4],
                                 (int)kaweth->configuration.hw_addr.addr[5]);
        printk("MTU: %d\n", kaweth->configuration.segment_size);

        return retval;
}

/****************************************************************
 *     kaweth_read_mac_addr
 ****************************************************************/
static int kaweth_read_mac_addr(struct kaweth_device *kaweth,
                                                                                       
                                          eth_addr_t *eth_addr)
{
        int retval;
        
        printk("Reading MAC addr\n");

        retval = kaweth_control(kaweth,
                                                                        
usb_rcvctrlpipe(kaweth->dev, 0),
                                                                        
KAWETH_COMMAND_GET_MAC,
                                                                        
USB_TYPE_VENDOR | USB_DIR_IN | USB_RECIP_DEVICE,
                                                                        0,
                                                                        0,
                                                                        (void 
*)eth_addr,
                                                                        
sizeof(*eth_addr),
                                                                        60);

        printk("Read MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n",
                                 (int)eth_addr->addr[0],
                                 (int)eth_addr->addr[1],
                                 (int)eth_addr->addr[2],
                                 (int)eth_addr->addr[3],
                                 (int)eth_addr->addr[4],
                                 (int)eth_addr->addr[5]);

        retval = kaweth_control(kaweth,
                                                                        
usb_sndctrlpipe(kaweth->dev, 0),
                                                                        
KAWETH_COMMAND_GET_MAC,
                                                                        
USB_TYPE_VENDOR | USB_DIR_IN | USB_RECIP_DEVICE,
                                                                        0,
                                                                        0,
                                                                        (void 
*)eth_addr,
                                                                        
sizeof(*eth_addr),
                                                                        60);

        printk("Read MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n",
                                 (int)eth_addr->addr[0],
                                 (int)eth_addr->addr[1],
                                 (int)eth_addr->addr[2],
                                 (int)eth_addr->addr[3],
                                 (int)eth_addr->addr[4],
                                 (int)eth_addr->addr[5]);

        return retval;
}

/****************************************************************
 *     kaweth_download_firmware
 ****************************************************************/
static int kaweth_download_firmware(struct kaweth_device *kaweth, 
                                                                                       
                                                         __u8 *data, 
                                                                                       
                                                         __u16 data_len,
                                                                                       
                                                         __u8 interrupt,
                                                                                       
                                                         __u8 type)
{       
        if(data_len > KAWETH_FIRMWARE_BUF_SIZE)
        {
                printk("Firmware too big: %d\n", data_len);
                
                return -ENOSPC;
        }
        
        memcpy(kaweth->firmware_buf, data, data_len);
        
        kaweth->firmware_buf[2] = (data_len & 0xFF) - 7;
        kaweth->firmware_buf[3] = data_len >> 8;
        kaweth->firmware_buf[4] = type;
        kaweth->firmware_buf[5] = interrupt;

        printk("Downloading firmware at %x to kaweth device at %x...\n", (int)data, 
(int)kaweth);

        return kaweth_control(kaweth,
                                                                        
usb_sndctrlpipe(kaweth->dev, 0),
                                                                        
KAWETH_COMMAND_SCAN,
                                                                        
USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
                                                                        type,
                                                                        interrupt,
                                                                        (void 
*)kaweth->firmware_buf,
                                                                        data_len,
                                                                        60);
}

/****************************************************************
 *     kaweth_trigger_firmware
 ****************************************************************/
static int kaweth_trigger_firmware(struct kaweth_device *kaweth,
                                                                                       
                                                  __u8 interrupt)
{
        kaweth->firmware_buf[0] = 0xB6;
        kaweth->firmware_buf[1] = 0xC3;
        kaweth->firmware_buf[2] = 1;
        kaweth->firmware_buf[3] = 0;
        kaweth->firmware_buf[4] = 6;
        kaweth->firmware_buf[5] = 100;
        kaweth->firmware_buf[6] = 0;
        kaweth->firmware_buf[7] = 0;
        
        printk("Triggering firmware\n");

        return kaweth_control(kaweth,
                                                                        
usb_sndctrlpipe(kaweth->dev, 0),
                                                                        
KAWETH_COMMAND_SCAN,
                                                                        
USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
                                                                        6,
                                                                        interrupt,
                                                                        (void 
*)kaweth->firmware_buf,
                                                                        8,
                                                                        60);
}

/****************************************************************
 *     kaweth_usb_recieve
 ****************************************************************/
static void kaweth_usb_recieve(struct urb *urb)
{
        struct kaweth_device *kaweth = urb->context;
        struct net_device *net = kaweth->net;
        
        int count = urb->actual_length, 
                                                        res;

        struct sk_buff *skb;
        
        __u16 pkt_len = *(__u16 *)kaweth->rx_buf;

        printk("kaweth recieved URB of length %d\n", count);


#define RX_FAILED       if ((res = usb_submit_urb(&kaweth->rx_urb)))  \
                                                                                       
         warn("(prb)failed rx_urb %d", res);                              \
                                                                                return

        if (urb->status) {
                info("%s: RX status %d", net->name, urb->status);
                RX_FAILED;
        }

        if (!count)
        {
                RX_FAILED;
        }

        if(!(skb = dev_alloc_skb(pkt_len+2)))
        {
                RX_FAILED;
        }

        skb->dev = net;
        skb_reserve(skb, 2);

        eth_copy_and_sum(skb, kaweth->rx_buf, pkt_len, 0);
        
        skb_put(skb, pkt_len);

        skb->protocol = eth_type_trans(skb, net);
        
        netif_rx(skb);
        
        kaweth->stats.rx_packets++;
        kaweth->stats.rx_bytes += pkt_len;

        if ((res = usb_submit_urb(&kaweth->rx_urb)))
                warn("(prb)failed rx_urb %d", res);
}

/****************************************************************
 *     kaweth_usb_transmit_complete
 ****************************************************************/
static void kaweth_usb_transmit_complete(struct urb *urb)
{
        struct kaweth_device *kaweth = urb->context;

        spin_lock(&kaweth->device_lock);

        if (urb->status)
                info("%s: TX status %d", kaweth->net->name, urb->status);

        netif_wake_queue(kaweth->net);

        spin_unlock(&kaweth->device_lock);
}

/****************************************************************
 *     kaweth_open
 ****************************************************************/
static int kaweth_open(struct net_device *net)
{
        struct kaweth_device *kaweth = (struct kaweth_device *)net->priv;
        int res;

        printk("Opening network device...\n");

/*
        if ((res = pegasus_start_net(net, pegasus->usb))) {
                err("can't start_net() - %d", res);
                return -EIO;
        }
*/

        if ((res = usb_submit_urb(&kaweth->rx_urb)))
                warn("(open)failed rx_urb %d", res);

/*      usb_submit_urb(&pegasus->intr_urb);*/
        netif_start_queue(net);

        MOD_INC_USE_COUNT;

        return 0;
}

/****************************************************************
 *     kaweth_close
 ****************************************************************/
static int kaweth_close(struct net_device *net)
{
        struct kaweth_device *kaweth = net->priv;

        netif_stop_queue(net);

        usb_unlink_urb(&kaweth->rx_urb);
        usb_unlink_urb(&kaweth->tx_urb);

        MOD_DEC_USE_COUNT;

        return 0;
}

/****************************************************************
 *     kaweth_ioctl
 ****************************************************************/
static int kaweth_ioctl(struct net_device *net, struct ifreq *rq, int cmd)
{
        __u16 *data = (__u16 *)&rq->ifr_data;
        struct kaweth_device *kaweth = net->priv;

        switch(cmd) {
                default:
                        return -EOPNOTSUPP;
        }
}

/****************************************************************
 *     kaweth_start_xmit
 ****************************************************************/
static int kaweth_start_xmit(struct sk_buff *skb, struct net_device *net)
{
        struct kaweth_device *kaweth = net->priv;
        int count = ((skb->len+2) & 0x3f) ? skb->len+2 : skb->len+3;
        int res;

        spin_lock(&kaweth->device_lock);

        netif_stop_queue(net);

        ((__u16 *)kaweth->tx_buf)[0] = skb->len;
        memcpy(kaweth->tx_buf + 2, skb->data, skb->len);

        (&kaweth->tx_urb)->transfer_buffer_length = count;

        if ((res = usb_submit_urb(&kaweth->tx_urb))) {
                warn("kaweth failed tx_urb %d", res);
                kaweth->stats.tx_errors++;
                netif_start_queue(net);
        } else {
                kaweth->stats.tx_packets++;
                kaweth->stats.tx_bytes += skb->len;
                net->trans_start = jiffies;
        }

        dev_kfree_skb(skb);

        spin_unlock(&kaweth->device_lock);

        return 0;
}

/****************************************************************
 *     kaweth_set_rx_mode
 ****************************************************************/
static void kaweth_set_rx_mode(struct net_device *net)
{
        struct kaweth_device *kaweth = net->priv;

        netif_stop_queue(net);

/*
        if (net->flags & IFF_PROMISC) {
                info("%s: Promiscuous mode enabled", net->name);
                pegasus_set_register(pegasus->usb, 2, 0x04);
        } else if ((net->mc_count > multicast_filter_limit) ||
                        (net->flags & IFF_ALLMULTI)) {
                pegasus_set_register(pegasus->usb, 0, 0xfa);
                pegasus_set_register(pegasus->usb, 2, 0);
        } else {
                dbg("%s: set Rx mode", net->name);
        }
        */
        
        netif_wake_queue(net);
}

/****************************************************************
 *     kaweth_netdev_stats
 ****************************************************************/
static struct net_device_stats *kaweth_netdev_stats(struct net_device *dev)
{
        return &((struct kaweth_device *)dev->priv)->stats;
}

/****************************************************************
 *     kaweth_tx_timeout
 ****************************************************************/
static void kaweth_tx_timeout(struct net_device *net)
{
        struct kaweth_device *kaweth = net->priv;

        warn("%s: Tx timed out. Reseting...", net->name);
        kaweth->stats.tx_errors++;
        net->trans_start = jiffies;

        netif_wake_queue(net);
}

/****************************************************************
 *     kaweth_probe
 ****************************************************************/
static void *kaweth_probe(struct usb_device *dev, unsigned int ifnum)
{
//      struct net_device *net;
        struct kaweth_device *kaweth;
        eth_addr_t mac_addr;
        const eth_addr_t bcast_addr = { { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } };
        int result;
        struct usb_interface_descriptor iface_desc;
        
        printk("Kawasaki Device Probe: 0x%4.4x:0x%4.4x\n", 
                                 (int)dev->descriptor.idVendor, 
                                 (int)dev->descriptor.idProduct);

        if (kaweth_check_device_ids(dev->descriptor.idVendor, 
                                                                                       
                                 dev->descriptor.idProduct)) 
        {
                return NULL;
        }

        printk("Setting configuration to %d\n", dev->config[0].bConfigurationValue);

        if(usb_set_configuration(dev, dev->config[0].bConfigurationValue)) 
        {
                printk("usb_set_configuration() failed\n");
                return NULL;
        } 

        if(!(kaweth = kmalloc(sizeof(struct kaweth_device), GFP_KERNEL)))
        {
                printk("out of memory allocating device structure\n");
                return NULL;
        }

        kaweth->dev = dev;
        kaweth->status = 0;
        kaweth->net = NULL;
        kaweth->device_lock = SPIN_LOCK_UNLOCKED;

        printk("Interface: %d\n", ifnum);

        printk("Num endpoints: %d\n", (int)iface_desc.bNumEndpoints);

//      if((result = kaweth_read_configuration(kaweth)) < 0)
//      {
//              printk("Error reading configuration (%d), no net device created\n", 
result);
//
//              return kaweth;
//      }

        memset(&mac_addr, 0xFF, sizeof(mac_addr));

        result = kaweth_read_mac_addr(kaweth, &mac_addr);

        if(result || !memcmp(&mac_addr, &bcast_addr, sizeof(mac_addr)))
        {                                                                              
          
                if((result = kaweth_download_firmware(kaweth, kaweth_new_code, 
len_kaweth_new_code, 100, 2)) < 0)
                {
                        printk("Error downloading firmware (%d), no net device 
created\n", result);

                        kfree(kaweth);
                        
                        return NULL;
                }

                if((result = kaweth_download_firmware(kaweth, kaweth_new_code_fix, 
len_kaweth_new_code_fix, 100, 3)) < 0)
                {
                        printk("Error downloading firmware fix (%d), no net device 
created\n", result);

                        kfree(kaweth);

                        return NULL;
                }

                if((result = kaweth_trigger_firmware(kaweth, 100)) < 0)
                {
                        printk("Error triggering firmware (%d), no net device 
created\n", result);

                        kfree(kaweth);

                        return NULL;
                }
        }
        
        kaweth_read_mac_addr(kaweth, &mac_addr);

        printk("Initializing net device...\n");

        if(!memcmp(&mac_addr, &bcast_addr, sizeof(mac_addr)))
        {
                printk("Firmware not functioning properly, no net device created\n");

                kfree(kaweth);

                return NULL;
        }
        
        kaweth->net = init_etherdev(0, 0);
        
        kaweth->net->priv = kaweth;
        kaweth->net->open = kaweth_open;
        kaweth->net->stop = kaweth_close;
        kaweth->net->watchdog_timeo = KAWETH_TX_TIMEOUT;
        kaweth->net->tx_timeout = kaweth_tx_timeout;
        kaweth->net->do_ioctl = kaweth_ioctl;
        kaweth->net->hard_start_xmit = kaweth_start_xmit;
        kaweth->net->set_multicast_list = kaweth_set_rx_mode;
        kaweth->net->get_stats = kaweth_netdev_stats;
        kaweth->net->mtu = KAWETH_MTU;

        printk("kaweth interface created at %s\n", kaweth->net->name);

        FILL_BULK_URB(&kaweth->rx_urb,
                                                                dev,
                                                                usb_rcvbulkpipe(dev, 
1),
                                                                kaweth->rx_buf,
                                                                KAWETH_BUF_SIZE,
                                                                kaweth_usb_recieve,
                                                                kaweth);
                                                                
        FILL_BULK_URB(&kaweth->tx_urb,
                                                                dev,
                                                                usb_sndbulkpipe(dev, 
2),
                                                                kaweth->tx_buf,
                                                                KAWETH_BUF_SIZE,
                                                                
kaweth_usb_transmit_complete,
                                                                kaweth);

        printk("Kaweth probe returning...\n");

        return kaweth;
}

/****************************************************************
 *     kaweth_disconnect
 ****************************************************************/
static void kaweth_disconnect(struct usb_device *dev, void *ptr)
{
        struct kaweth_device *kaweth = ptr;

        printk("Unregistering kaweth\n");

        if (!kaweth) {
                warn("unregistering non-existant device");
                return;
        }

        if(kaweth->net)
        {
                if (kaweth->net->flags & IFF_UP)
                        dev_close(kaweth->net);

                unregister_netdev(kaweth->net);
        }
        
#ifdef JACK
        usb_unlink_urb(&kaweth->tx_urb);
/*      usb_unlink_urb(&kaweth->intr_urb);*/
#endif

        kfree(kaweth);
}


/****************************************************************
 *     kaweth_init
 ****************************************************************/
int __init kaweth_init(void)
{
        printk("Kawasaki USB->Ethernet Driver loading...\n");

        return usb_register(&kaweth_driver);
}

/****************************************************************
 *     kaweth_exit
 ****************************************************************/
void __exit kaweth_exit(void)
{
        usb_deregister(&kaweth_driver);
}

module_init(kaweth_init);
module_exit(kaweth_exit);

/******************************************/
/* NOTE: B6/C3 is data header signature   */
/*       0xAA/0xBB is data length = total */
/*       bytes - 7, 0xCC is type, 0xDD is */
/*       interrupt to use.                */
/******************************************/

/****************************************************************
 *     kaweth_trigger_code
 ****************************************************************/
static __u8 kaweth_trigger_code[] = 
{
    0xB6, 0xC3, 0xAA, 0xBB, 0xCC, 0xDD,
    0xc8, 0x07, 0xa0, 0x00, 0xf0, 0x07, 0x5e, 0x00,
    0x06, 0x00, 0xf0, 0x07, 0x0a, 0x00, 0x08, 0x00,
    0xf0, 0x09, 0x00, 0x00, 0x02, 0x00, 0xe7, 0x07,
    0x36, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00,
    0x04, 0x00, 0xe7, 0x07, 0x50, 0xc3, 0x10, 0xc0,
    0xf0, 0x09, 0x0e, 0xc0, 0x00, 0x00, 0xe7, 0x87,
    0x01, 0x00, 0x0e, 0xc0, 0x97, 0xcf, 0xd7, 0x09,
    0x00, 0xc0, 0x17, 0x02, 0xc8, 0x07, 0xa0, 0x00,
    0xe7, 0x17, 0x50, 0xc3, 0x10, 0xc0, 0x30, 0xd8,
    0x04, 0x00, 0x30, 0x5c, 0x08, 0x00, 0x04, 0x00,
    0xb0, 0xc0, 0x06, 0x00, 0xc8, 0x05, 0xe7, 0x05,
    0x00, 0xc0, 0xc0, 0xdf, 0x97, 0xcf, 0x49, 0xaf,
    0xc0, 0x07, 0x00, 0x00, 0x60, 0xaf, 0x4a, 0xaf,
    0x00, 0x0c, 0x0c, 0x00, 0x40, 0xd2, 0x00, 0x1c,
    0x0c, 0x00, 0x40, 0xd2, 0x30, 0x00, 0x08, 0x00,
    0xf0, 0x07, 0x00, 0x00, 0x04, 0x00, 0xf0, 0x07,
    0x86, 0x00, 0x06, 0x00, 0x67, 0xcf, 0x27, 0x0c,
    0x02, 0x00, 0x00, 0x00, 0x27, 0x0c, 0x00, 0x00,
    0x0e, 0xc0, 0x49, 0xaf, 0x64, 0xaf, 0xc0, 0x07,
    0x00, 0x00, 0x4b, 0xaf, 0x4a, 0xaf, 0x5a, 0xcf,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x94, 0x00, 0x05, 0x00,
    0,    0
};

/****************************************************************
 *     kaweth_trigger_code_fix
 ****************************************************************/
static __u8 kaweth_trigger_code_fix[] = 
{
    0xB6, 0xC3, 0xAA, 0xBB, 0xCC, 0xDD,
    0x02, 0x00, 0x06, 0x00, 0x18, 0x00, 0x3e, 0x00,
    0x80, 0x00, 0x98, 0x00, 0xaa, 0x00,
    0,    0
};

/****************************************************************
 *     kaweth_new_code
 ****************************************************************/
static __u8 kaweth_new_code[] = 
{
    0xB6, 0xC3, 0xAA, 0xBB, 0xCC, 0xDD,
    0x9f, 0xcf, 0xbc, 0x08, 0xe7, 0x57, 0x00, 0x00,
    0x9a, 0x08, 0x97, 0xc1, 0xe7, 0x67, 0xff, 0x1f,
    0x28, 0xc0, 0xe7, 0x87, 0x00, 0x04, 0x24, 0xc0,
    0xe7, 0x67, 0xff, 0xf9, 0x22, 0xc0, 0x97, 0xcf,
    0xe7, 0x09, 0xa2, 0xc0, 0x94, 0x08, 0xd7, 0x09,
    0x00, 0xc0, 0xe7, 0x59, 0xba, 0x08, 0x94, 0x08,
    0x03, 0xc1, 0xe7, 0x67, 0xff, 0xf7, 0x24, 0xc0,
    0xe7, 0x05, 0x00, 0xc0, 0xa7, 0xcf, 0x92, 0x08,
    0xe7, 0x57, 0x00, 0x00, 0x8e, 0x08, 0xa7, 0xa1,
    0x8e, 0x08, 0x97, 0xcf, 0xe7, 0x57, 0x00, 0x00,
    0xf2, 0x09, 0x0a, 0xc0, 0xe7, 0x57, 0x00, 0x00,
    0xa4, 0xc0, 0xa7, 0xc0, 0x56, 0x08, 0x9f, 0xaf,
    0x70, 0x09, 0xe7, 0x07, 0x00, 0x00, 0xf2, 0x09,
    0xe7, 0x57, 0xff, 0xff, 0x90, 0x08, 0x9f, 0xa0,
    0x40, 0x00, 0xe7, 0x59, 0x90, 0x08, 0x94, 0x08,
    0x9f, 0xa0, 0x40, 0x00, 0xc8, 0x09, 0xa2, 0x08,
    0x08, 0x62, 0x9f, 0xa1, 0x14, 0x0a, 0xe7, 0x57,
    0x00, 0x00, 0x52, 0x08, 0xa7, 0xc0, 0x56, 0x08,
    0x9f, 0xaf, 0x04, 0x00, 0xe7, 0x57, 0x00, 0x00,
    0x8e, 0x08, 0xa7, 0xc1, 0x56, 0x08, 0xc0, 0x09,
    0xa8, 0x08, 0x00, 0x60, 0x05, 0xc4, 0xc0, 0x59,
    0x94, 0x08, 0x02, 0xc0, 0x9f, 0xaf, 0xee, 0x00,
    0xe7, 0x59, 0xae, 0x08, 0x94, 0x08, 0x02, 0xc1,
    0x9f, 0xaf, 0xf6, 0x00, 0x9f, 0xaf, 0x9e, 0x03,
    0xef, 0x57, 0x00, 0x00, 0xf0, 0x09, 0x9f, 0xa1,
    0xde, 0x01, 0xe7, 0x57, 0x00, 0x00, 0x78, 0x08,
    0x9f, 0xa0, 0xe4, 0x03, 0x9f, 0xaf, 0x2c, 0x04,
    0xa7, 0xcf, 0x56, 0x08, 0x48, 0x02, 0xe7, 0x09,
    0x94, 0x08, 0xa8, 0x08, 0xc8, 0x37, 0x04, 0x00,
    0x9f, 0xaf, 0x68, 0x04, 0x97, 0xcf, 0xe7, 0x57,
    0x00, 0x00, 0xa6, 0x08, 0x97, 0xc0, 0xd7, 0x09,
    0x00, 0xc0, 0xc1, 0xdf, 0xc8, 0x09, 0x9c, 0x08,
    0x08, 0x62, 0x1d, 0xc0, 0x27, 0x04, 0x9c, 0x08,
    0x10, 0x94, 0xf0, 0x07, 0xee, 0x09, 0x02, 0x00,
    0xc1, 0x07, 0x01, 0x00, 0x70, 0x00, 0x04, 0x00,
    0xf0, 0x07, 0x44, 0x01, 0x06, 0x00, 0x50, 0xaf,
    0xe7, 0x09, 0x94, 0x08, 0xae, 0x08, 0xe7, 0x17,
    0x14, 0x00, 0xae, 0x08, 0xe7, 0x67, 0xff, 0x07,
    0xae, 0x08, 0xe7, 0x07, 0xff, 0xff, 0xa8, 0x08,
    0xe7, 0x07, 0x00, 0x00, 0xa6, 0x08, 0xe7, 0x05,
    0x00, 0xc0, 0x97, 0xcf, 0xd7, 0x09, 0x00, 0xc0,
    0xc1, 0xdf, 0x48, 0x02, 0xd0, 0x09, 0x9c, 0x08,
    0x27, 0x02, 0x9c, 0x08, 0xe7, 0x09, 0x20, 0xc0,
    0xee, 0x09, 0xe7, 0xd0, 0xee, 0x09, 0xe7, 0x05,
    0x00, 0xc0, 0x97, 0xcf, 0x48, 0x02, 0xc8, 0x37,
    0x04, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x60,
    0x21, 0xc0, 0xc0, 0x37, 0x3e, 0x00, 0x23, 0xc9,
    0xc0, 0x57, 0xb4, 0x05, 0x1b, 0xc8, 0xc0, 0x17,
    0x3f, 0x00, 0xc0, 0x67, 0xc0, 0xff, 0x30, 0x00,
    0x08, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x04, 0x00,
    0x00, 0x02, 0xc0, 0x17, 0x4c, 0x00, 0x30, 0x00,
    0x06, 0x00, 0xf0, 0x07, 0xbe, 0x01, 0x0a, 0x00,
    0x48, 0x02, 0xc1, 0x07, 0x02, 0x00, 0xd7, 0x09,
    0x00, 0xc0, 0xc1, 0xdf, 0x51, 0xaf, 0xe7, 0x05,
    0x00, 0xc0, 0x97, 0xcf, 0x9f, 0xaf, 0x68, 0x04,
    0x9f, 0xaf, 0xe4, 0x03, 0x97, 0xcf, 0x9f, 0xaf,
    0xe4, 0x03, 0xc9, 0x37, 0x04, 0x00, 0xc1, 0xdf,
    0xc8, 0x09, 0x70, 0x08, 0x50, 0x02, 0x67, 0x02,
    0x70, 0x08, 0xd1, 0x07, 0x00, 0x00, 0xc0, 0xdf,
    0x9f, 0xaf, 0xde, 0x01, 0x97, 0xcf, 0xe7, 0x57,
    0x00, 0x00, 0xaa, 0x08, 0x97, 0xc1, 0xe7, 0x57,
    0x01, 0x00, 0x7a, 0x08, 0x97, 0xc0, 0xc8, 0x09,
    0x6e, 0x08, 0x08, 0x62, 0x97, 0xc0, 0x00, 0x02,
    0xc0, 0x17, 0x0e, 0x00, 0x27, 0x00, 0x34, 0x01,
    0x27, 0x0c, 0x0c, 0x00, 0x36, 0x01, 0xef, 0x57,
    0x00, 0x00, 0xf0, 0x09, 0x9f, 0xc0, 0xbe, 0x02,
    0xe7, 0x57, 0x00, 0x00, 0xb0, 0x08, 0x97, 0xc1,
    0xe7, 0x07, 0x09, 0x00, 0x12, 0xc0, 0xe7, 0x77,
    0x00, 0x08, 0x20, 0xc0, 0x9f, 0xc1, 0xb6, 0x02,
    0xe7, 0x57, 0x09, 0x00, 0x12, 0xc0, 0x77, 0xc9,
    0xd7, 0x09, 0x00, 0xc0, 0xc1, 0xdf, 0xe7, 0x77,
    0x00, 0x08, 0x20, 0xc0, 0x2f, 0xc1, 0xe7, 0x07,
    0x00, 0x00, 0x42, 0xc0, 0xe7, 0x07, 0x05, 0x00,
    0x90, 0xc0, 0xc8, 0x07, 0x0a, 0x00, 0xe7, 0x77,
    0x04, 0x00, 0x20, 0xc0, 0x09, 0xc1, 0x08, 0xda,
    0x7a, 0xc1, 0xe7, 0x07, 0x00, 0x01, 0x42, 0xc0,
    0xe7, 0x07, 0x04, 0x00, 0x90, 0xc0, 0x1a, 0xcf,
    0xe7, 0x07, 0x01, 0x00, 0x7a, 0x08, 0x00, 0xd8,
    0x27, 0x50, 0x34, 0x01, 0x17, 0xc1, 0xe7, 0x77,
    0x02, 0x00, 0x20, 0xc0, 0x79, 0xc1, 0x27, 0x50,
    0x34, 0x01, 0x10, 0xc1, 0xe7, 0x77, 0x02, 0x00,
    0x20, 0xc0, 0x79, 0xc0, 0x9f, 0xaf, 0xd8, 0x02,
    0xe7, 0x05, 0x00, 0xc0, 0x00, 0x60, 0x9f, 0xc0,
    0xde, 0x01, 0x97, 0xcf, 0xe7, 0x07, 0x01, 0x00,
    0xb8, 0x08, 0x06, 0xcf, 0xe7, 0x07, 0x30, 0x0e,
    0x02, 0x00, 0xe7, 0x07, 0x50, 0xc3, 0x12, 0xc0,
    0xe7, 0x05, 0x00, 0xc0, 0x97, 0xcf, 0xe7, 0x07,
    0x01, 0x00, 0xb8, 0x08, 0x97, 0xcf, 0xe7, 0x07,
    0x50, 0xc3, 0x12, 0xc0, 0xe7, 0x07, 0x30, 0x0e,
    0x02, 0x00, 0xe7, 0x07, 0x01, 0x00, 0x7a, 0x08,
    0xe7, 0x07, 0x05, 0x00, 0x90, 0xc0, 0x97, 0xcf,
    0xe7, 0x07, 0x00, 0x01, 0x42, 0xc0, 0xe7, 0x07,
    0x04, 0x00, 0x90, 0xc0, 0xe7, 0x07, 0x00, 0x00,
    0x7a, 0x08, 0xe7, 0x57, 0x0f, 0x00, 0xb2, 0x08,
    0x13, 0xc1, 0x9f, 0xaf, 0x2e, 0x08, 0xca, 0x09,
    0xac, 0x08, 0xf2, 0x17, 0x01, 0x00, 0x5c, 0x00,
    0xf2, 0x27, 0x00, 0x00, 0x5e, 0x00, 0xe7, 0x07,
    0x00, 0x00, 0xb2, 0x08, 0xe7, 0x07, 0x01, 0x00,
    0xb4, 0x08, 0xc0, 0x07, 0xff, 0xff, 0x97, 0xcf,
    0x9f, 0xaf, 0x4c, 0x03, 0xc0, 0x69, 0xb4, 0x08,
    0x57, 0x00, 0x9f, 0xde, 0x33, 0x00, 0xc1, 0x05,
    0x27, 0xd8, 0xb2, 0x08, 0x27, 0xd2, 0xb4, 0x08,
    0xe7, 0x87, 0x01, 0x00, 0xb4, 0x08, 0xe7, 0x67,
    0xff, 0x03, 0xb4, 0x08, 0x00, 0x60, 0x97, 0xc0,
    0xe7, 0x07, 0x01, 0x00, 0xb0, 0x08, 0x27, 0x00,
    0x12, 0xc0, 0x97, 0xcf, 0xc0, 0x09, 0xb6, 0x08,
    0x00, 0xd2, 0x02, 0xc3, 0xc0, 0x97, 0x05, 0x80,
    0x27, 0x00, 0xb6, 0x08, 0xc0, 0x99, 0x82, 0x08,
    0xc0, 0x99, 0xa2, 0xc0, 0x97, 0xcf, 0xe7, 0x07,
    0x00, 0x00, 0xb0, 0x08, 0xc0, 0xdf, 0x97, 0xcf,
    0xc8, 0x09, 0x72, 0x08, 0x08, 0x62, 0x02, 0xc0,
    0x10, 0x64, 0x07, 0xc1, 0xe7, 0x07, 0x00, 0x00,
    0x64, 0x08, 0xe7, 0x07, 0xc8, 0x05, 0x24, 0x00,
    0x97, 0xcf, 0x27, 0x04, 0x72, 0x08, 0xc8, 0x17,
    0x0e, 0x00, 0x27, 0x02, 0x64, 0x08, 0xe7, 0x07,
    0xd6, 0x05, 0x24, 0x00, 0x97, 0xcf, 0xd7, 0x09,
    0x00, 0xc0, 0xc1, 0xdf, 0xe7, 0x57, 0x00, 0x00,
    0x62, 0x08, 0x13, 0xc1, 0x9f, 0xaf, 0x70, 0x03,
    0xe7, 0x57, 0x00, 0x00, 0x64, 0x08, 0x13, 0xc0,
    0xe7, 0x09, 0x64, 0x08, 0x30, 0x01, 0xe7, 0x07,
    0xf2, 0x05, 0x32, 0x01, 0xe7, 0x07, 0x10, 0x00,
    0x96, 0xc0, 0xe7, 0x09, 0x64, 0x08, 0x62, 0x08,
    0x04, 0xcf, 0xe7, 0x57, 0x00, 0x00, 0x64, 0x08,
    0x02, 0xc1, 0x9f, 0xaf, 0x70, 0x03, 0xe7, 0x05,
    0x00, 0xc0, 0x97, 0xcf, 0xd7, 0x09, 0x00, 0xc0,
    0xc1, 0xdf, 0xc8, 0x09, 0x72, 0x08, 0x27, 0x02,
    0x78, 0x08, 0x08, 0x62, 0x03, 0xc1, 0xe7, 0x05,
    0x00, 0xc0, 0x97, 0xcf, 0x27, 0x04, 0x72, 0x08,
    0xe7, 0x05, 0x00, 0xc0, 0xf0, 0x07, 0x40, 0x00,
    0x08, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x04, 0x00,
    0x00, 0x02, 0xc0, 0x17, 0x0c, 0x00, 0x30, 0x00,
    0x06, 0x00, 0xf0, 0x07, 0x64, 0x01, 0x0a, 0x00,
    0xc8, 0x17, 0x04, 0x00, 0xc1, 0x07, 0x02, 0x00,
    0x51, 0xaf, 0x97, 0xcf, 0xe7, 0x57, 0x00, 0x00,
    0x6a, 0x08, 0x97, 0xc0, 0xc1, 0xdf, 0xc8, 0x09,
    0x6a, 0x08, 0x27, 0x04, 0x6a, 0x08, 0x27, 0x52,
    0x6c, 0x08, 0x03, 0xc1, 0xe7, 0x07, 0x6a, 0x08,
    0x6c, 0x08, 0xc0, 0xdf, 0x17, 0x02, 0xc8, 0x17,
    0x0e, 0x00, 0x9f, 0xaf, 0x16, 0x05, 0xc8, 0x05,
    0x00, 0x60, 0x03, 0xc0, 0x9f, 0xaf, 0x80, 0x04,
    0x97, 0xcf, 0x9f, 0xaf, 0x68, 0x04, 0x97, 0xcf,
    0xd7, 0x09, 0x00, 0xc0, 0xc1, 0xdf, 0x08, 0x62,
    0x1c, 0xc0, 0xd0, 0x09, 0x72, 0x08, 0x27, 0x02,
    0x72, 0x08, 0xe7, 0x05, 0x00, 0xc0, 0x97, 0xcf,
    0x97, 0x02, 0xca, 0x09, 0xac, 0x08, 0xf2, 0x17,
    0x01, 0x00, 0x04, 0x00, 0xf2, 0x27, 0x00, 0x00,
    0x06, 0x00, 0xca, 0x17, 0x2c, 0x00, 0xf8, 0x77,
    0x01, 0x00, 0x0e, 0x00, 0x06, 0xc0, 0xca, 0xd9,
    0xf8, 0x57, 0xff, 0x00, 0x0e, 0x00, 0x01, 0xc1,
    0xca, 0xd9, 0x22, 0x1c, 0x0c, 0x00, 0xe2, 0x27,
    0x00, 0x00, 0xe2, 0x17, 0x01, 0x00, 0xe2, 0x27,
    0x00, 0x00, 0xca, 0x05, 0x00, 0x0c, 0x0c, 0x00,
    0xc0, 0x17, 0x41, 0x00, 0xc0, 0x67, 0xc0, 0xff,
    0x30, 0x00, 0x08, 0x00, 0x00, 0x02, 0xc0, 0x17,
    0x0c, 0x00, 0x30, 0x00, 0x06, 0x00, 0xf0, 0x07,
    0xdc, 0x00, 0x0a, 0x00, 0xf0, 0x07, 0x00, 0x00,
    0x04, 0x00, 0x00, 0x0c, 0x08, 0x00, 0x40, 0xd1,
    0x01, 0x00, 0xc0, 0x19, 0xa6, 0x08, 0xc0, 0x59,
    0x98, 0x08, 0x04, 0xc9, 0x49, 0xaf, 0x9f, 0xaf,
    0xee, 0x00, 0x4a, 0xaf, 0x67, 0x10, 0xa6, 0x08,
    0xc8, 0x17, 0x04, 0x00, 0xc1, 0x07, 0x01, 0x00,
    0xd7, 0x09, 0x00, 0xc0, 0xc1, 0xdf, 0x50, 0xaf,
    0xe7, 0x05, 0x00, 0xc0, 0x97, 0xcf, 0xc0, 0x07,
    0x01, 0x00, 0xc1, 0x09, 0x7c, 0x08, 0xc1, 0x77,
    0x01, 0x00, 0x97, 0xc1, 0xd8, 0x77, 0x01, 0x00,
    0x12, 0xc0, 0xc9, 0x07, 0x4c, 0x08, 0x9f, 0xaf,
    0x64, 0x05, 0x04, 0xc1, 0xc1, 0x77, 0x08, 0x00,
    0x13, 0xc0, 0x97, 0xcf, 0xc1, 0x77, 0x02, 0x00,
    0x97, 0xc1, 0xc1, 0x77, 0x10, 0x00, 0x0c, 0xc0,
    0x9f, 0xaf, 0x86, 0x05, 0x97, 0xcf, 0xc1, 0x77,
    0x04, 0x00, 0x06, 0xc0, 0xc9, 0x07, 0x7e, 0x08,
    0x9f, 0xaf, 0x64, 0x05, 0x97, 0xc0, 0x00, 0xcf,
    0x00, 0x90, 0x97, 0xcf, 0x50, 0x54, 0x97, 0xc1,
    0x70, 0x5c, 0x02, 0x00, 0x02, 0x00, 0x97, 0xc1,
    0x70, 0x5c, 0x04, 0x00, 0x04, 0x00, 0x97, 0xcf,
    0xc0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00,
    0x0c, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x09,
    0x88, 0x08, 0xcc, 0x09, 0x8a, 0x08, 0x0b, 0x53,
    0x11, 0xc0, 0xc9, 0x02, 0xca, 0x07, 0x78, 0x05,
    0x9f, 0xaf, 0x64, 0x05, 0x97, 0xc0, 0x0a, 0xc8,
    0x82, 0x08, 0x0a, 0xcf, 0x82, 0x08, 0x9f, 0xaf,
    0x64, 0x05, 0x97, 0xc0, 0x05, 0xc2, 0x89, 0x30,
    0x82, 0x60, 0x78, 0xc1, 0x00, 0x90, 0x97, 0xcf,
    0x89, 0x10, 0x09, 0x53, 0x79, 0xc2, 0x89, 0x30,
    0x82, 0x08, 0x7a, 0xcf, 0xc0, 0xdf, 0x97, 0xcf,
    0xe7, 0x09, 0x96, 0xc0, 0x66, 0x08, 0xe7, 0x09,
    0x98, 0xc0, 0x68, 0x08, 0x0f, 0xcf, 0xe7, 0x09,
    0x96, 0xc0, 0x66, 0x08, 0xe7, 0x09, 0x98, 0xc0,
    0x68, 0x08, 0xe7, 0x09, 0x64, 0x08, 0x30, 0x01,
    0xe7, 0x07, 0xf2, 0x05, 0x32, 0x01, 0xe7, 0x07,
    0x10, 0x00, 0x96, 0xc0, 0xd7, 0x09, 0x00, 0xc0,
    0x17, 0x02, 0xc8, 0x09, 0x62, 0x08, 0xc8, 0x37,
    0x0e, 0x00, 0xe7, 0x57, 0x04, 0x00, 0x68, 0x08,
    0x3d, 0xc0, 0xe7, 0x87, 0x00, 0x08, 0x24, 0xc0,
    0xe7, 0x09, 0x94, 0x08, 0xba, 0x08, 0xe7, 0x17,
    0x64, 0x00, 0xba, 0x08, 0xe7, 0x67, 0xff, 0x07,
    0xba, 0x08, 0xe7, 0x77, 0x2a, 0x00, 0x66, 0x08,
    0x30, 0xc0, 0x97, 0x02, 0xca, 0x09, 0xac, 0x08,
    0xe7, 0x77, 0x20, 0x00, 0x66, 0x08, 0x0e, 0xc0,
    0xf2, 0x17, 0x01, 0x00, 0x10, 0x00, 0xf2, 0x27,
    0x00, 0x00, 0x12, 0x00, 0xe7, 0x77, 0x0a, 0x00,
    0x66, 0x08, 0xca, 0x05, 0x1e, 0xc0, 0x97, 0x02,
    0xca, 0x09, 0xac, 0x08, 0xf2, 0x17, 0x01, 0x00,
    0x0c, 0x00, 0xf2, 0x27, 0x00, 0x00, 0x0e, 0x00,
    0xe7, 0x77, 0x02, 0x00, 0x66, 0x08, 0x07, 0xc0,
    0xf2, 0x17, 0x01, 0x00, 0x44, 0x00, 0xf2, 0x27,
    0x00, 0x00, 0x46, 0x00, 0x06, 0xcf, 0xf2, 0x17,
    0x01, 0x00, 0x60, 0x00, 0xf2, 0x27, 0x00, 0x00,
    0x62, 0x00, 0xca, 0x05, 0x9f, 0xaf, 0x68, 0x04,
    0x0f, 0xcf, 0x57, 0x02, 0x09, 0x02, 0xf1, 0x09,
    0x68, 0x08, 0x0c, 0x00, 0xf1, 0xda, 0x0c, 0x00,
    0xc8, 0x09, 0x6c, 0x08, 0x50, 0x02, 0x67, 0x02,
    0x6c, 0x08, 0xd1, 0x07, 0x00, 0x00, 0xc9, 0x05,
    0xe7, 0x09, 0x64, 0x08, 0x62, 0x08, 0xe7, 0x57,
    0x00, 0x00, 0x62, 0x08, 0x02, 0xc0, 0x9f, 0xaf,
    0x70, 0x03, 0xc8, 0x05, 0xe7, 0x05, 0x00, 0xc0,
    0xc0, 0xdf, 0x97, 0xcf, 0xd7, 0x09, 0x00, 0xc0,
    0x17, 0x00, 0x17, 0x02, 0x97, 0x02, 0xc0, 0x09,
    0x92, 0xc0, 0xe7, 0x87, 0x00, 0x08, 0x24, 0xc0,
    0xe7, 0x09, 0x94, 0x08, 0xba, 0x08, 0xe7, 0x17,
    0x64, 0x00, 0xba, 0x08, 0xe7, 0x67, 0xff, 0x07,
    0xba, 0x08, 0xe7, 0x07, 0x04, 0x00, 0x90, 0xc0,
    0xca, 0x09, 0xac, 0x08, 0xe7, 0x07, 0x00, 0x00,
    0x7a, 0x08, 0xe7, 0x07, 0x66, 0x03, 0x02, 0x00,
    0xc0, 0x77, 0x02, 0x00, 0x10, 0xc0, 0xef, 0x57,
    0x00, 0x00, 0xf0, 0x09, 0x04, 0xc0, 0x9f, 0xaf,
    0xd8, 0x02, 0x9f, 0xcf, 0x12, 0x08, 0xf2, 0x17,
    0x01, 0x00, 0x50, 0x00, 0xf2, 0x27, 0x00, 0x00,
    0x52, 0x00, 0x9f, 0xcf, 0x12, 0x08, 0xef, 0x57,
    0x00, 0x00, 0xf0, 0x09, 0x08, 0xc0, 0xe7, 0x57,
    0x00, 0x00, 0xb8, 0x08, 0xe7, 0x07, 0x00, 0x00,
    0xb8, 0x08, 0x0a, 0xc0, 0x03, 0xcf, 0xc0, 0x77,
    0x10, 0x00, 0x06, 0xc0, 0xf2, 0x17, 0x01, 0x00,
    0x58, 0x00, 0xf2, 0x27, 0x00, 0x00, 0x5a, 0x00,
    0xc0, 0x77, 0x80, 0x00, 0x06, 0xc0, 0xf2, 0x17,
    0x01, 0x00, 0x70, 0x00, 0xf2, 0x27, 0x00, 0x00,
    0x72, 0x00, 0xc0, 0x77, 0x08, 0x00, 0x1d, 0xc1,
    0xf2, 0x17, 0x01, 0x00, 0x08, 0x00, 0xf2, 0x27,
    0x00, 0x00, 0x0a, 0x00, 0xc0, 0x77, 0x00, 0x02,
    0x06, 0xc0, 0xf2, 0x17, 0x01, 0x00, 0x64, 0x00,
    0xf2, 0x27, 0x00, 0x00, 0x66, 0x00, 0xc0, 0x77,
    0x40, 0x00, 0x06, 0xc0, 0xf2, 0x17, 0x01, 0x00,
    0x5c, 0x00, 0xf2, 0x27, 0x00, 0x00, 0x5e, 0x00,
    0xc0, 0x77, 0x01, 0x00, 0x01, 0xc0, 0x37, 0xcf,
    0x36, 0xcf, 0xf2, 0x17, 0x01, 0x00, 0x00, 0x00,
    0xf2, 0x27, 0x00, 0x00, 0x02, 0x00, 0xef, 0x57,
    0x00, 0x00, 0xf0, 0x09, 0x18, 0xc0, 0xe7, 0x57,
    0x01, 0x00, 0xb2, 0x08, 0x0e, 0xc2, 0x07, 0xc8,
    0xf2, 0x17, 0x01, 0x00, 0x50, 0x00, 0xf2, 0x27,
    0x00, 0x00, 0x52, 0x00, 0x06, 0xcf, 0xf2, 0x17,
    0x01, 0x00, 0x54, 0x00, 0xf2, 0x27, 0x00, 0x00,
    0x56, 0x00, 0xe7, 0x07, 0x00, 0x00, 0xb2, 0x08,
    0xe7, 0x07, 0x01, 0x00, 0xb4, 0x08, 0xc8, 0x09,
    0x34, 0x01, 0xca, 0x17, 0x14, 0x00, 0xd8, 0x77,
    0x01, 0x00, 0x05, 0xc0, 0xca, 0xd9, 0xd8, 0x57,
    0xff, 0x00, 0x01, 0xc0, 0xca, 0xd9, 0xe2, 0x19,
    0x94, 0xc0, 0xe2, 0x27, 0x00, 0x00, 0xe2, 0x17,
    0x01, 0x00, 0xe2, 0x27, 0x00, 0x00, 0x9f, 0xaf,
    0x2e, 0x08, 0x9f, 0xaf, 0xde, 0x01, 0xe7, 0x57,
    0x00, 0x00, 0xaa, 0x08, 0x9f, 0xa1, 0xf0, 0x0b,
    0xca, 0x05, 0xc8, 0x05, 0xc0, 0x05, 0xe7, 0x05,
    0x00, 0xc0, 0xc0, 0xdf, 0x97, 0xcf, 0xc8, 0x09,
    0x6e, 0x08, 0x08, 0x62, 0x97, 0xc0, 0x27, 0x04,
    0x6e, 0x08, 0x27, 0x52, 0x70, 0x08, 0x03, 0xc1,
    0xe7, 0x07, 0x6e, 0x08, 0x70, 0x08, 0x9f, 0xaf,
    0x68, 0x04, 0x97, 0xcf, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x33, 0xcc,
    0x00, 0x00, 0x00, 0x00, 0xe7, 0x57, 0x00, 0x80,
    0xb2, 0x00, 0x06, 0xc2, 0xe7, 0x07, 0x52, 0x0e,
    0x12, 0x00, 0xe7, 0x07, 0x98, 0x0e, 0xb2, 0x00,
    0xe7, 0x07, 0xa4, 0x09, 0xf2, 0x02, 0xc8, 0x09,
    0xb4, 0x00, 0xf8, 0x07, 0x02, 0x00, 0x0d, 0x00,
    0xd7, 0x09, 0x0e, 0xc0, 0xe7, 0x07, 0x00, 0x00,
    0x0e, 0xc0, 0xc8, 0x09, 0xdc, 0x00, 0xf0, 0x07,
    0xff, 0xff, 0x09, 0x00, 0xf0, 0x07, 0xfb, 0x13,
    0x0b, 0x00, 0xe7, 0x09, 0xc0, 0x00, 0x58, 0x08,
    0xe7, 0x09, 0xbe, 0x00, 0x54, 0x08, 0xe7, 0x09,
    0x10, 0x00, 0x92, 0x08, 0xc8, 0x07, 0xb4, 0x09,
    0x9f, 0xaf, 0x8c, 0x09, 0x9f, 0xaf, 0xe2, 0x0b,
    0xc0, 0x07, 0x80, 0x01, 0x44, 0xaf, 0x27, 0x00,
    0x88, 0x08, 0x27, 0x00, 0x8a, 0x08, 0x27, 0x00,
    0x8c, 0x08, 0xc0, 0x07, 0x74, 0x00, 0x44, 0xaf,
    0x27, 0x00, 0xac, 0x08, 0x08, 0x00, 0x00, 0x90,
    0xc1, 0x07, 0x1d, 0x00, 0x20, 0x00, 0x20, 0x00,
    0x01, 0xda, 0x7c, 0xc1, 0x9f, 0xaf, 0x8a, 0x0b,
    0xc0, 0x07, 0x4c, 0x00, 0x48, 0xaf, 0x27, 0x00,
    0x56, 0x08, 0x9f, 0xaf, 0x72, 0x0c, 0xe7, 0x07,
    0x00, 0x80, 0x96, 0x08, 0xef, 0x57, 0x00, 0x00,
    0xf0, 0x09, 0x03, 0xc0, 0xe7, 0x07, 0x01, 0x00,
    0x1c, 0xc0, 0xe7, 0x05, 0x0e, 0xc0, 0x97, 0xcf,
    0x49, 0xaf, 0xe7, 0x87, 0x43, 0x00, 0x0e, 0xc0,
    0xe7, 0x07, 0xff, 0xff, 0x94, 0x08, 0x9f, 0xaf,
    0x8a, 0x0c, 0xc0, 0x07, 0x01, 0x00, 0x60, 0xaf,
    0x4a, 0xaf, 0x97, 0xcf, 0x00, 0x08, 0x09, 0x08,
    0x11, 0x08, 0x00, 0xda, 0x7c, 0xc1, 0x97, 0xcf,
    0x67, 0x04, 0xcc, 0x02, 0xc0, 0xdf, 0x51, 0x94,
    0xb1, 0xaf, 0x06, 0x00, 0xc1, 0xdf, 0xc9, 0x09,
    0xcc, 0x02, 0x49, 0x62, 0x75, 0xc1, 0xc0, 0xdf,
    0xa7, 0xcf, 0xd6, 0x02, 0x0e, 0x00, 0x24, 0x00,
    0xd6, 0x05, 0x22, 0x00, 0xc4, 0x06, 0xd0, 0x00,
    0xf0, 0x0b, 0xaa, 0x00, 0x0e, 0x0a, 0xbe, 0x00,
    0x2c, 0x0c, 0x10, 0x00, 0x20, 0x00, 0x04, 0x00,
    0xc4, 0x05, 0x02, 0x00, 0x66, 0x03, 0x06, 0x00,
    0x00, 0x00, 0x24, 0xc0, 0x04, 0x04, 0x28, 0xc0,
    0xfe, 0xfb, 0x1e, 0xc0, 0x00, 0x04, 0x22, 0xc0,
    0xff, 0xf0, 0xc0, 0x00, 0x60, 0x0b, 0x00, 0x00,
    0x00, 0x00, 0xff, 0xff, 0x34, 0x0a, 0x3e, 0x0a,
    0x9e, 0x0a, 0xa8, 0x0a, 0xce, 0x0a, 0xd2, 0x0a,
    0xd6, 0x0a, 0x00, 0x0b, 0x10, 0x0b, 0x1e, 0x0b,
    0x20, 0x0b, 0x28, 0x0b, 0x28, 0x0b, 0x27, 0x02,
    0xa2, 0x08, 0x97, 0xcf, 0xe7, 0x07, 0x00, 0x00,
    0xa2, 0x08, 0x0a, 0x0e, 0x01, 0x00, 0xca, 0x57,
    0x0e, 0x00, 0x9f, 0xc3, 0x2a, 0x0b, 0xca, 0x37,
    0x00, 0x00, 0x9f, 0xc2, 0x2a, 0x0b, 0x0a, 0xd2,
    0xb2, 0xcf, 0xf4, 0x09, 0xc8, 0x09, 0xde, 0x00,
    0x07, 0x06, 0x9f, 0xcf, 0x3c, 0x0b, 0xf0, 0x57,
    0x80, 0x01, 0x06, 0x00, 0x9f, 0xc8, 0x2a, 0x0b,
    0x27, 0x0c, 0x02, 0x00, 0x86, 0x08, 0xc0, 0x09,
    0x88, 0x08, 0x27, 0x00, 0x8a, 0x08, 0xe7, 0x07,
    0x00, 0x00, 0x84, 0x08, 0x27, 0x00, 0x5c, 0x08,
    0x00, 0x1c, 0x06, 0x00, 0x27, 0x00, 0x8c, 0x08,
    0x41, 0x90, 0x67, 0x50, 0x86, 0x08, 0x0d, 0xc0,
    0x67, 0x00, 0x5a, 0x08, 0x27, 0x0c, 0x06, 0x00,
    0x5e, 0x08, 0xe7, 0x07, 0x8a, 0x0a, 0x60, 0x08,
    0xc8, 0x07, 0x5a, 0x08, 0x41, 0x90, 0x51, 0xaf,
    0x97, 0xcf, 0x9f, 0xaf, 0xac, 0x0e, 0xe7, 0x09,
    0x8c, 0x08, 0x8a, 0x08, 0xe7, 0x09, 0x86, 0x08,
    0x84, 0x08, 0x59, 0xaf, 0x97, 0xcf, 0x27, 0x0c,
    0x02, 0x00, 0x7c, 0x08, 0x59, 0xaf, 0x97, 0xcf,
    0x09, 0x0c, 0x02, 0x00, 0x09, 0xda, 0x49, 0xd2,
    0xc9, 0x19, 0xac, 0x08, 0xc8, 0x07, 0x5a, 0x08,
    0xe0, 0x07, 0x00, 0x00, 0x60, 0x02, 0xe0, 0x07,
    0x04, 0x00, 0xd0, 0x07, 0x9a, 0x0a, 0x48, 0xdb,
    0x41, 0x90, 0x50, 0xaf, 0x97, 0xcf, 0x59, 0xaf,
    0x97, 0xcf, 0x59, 0xaf, 0x97, 0xcf, 0xf0, 0x57,
    0x06, 0x00, 0x06, 0x00, 0x26, 0xc1, 0xe7, 0x07,
    0x7e, 0x08, 0x5c, 0x08, 0x41, 0x90, 0x67, 0x00,
    0x5a, 0x08, 0x27, 0x0c, 0x06, 0x00, 0x5e, 0x08,
    0xe7, 0x07, 0x5c, 0x0b, 0x60, 0x08, 0xc8, 0x07,
    0x5a, 0x08, 0x41, 0x90, 0x51, 0xaf, 0x97, 0xcf,
    0x07, 0x0c, 0x06, 0x00, 0xc7, 0x57, 0x06, 0x00,
    0x10, 0xc1, 0xc8, 0x07, 0x7e, 0x08, 0x16, 0xcf,
    0x00, 0x0c, 0x02, 0x00, 0x00, 0xda, 0x40, 0xd1,
    0x27, 0x00, 0x98, 0x08, 0x1f, 0xcf, 0x1e, 0xcf,
    0x27, 0x0c, 0x02, 0x00, 0xa4, 0x08, 0x1a, 0xcf,
    0x00, 0xcf, 0x27, 0x02, 0x20, 0x01, 0xe7, 0x07,
    0x08, 0x00, 0x22, 0x01, 0xe7, 0x07, 0x13, 0x00,
    0xb0, 0xc0, 0x97, 0xcf, 0x41, 0x90, 0x67, 0x00,
    0x5a, 0x08, 0xe7, 0x01, 0x5e, 0x08, 0x27, 0x02,
    0x5c, 0x08, 0xe7, 0x07, 0x5c, 0x0b, 0x60, 0x08,
    0xc8, 0x07, 0x5a, 0x08, 0xc1, 0x07, 0x00, 0x80,
    0x50, 0xaf, 0x97, 0xcf, 0x59, 0xaf, 0x97, 0xcf,
    0x00, 0x60, 0x05, 0xc0, 0xe7, 0x07, 0x00, 0x00,
    0x9a, 0x08, 0xa7, 0xcf, 0x58, 0x08, 0x9f, 0xaf,
    0xe2, 0x0b, 0xe7, 0x07, 0x01, 0x00, 0x9a, 0x08,
    0x49, 0xaf, 0xd7, 0x09, 0x00, 0xc0, 0x07, 0xaf,
    0xe7, 0x05, 0x00, 0xc0, 0x4a, 0xaf, 0xa7, 0xcf,
    0x58, 0x08, 0xc0, 0x07, 0x40, 0x00, 0x44, 0xaf,
    0x27, 0x00, 0xa0, 0x08, 0x08, 0x00, 0xc0, 0x07,
    0x20, 0x00, 0x20, 0x94, 0x00, 0xda, 0x7d, 0xc1,
    0xc0, 0x07, 0xfe, 0x7f, 0x44, 0xaf, 0x40, 0x00,
    0x41, 0x90, 0xc0, 0x37, 0x08, 0x00, 0xdf, 0xde,
    0x50, 0x06, 0xc0, 0x57, 0x10, 0x00, 0x02, 0xc2,
    0xc0, 0x07, 0x10, 0x00, 0x27, 0x00, 0x76, 0x08,
    0x41, 0x90, 0x9f, 0xde, 0x40, 0x06, 0x44, 0xaf,
    0x27, 0x00, 0x74, 0x08, 0xc0, 0x09, 0x76, 0x08,
    0x41, 0x90, 0x00, 0xd2, 0x00, 0xd8, 0x9f, 0xde,
    0x08, 0x00, 0x44, 0xaf, 0x27, 0x00, 0x9e, 0x08,
    0x97, 0xcf, 0xe7, 0x87, 0x00, 0x84, 0x28, 0xc0,
    0xe7, 0x67, 0xff, 0xf3, 0x24, 0xc0, 0x97, 0xcf,
    0xe7, 0x87, 0x01, 0x00, 0xaa, 0x08, 0xe7, 0x57,
    0x00, 0x00, 0x7a, 0x08, 0x97, 0xc1, 0x9f, 0xaf,
    0xe2, 0x0b, 0xe7, 0x87, 0x00, 0x06, 0x22, 0xc0,
    0xe7, 0x07, 0x00, 0x00, 0x90, 0xc0, 0xe7, 0x67,
    0xfe, 0xff, 0x3e, 0xc0, 0xe7, 0x07, 0x2e, 0x00,
    0x0a, 0xc0, 0xe7, 0x87, 0x01, 0x00, 0x3e, 0xc0,
    0xe7, 0x07, 0xff, 0xff, 0x94, 0x08, 0x9f, 0xaf,
    0xf0, 0x0c, 0x97, 0xcf, 0x17, 0x00, 0xa7, 0xaf,
    0x54, 0x08, 0xc0, 0x05, 0x27, 0x00, 0x52, 0x08,
    0xe7, 0x87, 0x01, 0x00, 0xaa, 0x08, 0x9f, 0xaf,
    0xe2, 0x0b, 0xe7, 0x07, 0x0c, 0x00, 0x40, 0xc0,
    0x9f, 0xaf, 0xf0, 0x0c, 0xe7, 0x07, 0x00, 0x00,
    0x78, 0x08, 0x00, 0x90, 0xe7, 0x09, 0x88, 0x08,
    0x8a, 0x08, 0x27, 0x00, 0x84, 0x08, 0x27, 0x00,
    0x7c, 0x08, 0x9f, 0xaf, 0x8a, 0x0c, 0xe7, 0x07,
    0x00, 0x00, 0xb2, 0x02, 0xe7, 0x07, 0x00, 0x00,
    0xb4, 0x02, 0xc0, 0x07, 0x06, 0x00, 0xc8, 0x09,
    0xde, 0x00, 0xc8, 0x17, 0x03, 0x00, 0xc9, 0x07,
    0x7e, 0x08, 0x29, 0x0a, 0x00, 0xda, 0x7d, 0xc1,
    0x97, 0xcf, 0xd7, 0x09, 0x00, 0xc0, 0xc1, 0xdf,
    0x00, 0x90, 0x27, 0x00, 0x6a, 0x08, 0xe7, 0x07,
    0x6a, 0x08, 0x6c, 0x08, 0x27, 0x00, 0x6e, 0x08,
    0xe7, 0x07, 0x6e, 0x08, 0x70, 0x08, 0x27, 0x00,
    0x78, 0x08, 0x27, 0x00, 0x62, 0x08, 0x27, 0x00,
    0x64, 0x08, 0xc8, 0x09, 0x74, 0x08, 0xc1, 0x09,
    0x76, 0x08, 0xc9, 0x07, 0x72, 0x08, 0x11, 0x02,
    0x09, 0x02, 0xc8, 0x17, 0x40, 0x06, 0x01, 0xda,
    0x7a, 0xc1, 0x51, 0x94, 0xc8, 0x09, 0x9e, 0x08,
    0xc9, 0x07, 0x9c, 0x08, 0xc1, 0x09, 0x76, 0x08,
    0x01, 0xd2, 0x01, 0xd8, 0x11, 0x02, 0x09, 0x02,
    0xc8, 0x17, 0x08, 0x00, 0x01, 0xda, 0x7a, 0xc1,
    0x51, 0x94, 0xe7, 0x05, 0x00, 0xc0, 0x97, 0xcf,
    0xe7, 0x57, 0x00, 0x00, 0x52, 0x08, 0x97, 0xc0,
    0x9f, 0xaf, 0x04, 0x00, 0xe7, 0x09, 0x94, 0x08,
    0x90, 0x08, 0xe7, 0x57, 0xff, 0xff, 0x90, 0x08,
    0x04, 0xc1, 0xe7, 0x07, 0xf0, 0x0c, 0x8e, 0x08,
    0x97, 0xcf, 0xe7, 0x17, 0x32, 0x00, 0x90, 0x08,
    0xe7, 0x67, 0xff, 0x07, 0x90, 0x08, 0xe7, 0x07,
    0x26, 0x0d, 0x8e, 0x08, 0x97, 0xcf, 0xd7, 0x09,
    0x00, 0xc0, 0xc1, 0xdf, 0xe7, 0x57, 0x00, 0x00,
    0x96, 0x08, 0x23, 0xc0, 0xe7, 0x07, 0x00, 0x80,
    0x80, 0xc0, 0xe7, 0x07, 0x04, 0x00, 0x90, 0xc0,
    0xe7, 0x07, 0x00, 0x00, 0x80, 0xc0, 0xe7, 0x07,
    0x00, 0x80, 0x80, 0xc0, 0xc0, 0x07, 0x00, 0x00,
    0xc0, 0x07, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00,
    0xe7, 0x07, 0x00, 0x00, 0x80, 0xc0, 0xe7, 0x07,
    0x00, 0x80, 0x80, 0xc0, 0xe7, 0x07, 0x00, 0x80,
    0x40, 0xc0, 0xc0, 0x07, 0x00, 0x00, 0xe7, 0x07,
    0x00, 0x00, 0x40, 0xc0, 0xe7, 0x07, 0x00, 0x00,
    0x80, 0xc0, 0xef, 0x57, 0x00, 0x00, 0xf1, 0x09,
    0x9f, 0xa0, 0xc0, 0x0d, 0xe7, 0x07, 0x04, 0x00,
    0x90, 0xc0, 0xe7, 0x07, 0x00, 0x02, 0x40, 0xc0,
    0xe7, 0x07, 0x0c, 0x02, 0x40, 0xc0, 0xe7, 0x07,
    0x00, 0x00, 0x96, 0x08, 0xe7, 0x07, 0x00, 0x00,
    0x8e, 0x08, 0xe7, 0x07, 0x00, 0x00, 0xaa, 0x08,
    0xd7, 0x09, 0x00, 0xc0, 0xc1, 0xdf, 0x9f, 0xaf,
    0x9e, 0x03, 0xe7, 0x05, 0x00, 0xc0, 0x9f, 0xaf,
    0xde, 0x01, 0xe7, 0x05, 0x00, 0xc0, 0x97, 0xcf,
    0x9f, 0xaf, 0xde, 0x0d, 0xef, 0x77, 0x00, 0x00,
    0xf1, 0x09, 0x97, 0xc1, 0x9f, 0xaf, 0xde, 0x0d,
    0xef, 0x77, 0x00, 0x00, 0xf1, 0x09, 0x97, 0xc1,
    0xef, 0x07, 0x01, 0x00, 0xf1, 0x09, 0xe7, 0x87,
    0x00, 0x08, 0x1e, 0xc0, 0xe7, 0x87, 0x00, 0x08,
    0x22, 0xc0, 0xe7, 0x67, 0xff, 0xf7, 0x22, 0xc0,
    0xe7, 0x77, 0x00, 0x08, 0x20, 0xc0, 0x11, 0xc0,
    0xe7, 0x67, 0xff, 0xf7, 0x1e, 0xc0, 0xe7, 0x87,
    0x00, 0x08, 0x22, 0xc0, 0xe7, 0x67, 0xff, 0xf7,
    0x22, 0xc0, 0xe7, 0x77, 0x00, 0x08, 0x20, 0xc0,
    0x04, 0xc1, 0xe7, 0x87, 0x00, 0x08, 0x22, 0xc0,
    0x97, 0xcf, 0xe7, 0x07, 0x01, 0x01, 0xf0, 0x09,
    0xef, 0x57, 0x18, 0x00, 0xfe, 0xff, 0x97, 0xc2,
    0xef, 0x07, 0x00, 0x00, 0xf0, 0x09, 0x97, 0xcf,
    0xd7, 0x09, 0x00, 0xc0, 0x17, 0x00, 0x17, 0x02,
    0x97, 0x02, 0xe7, 0x57, 0x00, 0x00, 0x7a, 0x08,
    0x06, 0xc0, 0xc0, 0x09, 0x92, 0xc0, 0xc0, 0x77,
    0x09, 0x02, 0x9f, 0xc1, 0xea, 0x06, 0x9f, 0xcf,
    0x20, 0x08, 0xd7, 0x09, 0x0e, 0xc0, 0xe7, 0x07,
    0x00, 0x00, 0x0e, 0xc0, 0x9f, 0xaf, 0x66, 0x0e,
    0xe7, 0x05, 0x0e, 0xc0, 0x97, 0xcf, 0xd7, 0x09,
    0x00, 0xc0, 0x17, 0x02, 0xc8, 0x09, 0xb0, 0xc0,
    0xe7, 0x67, 0xfe, 0x7f, 0xb0, 0xc0, 0xc8, 0x77,
    0x00, 0x20, 0x9f, 0xc1, 0x64, 0xeb, 0xe7, 0x57,
    0x00, 0x00, 0xc8, 0x02, 0x9f, 0xc1, 0x80, 0xeb,
    0xc8, 0x99, 0xca, 0x02, 0xc8, 0x67, 0x04, 0x00,
    0x9f, 0xc1, 0x96, 0xeb, 0x9f, 0xcf, 0x4c, 0xeb,
    0xe7, 0x07, 0x00, 0x00, 0xa6, 0xc0, 0xe7, 0x09,
    0xb0, 0xc0, 0xc8, 0x02, 0xe7, 0x07, 0x03, 0x00,
    0xb0, 0xc0, 0x97, 0xcf, 0xc0, 0x09, 0x86, 0x08,
    0xc0, 0x37, 0x01, 0x00, 0x97, 0xc9, 0xc9, 0x09,
    0x88, 0x08, 0x02, 0x00, 0x41, 0x90, 0x48, 0x02,
    0xc9, 0x17, 0x06, 0x00, 0x9f, 0xaf, 0x64, 0x05,
    0x9f, 0xa2, 0xd6, 0x0e, 0x02, 0xda, 0x77, 0xc1,
    0x41, 0x60, 0x71, 0xc1, 0x97, 0xcf, 0x17, 0x02,
    0x57, 0x02, 0x43, 0x04, 0x21, 0x04, 0xe0, 0x00,
    0x43, 0x04, 0x21, 0x04, 0xe0, 0x00, 0x43, 0x04,
    0x21, 0x04, 0xe0, 0x00, 0xc1, 0x07, 0x01, 0x00,
    0xc9, 0x05, 0xc8, 0x05, 0x97, 0xcf,
    0,    0
};

/****************************************************************
 *     kaweth_new_code_fix
 ****************************************************************/
static __u8 kaweth_new_code_fix[] = 
{
    0xB6, 0xC3, 0xAA, 0xBB, 0xCC, 0xDD,
    0x02, 0x00, 0x08, 0x00, 0x24, 0x00, 0x2e, 0x00,
    0x2c, 0x00, 0x3e, 0x00, 0x44, 0x00, 0x48, 0x00,
    0x50, 0x00, 0x5c, 0x00, 0x60, 0x00, 0x66, 0x00,
    0x6c, 0x00, 0x70, 0x00, 0x76, 0x00, 0x74, 0x00,
    0x7a, 0x00, 0x7e, 0x00, 0x84, 0x00, 0x8a, 0x00,
    0x8e, 0x00, 0x92, 0x00, 0x98, 0x00, 0x9c, 0x00,
    0xa0, 0x00, 0xa8, 0x00, 0xae, 0x00, 0xb4, 0x00,
    0xb2, 0x00, 0xba, 0x00, 0xbe, 0x00, 0xc4, 0x00,
    0xc8, 0x00, 0xce, 0x00, 0xd2, 0x00, 0xd6, 0x00,
    0xda, 0x00, 0xe2, 0x00, 0xe0, 0x00, 0xea, 0x00,
    0xf2, 0x00, 0xfe, 0x00, 0x06, 0x01, 0x0c, 0x01,
    0x1a, 0x01, 0x24, 0x01, 0x22, 0x01, 0x2a, 0x01,
    0x30, 0x01, 0x36, 0x01, 0x3c, 0x01, 0x4e, 0x01,
    0x52, 0x01, 0x58, 0x01, 0x5c, 0x01, 0x9c, 0x01,
    0xb6, 0x01, 0xba, 0x01, 0xc0, 0x01, 0xca, 0x01,
    0xd0, 0x01, 0xda, 0x01, 0xe2, 0x01, 0xea, 0x01,
    0xf0, 0x01, 0x0a, 0x02, 0x0e, 0x02, 0x14, 0x02,
    0x26, 0x02, 0x6c, 0x02, 0x8e, 0x02, 0x98, 0x02,
    0xa0, 0x02, 0xa6, 0x02, 0xba, 0x02, 0xc6, 0x02,
    0xce, 0x02, 0xe8, 0x02, 0xee, 0x02, 0xf4, 0x02,
    0xf8, 0x02, 0x0a, 0x03, 0x10, 0x03, 0x1a, 0x03,
    0x1e, 0x03, 0x2a, 0x03, 0x2e, 0x03, 0x34, 0x03,
    0x3a, 0x03, 0x44, 0x03, 0x4e, 0x03, 0x5a, 0x03,
    0x5e, 0x03, 0x6a, 0x03, 0x72, 0x03, 0x80, 0x03,
    0x84, 0x03, 0x8c, 0x03, 0x94, 0x03, 0x98, 0x03,
    0xa8, 0x03, 0xae, 0x03, 0xb4, 0x03, 0xba, 0x03,
    0xce, 0x03, 0xcc, 0x03, 0xd6, 0x03, 0xdc, 0x03,
    0xec, 0x03, 0xf0, 0x03, 0xfe, 0x03, 0x1c, 0x04,
    0x30, 0x04, 0x38, 0x04, 0x3c, 0x04, 0x40, 0x04,
    0x48, 0x04, 0x46, 0x04, 0x54, 0x04, 0x5e, 0x04,
    0x64, 0x04, 0x74, 0x04, 0x78, 0x04, 0x84, 0x04,
    0xd8, 0x04, 0xec, 0x04, 0xf0, 0x04, 0xf8, 0x04,
    0xfe, 0x04, 0x1c, 0x05, 0x2c, 0x05, 0x30, 0x05,
    0x4a, 0x05, 0x56, 0x05, 0x5a, 0x05, 0x88, 0x05,
    0x8c, 0x05, 0x96, 0x05, 0x9a, 0x05, 0xa8, 0x05,
    0xcc, 0x05, 0xd2, 0x05, 0xda, 0x05, 0xe0, 0x05,
    0xe4, 0x05, 0xfc, 0x05, 0x06, 0x06, 0x14, 0x06,
    0x12, 0x06, 0x1a, 0x06, 0x20, 0x06, 0x26, 0x06,
    0x2e, 0x06, 0x34, 0x06, 0x48, 0x06, 0x52, 0x06,
    0x64, 0x06, 0x86, 0x06, 0x90, 0x06, 0x9a, 0x06,
    0xa0, 0x06, 0xac, 0x06, 0xaa, 0x06, 0xb2, 0x06,
    0xb8, 0x06, 0xdc, 0x06, 0xda, 0x06, 0xe2, 0x06,
    0xe8, 0x06, 0xf2, 0x06, 0xf8, 0x06, 0xfc, 0x06,
    0x0a, 0x07, 0x10, 0x07, 0x14, 0x07, 0x24, 0x07,
    0x2a, 0x07, 0x32, 0x07, 0x38, 0x07, 0xb2, 0x07,
    0xba, 0x07, 0xde, 0x07, 0xe4, 0x07, 0x10, 0x08,
    0x14, 0x08, 0x1a, 0x08, 0x1e, 0x08, 0x30, 0x08,
    0x38, 0x08, 0x3c, 0x08, 0x44, 0x08, 0x42, 0x08,
    0x48, 0x08, 0xc6, 0x08, 0xcc, 0x08, 0xd2, 0x08,
    0xfe, 0x08, 0x04, 0x09, 0x0a, 0x09, 0x0e, 0x09,
    0x12, 0x09, 0x16, 0x09, 0x20, 0x09, 0x24, 0x09,
    0x28, 0x09, 0x32, 0x09, 0x46, 0x09, 0x4a, 0x09,
    0x50, 0x09, 0x54, 0x09, 0x5a, 0x09, 0x60, 0x09,
    0x7c, 0x09, 0x80, 0x09, 0xb8, 0x09, 0xbc, 0x09,
    0xc0, 0x09, 0xc4, 0x09, 0xc8, 0x09, 0xcc, 0x09,
    0xd0, 0x09, 0xd4, 0x09, 0xec, 0x09, 0xf4, 0x09,
    0xf6, 0x09, 0xf8, 0x09, 0xfa, 0x09, 0xfc, 0x09,
    0xfe, 0x09, 0x00, 0x0a, 0x02, 0x0a, 0x04, 0x0a,
    0x06, 0x0a, 0x08, 0x0a, 0x0a, 0x0a, 0x0c, 0x0a,
    0x10, 0x0a, 0x18, 0x0a, 0x24, 0x0a, 0x2c, 0x0a,
    0x32, 0x0a, 0x3c, 0x0a, 0x46, 0x0a, 0x4c, 0x0a,
    0x50, 0x0a, 0x54, 0x0a, 0x5a, 0x0a, 0x5e, 0x0a,
    0x66, 0x0a, 0x6c, 0x0a, 0x72, 0x0a, 0x78, 0x0a,
    0x7e, 0x0a, 0x7c, 0x0a, 0x82, 0x0a, 0x8c, 0x0a,
    0x92, 0x0a, 0x90, 0x0a, 0x98, 0x0a, 0x96, 0x0a,
    0xa2, 0x0a, 0xb2, 0x0a, 0xb6, 0x0a, 0xc4, 0x0a,
    0xe2, 0x0a, 0xe0, 0x0a, 0xe8, 0x0a, 0xee, 0x0a,
    0xf4, 0x0a, 0xf2, 0x0a, 0xf8, 0x0a, 0x0c, 0x0b,
    0x1a, 0x0b, 0x24, 0x0b, 0x40, 0x0b, 0x44, 0x0b,
    0x48, 0x0b, 0x4e, 0x0b, 0x4c, 0x0b, 0x52, 0x0b,
    0x68, 0x0b, 0x6c, 0x0b, 0x70, 0x0b, 0x76, 0x0b,
    0x88, 0x0b, 0x92, 0x0b, 0xbe, 0x0b, 0xca, 0x0b,
    0xce, 0x0b, 0xde, 0x0b, 0xf4, 0x0b, 0xfa, 0x0b,
    0x00, 0x0c, 0x24, 0x0c, 0x28, 0x0c, 0x30, 0x0c,
    0x36, 0x0c, 0x3c, 0x0c, 0x40, 0x0c, 0x4a, 0x0c,
    0x50, 0x0c, 0x58, 0x0c, 0x56, 0x0c, 0x5c, 0x0c,
    0x60, 0x0c, 0x64, 0x0c, 0x80, 0x0c, 0x94, 0x0c,
    0x9a, 0x0c, 0x98, 0x0c, 0x9e, 0x0c, 0xa4, 0x0c,
    0xa2, 0x0c, 0xa8, 0x0c, 0xac, 0x0c, 0xb0, 0x0c,
    0xb4, 0x0c, 0xb8, 0x0c, 0xbc, 0x0c, 0xce, 0x0c,
    0xd2, 0x0c, 0xd6, 0x0c, 0xf4, 0x0c, 0xfa, 0x0c,
    0x00, 0x0d, 0xfe, 0x0c, 0x06, 0x0d, 0x0e, 0x0d,
    0x0c, 0x0d, 0x16, 0x0d, 0x1c, 0x0d, 0x22, 0x0d,
    0x20, 0x0d, 0x30, 0x0d, 0x7e, 0x0d, 0x82, 0x0d,
    0x9a, 0x0d, 0xa0, 0x0d, 0xa6, 0x0d, 0xb0, 0x0d,
    0xb8, 0x0d, 0xc2, 0x0d, 0xc8, 0x0d, 0xce, 0x0d,
    0xd4, 0x0d, 0xdc, 0x0d, 0x1e, 0x0e, 0x2c, 0x0e,
    0x3e, 0x0e, 0x4c, 0x0e, 0x50, 0x0e, 0x5e, 0x0e,
    0xae, 0x0e, 0xb8, 0x0e, 0xc6, 0x0e, 0xca, 0x0e,
    0,    0
};

const int len_kaweth_trigger_code = sizeof(kaweth_trigger_code);
const int len_kaweth_trigger_code_fix = sizeof(kaweth_trigger_code_fix);
const int len_kaweth_new_code = sizeof(kaweth_new_code);
const int len_kaweth_new_code_fix = sizeof(kaweth_new_code_fix);
kawasaki.o: kawasaki.c
        gcc -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -fno-strength-reduce 
-malign-loops=2 -malign-functions=2 -malign-jumps=2 -D__KERNEL__ -DMODULE -c 
-fomit-frame-pointer kawasaki.c

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to