Add a ``digi'' driver.

This driver supports PCI Xr-based and ISA Xem Digiboard cards.
dgm will go away soon if there are no problems reported.  For now,
configuring dgm into your kernel warns that you should be using
digi.  This driver is probably close to supporting Xi, Xe and Xeve
cards, but I wouldn't expect them to work properly (hardware
donations welcome).

The digi_* pseudo-drivers are not drivers themselves but contain
the BIOS and FEP/OS binaries for various digiboard cards and are
auto-loaded and auto-unloaded by the digi driver at initialisation
time.  They *may* be configured into the kernel, but waste a lot
of space if they are.  They're intended to be left as modules.

The digictl program is (mainly) used to re-initialise cards that
have external port modules attached such as the PC/Xem.
This commit is contained in:
Brian Somers 2001-05-02 01:08:09 +00:00
parent 19212fa445
commit ad01e0c856
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=76195
54 changed files with 44599 additions and 9 deletions

View File

@ -72,8 +72,12 @@
# cua* dialout serial ports
# ttyA* Specialix SI/XIO dialin ports ('*' = number of devices)
# cuaA* Specialix SI/XIO dialout ports
# ttyD* Digiboard - 16 dialin ports
# cuaD* Digiboard - 16 dialout ports
# ttyDXX Digiboard Xi - 16 dialin ports (dgb)
# cuaDXX Digiboard Xi - 16 dialout ports (dgb)
# ttyDX.X Digiboards (work in progress) - 16 dialin ports (digi)
# cuaDX.X Digiboards (work in progress) - 16 dialout ports (digi)
# ttyM* Digiboard Xem - 16 dialin ports (dgm)
# cuaM* Digiboard Xem - 16 dialout ports (dgm)
# ttyR* Rocketport dialin ports
# cuaR* Rocketport dialout ports
#
@ -1238,6 +1242,25 @@ ttyD?)
mknod ttyiD$name c $major `expr $minor + 32`
mknod ttylD$name c $major `expr $minor + 64`
done
# Also create devices for the digi driver
umask 7
major=162
card=`expr $i : 'tty.*\(.\)$'`
rm -f digi$card.ctl
mknod digi$card.ctl c $major $(($card \* 65536 + 8388608)) uucp:dialer
unit=0
while [ $unit -lt 16 ]
do
base=`expr $card \* 65536 + $unit`
name=$card.$unit
rm -f tty*D$name
mknod ttyD$name c $major $base
mknod ttyiD$name c $major $(($base + 1048576))
mknod ttylD$name c $major $(($base + 2097152))
unit=$(($unit + 1))
done
umask 77
;;
cuaD?)
@ -1254,9 +1277,28 @@ cuaD?)
mknod cuaiD$name c $major `expr $minor + 32 + 128` uucp:dialer
mknod cualD$name c $major `expr $minor + 64 + 128` uucp:dialer
done
# Also create devices for the digi driver
major=162
card=`expr $i : 'cua.*\(.\)$'`
rm -f digi$card.ctl
mknod digi$card.ctl c $major $(($card \* 65536 + 8388608)) uucp:dialer
unit=0
while [ $unit -lt 16 ]
do
base=`expr $card \* 65536 + $unit`
name=$card.$unit
rm -f cua*D$name
mknod cuaD$name c $major $(($base + 4194304)) uucp:dialer
mknod cuaiD$name c $major $(($base + 5242880)) uucp:dialer
mknod cualD$name c $major $(($base + 6291456)) uucp:dialer
unit=$(($unit + 1))
done
umask 77
;;
# Digiboard Xem - superceeded by the digi device above
#
ttyM*)
portlist="0 1 2 3 4 5 6 7 8 9 a b c d e f"
modulelist="a b c d"

View File

@ -1934,7 +1934,8 @@ hint.pca.0.port="0x040"
# bktr: Brooktree bt848/848a/849a/878/879 video capture and TV Tuner board
# cy: Cyclades serial driver
# dgb: Digiboard PC/Xi and PC/Xe series driver (ALPHA QUALITY!)
# dgm: Digiboard PC/Xem driver
# dgm: Digiboard PC/Xem driver (obsolete)
# digi: Digiboard driver
# gp: National Instruments AT-GPIB and AT-GPIB/TNT board, PCMCIA-GPIB
# asc: GI1904-based hand scanners, e.g. the Trust Amiscan Grey
# gsc: Genius GS-4500 hand scanner.
@ -2086,10 +2087,22 @@ options NDGBPORTS=16 # Defaults to 16*NDGB
hint.dgb.0.at="isa"
hint.dgb.0.port="0x220"
hint.dgb.0.maddr="0xfc000"
device dgm 1
device dgm
hint.dgm.0.at="isa"
hint.dgm.0.port="0x104"
hint.dgm.0.maddr="0xd0000"
device digi
hint.dgm.0.at="isa"
hint.dgm.0.port="0x104"
hint.dgm.0.maddr="0xd0000"
# BIOS & FEP/OS components of device digi. Normally left as modules
device digi_CX
device digi_CX_PCI
device digi_EPCX
device digi_EPCX_PCI
device digi_Xe
device digi_Xem
device digi_Xr
device rc 1
hint.rc.0.at="isa"
hint.rc.0.port="0x220"

View File

@ -283,8 +283,19 @@ dev/cs/if_cs.c optional cs
dev/cs/if_cs_isa.c optional cs isa
dev/cs/if_cs_pccard.c optional cs card
dev/cs/if_cs_pccard.c optional cs pccard
dev/dgb/dgb.c count dgb
dev/dgb/dgm.c count dgm
dev/dgb/dgb.c count dgb
dev/dgb/dgm.c optional dgm \
warning "Please use digi instead of dgm"
dev/digi/digi.c optional digi
dev/digi/digi_isa.c optional digi
dev/digi/digi_pci.c optional digi
dev/digi/CX.c optional digi_CX
dev/digi/CX_PCI.c optional digi_CX_PCI
dev/digi/EPCX.c optional digi_EPCX
dev/digi/EPCX_PCI.c optional digi_EPCX_PCI
dev/digi/Xe.c optional digi_Xe
dev/digi/Xem.c optional digi_Xem
dev/digi/Xr.c optional digi_Xr
#dev/dpt/dpt_control.c optional dpt
dev/dpt/dpt_eisa.c optional dpt eisa
dev/dpt/dpt_pci.c optional dpt pci

View File

@ -178,6 +178,7 @@ chrdev name comments
159 ata ATA control device
160 spic Sony Programmable I/O Controller (jogdial)
161 swdoc Sitara networks watchdog device
162 digi Digiboard
200 ?? entries from 200-252 are reserved for local use
252 ?? entries from 200-252 are reserved for local use
253 mfs Used by MFS

189
sys/dev/digi/CX.bios.h Normal file
View File

@ -0,0 +1,189 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* based on work by Slawa Olhovchenkov
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
const u_char CX_bios[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x40, 0x28,
0x23, 0x29, 0x68, 0x6f, 0x73, 0x74, 0x62, 0x69, 0x6f, 0x73, 0x2e, 0x61, 0x73,
0x6d, 0x09, 0x36, 0x2e, 0x34, 0x20, 0x39, 0x2f, 0x32, 0x30, 0x2f, 0x39, 0x30,
0x00, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x43,
0x29, 0x20, 0x31, 0x39, 0x39, 0x30, 0x2c, 0x20, 0x44, 0x69, 0x67, 0x69, 0x42,
0x6f, 0x61, 0x72, 0x64, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x9f, 0xf8, 0x9f, 0xf8,
0x22, 0xf9, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f,
0xf8, 0x9f, 0xf8, 0xab, 0xf8, 0xab, 0xf8, 0xab, 0xf8, 0xc5, 0xf8, 0xab, 0xf8,
0xab, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0xab, 0xf8, 0xab, 0xf8, 0x9f, 0xf8, 0xc2,
0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8,
0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x84, 0x00, 0x80,
0x00, 0x00, 0x00, 0x1e, 0x2e, 0x8e, 0x1e, 0x9d, 0xf8, 0xfe, 0x06, 0x83, 0x00,
0x1f, 0xcf, 0x1e, 0x50, 0x52, 0x2e, 0x8e, 0x1e, 0x9d, 0xf8, 0xfe, 0x06, 0x84,
0x00, 0xb8, 0x00, 0x80, 0xba, 0x22, 0xff, 0xef, 0x5a, 0x58, 0x1f, 0xcf, 0xb4,
0x80, 0xcf, 0x60, 0x06, 0x1e, 0x2e, 0x8e, 0x1e, 0x9d, 0xf8, 0xfe, 0x06, 0x80,
0x00, 0xba, 0x84, 0x00, 0xb0, 0x03, 0xee, 0x90, 0x90, 0xec, 0x08, 0x06, 0x81,
0x00, 0xa8, 0x08, 0x74, 0x09, 0xba, 0x84, 0x00, 0xb0, 0x10, 0xee, 0xeb, 0x25,
0x90, 0xa8, 0x01, 0x74, 0x09, 0xba, 0x80, 0x00, 0xb0, 0x10, 0xee, 0xeb, 0x18,
0x90, 0xa8, 0x20, 0x74, 0x09, 0xba, 0x84, 0x00, 0xb0, 0x30, 0xee, 0xeb, 0x0b,
0x90, 0xa8, 0x04, 0x74, 0x06, 0xba, 0x80, 0x00, 0xb0, 0x30, 0xee, 0xba, 0x80,
0x00, 0xb0, 0x38, 0xee, 0x90, 0x90, 0xba, 0x22, 0xff, 0xb8, 0x00, 0x80, 0xef,
0x1f, 0x07, 0x61, 0xcf, 0x60, 0x1e, 0x06, 0xfc, 0x2e, 0x8e, 0x06, 0x9d, 0xf8,
0x2e, 0x8e, 0x1e, 0x9d, 0xf8, 0x8d, 0x36, 0x40, 0x00, 0xad, 0x3c, 0x3f, 0x7f,
0x22, 0x3c, 0x1f, 0x7f, 0x22, 0x32, 0xe4, 0xd1, 0xe0, 0x3d, 0x16, 0x00, 0x90,
0x73, 0x14, 0xbb, 0x63, 0xf9, 0x03, 0xd8, 0x2e, 0xff, 0x17, 0x8d, 0x36, 0x40,
0x00, 0xb0, 0x00, 0x89, 0x04, 0x07, 0x1f, 0x61, 0xcf, 0xb4, 0x80, 0xeb, 0xf0,
0xcd, 0x15, 0xeb, 0xec, 0x79, 0xf9, 0xad, 0xf9, 0xed, 0xf9, 0xf0, 0xf9, 0xf5,
0xf9, 0xfe, 0xf9, 0x06, 0xfa, 0x0f, 0xfa, 0x17, 0xfa, 0x1a, 0xfa, 0x47, 0xfa,
0x1e, 0xac, 0x3c, 0x00, 0x75, 0x09, 0xe4, 0x00, 0x0c, 0x01, 0xe6, 0x00, 0xeb,
0x1e, 0x90, 0x3c, 0x01, 0x75, 0x09, 0xe4, 0x00, 0x24, 0xfe, 0xe6, 0x00, 0xeb,
0x11, 0x90, 0x3c, 0x02, 0x75, 0x10, 0xe4, 0x00, 0x24, 0xfe, 0xe6, 0x00, 0xf6,
0xec, 0x0c, 0x01, 0xe6, 0x00, 0xb4, 0x00, 0x1f, 0xc3, 0xb4, 0x80, 0x1f, 0xc3,
0x1e, 0xad, 0x8b, 0xd8, 0xad, 0x8e, 0xdb, 0x8b, 0xf0, 0x33, 0xdb, 0x8b, 0x07,
0x3d, 0x4f, 0x53, 0x75, 0x2a, 0x8a, 0x47, 0x02, 0x32, 0xe4, 0x86, 0xc4, 0x8b,
0xc8, 0x32, 0xc0, 0x02, 0x07, 0x43, 0xe2, 0xfb, 0x0a, 0xc0, 0x75, 0x16, 0x8c,
0xd9, 0x1f, 0x89, 0x0e, 0x2e, 0x00, 0x89, 0x36, 0x2c, 0x00, 0x8d, 0x1e, 0x02,
0x00, 0xc7, 0x07, 0x45, 0x4d, 0x32, 0xe4, 0xc3, 0x1f, 0xb4, 0x80, 0xc3, 0xb4,
0x80, 0xc3, 0xea, 0xf0, 0xff, 0x00, 0xf0, 0xad, 0x8b, 0xd0, 0xec, 0x88, 0x04,
0x32, 0xe4, 0xc3, 0xad, 0x8b, 0xd0, 0xac, 0xee, 0x32, 0xe4, 0xc3, 0xad, 0x8b,
0xd0, 0xed, 0x89, 0x04, 0x32, 0xe4, 0xc3, 0xad, 0x8b, 0xd0, 0xad, 0xef, 0x32,
0xe4, 0xc3, 0xb4, 0x80, 0xc3, 0xac, 0x3c, 0x02, 0x7f, 0x25, 0xfe, 0xc8, 0x32,
0xe4, 0xd1, 0xe0, 0x8d, 0x1e, 0x99, 0xf8, 0x03, 0xd8, 0x2e, 0x8b, 0x17, 0xec,
0xac, 0x3c, 0x0f, 0x7f, 0x10, 0x3c, 0x00, 0x74, 0x03, 0xee, 0x90, 0x90, 0xec,
0x8b, 0xfe, 0x1e, 0x07, 0xaa, 0x32, 0xe4, 0xc3, 0xb4, 0x80, 0xc3, 0xac, 0x3c,
0x02, 0x7f, 0x1f, 0xfe, 0xc8, 0x32, 0xe4, 0xd1, 0xe0, 0x8d, 0x1e, 0x99, 0xf8,
0x03, 0xd8, 0x2e, 0x8b, 0x17, 0xec, 0xac, 0x3c, 0x0f, 0x7f, 0x0a, 0x3c, 0x00,
0x74, 0x01, 0xee, 0xac, 0xee, 0x32, 0xe4, 0xc3, 0xb4, 0x80, 0xc3, 0xfc, 0x8e,
0xc0, 0xb8, 0xff, 0xff, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xab, 0x8b, 0xcb, 0x33,
0xff, 0xf3, 0xaf, 0xe3, 0x01, 0xc3, 0xb8, 0xaa, 0xaa, 0x8b, 0xcb, 0x33, 0xff,
0xf3, 0xab, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xaf, 0xe3, 0x01, 0xc3, 0xb8, 0x55,
0x55, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xab, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xaf,
0xe3, 0x01, 0xc3, 0x33, 0xc0, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xab, 0x8b, 0xcb,
0x33, 0xff, 0xf3, 0xaf, 0xc3, 0xba, 0x01, 0x02, 0xb0, 0x0d, 0xee, 0xb0, 0x00,
0xee, 0xba, 0x0b, 0x02, 0xb0, 0x08, 0xee, 0xba, 0x06, 0x02, 0xb0, 0x70, 0xee,
0xb0, 0x0c, 0xee, 0xba, 0x07, 0x02, 0xb0, 0x0f, 0xee, 0xb0, 0x00, 0xee, 0xba,
0x0b, 0x02, 0xb0, 0x07, 0xee, 0xba, 0x04, 0x02, 0xb0, 0x50, 0xee, 0xb0, 0x0c,
0xee, 0xba, 0x05, 0x02, 0xb0, 0x0d, 0xee, 0xb0, 0x00, 0xee, 0xba, 0x0b, 0x02,
0xb0, 0x0a, 0xee, 0xba, 0x08, 0x02, 0xb0, 0x30, 0xee, 0xba, 0x0e, 0x02, 0xb0,
0x00, 0xee, 0xba, 0x80, 0x00, 0xb0, 0x0e, 0xee, 0x90, 0x90, 0xb0, 0x17, 0xee,
0xba, 0x84, 0x00, 0xb0, 0x0e, 0xee, 0x90, 0x90, 0xb0, 0x17, 0xee, 0xfb, 0xb9,
0x00, 0xf0, 0x51, 0xb9, 0x05, 0x00, 0xe2, 0xfe, 0x59, 0x26, 0xa0, 0x80, 0x00,
0x3c, 0x04, 0x74, 0x0c, 0xe2, 0xef, 0x26, 0x81, 0x0e, 0x14, 0x00, 0x00, 0x08,
0xeb, 0x30, 0x90, 0xbb, 0x60, 0x00, 0xb9, 0x0e, 0x00, 0x33, 0xc0, 0x26, 0x8a,
0x27, 0x3a, 0xc4, 0x75, 0xe7, 0x43, 0xfe, 0xc0, 0xe2, 0xf4, 0xbb, 0x70, 0x00,
0xb9, 0x0e, 0x00, 0x33, 0xc0, 0x26, 0x8a, 0x27, 0x3a, 0xc4, 0x75, 0xd3, 0x43,
0xfe, 0xc0, 0xe2, 0xf4, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x08, 0x26, 0xa1,
0x14, 0x00, 0x0d, 0x00, 0x00, 0x75, 0x09, 0xfc, 0x8d, 0x3e, 0x00, 0x00, 0xb8,
0x47, 0x44, 0xab, 0xb8, 0xff, 0xff, 0xab, 0xab, 0xab, 0xb8, 0x42, 0x49, 0xab,
0xb8, 0x4f, 0x53, 0xab, 0xb8, 0x45, 0x49, 0x26, 0x80, 0x3e, 0x10, 0x00, 0x03,
0x74, 0x19, 0xb8, 0x49, 0x53, 0x26, 0x80, 0x3e, 0x10, 0x00, 0x02, 0x74, 0x0e,
0xb8, 0x4d, 0x43, 0x26, 0x80, 0x3e, 0x10, 0x00, 0x01, 0x74, 0x03, 0xb8, 0xff,
0xff, 0xab, 0x8d, 0x36, 0xfe, 0xff, 0x8a, 0x04, 0x8d, 0x36, 0xff, 0xff, 0x8a,
0x24, 0xab, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x80, 0x06, 0x1f, 0xa1, 0x2a,
0x00, 0x40, 0xa3, 0x2a, 0x00, 0xa1, 0x00, 0x00, 0x8b, 0x1e, 0x02, 0x00, 0x3d,
0x44, 0x47, 0x75, 0x04, 0xff, 0x2e, 0x2c, 0x00, 0x81, 0xfb, 0x45, 0x4d, 0x75,
0xe3, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x20, 0xff, 0x2e, 0x2c, 0x00, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xb4, 0xd5,
0x9e, 0x73, 0x4f, 0x7b, 0x4d, 0x79, 0x4b, 0x75, 0x49, 0x9f, 0xb1, 0x05, 0xd2,
0xec, 0x73, 0x42, 0xb0, 0x40, 0xd0, 0xe0, 0x71, 0x3c, 0x32, 0xe4, 0x9e, 0x76,
0x37, 0x7a, 0x35, 0x78, 0x33, 0x9f, 0xb1, 0x05, 0xd2, 0xec, 0x72, 0x2c, 0xd0,
0xe4, 0x70, 0x28, 0xfa, 0xb8, 0xff, 0xff, 0xf9, 0x73, 0x21, 0x8b, 0xd8, 0x8b,
0xcb, 0x8b, 0xd1, 0x8e, 0xc2, 0x8c, 0xc6, 0x8e, 0xde, 0x8c, 0xdf, 0x8e, 0xd7,
0x8c, 0xd5, 0x8b, 0xe5, 0x73, 0x07, 0x33, 0xc5, 0x75, 0x07, 0xf8, 0xeb, 0xe3,
0x0b, 0xc5, 0x74, 0x02, 0xeb, 0xfe, 0xba, 0xa0, 0xff, 0xb8, 0x38, 0xc0, 0xef,
0xba, 0xa2, 0xff, 0xb8, 0xf8, 0x3f, 0xef, 0xba, 0xa8, 0xff, 0xb8, 0xba, 0xa0,
0xef, 0xba, 0xa6, 0xff, 0xb8, 0xf8, 0x41, 0xef, 0xba, 0xa4, 0xff, 0xb8, 0x3b,
0x00, 0xef, 0xe4, 0x00, 0x24, 0x08, 0x74, 0x15, 0xba, 0xe0, 0xff, 0xb8, 0x00,
0x60, 0xef, 0xba, 0xe2, 0xff, 0xb8, 0x9c, 0x00, 0xef, 0xba, 0xe4, 0xff, 0xb8,
0x00, 0x80, 0xef, 0x8c, 0xc8, 0x8e, 0xd8, 0xbd, 0xc0, 0x00, 0xbb, 0x00, 0x80,
0x8c, 0xc8, 0x8e, 0xd0, 0xbc, 0xb6, 0xfc, 0x8b, 0xc5, 0x25, 0x00, 0xf0, 0xe9,
0xc0, 0xfd, 0xb4, 0x00, 0x74, 0x06, 0xb4, 0xff, 0xeb, 0x02, 0xae, 0xfc, 0x8e,
0xc5, 0x2e, 0x89, 0x2e, 0x9d, 0xf8, 0x80, 0xfc, 0x00, 0x74, 0x08, 0x26, 0x83,
0x0e, 0x14, 0x00, 0x01, 0xeb, 0xfe, 0x26, 0x83, 0x0e, 0x12, 0x00, 0x01, 0x26,
0xc7, 0x06, 0x18, 0x00, 0x40, 0x00, 0xb8, 0x80, 0x00, 0x8e, 0xd0, 0xbc, 0x00,
0x04, 0x33, 0xc0, 0xe4, 0x00, 0x26, 0xa2, 0x11, 0x00, 0x24, 0x06, 0x75, 0x09,
0x26, 0xc6, 0x06, 0x10, 0x00, 0x03, 0xeb, 0x25, 0x90, 0x3c, 0x02, 0x75, 0x09,
0x26, 0xc6, 0x06, 0x10, 0x00, 0x02, 0xeb, 0x18, 0x90, 0x3c, 0x04, 0x75, 0x09,
0x26, 0xc6, 0x06, 0x10, 0x00, 0x01, 0xeb, 0x0b, 0x90, 0x26, 0xa3, 0x10, 0x00,
0x26, 0x83, 0x0e, 0x14, 0x00, 0x02, 0x26, 0x83, 0x0e, 0x12, 0x00, 0x02, 0x26,
0xc7, 0x06, 0x00, 0x00, 0x5a, 0x5a, 0x06, 0xb8, 0xc0, 0xe0, 0x8e, 0xc0, 0x26,
0xa1, 0x00, 0x00, 0x07, 0x3d, 0x5a, 0x5a, 0x75, 0x24, 0x26, 0x83, 0x0e, 0x12,
0x00, 0x04, 0xb8, 0x00, 0xf0, 0xbb, 0x00, 0x78, 0x06, 0xe8, 0x27, 0xfd, 0x07,
0x75, 0x08, 0x26, 0x83, 0x06, 0x18, 0x00, 0x40, 0xeb, 0x06, 0x26, 0x83, 0x0e,
0x14, 0x00, 0x04, 0xeb, 0x41, 0x90, 0xb9, 0x07, 0x00, 0xb8, 0x00, 0x10, 0xba,
0x04, 0x00, 0xbb, 0x00, 0x80, 0x3d, 0x00, 0xf0, 0x75, 0x03, 0xbb, 0x00, 0x78,
0x06, 0x50, 0x51, 0xe8, 0xf9, 0xfc, 0x59, 0x58, 0x07, 0x75, 0x1c, 0x26, 0x83,
0x06, 0x18, 0x00, 0x40, 0x26, 0x09, 0x16, 0x12, 0x00, 0xd1, 0xe2, 0x05, 0x00,
0x10, 0x3d, 0x00, 0x40, 0x75, 0x03, 0xb8, 0x00, 0xc0, 0xe2, 0xd0, 0xeb, 0x05,
0x26, 0x09, 0x16, 0x14, 0x00, 0x06, 0xfc, 0x33, 0xff, 0x8e, 0xc7, 0xb9, 0x00,
0x02, 0xb8, 0x00, 0xf0, 0xf3, 0xab, 0x33, 0xff, 0xbe, 0x57, 0xf8, 0xb9, 0x20,
0x00, 0xa5, 0x47, 0x47, 0xe2, 0xfb, 0xbe, 0x97, 0xf8, 0xb9, 0xe0, 0x00, 0x8b,
0x1c, 0x26, 0x89, 0x1d, 0x83, 0xc7, 0x04, 0xe2, 0xf8, 0x07, 0xba, 0x28, 0xff,
0xb8, 0xfd, 0x00, 0xef, 0xba, 0x32, 0xff, 0xb8, 0x0d, 0x00, 0xef, 0xba, 0x34,
0xff, 0xb8, 0x0f, 0x00, 0xef, 0xba, 0x36, 0xff, 0xb8, 0x0e, 0x00, 0xef, 0xba,
0x38, 0xff, 0xb8, 0x19, 0x00, 0xef, 0xba, 0x3a, 0xff, 0xb8, 0x18, 0x00, 0xef,
0xba, 0x3c, 0xff, 0xb8, 0x0b, 0x00, 0xef, 0xba, 0x3e, 0xff, 0xb8, 0x1a, 0x00,
0xef, 0x8d, 0x3e, 0x90, 0x00, 0x8d, 0x36, 0x99, 0xf8, 0xb9, 0x02, 0x00, 0xf3,
0xa5, 0xb9, 0x02, 0x00, 0x8d, 0x36, 0x90, 0x00, 0x26, 0x8b, 0x14, 0xb3, 0x01,
0x32, 0xc0, 0xee, 0xb0, 0x0c, 0xee, 0x8a, 0xc3, 0x8a, 0xc3, 0xee, 0x83, 0xc6,
0x02, 0x26, 0x8b, 0x14, 0xfe, 0xc3, 0xe2, 0xeb, 0xb9, 0x02, 0x00, 0x8d, 0x36,
0x90, 0x00, 0x26, 0x8b, 0x14, 0xb3, 0x01, 0xbf, 0x00, 0x80, 0xb0, 0x0c, 0xee,
0xf6, 0xe8, 0xec, 0x3a, 0xc3, 0x74, 0x0e, 0x33, 0xc0, 0x26, 0x89, 0x04, 0x26,
0x81, 0x0e, 0x14, 0x00, 0x00, 0x02, 0xd1, 0xc7, 0x83, 0xc6, 0x02, 0x26, 0x8b,
0x14, 0xfe, 0xc3, 0xe2, 0xde, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x02, 0xba,
0x0c, 0x02, 0x33, 0xc0, 0xee, 0xba, 0x00, 0x02, 0xb9, 0x08, 0x00, 0xb8, 0x01,
0x00, 0xee, 0x90, 0x90, 0xfe, 0xc0, 0xee, 0x90, 0x90, 0x42, 0xfe, 0xc0, 0xe2,
0xf3, 0xba, 0x0c, 0x02, 0x33, 0xc0, 0xee, 0xba, 0x00, 0x02, 0xb9, 0x08, 0x00,
0xb3, 0x01, 0xec, 0x3a, 0xc3, 0x75, 0x0f, 0xfe, 0xc3, 0xec, 0x3a, 0xc3, 0x75,
0x08, 0x42, 0xfe, 0xc3, 0xe2, 0xef, 0xeb, 0x08, 0x90, 0x26, 0x81, 0x0e, 0x14,
0x00, 0x00, 0x04, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x04, 0xba, 0x0d, 0x02,
0xee, 0xb8, 0x00, 0x40, 0xba, 0x56, 0xff, 0xef, 0xba, 0x5e, 0xff, 0xef, 0xba,
0x66, 0xff, 0xef, 0xba, 0x84, 0x00, 0xec, 0xb0, 0x09, 0xee, 0x90, 0x90, 0xb0,
0xc0, 0xee, 0xb9, 0x02, 0x00, 0x8d, 0x36, 0x90, 0x00, 0x26, 0x8b, 0x14, 0xb0,
0x04, 0xee, 0x90, 0x90, 0xb0, 0x20, 0xee, 0x90, 0x90, 0xb0, 0x01, 0xee, 0x90,
0x90, 0xb0, 0xf9, 0xee, 0x90, 0x90, 0xb0, 0x03, 0xee, 0x90, 0x90, 0xb0, 0xc0,
0xee, 0x90, 0x90, 0xb0, 0x05, 0xee, 0x90, 0x90, 0xb0, 0x60, 0xee, 0x90, 0x90,
0xb0, 0x06, 0xee, 0x90, 0x90, 0xb0, 0xff, 0xee, 0x90, 0x90, 0xb0, 0x07, 0xee,
0x90, 0x90, 0xb0, 0x7e, 0xee, 0x90, 0x90, 0xb0, 0x09, 0xee, 0x90, 0x90, 0xb0,
0x2e, 0xee, 0x90, 0x90, 0xb0, 0x0a, 0xee, 0x90, 0x90, 0xb0, 0x00, 0xee, 0x90,
0x90, 0xb0, 0x0b, 0xee, 0x90, 0x90, 0xb0, 0x56, 0xee, 0x90, 0x90, 0xb0, 0x0c,
0xee, 0x90, 0x90, 0xb0, 0xfe, 0xee, 0x90, 0x90, 0xb0, 0x0d, 0xee, 0x90, 0x90,
0xb0, 0x05, 0xee, 0x90, 0x90, 0xb0, 0x0e, 0xee, 0x90, 0x90, 0xb0, 0x17, 0xee,
0x90, 0x90, 0xb0, 0x0f, 0xee, 0x90, 0x90, 0xb0, 0x41, 0xee, 0x90, 0x90, 0xb0,
0x07, 0xee, 0x90, 0x90, 0xb0, 0x5b, 0xee, 0x90, 0x90, 0xb0, 0x03, 0xee, 0x90,
0x90, 0xb0, 0xc9, 0xee, 0x90, 0x90, 0xb0, 0x05, 0xee, 0x90, 0x90, 0xb0, 0x69,
0xee, 0x90, 0x90, 0xb0, 0x80, 0xee, 0x90, 0x90, 0xb0, 0x10, 0xee, 0x90, 0x90,
0x46, 0x46, 0xe2, 0x03, 0xeb, 0x04, 0x90, 0xe9, 0x49, 0xff, 0xba, 0x3a, 0xff,
0xb8, 0x16, 0x00, 0xef, 0xba, 0x38, 0xff, 0xb8, 0x07, 0x00, 0xef, 0xb9, 0x0e,
0x00, 0xbb, 0x50, 0x00, 0x33, 0xc0, 0x26, 0x88, 0x07, 0x43, 0x40, 0xe2, 0xf9,
0xb9, 0x20, 0x00, 0xbb, 0x60, 0x00, 0x26, 0xc6, 0x07, 0xff, 0x43, 0xe2, 0xf9,
0xba, 0x0c, 0x02, 0x33, 0xc0, 0xee, 0x90, 0x90, 0xba, 0x02, 0x02, 0xb0, 0x60,
0xee, 0x90, 0x90, 0xb0, 0x0c, 0xee, 0x90, 0x90, 0xba, 0x03, 0x02, 0xb0, 0x0f,
0xee, 0x90, 0x90, 0xb0, 0x00, 0xee, 0xba, 0x0b, 0x02, 0xb0, 0x05, 0xee, 0xba,
0x00, 0x02, 0xb0, 0x50, 0xee, 0xb0, 0x0c, 0xee, 0xe9, 0xcc, 0xfa, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xea, 0x00, 0xfc, 0x00, 0xf0, 0x43, 0x58, 0x48, 0x41,
0x5f, 0x31, 0x39, 0x39, 0x30, 0x32, 0x30
};

45
sys/dev/digi/CX.c Normal file
View File

@ -0,0 +1,45 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <dev/digi/CX.bios.h>
#include <dev/digi/CX.fepos.h>
#include <dev/digi/digi_mod.h>
struct digi_mod digi_mod_CX = {
DIGI_MOD_VERSION,
{ CX_bios, sizeof(CX_bios) },
{ CX_fepos, sizeof(CX_fepos) },
{ NULL, 0 }
};
DEV_MODULE(digi_CX, 0, 0);

996
sys/dev/digi/CX.fepos.h Normal file
View File

@ -0,0 +1,996 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* based on work by Slawa Olhovchenkov
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
const u_char CX_fepos[] = {
0x4f, 0x53, 0x31, 0x5f, 0xe9, 0xf9, 0x01, 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, 0x40, 0x28, 0x23, 0x29, 0x63, 0x78, 0x66,
0x65, 0x70, 0x2e, 0x62, 0x69, 0x6e, 0x09, 0x33, 0x2e, 0x33, 0x20, 0x20, 0x30,
0x34, 0x2f, 0x31, 0x31, 0x2f, 0x39, 0x37, 0x20, 0x00, 0x40, 0x28, 0x23, 0x29,
0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x43, 0x29,
0x20, 0x31, 0x39, 0x38, 0x39, 0x2d, 0x39, 0x34, 0x2c, 0x20, 0x44, 0x69, 0x67,
0x69, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x61, 0x6c, 0x2c, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74,
0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x00, 0x00, 0x35,
0x01, 0x35, 0x01, 0x38, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01,
0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0xf5,
0x03, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0xc3, 0x00, 0x35, 0x01,
0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35,
0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01, 0x35, 0x01,
0x60, 0x1e, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0x8b, 0xec, 0x8b, 0x6e, 0x02, 0x89,
0x2e, 0x02, 0x0d, 0x83, 0x3e, 0x10, 0x0c, 0x00, 0x74, 0x03, 0xe8, 0x6f, 0x00,
0x83, 0x06, 0x00, 0x0e, 0x02, 0x83, 0x3e, 0x04, 0x0e, 0x00, 0x74, 0x42, 0x8b,
0x16, 0x00, 0x0e, 0x2b, 0x16, 0x02, 0x0e, 0x3b, 0x16, 0x04, 0x0e, 0x72, 0x34,
0x8b, 0x16, 0x00, 0x0e, 0x89, 0x16, 0x02, 0x0e, 0xa1, 0x18, 0x0d, 0x3b, 0x06,
0x1a, 0x0d, 0x75, 0x07, 0x83, 0x3e, 0x00, 0x0d, 0x00, 0x74, 0x1c, 0x83, 0x26,
0x24, 0x0d, 0xfe, 0xa1, 0x24, 0x0d, 0xe6, 0x00, 0xe4, 0x00, 0x24, 0x06, 0x3c,
0x04, 0x74, 0x0a, 0x83, 0x0e, 0x24, 0x0d, 0x01, 0xa1, 0x24, 0x0d, 0xe6, 0x00,
0xba, 0x22, 0xff, 0xb8, 0x00, 0x80, 0xef, 0x1f, 0x61, 0xcf, 0xe8, 0x14, 0x00,
0x50, 0x1e, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0x83, 0x0e, 0x24, 0x0d, 0x01, 0xa1,
0x24, 0x0d, 0xe6, 0x00, 0x1f, 0x58, 0xcf, 0xfa, 0xa3, 0x18, 0x0c, 0x89, 0x1e,
0x1a, 0x0c, 0x89, 0x0e, 0x1c, 0x0c, 0x89, 0x16, 0x1e, 0x0c, 0x89, 0x36, 0x20,
0x0c, 0x89, 0x3e, 0x22, 0x0c, 0x89, 0x2e, 0x24, 0x0c, 0x89, 0x26, 0x26, 0x0c,
0x8c, 0xc8, 0xa3, 0x28, 0x0c, 0x8c, 0xd8, 0xa3, 0x2a, 0x0c, 0x8c, 0xd0, 0xa3,
0x2c, 0x0c, 0x8c, 0xc0, 0xa3, 0x2e, 0x0c, 0x8b, 0xec, 0x8b, 0x46, 0x00, 0xa3,
0x12, 0x0c, 0x8b, 0x46, 0x02, 0xa3, 0x14, 0x0c, 0x8b, 0x46, 0x04, 0xa3, 0x16,
0x0c, 0xb8, 0x00, 0x00, 0x8e, 0xc0, 0x8d, 0x1e, 0x00, 0x0c, 0x26, 0xc7, 0x07,
0x4e, 0x47, 0x8d, 0x1e, 0x20, 0x0d, 0x26, 0xc7, 0x07, 0x4e, 0x47, 0x8b, 0x2e,
0x24, 0x0c, 0xa1, 0x18, 0x0c, 0x8e, 0x06, 0x2e, 0x0c, 0x8b, 0x1e, 0x1a, 0x0c,
0x90, 0xeb, 0xfd, 0xb8, 0x00, 0x00, 0x8e, 0xc0, 0x8b, 0xf0, 0x8b, 0xf8, 0x2e,
0x8b, 0x9c, 0x81, 0x00, 0x83, 0xc6, 0x02, 0x26, 0x89, 0x1d, 0x26, 0x8c, 0x4d,
0x02, 0x83, 0xc7, 0x04, 0x81, 0xff, 0x80, 0x00, 0x72, 0xe8, 0x26, 0xc7, 0x05,
0x35, 0x01, 0x26, 0x8c, 0x4d, 0x02, 0x83, 0xc7, 0x04, 0x81, 0xff, 0x00, 0x04,
0x72, 0xee, 0xc3, 0xfa, 0xfc, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0x8e, 0xd0, 0xbc,
0xfe, 0x0f, 0xeb, 0x30, 0x90, 0xfa, 0xfc, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0x8e,
0xd0, 0xbc, 0xfe, 0x0f, 0x8b, 0x1e, 0x18, 0x0c, 0x89, 0x1e, 0x08, 0x0c, 0x81,
0xfb, 0x80, 0x00, 0x76, 0x15, 0xb8, 0x00, 0x10, 0x8e, 0xc0, 0xbe, 0x00, 0xd0,
0xbf, 0x00, 0x00, 0xb9, 0x00, 0x18, 0xf3, 0xa5, 0x50, 0x68, 0x2f, 0x02, 0xcb,
0xc6, 0x06, 0x0f, 0x0c, 0x00, 0xe8, 0x86, 0xff, 0x8b, 0x1e, 0x08, 0x0c, 0xb8,
0x00, 0x00, 0x8e, 0xc0, 0xbf, 0x00, 0x04, 0xb9, 0xd0, 0x0c, 0x2b, 0xcf, 0xd1,
0xe9, 0xf3, 0xab, 0xbf, 0x00, 0x0d, 0x8c, 0xc9, 0xc1, 0xe1, 0x04, 0x2b, 0xcf,
0xd1, 0xe9, 0xf3, 0xab, 0x89, 0x1e, 0x08, 0x0c, 0x8c, 0xc8, 0xa3, 0x0c, 0x0c,
0x05, 0x00, 0x03, 0xa3, 0x0a, 0x0c, 0xba, 0x84, 0x00, 0xec, 0x90, 0x90, 0xb0,
0x09, 0xee, 0x90, 0x90, 0xb0, 0xc0, 0xee, 0xb0, 0x01, 0xee, 0x90, 0x90, 0xb0,
0x00, 0xee, 0xb0, 0x02, 0xee, 0x90, 0x90, 0xb0, 0x00, 0xee, 0xb0, 0x03, 0xee,
0x90, 0x90, 0xb0, 0xc0, 0xee, 0xb0, 0x04, 0xee, 0x90, 0x90, 0xb0, 0x44, 0xee,
0xb0, 0x05, 0xee, 0x90, 0x90, 0xb0, 0x60, 0xee, 0xb0, 0x09, 0xee, 0x90, 0x90,
0xb0, 0x00, 0xee, 0xb0, 0x0b, 0xee, 0x90, 0x90, 0xb0, 0x52, 0xee, 0xb0, 0x0c,
0xee, 0x90, 0x90, 0xb0, 0x00, 0xee, 0xb0, 0x0d, 0xee, 0x90, 0x90, 0xb0, 0x00,
0xee, 0xb0, 0x0e, 0xee, 0xb0, 0x03, 0x90, 0x90, 0xee, 0xb0, 0x0f, 0xee, 0x90,
0x90, 0xb0, 0x00, 0xee, 0xb0, 0x05, 0xee, 0x90, 0x90, 0xb0, 0x68, 0xee, 0x83,
0xc2, 0x02, 0xb0, 0x08, 0xee, 0x90, 0x90, 0xb9, 0x00, 0x00, 0xb0, 0x08, 0xee,
0x83, 0xea, 0x02, 0x41, 0xec, 0xa8, 0x04, 0x74, 0xfa, 0x89, 0x0e, 0x04, 0x0d,
0xba, 0x84, 0x00, 0xec, 0x90, 0x90, 0xb0, 0x09, 0xee, 0x90, 0x90, 0xb0, 0xc0,
0xee, 0xb8, 0x40, 0x1f, 0x83, 0xf9, 0x21, 0x73, 0x03, 0xb8, 0x88, 0x13, 0xba,
0x5a, 0xff, 0xef, 0xba, 0x58, 0xff, 0xb8, 0x00, 0x00, 0xef, 0xba, 0x5e, 0xff,
0xb8, 0x01, 0xe0, 0xef, 0xba, 0x56, 0xff, 0xb8, 0x00, 0x40, 0xef, 0xba, 0x66,
0xff, 0xb8, 0x00, 0x40, 0xef, 0xc7, 0x06, 0x24, 0x0d, 0x01, 0x00, 0xa1, 0x24,
0x0d, 0xe6, 0x00, 0xba, 0x32, 0xff, 0xb8, 0x01, 0x00, 0xef, 0xba, 0x3a, 0xff,
0xb8, 0x12, 0x00, 0xef, 0xba, 0x28, 0xff, 0xb8, 0xfd, 0x00, 0xef, 0xba, 0x2c,
0xff, 0xb8, 0x00, 0x00, 0xef, 0xfb, 0xbd, 0x00, 0x00, 0xe8, 0xf1, 0x24, 0xe8,
0xf0, 0xfd, 0x8b, 0xcd, 0x8b, 0xec, 0x8b, 0x56, 0x02, 0xfa, 0xec, 0x8a, 0xe0,
0x8b, 0xe9, 0x90, 0xec, 0x86, 0xe0, 0xfb, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, 0x8b,
0x56, 0x02, 0x8b, 0x46, 0x04, 0xfa, 0xee, 0x8a, 0xc4, 0x8b, 0xe9, 0x90, 0xee,
0xfb, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, 0x8b, 0x56, 0x02, 0x8a, 0x46, 0x04, 0xfa,
0xee, 0x8b, 0xe9, 0x32, 0xe4, 0x90, 0xec, 0xfb, 0xc3, 0x8b, 0xcd, 0x8b, 0xec,
0x8b, 0x56, 0x02, 0x8a, 0x46, 0x04, 0xfa, 0xee, 0x8a, 0x46, 0x06, 0x8b, 0xe9,
0xee, 0xfb, 0xc3, 0x55, 0x8b, 0xec, 0x8b, 0x56, 0x04, 0xfa, 0xb0, 0x07, 0xee,
0x90, 0x90, 0xec, 0x8a, 0xe0, 0xb0, 0x06, 0xee, 0x90, 0x90, 0x90, 0xec, 0xa3,
0x12, 0x54, 0xb0, 0x01, 0xee, 0x90, 0x90, 0x90, 0xec, 0x86, 0xe0, 0x90, 0xec,
0x86, 0xc4, 0xa3, 0x14, 0x54, 0xfb, 0x5d, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, 0x8b,
0x6e, 0x02, 0x2e, 0x8a, 0x46, 0x00, 0x32, 0xe4, 0x8b, 0xe9, 0xc3, 0x8b, 0xcd,
0x8b, 0xec, 0x8b, 0x6e, 0x02, 0x2e, 0x8b, 0x46, 0x00, 0x8b, 0xe9, 0xc3, 0xfb,
0x60, 0x1e, 0x06, 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0xb0, 0x03, 0xe6, 0x84, 0x90,
0x90, 0x90, 0xe4, 0x84, 0xa8, 0x08, 0x75, 0x27, 0xa8, 0x01, 0x75, 0x2f, 0xa8,
0x20, 0x75, 0x07, 0xa8, 0x04, 0x75, 0x0f, 0xeb, 0x31, 0x90, 0xff, 0x36, 0x2a,
0x0d, 0xe8, 0xbf, 0x16, 0x83, 0xc4, 0x02, 0xeb, 0xd8, 0xff, 0x36, 0x28, 0x0d,
0xe8, 0xb3, 0x16, 0x83, 0xc4, 0x02, 0xeb, 0xcc, 0xff, 0x36, 0x2a, 0x0d, 0xe8,
0xd9, 0x1a, 0x83, 0xc4, 0x02, 0xeb, 0xc0, 0xff, 0x36, 0x28, 0x0d, 0xe8, 0xcd,
0x1a, 0x83, 0xc4, 0x02, 0xeb, 0xb4, 0xfa, 0xba, 0x22, 0xff, 0xb8, 0x0d, 0x00,
0xef, 0x83, 0x3e, 0x52, 0x54, 0x00, 0x74, 0x09, 0xc7, 0x06, 0xa2, 0x7f, 0x01,
0x00, 0xeb, 0x1f, 0x90, 0xc7, 0x06, 0x52, 0x54, 0x01, 0x00, 0xc7, 0x06, 0xa2,
0x7f, 0x00, 0x00, 0xfb, 0xe8, 0xe6, 0x1f, 0xfa, 0x83, 0x3e, 0xa2, 0x7f, 0x00,
0x75, 0xee, 0xc7, 0x06, 0x52, 0x54, 0x00, 0x00, 0x07, 0x1f, 0x61, 0xcf, 0x55,
0x8b, 0xec, 0x57, 0x8b, 0x56, 0x04, 0x8b, 0x5e, 0x06, 0x8a, 0xca, 0x8a, 0xe9,
0x80, 0xc9, 0x04, 0x03, 0xd2, 0x81, 0xc2, 0x01, 0x02, 0xbf, 0x0a, 0x02, 0xfa,
0xec, 0x8a, 0xe0, 0xec, 0x86, 0xe0, 0x4a, 0x40, 0x3d, 0x14, 0x00, 0x77, 0x18,
0x87, 0xd7, 0x8b, 0xc1, 0xee, 0x87, 0xd7, 0xec, 0x8a, 0xc8, 0xec, 0x8a, 0xe8,
0x03, 0xd9, 0x8a, 0xc3, 0xee, 0x8a, 0xc7, 0xee, 0xeb, 0x21, 0x90, 0x87, 0xd7,
0x8b, 0xc1, 0xb1, 0x1f, 0xd2, 0xcd, 0xd2, 0xcd, 0xee, 0x87, 0xd7, 0xec, 0x8a,
0xc8, 0xec, 0x8a, 0xe8, 0x03, 0xd9, 0x8a, 0xc3, 0xee, 0x8a, 0xc7, 0xee, 0x87,
0xd7, 0x8a, 0xc4, 0xee, 0xfb, 0x8b, 0xc3, 0x5f, 0x5d, 0xc3, 0x55, 0x8b, 0xec,
0x57, 0x8b, 0x7e, 0x04, 0x8b, 0x5e, 0x06, 0x4b, 0x8b, 0xc7, 0x8a, 0xe0, 0x0c,
0x04, 0x03, 0xff, 0x81, 0xc7, 0x00, 0x02, 0xba, 0x0a, 0x02, 0xfa, 0xb1, 0x1f,
0xd2, 0xcd, 0xd2, 0xcd, 0xee, 0x87, 0xd7, 0xec, 0x8a, 0xc8, 0xec, 0x8a, 0xe8,
0x2b, 0xd9, 0x78, 0x0c, 0x42, 0x8a, 0xc3, 0xee, 0x8a, 0xc7, 0xee, 0x87, 0xd7,
0x8a, 0xc4, 0xee, 0xfb, 0x5f, 0x5d, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x8b, 0x7c, 0x0a, 0x2b, 0x7c, 0x0c, 0x23, 0x7c, 0x0e, 0x3b, 0x7c,
0x18, 0x77, 0x44, 0xc6, 0x44, 0x4d, 0x00, 0x80, 0x4c, 0x4f, 0x02, 0xeb, 0x34,
0x90, 0x8b, 0x7c, 0x0a, 0x3b, 0x7c, 0x0c, 0x75, 0x31, 0x8b, 0x3e, 0x10, 0x0d,
0x3b, 0x3e, 0x12, 0x0d, 0x75, 0x27, 0x80, 0x7c, 0x4b, 0x00, 0x75, 0x21, 0xc6,
0x44, 0x4c, 0x00, 0x80, 0x4c, 0x4f, 0x04, 0xeb, 0x17, 0x90, 0x55, 0x56, 0x57,
0xbe, 0x00, 0x10, 0x8b, 0x0e, 0x02, 0x0c, 0x80, 0x7c, 0x4d, 0x00, 0x75, 0xb4,
0x80, 0x7c, 0x4c, 0x00, 0x75, 0xc7, 0x8b, 0x7c, 0x12, 0x2b, 0x7c, 0x14, 0x74,
0x21, 0x80, 0x7c, 0x4e, 0x00, 0x74, 0x1b, 0x23, 0x7c, 0x16, 0x03, 0xff, 0x3b,
0x7c, 0x16, 0x73, 0x3d, 0xa1, 0x00, 0x0e, 0x2b, 0x44, 0x6e, 0x3b, 0x44, 0x22,
0x73, 0x32, 0x80, 0x7c, 0x49, 0x00, 0x74, 0x2c, 0x8a, 0x44, 0x6a, 0x0c, 0x6f,
0x20, 0x44, 0x4f, 0x8a, 0x44, 0x54, 0x32, 0x44, 0x57, 0x22, 0x44, 0x56, 0x0a,
0x44, 0x58, 0x75, 0x26, 0x80, 0x7c, 0x4f, 0x00, 0x75, 0x24, 0x8a, 0x44, 0x54,
0x88, 0x44, 0x57, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xa3, 0x5f, 0x5e, 0x5d, 0xc3,
0xc6, 0x44, 0x4e, 0x00, 0xa1, 0x00, 0x0e, 0x89, 0x44, 0x6e, 0x80, 0x4c, 0x4f,
0x08, 0xeb, 0xc4, 0x80, 0x4c, 0x4f, 0x20, 0x8b, 0x3e, 0x18, 0x0d, 0x8a, 0x44,
0x48, 0x8a, 0x64, 0x4f, 0x89, 0x85, 0x00, 0x08, 0x8a, 0x44, 0x57, 0x8a, 0xe0,
0x32, 0x44, 0x54, 0x0a, 0x44, 0x58, 0x32, 0xc4, 0x89, 0x85, 0x02, 0x08, 0x83,
0xc7, 0x04, 0x81, 0xe7, 0xfc, 0x03, 0x3b, 0x3e, 0x1a, 0x0d, 0x74, 0xb6, 0x89,
0x3e, 0x18, 0x0d, 0x88, 0x44, 0x57, 0xc6, 0x44, 0x58, 0x00, 0xc6, 0x44, 0x4f,
0x00, 0xeb, 0xa5, 0x55, 0x8b, 0xec, 0x56, 0x57, 0x8b, 0x5e, 0x04, 0x89, 0x1e,
0x16, 0x54, 0x8b, 0x7e, 0x06, 0x89, 0x3e, 0x18, 0x54, 0x8b, 0x56, 0x08, 0x03,
0xd7, 0x89, 0x16, 0x1a, 0x54, 0x8c, 0xd8, 0x8e, 0xc0, 0x80, 0x3e, 0x30, 0x0c,
0x00, 0x75, 0x09, 0xc7, 0x06, 0x28, 0x54, 0x00, 0x00, 0xeb, 0x48, 0x90, 0x8b,
0x47, 0x06, 0x3a, 0x06, 0x32, 0x0c, 0x75, 0x3e, 0x83, 0x3e, 0x28, 0x54, 0x00,
0x75, 0x37, 0xa3, 0x28, 0x54, 0xbe, 0x30, 0x0c, 0x8b, 0x4c, 0x08, 0x81, 0xf9,
0x80, 0x00, 0x76, 0x06, 0xb9, 0x80, 0x00, 0x89, 0x4c, 0x08, 0xb9, 0x0a, 0x00,
0x8a, 0x04, 0x3c, 0x02, 0x75, 0x03, 0x03, 0x4c, 0x08, 0xb8, 0xf4, 0xb3, 0xab,
0xb8, 0xc3, 0x95, 0xab, 0xf3, 0xa4, 0xa0, 0x30, 0x0c, 0x3c, 0x04, 0x75, 0x05,
0xc6, 0x06, 0x30, 0x0c, 0x00, 0xc7, 0x06, 0x1c, 0x54, 0x2a, 0x54, 0x8b, 0x4f,
0x04, 0x8b, 0x37, 0xe9, 0x1c, 0x01, 0x00, 0x00, 0xe9, 0x06, 0x01, 0x00, 0xf1,
0x06, 0x02, 0x00, 0xf7, 0x06, 0x03, 0x00, 0x11, 0x07, 0x04, 0x00, 0x2b, 0x07,
0x05, 0x00, 0x31, 0x07, 0x06, 0x00, 0x3a, 0x07, 0x07, 0x00, 0x43, 0x07, 0x08,
0x00, 0x55, 0x07, 0x09, 0x00, 0x4c, 0x07, 0x0a, 0x00, 0x5d, 0x07, 0x0b, 0x00,
0x65, 0x07, 0x0c, 0x00, 0x6e, 0x07, 0x0d, 0x00, 0x7c, 0x07, 0x0e, 0x00, 0x85,
0x07, 0x33, 0xc0, 0x86, 0x44, 0x64, 0xe9, 0xb4, 0x00, 0x8b, 0x44, 0x16, 0xe9,
0xae, 0x00, 0x8b, 0x44, 0x1a, 0x23, 0x44, 0x16, 0x51, 0x52, 0x33, 0xd2, 0xb9,
0x00, 0x80, 0xf7, 0xe1, 0x8b, 0x4c, 0x16, 0x41, 0xf7, 0xf1, 0x5a, 0x59, 0xe9,
0x94, 0x00, 0x8b, 0x44, 0x1c, 0x23, 0x44, 0x16, 0x51, 0x52, 0x33, 0xd2, 0xb9,
0x00, 0x80, 0xf7, 0xe1, 0x8b, 0x4c, 0x16, 0x41, 0xf7, 0xf1, 0x5a, 0x59, 0xeb,
0x7b, 0x90, 0x8b, 0x44, 0x36, 0xeb, 0x75, 0x90, 0x8a, 0x44, 0x2c, 0x8a, 0x64,
0x2d, 0xeb, 0x6c, 0x90, 0x8a, 0x44, 0x28, 0x8a, 0x64, 0x29, 0xeb, 0x63, 0x90,
0x8a, 0x44, 0x2a, 0x8a, 0x64, 0x2b, 0xeb, 0x5a, 0x90, 0x8a, 0x44, 0x5f, 0x8a,
0x64, 0x69, 0xeb, 0x51, 0x90, 0x8a, 0x44, 0x68, 0x32, 0xe4, 0xeb, 0x49, 0x90,
0x8a, 0x44, 0x5e, 0x32, 0xe4, 0xeb, 0x41, 0x90, 0x8a, 0x44, 0x5c, 0x8a, 0x64,
0x5d, 0xeb, 0x38, 0x90, 0x33, 0xc0, 0x87, 0x44, 0x24, 0x89, 0x45, 0x02, 0xff,
0x44, 0x38, 0xeb, 0x2a, 0x90, 0x8a, 0x44, 0x5a, 0x8a, 0x64, 0x5b, 0xeb, 0x21,
0x90, 0xeb, 0x24, 0x90, 0xbb, 0xa9, 0x06, 0x83, 0xc3, 0x04, 0xd1, 0xea, 0x72,
0x05, 0x75, 0xf7, 0xeb, 0x1a, 0x90, 0xb0, 0xb0, 0x02, 0x44, 0x65, 0x2e, 0x8a,
0x27, 0x89, 0x05, 0x2e, 0xff, 0x67, 0x02, 0x89, 0x45, 0x02, 0x83, 0xc7, 0x04,
0x83, 0xfa, 0x00, 0x75, 0xdb, 0x89, 0x54, 0x2e, 0xeb, 0x1c, 0x90, 0xb3, 0xa0,
0x02, 0x5c, 0x65, 0x88, 0x1d, 0x89, 0x45, 0x01, 0x89, 0x44, 0x3e, 0x83, 0xc7,
0x03, 0xeb, 0x2e, 0x90, 0x8b, 0x54, 0x2e, 0x83, 0xfa, 0x00, 0x75, 0xb7, 0xd0,
0x6c, 0x49, 0x8b, 0x44, 0x3c, 0x8b, 0xd0, 0x2b, 0x54, 0x3e, 0x8b, 0x5c, 0x12,
0x2b, 0x5c, 0x14, 0x23, 0x5c, 0x16, 0x2b, 0xc3, 0x8b, 0xd8, 0x2b, 0x5c, 0x3e,
0x8b, 0x54, 0x16, 0xc1, 0xea, 0x03, 0x3b, 0xda, 0x77, 0xc0, 0x8b, 0x5c, 0x0a,
0x2b, 0x5c, 0x0c, 0x23, 0x5c, 0x0e, 0x74, 0x0b, 0x8b, 0x44, 0x42, 0x03, 0x44,
0x3a, 0x2b, 0x44, 0x38, 0x75, 0x0f, 0x3b, 0x3e, 0x1a, 0x54, 0x73, 0x4f, 0x81,
0xc6, 0x80, 0x00, 0xe2, 0xb1, 0xeb, 0x47, 0x90, 0xf7, 0x46, 0x0a, 0x01, 0x00,
0x75, 0x04, 0xc6, 0x44, 0x4b, 0x01, 0x3b, 0xc3, 0x76, 0x02, 0x8b, 0xc3, 0x3d,
0xf4, 0x01, 0x76, 0x03, 0xb8, 0xf4, 0x01, 0x89, 0x44, 0x40, 0x8b, 0xd7, 0x8b,
0x1e, 0x1c, 0x54, 0x81, 0xfb, 0x2a, 0x54, 0x74, 0x13, 0x8b, 0x7f, 0xfe, 0x3b,
0x45, 0x40, 0x73, 0x0b, 0x89, 0x3f, 0x83, 0xeb, 0x02, 0x81, 0xfb, 0x2a, 0x54,
0x75, 0xed, 0x89, 0x37, 0x83, 0x06, 0x1c, 0x54, 0x02, 0x8b, 0xfa, 0xeb, 0xab,
0x8b, 0x0e, 0x1c, 0x54, 0x81, 0xe9, 0x2a, 0x54, 0xd1, 0xe9, 0x74, 0x0a, 0x8b,
0x16, 0x1a, 0x54, 0x2b, 0xd7, 0x2b, 0xd1, 0x7f, 0x03, 0xe9, 0xab, 0x00, 0x89,
0x16, 0x1e, 0x54, 0xc7, 0x06, 0x20, 0x54, 0x00, 0x00, 0xbb, 0x2a, 0x54, 0x8b,
0x37, 0x83, 0x3e, 0x1e, 0x54, 0x00, 0x74, 0x2f, 0x8b, 0x44, 0x40, 0x2b, 0x06,
0x20, 0x54, 0xf7, 0xe1, 0x3b, 0x06, 0x1e, 0x54, 0x77, 0x0d, 0x29, 0x06, 0x1e,
0x54, 0x8b, 0x44, 0x40, 0xa3, 0x20, 0x54, 0xeb, 0x14, 0x90, 0x33, 0xd2, 0xa1,
0x1e, 0x54, 0x48, 0xf7, 0xf1, 0x40, 0x01, 0x06, 0x20, 0x54, 0xc7, 0x06, 0x1e,
0x54, 0x00, 0x00, 0x51, 0x8b, 0x0e, 0x20, 0x54, 0x8a, 0x44, 0x65, 0x83, 0xf9,
0x08, 0x77, 0x10, 0x8a, 0xe1, 0xfe, 0xcc, 0xc0, 0xe4, 0x04, 0x80, 0xc4, 0x00,
0x02, 0xc4, 0xaa, 0xeb, 0x15, 0x90, 0x81, 0xf9, 0xff, 0x00, 0x77, 0x08, 0x0c,
0x80, 0x8a, 0xe1, 0xab, 0xeb, 0x07, 0x90, 0x0c, 0x90, 0xaa, 0x8b, 0xc1, 0xab,
0x8b, 0x44, 0x0c, 0x01, 0x4c, 0x38, 0x8b, 0x54, 0x0e, 0x42, 0x2b, 0xd0, 0x8e,
0x5c, 0x08, 0x3b, 0xca, 0x72, 0x0d, 0x2b, 0xca, 0x96, 0x87, 0xca, 0xf3, 0xa4,
0x96, 0xb8, 0x00, 0x00, 0x8b, 0xca, 0x96, 0xf3, 0xa4, 0x8c, 0xc1, 0x8e, 0xd9,
0x96, 0x89, 0x44, 0x0c, 0x83, 0xc3, 0x02, 0x59, 0x49, 0x74, 0x03, 0xe9, 0x62,
0xff, 0x2b, 0x3e, 0x18, 0x54, 0x8b, 0xc7, 0x5f, 0x5e, 0x5d, 0xc3, 0x55, 0x8b,
0xec, 0x56, 0x57, 0x8b, 0x5e, 0x04, 0x89, 0x1e, 0x16, 0x54, 0x8b, 0x37, 0x89,
0x36, 0x22, 0x54, 0x8b, 0x7e, 0x06, 0x8b, 0x56, 0x08, 0x03, 0xd7, 0x89, 0x16,
0x1a, 0x54, 0x32, 0xc0, 0x88, 0x44, 0x49, 0x88, 0x84, 0xc9, 0x00, 0x88, 0x84,
0x49, 0x01, 0x88, 0x84, 0xc9, 0x01, 0x88, 0x84, 0x49, 0x02, 0x88, 0x84, 0xc9,
0x02, 0x88, 0x84, 0x49, 0x03, 0x88, 0x84, 0xc9, 0x03, 0x88, 0x84, 0x49, 0x04,
0x88, 0x84, 0xc9, 0x04, 0x88, 0x84, 0x49, 0x05, 0x88, 0x84, 0xc9, 0x05, 0x88,
0x84, 0x49, 0x06, 0x88, 0x84, 0xc9, 0x06, 0x88, 0x84, 0x49, 0x07, 0x88, 0x84,
0xc9, 0x07, 0x3b, 0x3e, 0x1a, 0x54, 0x73, 0x1c, 0x8a, 0x25, 0x8b, 0xf0, 0x81,
0xe6, 0x00, 0x0f, 0xd1, 0xee, 0x03, 0x36, 0x22, 0x54, 0x8a, 0xdc, 0x81, 0xe3,
0xf0, 0x00, 0xc1, 0xeb, 0x03, 0x2e, 0xff, 0xa7, 0xc4, 0x09, 0x74, 0x0c, 0xb8,
0x0e, 0x00, 0xeb, 0x09, 0x90, 0xb8, 0x0a, 0x00, 0xeb, 0x03, 0x90, 0x33, 0xc0,
0x5f, 0x5e, 0x5d, 0xc3, 0xe5, 0x09, 0xe5, 0x09, 0xe5, 0x09, 0xe5, 0x09, 0xe5,
0x09, 0xe5, 0x09, 0xe5, 0x09, 0xe5, 0x09, 0xf2, 0x09, 0xfd, 0x09, 0x58, 0x0a,
0x74, 0x0a, 0x26, 0x0b, 0xb8, 0x09, 0xb8, 0x09, 0x40, 0x0b, 0xc3, 0x8a, 0xcc,
0xc0, 0xe9, 0x04, 0x83, 0xe1, 0x07, 0x41, 0x47, 0xeb, 0x12, 0x90, 0x8a, 0x4d,
0x01, 0x32, 0xed, 0x83, 0xc7, 0x02, 0xeb, 0x07, 0x90, 0x8b, 0x4d, 0x01, 0x83,
0xc7, 0x03, 0xc6, 0x44, 0x49, 0x04, 0x01, 0x4c, 0x3c, 0x8e, 0x44, 0x10, 0x8b,
0x5c, 0x12, 0x8b, 0x54, 0x14, 0x2b, 0xd3, 0x4a, 0x23, 0x54, 0x16, 0x33, 0xc0,
0x3b, 0xca, 0x76, 0x06, 0x8b, 0xc1, 0x2b, 0xc2, 0x8b, 0xca, 0x8b, 0x54, 0x16,
0x42, 0x2b, 0xd3, 0x3b, 0xca, 0x72, 0x12, 0x2b, 0xca, 0x87, 0xf7, 0x87, 0xfb,
0x87, 0xca, 0xf3, 0xa4, 0x87, 0xfb, 0x87, 0xf7, 0x8b, 0xca, 0x33, 0xdb, 0x87,
0xf7, 0x87, 0xfb, 0xf3, 0xa4, 0x87, 0xfb, 0x87, 0xf7, 0x03, 0xf8, 0x89, 0x5c,
0x12, 0x0a, 0xc4, 0x08, 0x44, 0x59, 0xe9, 0x36, 0xff, 0x8b, 0x45, 0x01, 0x89,
0x44, 0x3a, 0x3b, 0x44, 0x38, 0x75, 0x0b, 0x8b, 0x44, 0x0a, 0x2b, 0x44, 0x0c,
0x75, 0x03, 0x88, 0x44, 0x4b, 0x83, 0xc7, 0x03, 0xe9, 0x1a, 0xff, 0x8b, 0x6c,
0x20, 0x8a, 0x5d, 0x01, 0x83, 0xe3, 0x0f, 0xd0, 0xe3, 0x2e, 0xff, 0xa7, 0x84,
0x0a, 0x07, 0x0b, 0xa4, 0x0a, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b,
0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0xb0,
0x0a, 0x07, 0x0b, 0x07, 0x0b, 0x07, 0x0b, 0x8b, 0x45, 0x02, 0x89, 0x44, 0x42,
0x83, 0xc7, 0x04, 0xe9, 0xde, 0xfe, 0xf6, 0x44, 0x28, 0x01, 0x75, 0x51, 0xf6,
0x44, 0x28, 0x02, 0x74, 0x07, 0x80, 0x4c, 0x4f, 0x01, 0xeb, 0x45, 0x90, 0x57,
0x06, 0x8b, 0x7c, 0x12, 0x8e, 0x44, 0x10, 0x32, 0xc0, 0xf6, 0x44, 0x28, 0x08,
0x74, 0x23, 0x26, 0xc6, 0x05, 0xff, 0x47, 0x23, 0x7c, 0x16, 0x3b, 0x7c, 0x14,
0x74, 0x33, 0xb4, 0x10, 0xf6, 0x44, 0x29, 0x80, 0x75, 0x02, 0x32, 0xe4, 0x26,
0x88, 0x25, 0x47, 0x23, 0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x1d, 0x26, 0x88,
0x05, 0x47, 0x23, 0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x11, 0x89, 0x7c, 0x12,
0x07, 0x5f, 0x83, 0xc7, 0x04, 0xe9, 0x81, 0xfe, 0xb8, 0x0b, 0x00, 0xe9, 0xad,
0xfe, 0x4f, 0x23, 0x7c, 0x16, 0x89, 0x7c, 0x12, 0xc6, 0x44, 0x59, 0x01, 0x07,
0x5f, 0x83, 0xc7, 0x04, 0xe9, 0x68, 0xfe, 0x8b, 0x45, 0x01, 0x08, 0x44, 0x4f,
0x8a, 0x44, 0x54, 0x32, 0xc4, 0x22, 0x44, 0x56, 0x08, 0x44, 0x58, 0x88, 0x64,
0x54, 0x83, 0xc7, 0x03, 0xe9, 0x4e, 0xfe, 0x80, 0x3d, 0xff, 0x75, 0x04, 0x47,
0xe9, 0x45, 0xfe, 0x81, 0x3d, 0xf4, 0xb3, 0x75, 0x13, 0x81, 0x7d, 0x02, 0xc3,
0x95, 0x75, 0x0c, 0x83, 0xc7, 0x04, 0x8b, 0x4d, 0x08, 0x81, 0xf9, 0x80, 0x00,
0x76, 0x06, 0xb8, 0x0c, 0x00, 0xe9, 0x58, 0xfe, 0x8b, 0xdf, 0x83, 0xc3, 0x0a,
0x8a, 0x15, 0x80, 0xfa, 0x02, 0x74, 0x02, 0x03, 0xd9, 0x39, 0x06, 0x28, 0x54,
0x74, 0x42, 0xa0, 0x30, 0x0c, 0x32, 0x05, 0x8a, 0x26, 0x32, 0x0c, 0x32, 0x65,
0x02, 0x8b, 0x16, 0x34, 0x0c, 0x33, 0x55, 0x04, 0x0b, 0xc2, 0x8b, 0x16, 0x36,
0x0c, 0x33, 0x55, 0x06, 0x0b, 0xc2, 0x75, 0x22, 0x89, 0x0e, 0x38, 0x0c, 0x80,
0xfa, 0x02, 0x74, 0x0e, 0x8b, 0xf7, 0x83, 0xc6, 0x0a, 0xbf, 0x3a, 0x0c, 0x8c,
0xd8, 0x8e, 0xc0, 0xf3, 0xa4, 0xc7, 0x06, 0x28, 0x54, 0x00, 0x00, 0xc6, 0x06,
0x30, 0x0c, 0x00, 0x8b, 0xfb, 0xe9, 0xcb, 0xfd, 0x55, 0x56, 0x57, 0x8b, 0x3e,
0x12, 0x0d, 0x3b, 0x3e, 0x10, 0x0d, 0x74, 0x1f, 0x81, 0xc7, 0x00, 0x04, 0x8a,
0x7d, 0x01, 0x81, 0xe3, 0x00, 0x7f, 0xd1, 0xeb, 0x81, 0xc3, 0x00, 0x10, 0x8b,
0xf3, 0x8a, 0x1d, 0x83, 0xe3, 0x1f, 0x03, 0xdb, 0x2e, 0xff, 0xa7, 0x2d, 0x0c,
0x5f, 0x5e, 0x5d, 0xc3, 0x8b, 0x3e, 0x12, 0x0d, 0x8b, 0x36, 0x18, 0x0d, 0x8b,
0x9d, 0x00, 0x04, 0x89, 0x9c, 0x00, 0x08, 0x8b, 0x9d, 0x02, 0x04, 0x89, 0x9c,
0x02, 0x08, 0x83, 0xc6, 0x04, 0x81, 0xe6, 0xfc, 0x03, 0x3b, 0x36, 0x1a, 0x0d,
0x74, 0x04, 0x89, 0x36, 0x18, 0x0d, 0x8b, 0x3e, 0x12, 0x0d, 0x83, 0xc7, 0x04,
0x81, 0xe7, 0xfc, 0x03, 0x89, 0x3e, 0x12, 0x0d, 0xeb, 0x99, 0x6d, 0x0c, 0x7c,
0x0c, 0x8b, 0x0c, 0xbc, 0x0c, 0xcb, 0x0c, 0xf3, 0x0b, 0xda, 0x0c, 0xf3, 0x0b,
0xeb, 0x0c, 0x02, 0x0d, 0x17, 0x0d, 0x27, 0x0d, 0x38, 0x0d, 0x41, 0x0d, 0x53,
0x0d, 0x44, 0x0d, 0x62, 0x0d, 0x71, 0x0d, 0x74, 0x0d, 0x97, 0x0d, 0xa8, 0x0d,
0xbf, 0x0d, 0xcf, 0x0d, 0xf3, 0x0b, 0xf3, 0x0b, 0xf3, 0x0b, 0xf3, 0x0b, 0xf3,
0x0b, 0xf3, 0x0b, 0xf3, 0x0b, 0xdd, 0x0d, 0xf3, 0x0b, 0x8b, 0x45, 0x02, 0x23,
0x44, 0x16, 0x89, 0x44, 0x1a, 0x83, 0x4c, 0x2e, 0x04, 0xeb, 0xa0, 0x8b, 0x45,
0x02, 0x23, 0x44, 0x16, 0x89, 0x44, 0x1c, 0x83, 0x4c, 0x2e, 0x08, 0xeb, 0x91,
0x8b, 0x5d, 0x02, 0x8b, 0x44, 0x0a, 0x2b, 0x44, 0x0c, 0x23, 0x44, 0x0e, 0x8b,
0x4c, 0x0a, 0x2b, 0xcb, 0x23, 0x4c, 0x0e, 0x2b, 0xc1, 0x72, 0x0c, 0x23, 0x5c,
0x0e, 0x89, 0x5c, 0x0c, 0x8b, 0x44, 0x38, 0xeb, 0x04, 0x90, 0x03, 0x44, 0x38,
0x89, 0x44, 0x36, 0x83, 0x4c, 0x2e, 0x10, 0xe9, 0x60, 0xff, 0x80, 0x4c, 0x64,
0x40, 0x80, 0x64, 0x64, 0x7f, 0x83, 0x4c, 0x2e, 0x01, 0xe9, 0x51, 0xff, 0x80,
0x4c, 0x64, 0x80, 0x80, 0x64, 0x64, 0xbf, 0x83, 0x4c, 0x2e, 0x01, 0xe9, 0x42,
0xff, 0x8b, 0x45, 0x02, 0x88, 0x44, 0x5a, 0x88, 0x64, 0x5b, 0x81, 0x4c, 0x2e,
0x00, 0x20, 0xe9, 0x31, 0xff, 0x8b, 0x45, 0x02, 0x75, 0x03, 0xb8, 0x19, 0x00,
0x01, 0x44, 0x24, 0x81, 0x4c, 0x2e, 0x00, 0x10, 0x80, 0x4c, 0x4b, 0x01, 0xe9,
0x1a, 0xff, 0x8b, 0x5d, 0x02, 0xf6, 0xd7, 0x22, 0x7c, 0x68, 0x0a, 0xdf, 0x88,
0x5c, 0x68, 0x81, 0x4c, 0x2e, 0x00, 0x01, 0xe9, 0x05, 0xff, 0x8b, 0x5d, 0x02,
0x88, 0x5c, 0x28, 0x88, 0x7c, 0x29, 0x83, 0x4c, 0x2e, 0x40, 0xe9, 0xf5, 0xfe,
0x8b, 0x45, 0x02, 0x88, 0x44, 0x5c, 0x88, 0x64, 0x5d, 0x81, 0x4c, 0x2e, 0x00,
0x08, 0xe9, 0xe4, 0xfe, 0x8b, 0x45, 0x02, 0x89, 0x44, 0x18, 0xe9, 0xdb, 0xfe,
0xe9, 0xaf, 0xfe, 0x80, 0x4c, 0x64, 0x20, 0x80, 0x64, 0x64, 0xef, 0x83, 0x4c,
0x2e, 0x01, 0xe9, 0xc9, 0xfe, 0x80, 0x4c, 0x64, 0x10, 0x80, 0x64, 0x64, 0xdf,
0x83, 0x4c, 0x2e, 0x01, 0xe9, 0xba, 0xfe, 0xe8, 0x82, 0x01, 0xc6, 0x44, 0x64,
0x01, 0xc7, 0x44, 0x2e, 0x01, 0x00, 0xe9, 0xab, 0xfe, 0xe9, 0x7f, 0xfe, 0x8b,
0x45, 0x02, 0xc1, 0xe0, 0x06, 0x05, 0x00, 0x10, 0x8b, 0x1e, 0x0a, 0x0c, 0x81,
0xc3, 0x00, 0x01, 0x3b, 0xc3, 0x72, 0x0b, 0x3d, 0x00, 0x80, 0x77, 0x06, 0xe8,
0xa9, 0x00, 0xe9, 0x88, 0xfe, 0xe9, 0x5c, 0xfe, 0x8b, 0x45, 0x02, 0x88, 0x44,
0x2a, 0x88, 0x64, 0x2b, 0x81, 0x4c, 0x2e, 0x80, 0x00, 0xe9, 0x74, 0xfe, 0x8b,
0x5d, 0x02, 0xf6, 0xd7, 0x22, 0x7c, 0x5f, 0x0a, 0xdf, 0x8a, 0xfb, 0x88, 0x5c,
0x5f, 0x81, 0x4c, 0x2e, 0x00, 0x02, 0xe9, 0x5d, 0xfe, 0x8b, 0x5d, 0x02, 0x88,
0x5c, 0x2c, 0x88, 0x7c, 0x2d, 0x83, 0x4c, 0x2e, 0x20, 0xe9, 0x4d, 0xfe, 0x8a,
0x45, 0x02, 0x88, 0x44, 0x5e, 0x81, 0x4c, 0x2e, 0x00, 0x04, 0xe9, 0x3f, 0xfe,
0xc6, 0x44, 0x64, 0x02, 0x83, 0x4c, 0x2e, 0x01, 0xe9, 0x34, 0xfe, 0x55, 0x8b,
0xec, 0x56, 0x57, 0x8b, 0x5e, 0x04, 0x8b, 0x4f, 0x04, 0x8b, 0x37, 0x8b, 0x47,
0x06, 0x3b, 0x06, 0x28, 0x54, 0x75, 0x06, 0xc7, 0x06, 0x28, 0x54, 0x00, 0x00,
0x33, 0xc0, 0x32, 0xdb, 0x88, 0x5c, 0x65, 0x89, 0x44, 0x42, 0x89, 0x44, 0x3c,
0x89, 0x44, 0x3e, 0x89, 0x44, 0x38, 0x89, 0x44, 0x3a, 0x8b, 0x54, 0x12, 0x89,
0x54, 0x14, 0x89, 0x44, 0x24, 0x88, 0x44, 0x4b, 0xc7, 0x44, 0x2e, 0xee, 0x2f,
0x88, 0x44, 0x64, 0x81, 0xc6, 0x80, 0x00, 0xfe, 0xc3, 0xe2, 0xd2, 0x5f, 0x5e,
0x5d, 0xc3, 0x8b, 0xf8, 0x2b, 0x06, 0x0a, 0x0c, 0x8b, 0xd8, 0x8b, 0x0e, 0x02,
0x0c, 0xbe, 0x00, 0x10, 0x33, 0xc0, 0x89, 0x44, 0x0a, 0x89, 0x44, 0x0c, 0x89,
0x44, 0x12, 0x89, 0x44, 0x14, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xee, 0x89, 0x36,
0x24, 0x54, 0xb8, 0x01, 0x00, 0x8b, 0xd0, 0xb3, 0x00, 0x8b, 0x0e, 0x02, 0x0c,
0xbe, 0x00, 0x10, 0x2b, 0xda, 0x72, 0x27, 0x89, 0x44, 0x16, 0x81, 0xc6, 0x80,
0x00, 0xe2, 0xf3, 0x8b, 0x0e, 0x02, 0x0c, 0xbe, 0x00, 0x10, 0x2b, 0xda, 0x72,
0x13, 0x89, 0x44, 0x0e, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xf3, 0x8b, 0xd0, 0x03,
0xc0, 0x81, 0xfa, 0x00, 0x04, 0x72, 0xce, 0x8b, 0x0e, 0x02, 0x0c, 0xbe, 0x00,
0x10, 0x8b, 0x44, 0x16, 0x2b, 0xf8, 0x8b, 0xd7, 0x81, 0xe2, 0x00, 0x40, 0x03,
0xd2, 0x0b, 0xd7, 0x89, 0x54, 0x10, 0xc1, 0xe0, 0x04, 0x48, 0x89, 0x44, 0x16,
0x81, 0xc6, 0x80, 0x00, 0xe2, 0xe1, 0x8b, 0x0e, 0x02, 0x0c, 0xbe, 0x00, 0x10,
0x8b, 0x44, 0x0e, 0x2b, 0xf8, 0x8b, 0xd7, 0x81, 0xe2, 0x00, 0x40, 0x03, 0xd2,
0x0b, 0xd7, 0x89, 0x54, 0x08, 0xc1, 0xe0, 0x04, 0x48, 0x89, 0x44, 0x0e, 0x81,
0xc6, 0x80, 0x00, 0xe2, 0xe1, 0xc3, 0x33, 0xc0, 0x89, 0x44, 0x0a, 0x89, 0x44,
0x0c, 0x89, 0x44, 0x12, 0x89, 0x44, 0x14, 0x89, 0x44, 0x18, 0x89, 0x44, 0x1a,
0xc7, 0x44, 0x1c, 0xff, 0xff, 0x89, 0x44, 0x24, 0x88, 0x44, 0x28, 0x88, 0x64,
0x29, 0x88, 0x44, 0x2a, 0x88, 0x64, 0x2b, 0xc6, 0x44, 0x2c, 0x3f, 0xc6, 0x44,
0x2d, 0x00, 0xc7, 0x44, 0x2e, 0xee, 0x2f, 0x89, 0x44, 0x38, 0x89, 0x44, 0x3a,
0x89, 0x44, 0x3c, 0x89, 0x44, 0x3e, 0x89, 0x44, 0x42, 0x88, 0x44, 0x4b, 0x88,
0x44, 0x4c, 0x88, 0x44, 0x4d, 0x88, 0x44, 0x4e, 0x88, 0x44, 0x4f, 0x88, 0x44,
0x59, 0x88, 0x44, 0x54, 0x88, 0x44, 0x68, 0x88, 0x44, 0x56, 0x88, 0x44, 0x57,
0x88, 0x44, 0x58, 0x88, 0x44, 0x59, 0x88, 0x44, 0x64, 0xc6, 0x44, 0x5d, 0x13,
0xc6, 0x44, 0x5c, 0x11, 0x88, 0x44, 0x5b, 0x88, 0x44, 0x5a, 0x88, 0x44, 0x5e,
0x88, 0x44, 0x5f, 0x88, 0x44, 0x69, 0xc3, 0x55, 0x56, 0x57, 0xa1, 0x08, 0x0c,
0xc1, 0xe0, 0x06, 0xe8, 0xc4, 0xfe, 0xbe, 0x00, 0x10, 0x32, 0xdb, 0x88, 0x5c,
0x48, 0xfe, 0xc3, 0xc7, 0x44, 0x1e, 0x80, 0x00, 0xe8, 0x5f, 0xff, 0x81, 0xc6,
0x80, 0x00, 0x81, 0xfe, 0x00, 0x50, 0x72, 0xe9, 0x8b, 0x36, 0x24, 0x54, 0x81,
0xee, 0x80, 0x00, 0xb8, 0x00, 0x10, 0x2b, 0xc6, 0x89, 0x44, 0x1e, 0xc7, 0x06,
0x10, 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x12, 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x14,
0x0d, 0x00, 0x04, 0xc7, 0x06, 0x16, 0x0d, 0xfc, 0x03, 0xc7, 0x06, 0x18, 0x0d,
0x00, 0x00, 0xc7, 0x06, 0x1a, 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x1c, 0x0d, 0x00,
0x08, 0xc7, 0x06, 0x1e, 0x0d, 0xfc, 0x03, 0x5f, 0x5e, 0x5d, 0xc3, 0xc8, 0x12,
0x00, 0x00, 0x56, 0x8b, 0x76, 0x04, 0xe8, 0x0f, 0x1e, 0x8b, 0x4c, 0x46, 0xc1,
0xe1, 0x02, 0x03, 0xc8, 0x89, 0x4e, 0xf6, 0x51, 0xe8, 0xf7, 0xf3, 0x83, 0xc4,
0x02, 0x89, 0x46, 0xfa, 0x8b, 0x46, 0xf6, 0x40, 0x40, 0x50, 0xe8, 0xe8, 0xf3,
0x83, 0xc4, 0x02, 0x50, 0xe8, 0xe1, 0xf3, 0x83, 0xc4, 0x02, 0x48, 0x48, 0x89,
0x46, 0xf2, 0xff, 0x76, 0xfa, 0xff, 0x46, 0xfa, 0xe8, 0xc0, 0xf3, 0x83, 0xc4,
0x02, 0x89, 0x46, 0xf4, 0x3d, 0xff, 0x00, 0x75, 0x03, 0xe9, 0xb9, 0x00, 0xff,
0x76, 0xfa, 0xff, 0x46, 0xfa, 0xe8, 0xa9, 0xf3, 0x83, 0xc4, 0x02, 0x89, 0x46,
0xf8, 0x8b, 0x46, 0xf4, 0x2d, 0x10, 0x00, 0x74, 0x0e, 0x48, 0x74, 0x31, 0x48,
0x74, 0xcc, 0x48, 0x74, 0x37, 0x48, 0x74, 0x76, 0xeb, 0x0b, 0xc7, 0x46, 0xf4,
0x0c, 0x00, 0x8b, 0x46, 0xf2, 0x89, 0x46, 0xf8, 0x8a, 0x46, 0xf8, 0x8b, 0x5e,
0xf4, 0x88, 0x40, 0x6c, 0xff, 0x76, 0xf8, 0xff, 0x76, 0xf4, 0xff, 0x74, 0x26,
0xe8, 0x2d, 0xf3, 0x83, 0xc4, 0x06, 0xeb, 0x9f, 0x90, 0xc7, 0x46, 0xf4, 0x0d,
0x00, 0x8a, 0x46, 0xf3, 0x2a, 0xe4, 0xeb, 0xd6, 0x6a, 0x00, 0xe8, 0xbe, 0x1d,
0x83, 0xc4, 0x02, 0x24, 0x06, 0x3c, 0x02, 0x75, 0x08, 0xb8, 0x01, 0x00, 0x2b,
0x44, 0x24, 0xeb, 0x03, 0x8b, 0x44, 0x24, 0x89, 0x46, 0xfe, 0x8a, 0x4e, 0xfe,
0x8b, 0x46, 0xf8, 0xd3, 0xe0, 0x33, 0x06, 0x24, 0x0d, 0xba, 0x2a, 0x00, 0xd3,
0xe2, 0x23, 0xc2, 0x31, 0x06, 0x24, 0x0d, 0xff, 0x36, 0x24, 0x0d, 0x6a, 0x00,
0xe8, 0x94, 0x1d, 0x83, 0xc4, 0x04, 0xe9, 0x50, 0xff, 0x8a, 0x4c, 0x24, 0x8b,
0x46, 0xf8, 0xc1, 0xe8, 0x03, 0xd2, 0xe0, 0x08, 0x06, 0x0e, 0x0c, 0xa0, 0x0e,
0x0c, 0x2a, 0xe4, 0x50, 0x6a, 0x01, 0xe8, 0x74, 0x1d, 0x83, 0xc4, 0x04, 0xeb,
0xd2, 0x90, 0x5e, 0xc9, 0xc3, 0x90, 0x56, 0x68, 0x0d, 0x02, 0xe8, 0x56, 0x1d,
0x83, 0xc4, 0x02, 0x6a, 0x30, 0x68, 0x08, 0x02, 0xe8, 0x58, 0x1d, 0x83, 0xc4,
0x04, 0x68, 0x84, 0x00, 0xe8, 0x42, 0x1d, 0x83, 0xc4, 0x02, 0x68, 0xc0, 0x00,
0x6a, 0x09, 0x68, 0x84, 0x00, 0xe8, 0x8c, 0xf2, 0x83, 0xc4, 0x06, 0xbe, 0x50,
0x7c, 0xeb, 0x79, 0x90, 0x8b, 0x44, 0x24, 0x05, 0x24, 0x00, 0xd1, 0xe0, 0x50,
0x68, 0x0b, 0x02, 0xe8, 0x29, 0x1d, 0x83, 0xc4, 0x04, 0x8b, 0x44, 0x24, 0xd1,
0xe0, 0x05, 0x45, 0x00, 0x50, 0x68, 0x0b, 0x02, 0xe8, 0x17, 0x1d, 0x83, 0xc4,
0x04, 0x56, 0xe8, 0x9a, 0xfe, 0x83, 0xc4, 0x02, 0xff, 0x74, 0x04, 0x8b, 0x44,
0x24, 0xc1, 0xe0, 0x02, 0x05, 0x02, 0x02, 0x50, 0xe8, 0x20, 0xf2, 0x83, 0xc4,
0x04, 0x68, 0xb8, 0x0b, 0x8b, 0x44, 0x24, 0xc1, 0xe0, 0x02, 0x05, 0x03, 0x02,
0x50, 0xe8, 0x0d, 0xf2, 0x83, 0xc4, 0x04, 0x8b, 0x44, 0x24, 0xd1, 0xe0, 0x40,
0x50, 0x68, 0x0a, 0x02, 0xe8, 0xda, 0x1c, 0x83, 0xc4, 0x04, 0x8a, 0x44, 0x6f,
0x0c, 0x01, 0x2a, 0xe4, 0x50, 0x6a, 0x03, 0xff, 0x74, 0x26, 0xe8, 0x12, 0xf2,
0x83, 0xc4, 0x06, 0x81, 0xc6, 0xa8, 0x01, 0x39, 0x36, 0xa0, 0x7f, 0x77, 0x82,
0x5e, 0xc3, 0xc8, 0x16, 0x00, 0x00, 0x57, 0x56, 0xc7, 0x06, 0x76, 0x7c, 0x80,
0x00, 0xc7, 0x06, 0x1e, 0x7e, 0x84, 0x00, 0xc7, 0x06, 0x74, 0x7c, 0x00, 0x00,
0xc7, 0x06, 0x1c, 0x7e, 0x01, 0x00, 0xc7, 0x06, 0x28, 0x0d, 0x50, 0x7c, 0xc7,
0x06, 0x2a, 0x0d, 0xf8, 0x7d, 0xc7, 0x06, 0x54, 0x7c, 0x00, 0x80, 0xc7, 0x06,
0xfc, 0x7d, 0x00, 0xa8, 0xc7, 0x06, 0x22, 0x0d, 0x00, 0x50, 0xbe, 0x50, 0x7c,
0xbf, 0x1e, 0x7b, 0xc7, 0x46, 0xee, 0x00, 0x10, 0xc7, 0x46, 0xf2, 0xd0, 0x0c,
0x8b, 0x5e, 0xf2, 0x80, 0x3f, 0x00, 0x74, 0x09, 0x68, 0xe4, 0x02, 0xe8, 0x5e,
0xef, 0x83, 0xc4, 0x02, 0xc7, 0x46, 0xf2, 0xd0, 0x0c, 0xe9, 0xf3, 0x01, 0x90,
0xc7, 0x04, 0x01, 0x01, 0x8b, 0x5e, 0xf2, 0x8a, 0x47, 0x01, 0x2a, 0xe4, 0x89,
0x44, 0x46, 0xe8, 0xe4, 0x1b, 0x8b, 0x4c, 0x46, 0xc1, 0xe1, 0x02, 0x03, 0xc8,
0x8b, 0xc1, 0x40, 0x40, 0x50, 0xe8, 0xcb, 0xf1, 0x83, 0xc4, 0x02, 0x89, 0x46,
0xfa, 0x40, 0x40, 0x50, 0xe8, 0xbf, 0xf1, 0x83, 0xc4, 0x02, 0x89, 0x44, 0x2e,
0x8b, 0x46, 0xfa, 0x05, 0x04, 0x00, 0x50, 0xe8, 0xaf, 0xf1, 0x83, 0xc4, 0x02,
0x89, 0x44, 0x30, 0x8b, 0x46, 0xfa, 0x40, 0x40, 0x50, 0xe8, 0xa0, 0xf1, 0x83,
0xc4, 0x02, 0x89, 0x44, 0x32, 0x8b, 0x46, 0xfa, 0x05, 0x06, 0x00, 0x50, 0xe8,
0x90, 0xf1, 0x83, 0xc4, 0x02, 0x89, 0x44, 0x34, 0x8b, 0x46, 0xfa, 0x05, 0x08,
0x00, 0x50, 0xe8, 0x80, 0xf1, 0x83, 0xc4, 0x02, 0x89, 0x44, 0x2a, 0x8b, 0x46,
0xfa, 0x05, 0x0a, 0x00, 0x50, 0xe8, 0x70, 0xf1, 0x83, 0xc4, 0x02, 0x89, 0x44,
0x2c, 0x8b, 0x44, 0x04, 0x89, 0x44, 0x08, 0x89, 0x44, 0x06, 0x8d, 0x44, 0x7c,
0x89, 0x44, 0x0e, 0x89, 0x44, 0x0c, 0x89, 0x44, 0x0a, 0x89, 0x7c, 0x14, 0x89,
0x7c, 0x12, 0x89, 0x7c, 0x10, 0x8d, 0x44, 0x52, 0x89, 0x46, 0xfc, 0x8b, 0xd8,
0xff, 0x46, 0xfc, 0xc6, 0x07, 0x01, 0x8b, 0x5e, 0xfc, 0xff, 0x46, 0xfc, 0xc6,
0x07, 0x01, 0x8a, 0x44, 0x46, 0x8b, 0x5e, 0xfc, 0xff, 0x46, 0xfc, 0x88, 0x07,
0xa1, 0x54, 0x54, 0xc1, 0xe0, 0x03, 0x05, 0x10, 0x0e, 0x89, 0x44, 0x18, 0xc7,
0x44, 0x1e, 0x00, 0x00, 0xff, 0x06, 0x54, 0x54, 0x81, 0xc6, 0xa8, 0x01, 0xe9,
0x0f, 0x01, 0x90, 0x81, 0xff, 0x3e, 0x7c, 0x72, 0x03, 0xe9, 0x22, 0x01, 0x81,
0xee, 0xa8, 0x01, 0x8b, 0x1e, 0x04, 0x0c, 0xd1, 0xe3, 0x89, 0xbf, 0x30, 0x0e,
0x89, 0x75, 0x12, 0xc7, 0x45, 0x08, 0x09, 0x00, 0xc6, 0x45, 0x1e, 0x01, 0x8b,
0x44, 0x1e, 0x89, 0x45, 0x0a, 0xff, 0x44, 0x1e, 0x8b, 0x5c, 0x18, 0x03, 0x5d,
0x0a, 0x89, 0x5d, 0x14, 0xc6, 0x07, 0x01, 0xa1, 0x04, 0x0c, 0x40, 0x89, 0x45,
0x06, 0x8b, 0x5e, 0xf2, 0xf6, 0x07, 0x80, 0x74, 0x09, 0xc7, 0x44, 0x4c, 0x01,
0x00, 0x80, 0x4c, 0x52, 0x10, 0x8b, 0x5e, 0xf2, 0x8a, 0x07, 0x25, 0x7f, 0x00,
0x89, 0x45, 0x04, 0x8b, 0x46, 0xee, 0x89, 0x05, 0x8b, 0x45, 0x04, 0xc1, 0xe0,
0x07, 0x01, 0x46, 0xee, 0xa1, 0x02, 0x0c, 0x89, 0x45, 0x02, 0x8b, 0x45, 0x04,
0x01, 0x06, 0x02, 0x0c, 0x8b, 0x5e, 0xf2, 0x8a, 0x47, 0x01, 0x88, 0x45, 0x1f,
0x8b, 0x5e, 0xfc, 0xff, 0x46, 0xfc, 0x88, 0x07, 0xe8, 0x8c, 0x1a, 0x8a, 0x4d,
0x1f, 0x2a, 0xed, 0xc1, 0xe1, 0x02, 0x03, 0xc8, 0x8b, 0xc1, 0x40, 0x40, 0x50,
0xe8, 0x71, 0xf0, 0x83, 0xc4, 0x02, 0x89, 0x46, 0xfa, 0x05, 0x06, 0x00, 0x50,
0xe8, 0x64, 0xf0, 0x83, 0xc4, 0x02, 0x39, 0x44, 0x34, 0x76, 0x03, 0x89, 0x44,
0x34, 0x8b, 0x46, 0xfa, 0x40, 0x40, 0x50, 0xe8, 0x50, 0xf0, 0x83, 0xc4, 0x02,
0x01, 0x44, 0x2e, 0x8b, 0x46, 0xfa, 0x05, 0x04, 0x00, 0x50, 0xe8, 0x40, 0xf0,
0x83, 0xc4, 0x02, 0x01, 0x44, 0x30, 0x8b, 0x46, 0xfa, 0x05, 0x08, 0x00, 0x50,
0xe8, 0x30, 0xf0, 0x83, 0xc4, 0x02, 0x39, 0x44, 0x2a, 0x73, 0x03, 0x89, 0x44,
0x2a, 0x8b, 0x46, 0xfa, 0x05, 0x0a, 0x00, 0x50, 0xe8, 0x1b, 0xf0, 0x83, 0xc4,
0x02, 0x39, 0x44, 0x2c, 0x73, 0x03, 0x89, 0x44, 0x2c, 0x8d, 0x45, 0x0c, 0x89,
0x45, 0x10, 0xff, 0x06, 0x04, 0x0c, 0x81, 0xc6, 0xa8, 0x01, 0x83, 0xc7, 0x24,
0x83, 0x46, 0xf2, 0x02, 0x8b, 0x5e, 0xf2, 0x80, 0x3f, 0xff, 0x74, 0x11, 0x80,
0x3f, 0x00, 0x74, 0x03, 0xe9, 0xde, 0xfe, 0x81, 0xfe, 0xa0, 0x7f, 0x73, 0x03,
0xe9, 0xf5, 0xfd, 0x89, 0x36, 0xa0, 0x7f, 0x89, 0x3e, 0x50, 0x54, 0xc7, 0x46,
0xf8, 0x1c, 0x7b, 0xc7, 0x46, 0xf4, 0x58, 0x54, 0xeb, 0x14, 0x90, 0x8b, 0x46,
0xf4, 0x8b, 0x5e, 0xf8, 0x89, 0x07, 0x8b, 0x46, 0xf4, 0x89, 0x46, 0xf8, 0x81,
0x46, 0xf4, 0x76, 0x06, 0x81, 0x7e, 0xf4, 0x1c, 0x7b, 0x72, 0xe6, 0xc7, 0x46,
0xf0, 0x06, 0x00, 0xa1, 0x0c, 0x0c, 0xc1, 0xe0, 0x04, 0x89, 0x46, 0xf4, 0xeb,
0x11, 0x8b, 0x46, 0xf4, 0x8b, 0x5e, 0xf8, 0x89, 0x07, 0x8b, 0x46, 0xf4, 0x89,
0x46, 0xf8, 0xff, 0x46, 0xf0, 0x81, 0x6e, 0xf4, 0x76, 0x06, 0x81, 0x7e, 0xf4,
0x00, 0xd0, 0x73, 0xe3, 0x83, 0x3e, 0x54, 0x54, 0x01, 0x77, 0x06, 0x8b, 0x46,
0xf0, 0xeb, 0x10, 0x90, 0x8b, 0x46, 0xf0, 0x8b, 0xc8, 0xd1, 0xe0, 0x03, 0xc1,
0xc1, 0xe8, 0x02, 0xa3, 0x32, 0x7e, 0xa3, 0x8a, 0x7c, 0xc7, 0x06, 0xa6, 0x7f,
0xa4, 0x7f, 0xc7, 0x06, 0xa2, 0x7f, 0x01, 0x00, 0xe8, 0x53, 0xfc, 0x5e, 0x5f,
0xc9, 0xc3, 0x90, 0x83, 0x3e, 0x52, 0x54, 0x00, 0x74, 0x09, 0x68, 0x5a, 0x04,
0xe8, 0xab, 0xec, 0x83, 0xc4, 0x02, 0xc7, 0x06, 0x52, 0x54, 0x01, 0x00, 0xc3,
0x90, 0x83, 0x3e, 0x52, 0x54, 0x01, 0x74, 0x14, 0x68, 0x68, 0x04, 0xe8, 0x93,
0xec, 0x83, 0xc4, 0x02, 0xeb, 0x09, 0xc7, 0x06, 0x52, 0x54, 0x01, 0x00, 0xe8,
0x91, 0x0f, 0xc7, 0x06, 0x52, 0x54, 0x00, 0x00, 0x83, 0x3e, 0xa2, 0x7f, 0x00,
0x75, 0xea, 0xc3, 0x90, 0x55, 0x8b, 0xec, 0x56, 0x8b, 0x76, 0x04, 0x83, 0x06,
0x44, 0x0d, 0x01, 0x83, 0x16, 0x46, 0x0d, 0x00, 0x83, 0x3e, 0x52, 0x54, 0x00,
0x74, 0x06, 0xf6, 0x44, 0x01, 0x10, 0x74, 0x09, 0x68, 0x8e, 0x04, 0xe8, 0x52,
0xec, 0x83, 0xc4, 0x02, 0x68, 0xfc, 0x00, 0x68, 0x28, 0xff, 0xe8, 0x5f, 0x19,
0x83, 0xc4, 0x04, 0x80, 0x4c, 0x01, 0x10, 0x8b, 0x44, 0x24, 0x40, 0x40, 0xd1,
0xe0, 0x50, 0x68, 0x0a, 0x02, 0xe8, 0x31, 0x19, 0x83, 0xc4, 0x04, 0xff, 0x76,
0x06, 0x8b, 0x44, 0x24, 0x05, 0x80, 0x00, 0xc1, 0xe0, 0x02, 0x50, 0xe8, 0x41,
0xee, 0x83, 0xc4, 0x04, 0x8b, 0x46, 0x08, 0x48, 0x50, 0x8b, 0x44, 0x24, 0xc1,
0xe0, 0x02, 0x05, 0x01, 0x02, 0x50, 0xe8, 0x2c, 0xee, 0x83, 0xc4, 0x04, 0xff,
0x74, 0x26, 0xe8, 0xf3, 0x18, 0x83, 0xc4, 0x02, 0xa8, 0x04, 0x74, 0x11, 0x8b,
0x44, 0x24, 0xd1, 0xe0, 0x50, 0x68, 0x0a, 0x02, 0xe8, 0xed, 0x18, 0x83, 0xc4,
0x04, 0xeb, 0x0e, 0x83, 0x06, 0x68, 0x0d, 0x01, 0x83, 0x16, 0x6a, 0x0d, 0x00,
0x80, 0x4c, 0x01, 0x20, 0x68, 0xdc, 0x00, 0x68, 0x28, 0xff, 0xe8, 0xea, 0x18,
0x83, 0xc4, 0x04, 0x8b, 0x46, 0x06, 0x89, 0x44, 0x16, 0x8b, 0x46, 0x08, 0x89,
0x44, 0x48, 0x8b, 0x44, 0x32, 0x03, 0x06, 0x00, 0x0e, 0x89, 0x44, 0x02, 0x5e,
0xc9, 0xc3, 0x90, 0xc8, 0x02, 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b,
0x7e, 0x06, 0x8b, 0x44, 0x12, 0x8b, 0xd8, 0x83, 0x7f, 0x4c, 0x00, 0x74, 0x07,
0x8a, 0x44, 0x0a, 0x2c, 0xf8, 0xeb, 0x03, 0x8a, 0x44, 0x0a, 0xc0, 0xe0, 0x04,
0x08, 0x05, 0xb8, 0xc3, 0xa5, 0x2b, 0x46, 0x08, 0x2b, 0x05, 0x89, 0x45, 0x02,
0xff, 0x76, 0x08, 0x57, 0xff, 0x74, 0x12, 0xe8, 0x03, 0xff, 0x83, 0xc4, 0x06,
0x5e, 0x5f, 0xc9, 0xc3, 0x55, 0x8b, 0xec, 0x57, 0x56, 0x8b, 0x76, 0x04, 0xf6,
0x44, 0x01, 0x01, 0x75, 0x09, 0x68, 0xdb, 0x04, 0xe8, 0x5e, 0xeb, 0x83, 0xc4,
0x02, 0xf6, 0x44, 0x01, 0x10, 0x74, 0x03, 0xe9, 0xc7, 0x00, 0xf6, 0x04, 0x01,
0x74, 0x31, 0xa1, 0x00, 0x0e, 0x05, 0xaa, 0x00, 0x89, 0x44, 0x20, 0x8b, 0x44,
0x1e, 0x05, 0x03, 0x00, 0x50, 0x8d, 0x44, 0x52, 0x50, 0x56, 0xe8, 0xbf, 0xfe,
0x83, 0xc4, 0x06, 0x2b, 0xff, 0xeb, 0x01, 0x47, 0x83, 0xff, 0x08, 0x7c, 0x03,
0xe9, 0x92, 0x00, 0x8b, 0x5c, 0x18, 0x80, 0x21, 0xfb, 0xeb, 0xef, 0x90, 0xf6,
0x04, 0x02, 0x74, 0x35, 0xc6, 0x44, 0x62, 0x02, 0xc6, 0x44, 0x63, 0x00, 0xc6,
0x44, 0x64, 0x00, 0x6a, 0x03, 0x8d, 0x44, 0x62, 0x50, 0x56, 0xe8, 0x8b, 0xfe,
0x83, 0xc4, 0x06, 0x83, 0x7c, 0x4c, 0x00, 0x74, 0x4f, 0xc7, 0x44, 0x3e, 0x00,
0x00, 0xc7, 0x44, 0x40, 0x00, 0x00, 0x81, 0x24, 0xfd, 0xfc, 0xff, 0x06, 0xa2,
0x7f, 0x5e, 0x5f, 0xc9, 0xc3, 0xf6, 0x04, 0x08, 0x74, 0x41, 0xc6, 0x06, 0x00,
0x50, 0x04, 0x83, 0x3e, 0x00, 0x0d, 0x00, 0x74, 0x09, 0x68, 0x19, 0x05, 0xe8,
0xcb, 0xea, 0x83, 0xc4, 0x02, 0xf6, 0x04, 0x10, 0x75, 0x09, 0x68, 0x1a, 0x05,
0xe8, 0xbd, 0xea, 0x83, 0xc4, 0x02, 0xa1, 0x0a, 0x50, 0x05, 0x0c, 0x00, 0x50,
0x68, 0x00, 0x50, 0x56, 0xe8, 0x36, 0xfe, 0x83, 0xc4, 0x06, 0x8b, 0x44, 0x2e,
0x03, 0x06, 0x00, 0x0e, 0x89, 0x44, 0x20, 0xeb, 0x0a, 0x90, 0x68, 0x23, 0x05,
0xe8, 0x96, 0xea, 0x83, 0xc4, 0x02, 0x80, 0x64, 0x01, 0xfe, 0x80, 0x4c, 0x01,
0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0xc8, 0x04, 0x00, 0x00, 0x57, 0x56, 0x8b,
0x76, 0x04, 0x8b, 0x7c, 0x12, 0xf6, 0x44, 0x08, 0x78, 0x75, 0x09, 0x68, 0x38,
0x05, 0xe8, 0x6e, 0xea, 0x83, 0xc4, 0x02, 0xf7, 0x05, 0x0f, 0x10, 0x74, 0x03,
0xe9, 0x70, 0x01, 0x8a, 0x44, 0x08, 0x24, 0x09, 0x3c, 0x09, 0x75, 0x2d, 0xc6,
0x45, 0x62, 0x05, 0x8a, 0x44, 0x1e, 0x88, 0x45, 0x63, 0x6a, 0x04, 0x8d, 0x45,
0x62, 0x50, 0x56, 0xe8, 0x91, 0xfe, 0x83, 0xc4, 0x06, 0x80, 0x64, 0x08, 0xf7,
0x80, 0x4c, 0x08, 0x04, 0x8b, 0x45, 0x30, 0x03, 0x06, 0x00, 0x0e, 0x89, 0x44,
0x16, 0x5e, 0x5f, 0xc9, 0xc3, 0xf6, 0x44, 0x08, 0x10, 0x74, 0x1e, 0xc6, 0x45,
0x62, 0x06, 0xc6, 0x45, 0x63, 0x00, 0x6a, 0x04, 0x8d, 0x45, 0x62, 0x50, 0x56,
0xe8, 0x60, 0xfe, 0x83, 0xc4, 0x06, 0x80, 0x64, 0x08, 0x0f, 0x5e, 0x5f, 0xc9,
0xc3, 0x90, 0x8a, 0x44, 0x08, 0x24, 0x0a, 0x3c, 0x0a, 0x75, 0x09, 0x88, 0x45,
0x62, 0x8a, 0x44, 0x23, 0xeb, 0xa5, 0x90, 0xf6, 0x44, 0x08, 0x60, 0x74, 0x3c,
0x8a, 0x44, 0x08, 0x25, 0x20, 0x00, 0x3d, 0x01, 0x00, 0x1a, 0xc0, 0x24, 0xfe,
0x04, 0x0b, 0x88, 0x45, 0x62, 0x8a, 0x44, 0x23, 0x88, 0x45, 0x63, 0x6a, 0x04,
0x8d, 0x45, 0x62, 0x50, 0x56, 0xe8, 0x1a, 0xfe, 0x83, 0xc4, 0x06, 0x80, 0x64,
0x08, 0x1f, 0x8a, 0x44, 0x22, 0x38, 0x44, 0x21, 0x74, 0x03, 0xe9, 0xca, 0x00,
0x80, 0x64, 0x08, 0xf7, 0x5e, 0x5f, 0xc9, 0xc3, 0x8a, 0x44, 0x22, 0x38, 0x44,
0x21, 0x75, 0x03, 0xe9, 0x8d, 0x00, 0x8b, 0x44, 0x0e, 0x89, 0x46, 0xfe, 0x8b,
0xd8, 0xc6, 0x47, 0x04, 0x07, 0x8a, 0x44, 0x21, 0xc0, 0xe0, 0x04, 0x02, 0x44,
0x23, 0x8b, 0x5e, 0xfe, 0x88, 0x47, 0x05, 0x8b, 0x5e, 0xfe, 0xff, 0x77, 0x02,
0x8b, 0xc3, 0x05, 0x04, 0x00, 0x50, 0x56, 0xe8, 0xca, 0xfd, 0x83, 0xc4, 0x06,
0xf6, 0x44, 0x08, 0x04, 0x75, 0x0e, 0x80, 0x4c, 0x08, 0x04, 0x8b, 0x45, 0x30,
0x03, 0x06, 0x00, 0x0e, 0x89, 0x44, 0x16, 0x8a, 0x44, 0x21, 0xfe, 0xc0, 0x24,
0x0f, 0x88, 0x44, 0x21, 0x8b, 0x5e, 0xfe, 0x8b, 0x07, 0x89, 0x44, 0x0e, 0x8a,
0x44, 0x22, 0x38, 0x44, 0x21, 0x75, 0x28, 0x80, 0x64, 0x08, 0xf7, 0x80, 0x4c,
0x09, 0x02, 0x8b, 0x45, 0x34, 0x8b, 0x5e, 0xfe, 0x39, 0x47, 0x02, 0x72, 0x06,
0x8b, 0x45, 0x2a, 0xeb, 0x04, 0x90, 0x8b, 0x45, 0x2c, 0x89, 0x46, 0xfc, 0xa1,
0x00, 0x0e, 0x03, 0x46, 0xfc, 0x89, 0x44, 0x18, 0x80, 0x64, 0x08, 0x7f, 0x5e,
0x5f, 0xc9, 0xc3, 0x90, 0xf6, 0x44, 0x08, 0x80, 0x75, 0x09, 0x68, 0xbb, 0x05,
0xe8, 0x10, 0xe9, 0x83, 0xc4, 0x02, 0xc6, 0x45, 0x62, 0x08, 0x8a, 0x44, 0x23,
0x88, 0x45, 0x63, 0x6a, 0x04, 0x8d, 0x45, 0x62, 0x50, 0x56, 0xe8, 0x45, 0xfd,
0x83, 0xc4, 0x06, 0x80, 0x64, 0x08, 0x77, 0x5e, 0x5f, 0xc9, 0xc3, 0x55, 0x8b,
0xec, 0x57, 0x56, 0x8b, 0x76, 0x04, 0xa1, 0x1c, 0x7b, 0x8b, 0x5c, 0x10, 0x89,
0x07, 0x8b, 0x44, 0x0c, 0xa3, 0x1c, 0x7b, 0x8a, 0x44, 0x22, 0x2a, 0x44, 0x20,
0x25, 0x0f, 0x00, 0x8b, 0x5c, 0x12, 0x01, 0x47, 0x3a, 0x2b, 0xc0, 0x89, 0x44,
0x0e, 0x89, 0x44, 0x0c, 0x8d, 0x44, 0x0c, 0x89, 0x44, 0x10, 0x8b, 0x3e, 0xa4,
0x7f, 0xeb, 0x0d, 0x90, 0x39, 0x75, 0x02, 0x75, 0x04, 0xc7, 0x05, 0x03, 0x00,
0x8b, 0x7d, 0x04, 0x0b, 0xff, 0x75, 0xf0, 0x2a, 0xc0, 0x88, 0x44, 0x22, 0x88,
0x44, 0x21, 0x88, 0x44, 0x20, 0x88, 0x44, 0x23, 0x5e, 0x5f, 0xc9, 0xc3, 0x55,
0x8b, 0xec, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x5c, 0x12, 0x80, 0x4f, 0x01, 0x40,
0x56, 0xe8, 0x92, 0xff, 0x83, 0xc4, 0x02, 0x8a, 0x46, 0x06, 0x88, 0x44, 0x1e,
0x83, 0x64, 0x08, 0x10, 0x81, 0x4c, 0x08, 0x09, 0x01, 0xff, 0x06, 0x3e, 0x7c,
0x56, 0xe8, 0xe0, 0xfd, 0x83, 0xc4, 0x02, 0x5e, 0xc9, 0xc3, 0xc8, 0x04, 0x00,
0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x7c, 0x0e, 0xeb, 0x13, 0x83, 0x3d,
0x00, 0x75, 0x13, 0x8d, 0x84, 0xa8, 0x01, 0x83, 0xc7, 0x0a, 0x3b, 0xc7, 0x77,
0x03, 0x8d, 0x7c, 0x7c, 0x39, 0x7c, 0x0c, 0x75, 0xe8, 0x89, 0x7c, 0x0e, 0x39,
0x7c, 0x0a, 0x75, 0x06, 0x8b, 0x44, 0x06, 0xeb, 0x04, 0x90, 0x8b, 0x45, 0x06,
0x89, 0x44, 0x08, 0x39, 0x44, 0x06, 0x72, 0x69, 0x8b, 0x44, 0x04, 0x05, 0x44,
0x1c, 0x3b, 0x44, 0x06, 0x76, 0x08, 0x8b, 0x44, 0x04, 0x80, 0xc4, 0x28, 0xeb,
0x56, 0x8b, 0x44, 0x04, 0x2b, 0x44, 0x06, 0x05, 0x64, 0x28, 0x8b, 0x4c, 0x08,
0x2b, 0x4c, 0x04, 0x3b, 0xc1, 0x7f, 0xe5, 0xf6, 0x44, 0x01, 0xc0, 0x75, 0x34,
0x8b, 0x44, 0x04, 0x2b, 0x44, 0x06, 0x50, 0x8b, 0x44, 0x24, 0xd1, 0xe0, 0x40,
0x50, 0xe8, 0x1c, 0xeb, 0x83, 0xc4, 0x04, 0x89, 0x46, 0xfc, 0x8b, 0x44, 0x06,
0x89, 0x44, 0x1a, 0x8b, 0x46, 0xfc, 0x2b, 0x44, 0x04, 0x89, 0x44, 0x1c, 0x3d,
0xb8, 0x0b, 0x76, 0x09, 0x68, 0x43, 0x06, 0xe8, 0xc4, 0xe7, 0x83, 0xc4, 0x02,
0x8b, 0x44, 0x04, 0x89, 0x44, 0x06, 0x8b, 0x44, 0x08, 0x89, 0x46, 0xfc, 0x8b,
0x44, 0x06, 0x05, 0x04, 0x00, 0x29, 0x46, 0xfc, 0x81, 0x7e, 0xfc, 0xb8, 0x0b,
0x72, 0x07, 0xc7, 0x46, 0xfc, 0xb8, 0x0b, 0xeb, 0x0a, 0x83, 0x06, 0x84, 0x0d,
0x01, 0x83, 0x16, 0x86, 0x0d, 0x00, 0xf6, 0x44, 0x01, 0xc0, 0x75, 0x18, 0x8b,
0x44, 0x06, 0x03, 0x46, 0xfc, 0x50, 0x8b, 0x44, 0x24, 0xd1, 0xe0, 0x40, 0x50,
0xe8, 0x1b, 0xeb, 0x83, 0xc4, 0x04, 0x5e, 0x5f, 0xc9, 0xc3, 0xf6, 0x44, 0x01,
0x80, 0x74, 0x0e, 0x8a, 0x4c, 0x24, 0xb8, 0x40, 0x00, 0xd3, 0xe0, 0x50, 0x6a,
0x09, 0xeb, 0x1b, 0x90, 0x8a, 0x44, 0x6f, 0x2a, 0xe4, 0x50, 0x6a, 0x03, 0xff,
0x74, 0x26, 0xe8, 0x9f, 0xe9, 0x83, 0xc4, 0x06, 0x8a, 0x44, 0x7b, 0x25, 0xfb,
0x00, 0x50, 0x6a, 0x0f, 0xff, 0x74, 0x26, 0xe8, 0x8d, 0xe9, 0x83, 0xc4, 0x06,
0x8b, 0x44, 0x24, 0xd1, 0xe0, 0x40, 0x0c, 0x04, 0x50, 0x68, 0x0a, 0x02, 0xe8,
0x30, 0x14, 0x83, 0xc4, 0x04, 0xc7, 0x46, 0xfe, 0x06, 0x00, 0x6a, 0x30, 0xff,
0x74, 0x26, 0xe8, 0x20, 0x14, 0x83, 0xc4, 0x04, 0xff, 0x4e, 0xfe, 0x75, 0x46,
0xff, 0x74, 0x06, 0x8b, 0x44, 0x24, 0xc1, 0xe0, 0x02, 0x05, 0x02, 0x02, 0x50,
0xe8, 0x2b, 0xe9, 0x83, 0xc4, 0x04, 0x8b, 0x46, 0xfc, 0x48, 0x50, 0x8b, 0x44,
0x24, 0xc1, 0xe0, 0x02, 0x05, 0x03, 0x02, 0x50, 0xe8, 0x16, 0xe9, 0x83, 0xc4,
0x04, 0xf6, 0x44, 0x01, 0x80, 0x74, 0x32, 0x56, 0xe8, 0x70, 0xf5, 0x83, 0xc4,
0x02, 0x80, 0x64, 0x01, 0x0f, 0x83, 0x06, 0xd4, 0x0d, 0x01, 0x83, 0x16, 0xd6,
0x0d, 0x00, 0xeb, 0x3a, 0x90, 0x6a, 0x01, 0xff, 0x74, 0x26, 0xe8, 0x01, 0xe9,
0x83, 0xc4, 0x04, 0x8b, 0x44, 0x26, 0x40, 0x40, 0x50, 0xe8, 0xb1, 0x13, 0x83,
0xc4, 0x02, 0xeb, 0x91, 0x90, 0x8a, 0x44, 0x7b, 0x2a, 0xe4, 0x50, 0x6a, 0x0f,
0xff, 0x74, 0x26, 0xe8, 0xf5, 0xe8, 0x83, 0xc4, 0x06, 0x80, 0x64, 0x01, 0xbf,
0x83, 0x06, 0xd0, 0x0d, 0x01, 0x83, 0x16, 0xd2, 0x0d, 0x00, 0x83, 0x7e, 0xfc,
0x14, 0x72, 0x10, 0x8b, 0x44, 0x24, 0xd1, 0xe0, 0x40, 0x50, 0x68, 0x0a, 0x02,
0xe8, 0x86, 0x13, 0x83, 0xc4, 0x04, 0x8a, 0x44, 0x6f, 0x0c, 0x01, 0x2a, 0xe4,
0x50, 0x6a, 0x03, 0xff, 0x74, 0x26, 0xe8, 0xbe, 0xe8, 0x83, 0xc4, 0x06, 0x5e,
0x5f, 0xc9, 0xc3, 0xc8, 0x08, 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0xc7,
0x46, 0xfc, 0x00, 0x00, 0xe9, 0x65, 0x01, 0x90, 0xf6, 0x06, 0x13, 0x54, 0x40,
0x75, 0x37, 0xf6, 0x06, 0x14, 0x54, 0x80, 0x74, 0x0a, 0x83, 0x06, 0x7c, 0x0d,
0x01, 0x83, 0x16, 0x7e, 0x0d, 0x00, 0xf6, 0x06, 0x14, 0x54, 0x20, 0x75, 0x03,
0xe9, 0x63, 0x01, 0x83, 0x06, 0x8c, 0x0d, 0x01, 0x83, 0x16, 0x8e, 0x0d, 0x00,
0x80, 0x4c, 0x01, 0x40, 0x6a, 0x30, 0xff, 0x74, 0x26, 0xe8, 0x22, 0x13, 0x83,
0xc4, 0x04, 0xe9, 0x47, 0x01, 0xa1, 0x12, 0x54, 0x80, 0xe4, 0x3f, 0x89, 0x46,
0xfa, 0xa3, 0x24, 0x0e, 0x80, 0x36, 0x14, 0x54, 0x86, 0xf7, 0x06, 0x14, 0x54,
0xee, 0x80, 0x74, 0x5b, 0xf6, 0x06, 0x15, 0x54, 0x80, 0x74, 0x0a, 0x83, 0x06,
0xa4, 0x0d, 0x01, 0x83, 0x16, 0xa6, 0x0d, 0x00, 0xf6, 0x06, 0x14, 0x54, 0x80,
0x74, 0x0a, 0x83, 0x06, 0x94, 0x0d, 0x01, 0x83, 0x16, 0x96, 0x0d, 0x00, 0xf6,
0x06, 0x14, 0x54, 0x40, 0x74, 0x0a, 0x83, 0x06, 0x98, 0x0d, 0x01, 0x83, 0x16,
0x9a, 0x0d, 0x00, 0xf6, 0x06, 0x14, 0x54, 0x20, 0x74, 0x0a, 0x83, 0x06, 0x90,
0x0d, 0x01, 0x83, 0x16, 0x92, 0x0d, 0x00, 0xf6, 0x06, 0x14, 0x54, 0x0e, 0x75,
0x03, 0xe9, 0xdc, 0x00, 0x83, 0x06, 0x9c, 0x0d, 0x01, 0x83, 0x16, 0x9e, 0x0d,
0x00, 0xe9, 0xcf, 0x00, 0x83, 0x3e, 0xf8, 0x0d, 0x00, 0x74, 0x1b, 0x6a, 0x64,
0xe8, 0x76, 0x12, 0x83, 0xc4, 0x02, 0x3b, 0x06, 0xf8, 0x0d, 0x77, 0x0d, 0x83,
0x06, 0xd8, 0x0d, 0x01, 0x83, 0x16, 0xda, 0x0d, 0x00, 0xeb, 0x7d, 0x90, 0x8b,
0x7c, 0x0a, 0x8b, 0x44, 0x06, 0x2b, 0x44, 0x04, 0x3b, 0x44, 0x1c, 0x72, 0x06,
0x8b, 0x5c, 0x06, 0xeb, 0x0a, 0x90, 0x8b, 0x5c, 0x06, 0x2b, 0x5c, 0x04, 0x03,
0x5c, 0x1a, 0x8a, 0x07, 0x2a, 0xe4, 0x25, 0x0f, 0x00, 0x3d, 0x05, 0x00, 0x72,
0x05, 0x3d, 0x0b, 0x00, 0x76, 0x04, 0x80, 0x4c, 0x01, 0x40, 0x83, 0x3d, 0x00,
0x75, 0x3b, 0xc7, 0x05, 0x01, 0x00, 0x8b, 0x44, 0x06, 0x89, 0x45, 0x06, 0x8b,
0x46, 0xfa, 0x48, 0x48, 0x89, 0x45, 0x08, 0xc7, 0x45, 0x02, 0x00, 0x00, 0xc7,
0x45, 0x04, 0x00, 0x00, 0x8b, 0xc6, 0x83, 0xc7, 0x0a, 0x2b, 0xc7, 0x3d, 0x58,
0xfe, 0x75, 0x03, 0x8d, 0x7c, 0x7c, 0x8b, 0x44, 0x0e, 0x39, 0x44, 0x0a, 0x75,
0x03, 0x89, 0x7c, 0x0e, 0x89, 0x7c, 0x0a, 0xeb, 0x0a, 0x83, 0x06, 0xb0, 0x0d,
0x01, 0x83, 0x16, 0xb2, 0x0d, 0x00, 0x8b, 0x46, 0xfa, 0x01, 0x44, 0x06, 0x6a,
0x30, 0xff, 0x74, 0x26, 0xe8, 0xfc, 0x11, 0x83, 0xc4, 0x04, 0xff, 0x46, 0xfc,
0xff, 0x74, 0x26, 0xe8, 0x4f, 0xe7, 0x83, 0xc4, 0x02, 0xf6, 0x06, 0x13, 0x54,
0x80, 0x75, 0x03, 0xe9, 0x89, 0xfe, 0x83, 0x06, 0x88, 0x0d, 0x01, 0x83, 0x16,
0x8a, 0x0d, 0x00, 0x80, 0x4c, 0x01, 0x40, 0x83, 0x7e, 0xfc, 0x00, 0x74, 0x07,
0xc7, 0x44, 0x4a, 0x00, 0x00, 0xeb, 0x0f, 0x83, 0x7c, 0x4a, 0x14, 0x72, 0x09,
0xc7, 0x44, 0x4a, 0x00, 0x00, 0x80, 0x4c, 0x01, 0x40, 0x83, 0x7e, 0xfc, 0x05,
0x76, 0x05, 0xc7, 0x46, 0xfc, 0x05, 0x00, 0x8b, 0x5e, 0xfc, 0xc1, 0xe3, 0x02,
0x83, 0x87, 0x48, 0x0d, 0x01, 0x83, 0x97, 0x4a, 0x0d, 0x00, 0x8b, 0x44, 0x24,
0xc1, 0xe0, 0x02, 0x05, 0x02, 0x02, 0x50, 0xe8, 0xa1, 0xe6, 0x83, 0xc4, 0x02,
0x89, 0x46, 0xfc, 0x8b, 0x44, 0x06, 0xa3, 0x20, 0x0e, 0x8b, 0x46, 0xfc, 0xa3,
0x22, 0x0e, 0x39, 0x44, 0x06, 0x74, 0x20, 0x76, 0x14, 0x83, 0x06, 0x80, 0x0d,
0x01, 0x83, 0x16, 0x82, 0x0d, 0x00, 0xff, 0x06, 0x26, 0x0e, 0x80, 0x4c, 0x01,
0x40, 0xeb, 0x0a, 0x83, 0x06, 0x78, 0x0d, 0x01, 0x83, 0x16, 0x7a, 0x0d, 0x00,
0x56, 0xe8, 0xf6, 0xfb, 0x83, 0xc4, 0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0xc8,
0x0a, 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x7c, 0x0c, 0x8b, 0x45,
0x06, 0x89, 0x46, 0xf6, 0x8b, 0x45, 0x08, 0x89, 0x46, 0xfa, 0x8b, 0x5e, 0xf6,
0x8a, 0x07, 0x25, 0x0f, 0x00, 0x48, 0x74, 0x17, 0x48, 0x75, 0x03, 0xe9, 0xdb,
0x00, 0x48, 0x75, 0x03, 0xe9, 0x29, 0x01, 0x48, 0x75, 0x03, 0xe9, 0x67, 0x01,
0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x8b, 0x5e, 0xfa, 0x03, 0x5e, 0xf6, 0x80, 0x7f,
0xff, 0xff, 0x75, 0x03, 0xff, 0x4e, 0xfa, 0x8b, 0x44, 0x1e, 0x2b, 0x46, 0xfa,
0x3d, 0xfd, 0xff, 0x74, 0x03, 0xe9, 0xab, 0x01, 0xf6, 0x04, 0x01, 0x75, 0x03,
0xe9, 0x97, 0x00, 0xc6, 0x44, 0x53, 0x00, 0x8b, 0x5e, 0xf6, 0x8a, 0x07, 0xc0,
0xe8, 0x04, 0x2a, 0xe4, 0x89, 0x46, 0xfe, 0x8b, 0x44, 0x14, 0x2b, 0x44, 0x10,
0xb9, 0x24, 0x00, 0x99, 0xf7, 0xf9, 0x3b, 0x46, 0xfe, 0x74, 0x28, 0x6b, 0x44,
0x1e, 0x24, 0x03, 0x44, 0x10, 0x89, 0x44, 0x14, 0x8b, 0x44, 0x10, 0x89, 0x46,
0xf8, 0xeb, 0x0e, 0x90, 0x6a, 0x01, 0x50, 0xe8, 0x22, 0xfb, 0x83, 0xc4, 0x04,
0x83, 0x46, 0xf8, 0x24, 0x8b, 0x46, 0xf8, 0x39, 0x44, 0x14, 0x77, 0xeb, 0xc7,
0x46, 0xfc, 0x00, 0x00, 0x8b, 0x46, 0xfe, 0x39, 0x46, 0xfc, 0x72, 0x09, 0x8b,
0x5c, 0x18, 0x03, 0x5e, 0xfc, 0x80, 0x27, 0xf9, 0xff, 0x46, 0xfc, 0x83, 0x7e,
0xfc, 0x08, 0x72, 0xe6, 0x8b, 0x46, 0xfe, 0x39, 0x44, 0x1e, 0x73, 0x06, 0x8b,
0x44, 0x1e, 0x89, 0x46, 0xfe, 0x6b, 0xc0, 0x24, 0x03, 0x44, 0x10, 0x89, 0x44,
0x14, 0xc7, 0x44, 0x3e, 0x00, 0x00, 0xc7, 0x44, 0x40, 0x00, 0x00, 0x81, 0x24,
0xfe, 0xfd, 0x81, 0x0c, 0x02, 0x01, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x83, 0x06,
0xe8, 0x0d, 0x01, 0x83, 0x16, 0xea, 0x0d, 0x00, 0x5e, 0x5f, 0xc9, 0xc3, 0x83,
0x7e, 0xfa, 0x04, 0x75, 0x0e, 0x8b, 0x5e, 0xf6, 0x80, 0x7f, 0x03, 0xff, 0x75,
0x05, 0xc7, 0x46, 0xfa, 0x03, 0x00, 0x83, 0x7e, 0xfa, 0x03, 0x74, 0x03, 0xe9,
0xe1, 0x00, 0xf6, 0x04, 0x02, 0x74, 0x16, 0xc7, 0x44, 0x3e, 0x00, 0x00, 0xc7,
0x44, 0x40, 0x00, 0x00, 0x81, 0x24, 0xfd, 0xfc, 0xff, 0x06, 0xa2, 0x7f, 0x5e,
0x5f, 0xc9, 0xc3, 0x83, 0x7c, 0x4c, 0x00, 0x74, 0xb4, 0xf6, 0x04, 0x01, 0x74,
0xaf, 0xc7, 0x44, 0x3e, 0x00, 0x00, 0xc7, 0x44, 0x40, 0x00, 0x00, 0x81, 0x24,
0xfe, 0xfc, 0xeb, 0xdd, 0x90, 0x83, 0x7e, 0xfa, 0x04, 0x75, 0x0e, 0x8b, 0x5e,
0xf6, 0x80, 0x7f, 0x03, 0xff, 0x75, 0x05, 0xc7, 0x46, 0xfa, 0x03, 0x00, 0x83,
0x7e, 0xfa, 0x03, 0x74, 0x03, 0xe9, 0x8d, 0x00, 0xf6, 0x04, 0x02, 0x75, 0x03,
0xe9, 0x79, 0xff, 0xc7, 0x44, 0x3e, 0x00, 0x00, 0xc7, 0x44, 0x40, 0x00, 0x00,
0x81, 0x24, 0xfd, 0xfc, 0x8b, 0x5e, 0xf6, 0x8b, 0x47, 0x01, 0x89, 0x44, 0x36,
0xc7, 0x44, 0x42, 0x00, 0x00, 0xeb, 0x51, 0x90, 0x83, 0x7e, 0xfa, 0x0c, 0x72,
0x60, 0x8b, 0x5e, 0xf6, 0x8b, 0x47, 0x0a, 0x05, 0x0c, 0x00, 0x3b, 0x46, 0xfa,
0x75, 0x52, 0xf6, 0x04, 0x08, 0x75, 0x03, 0xe9, 0x3e, 0xff, 0x8b, 0x44, 0x38,
0x39, 0x47, 0x02, 0x74, 0x03, 0xe9, 0x33, 0xff, 0x8a, 0x47, 0x01, 0x2a, 0xe4,
0x3b, 0x44, 0x42, 0x74, 0x03, 0xe9, 0x26, 0xff, 0x83, 0x7c, 0x44, 0x00, 0x74,
0x24, 0xc7, 0x44, 0x3e, 0x00, 0x00, 0xc7, 0x44, 0x40, 0x00, 0x00, 0x8a, 0x44,
0x42, 0xfe, 0xc0, 0x89, 0x44, 0x42, 0x81, 0x24, 0xe7, 0xfe, 0x81, 0x0c, 0x04,
0x02, 0xa1, 0x00, 0x0e, 0x89, 0x44, 0x20, 0x5e, 0x5f, 0xc9, 0xc3, 0x81, 0x24,
0xe7, 0xfd, 0xe9, 0xec, 0xfe, 0x90, 0x83, 0x06, 0xbc, 0x0d, 0x01, 0x83, 0x16,
0xbe, 0x0d, 0x00, 0x83, 0x44, 0x3e, 0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0xc8, 0x02,
0x00, 0x00, 0x56, 0x8b, 0x76, 0x04, 0xff, 0x74, 0x26, 0xe8, 0x1f, 0x0f, 0x83,
0xc4, 0x02, 0x88, 0x46, 0xfe, 0xf6, 0x46, 0xfe, 0x40, 0x74, 0x2a, 0xf6, 0x44,
0x01, 0x10, 0x74, 0x24, 0x8b, 0x44, 0x24, 0xc1, 0xe0, 0x02, 0x05, 0x01, 0x02,
0x50, 0xe8, 0x1d, 0xe4, 0x83, 0xc4, 0x02, 0x40, 0x75, 0x07, 0x81, 0x24, 0xef,
0xcf, 0xeb, 0x0b, 0x90, 0x83, 0x06, 0xa8, 0x0d, 0x01, 0x83, 0x16, 0xaa, 0x0d,
0x00, 0xf6, 0x46, 0xfe, 0x80, 0x74, 0x23, 0x83, 0x06, 0xa0, 0x0d, 0x01, 0x83,
0x16, 0xa2, 0x0d, 0x00, 0x8b, 0x44, 0x24, 0xc1, 0xe0, 0x02, 0x05, 0x02, 0x02,
0x50, 0xe8, 0xe9, 0xe3, 0x83, 0xc4, 0x02, 0x3b, 0x44, 0x06, 0x74, 0x04, 0x80,
0x4c, 0x01, 0x40, 0x6a, 0x10, 0xff, 0x74, 0x26, 0xe8, 0xc5, 0x0e, 0x83, 0xc4,
0x04, 0xf6, 0x44, 0x01, 0xc0, 0x74, 0x07, 0x56, 0xe8, 0x58, 0xf9, 0x83, 0xc4,
0x02, 0x83, 0x06, 0x40, 0x0d, 0x01, 0x83, 0x16, 0x42, 0x0d, 0x00, 0x5e, 0xc9,
0xc3, 0xc8, 0x0c, 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x7c, 0x12,
0x8b, 0x45, 0x0c, 0x89, 0x46, 0xf4, 0x8b, 0xd8, 0x8b, 0x47, 0x06, 0x89, 0x46,
0xfc, 0x8b, 0x47, 0x08, 0x89, 0x46, 0xf8, 0x8b, 0x5e, 0xfc, 0xf6, 0x07, 0x80,
0x75, 0x2c, 0x83, 0x06, 0xec, 0x0d, 0x01, 0x83, 0x16, 0xee, 0x0d, 0x00, 0x8b,
0x5c, 0x14, 0xf6, 0x07, 0x04, 0x74, 0x06, 0x80, 0x27, 0xfb, 0xeb, 0x04, 0x90,
0x80, 0x27, 0xfd, 0x80, 0x4c, 0x09, 0x04, 0xa1, 0x00, 0x0e, 0x05, 0xe8, 0x03,
0x89, 0x44, 0x16, 0xe9, 0x01, 0x03, 0x90, 0x8a, 0x07, 0x25, 0x0f, 0x00, 0xe9,
0xb0, 0x00, 0x83, 0x7e, 0xf8, 0x04, 0x74, 0x03, 0xe9, 0xe1, 0x02, 0x83, 0x06,
0xcc, 0x0d, 0x01, 0x83, 0x16, 0xce, 0x0d, 0x00, 0xf6, 0x44, 0x08, 0x01, 0x74,
0x27, 0x83, 0x7d, 0x3e, 0x00, 0x74, 0x03, 0xff, 0x4d, 0x3e, 0xc7, 0x45, 0x40,
0x00, 0x00, 0x80, 0x64, 0x08, 0xfa, 0xf6, 0x44, 0x08, 0x08, 0x75, 0x03, 0xe9,
0x1f, 0x02, 0x80, 0x64, 0x08, 0xf7, 0x80, 0x4c, 0x08, 0x10, 0xe9, 0x14, 0x02,
0x90, 0x56, 0xe8, 0x1a, 0xf8, 0x83, 0xc4, 0x02, 0xc7, 0x44, 0x08, 0x10, 0x01,
0xff, 0x06, 0x3e, 0x7c, 0xe9, 0x00, 0x02, 0x90, 0x83, 0x7e, 0xf8, 0x04, 0x74,
0x03, 0xe9, 0x8d, 0x02, 0xf6, 0x44, 0x08, 0x01, 0x74, 0x15, 0x83, 0x7d, 0x3e,
0x00, 0x74, 0x03, 0xff, 0x4d, 0x3e, 0xc7, 0x45, 0x40, 0x00, 0x00, 0x80, 0x64,
0x08, 0xf2, 0xe9, 0xdb, 0x01, 0x83, 0x06, 0xec, 0x0d, 0x01, 0x83, 0x16, 0xee,
0x0d, 0x00, 0xe9, 0x73, 0x02, 0x90, 0x83, 0x7e, 0xf8, 0x04, 0x74, 0x42, 0xe9,
0x5b, 0x02, 0x90, 0x83, 0x7e, 0xf8, 0x04, 0x7d, 0x03, 0xe9, 0x51, 0x02, 0x81,
0x7e, 0xf8, 0x72, 0x06, 0x7c, 0x2e, 0xe9, 0x47, 0x02, 0x90, 0x68, 0x2c, 0x09,
0xe8, 0xa2, 0xe0, 0x83, 0xc4, 0x02, 0xeb, 0x1f, 0x90, 0x2d, 0x05, 0x00, 0x3d,
0x06, 0x00, 0x77, 0xec, 0xd1, 0xe0, 0x93, 0x2e, 0xff, 0xa7, 0xc0, 0x20, 0x00,
0x20, 0x54, 0x20, 0x90, 0x20, 0x86, 0x20, 0x86, 0x20, 0x86, 0x20, 0x86, 0x20,
0xf6, 0x44, 0x08, 0x01, 0x74, 0x03, 0xe9, 0x21, 0x02, 0x8b, 0x5e, 0xfc, 0x8a,
0x47, 0x01, 0x24, 0x0f, 0x88, 0x46, 0xf6, 0x8a, 0x44, 0x21, 0x2a, 0x44, 0x20,
0x24, 0x0f, 0x8a, 0x4e, 0xf6, 0x2a, 0x4c, 0x20, 0x80, 0xe1, 0x0f, 0x3a, 0xc1,
0x7d, 0x17, 0x83, 0x06, 0xc0, 0x0d, 0x01, 0x83, 0x16, 0xc2, 0x0d, 0x00, 0x6a,
0x03, 0x56, 0xe8, 0xb3, 0xf7, 0x83, 0xc4, 0x04, 0xe9, 0xeb, 0x01, 0x90, 0x8a,
0x46, 0xf6, 0x38, 0x44, 0x20, 0x75, 0x03, 0xe9, 0xb6, 0x00, 0xf6, 0x44, 0x08,
0x0c, 0x75, 0x09, 0x68, 0x4a, 0x09, 0xe8, 0x27, 0xe0, 0x83, 0xc4, 0x02, 0x8b,
0x5c, 0x14, 0x80, 0x0f, 0x06, 0x83, 0x7d, 0x3e, 0x00, 0x74, 0x03, 0xff, 0x4d,
0x3e, 0xc7, 0x45, 0x40, 0x00, 0x00, 0x8b, 0x44, 0x0e, 0x39, 0x44, 0x0c, 0x75,
0x09, 0x68, 0x5d, 0x09, 0xe8, 0x02, 0xe0, 0x83, 0xc4, 0x02, 0x8b, 0x44, 0x0c,
0x89, 0x46, 0xfa, 0x8a, 0x44, 0x20, 0xfe, 0xc0, 0x24, 0x0f, 0x88, 0x44, 0x20,
0x8b, 0x5e, 0xfa, 0x8b, 0x07, 0x89, 0x44, 0x0c, 0xa1, 0x1c, 0x7b, 0x8b, 0x5e,
0xfa, 0x89, 0x07, 0x8b, 0x46, 0xfa, 0xa3, 0x1c, 0x7b, 0xff, 0x45, 0x3a, 0x8a,
0x46, 0xf6, 0x38, 0x44, 0x20, 0x75, 0xbe, 0x83, 0x7c, 0x0c, 0x00, 0x75, 0x06,
0x8d, 0x44, 0x0c, 0x89, 0x44, 0x10, 0xf6, 0x44, 0x08, 0x02, 0x75, 0x3f, 0x8a,
0x44, 0x20, 0x38, 0x44, 0x21, 0x75, 0x06, 0x80, 0x64, 0x08, 0xfb, 0xeb, 0x19,
0xf6, 0x44, 0x08, 0x04, 0x75, 0x09, 0x68, 0x7c, 0x09, 0xe8, 0xa2, 0xdf, 0x83,
0xc4, 0x02, 0x8b, 0x45, 0x30, 0x03, 0x06, 0x00, 0x0e, 0x89, 0x44, 0x16, 0x8a,
0x44, 0x22, 0x38, 0x44, 0x21, 0x75, 0x10, 0xf6, 0x44, 0x09, 0x02, 0x75, 0x0a,
0x80, 0x4c, 0x09, 0x02, 0xa1, 0x00, 0x0e, 0x89, 0x44, 0x18, 0x8b, 0x5e, 0xfc,
0x8a, 0x07, 0x25, 0x0f, 0x00, 0x2d, 0x07, 0x00, 0x75, 0x03, 0xe9, 0x89, 0x00,
0x48, 0x48, 0x74, 0x0b, 0x48, 0x74, 0x2c, 0x48, 0x74, 0x3b, 0x5e, 0x5f, 0xc9,
0xc3, 0x90, 0xf6, 0x44, 0x08, 0x02, 0x75, 0x11, 0x8a, 0x44, 0x22, 0x38, 0x44,
0x21, 0x74, 0x09, 0x81, 0x64, 0x08, 0xfb, 0xfd, 0x80, 0x4c, 0x08, 0x0a, 0x83,
0x06, 0xf0, 0x0d, 0x01, 0x83, 0x16, 0xf2, 0x0d, 0x00, 0xe9, 0xe6, 0x00, 0x80,
0x4c, 0x08, 0x20, 0x83, 0x06, 0xf4, 0x0d, 0x01, 0x83, 0x16, 0xf6, 0x0d, 0x00,
0xe9, 0xd5, 0x00, 0x90, 0xf6, 0x44, 0x08, 0x02, 0x75, 0x03, 0xe9, 0x4b, 0xfe,
0x83, 0x7d, 0x3e, 0x00, 0x74, 0x03, 0xff, 0x4d, 0x3e, 0xc7, 0x45, 0x40, 0x00,
0x00, 0x80, 0x64, 0x08, 0xf1, 0x8a, 0x44, 0x20, 0x88, 0x44, 0x21, 0x8b, 0x44,
0x0c, 0x89, 0x44, 0x0e, 0x8a, 0x44, 0x22, 0x38, 0x44, 0x20, 0x75, 0x0d, 0x80,
0x4c, 0x09, 0x02, 0xa1, 0x00, 0x0e, 0x89, 0x44, 0x18, 0xe9, 0x98, 0x00, 0x80,
0x4c, 0x08, 0x08, 0x5e, 0x5f, 0xc9, 0xc3, 0x8b, 0x5e, 0xfc, 0x8a, 0x47, 0x01,
0xc0, 0xe8, 0x04, 0x88, 0x46, 0xfe, 0x38, 0x44, 0x23, 0x75, 0x4d, 0x8b, 0x5e,
0xf4, 0xc7, 0x07, 0x02, 0x00, 0x8b, 0x5e, 0xf4, 0x89, 0x77, 0x02, 0x8b, 0x46,
0xf4, 0x8b, 0x1e, 0xa6, 0x7f, 0x89, 0x07, 0x8b, 0x46, 0xf4, 0x05, 0x04, 0x00,
0xa3, 0xa6, 0x7f, 0x8a, 0x44, 0x23, 0xfe, 0xc0, 0x24, 0x0f, 0x88, 0x44, 0x23,
0xf6, 0x44, 0x08, 0x80, 0x74, 0x08, 0x80, 0x4c, 0x08, 0x88, 0x5e, 0x5f, 0xc9,
0xc3, 0x80, 0x4c, 0x08, 0x80, 0x8b, 0x45, 0x30, 0xc1, 0xe8, 0x02, 0x03, 0x06,
0x00, 0x0e, 0x89, 0x44, 0x1c, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x8a, 0x46, 0xfe,
0x2a, 0x44, 0x23, 0x24, 0x0f, 0x3c, 0x05, 0x7d, 0x08, 0x80, 0x4c, 0x08, 0x40,
0x5e, 0x5f, 0xc9, 0xc3, 0x83, 0x06, 0xc4, 0x0d, 0x01, 0x83, 0x16, 0xc6, 0x0d,
0x00, 0x6a, 0x04, 0xe9, 0x1a, 0xfe, 0x90, 0x83, 0x06, 0xbc, 0x0d, 0x01, 0x83,
0x16, 0xbe, 0x0d, 0x00, 0x83, 0x45, 0x3e, 0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0xc8,
0x0c, 0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x7c, 0x0c, 0x83, 0x3d,
0x01, 0x74, 0x09, 0x68, 0x28, 0x0a, 0xe8, 0x39, 0xde, 0x83, 0xc4, 0x02, 0x83,
0x7c, 0x1c, 0x00, 0x74, 0x14, 0xff, 0x74, 0x1c, 0xff, 0x74, 0x1a, 0xff, 0x74,
0x04, 0xe8, 0xe6, 0x0a, 0x83, 0xc4, 0x06, 0xc7, 0x44, 0x1c, 0x00, 0x00, 0x8b,
0x45, 0x08, 0x89, 0x46, 0xf8, 0x83, 0x7c, 0x28, 0x00, 0x74, 0x14, 0x39, 0x44,
0x28, 0x77, 0x09, 0xc7, 0x44, 0x28, 0x00, 0x00, 0xe9, 0xef, 0x00, 0x90, 0x29,
0x44, 0x28, 0xe9, 0xe8, 0x00, 0x8b, 0x45, 0x06, 0x89, 0x46, 0xfe, 0x83, 0x3e,
0xfa, 0x0d, 0x00, 0x74, 0x48, 0x6a, 0x64, 0xe8, 0xc4, 0x0a, 0x83, 0xc4, 0x02,
0x3b, 0x06, 0xfa, 0x0d, 0x73, 0x3a, 0x83, 0x06, 0xdc, 0x0d, 0x01, 0x83, 0x16,
0xde, 0x0d, 0x00, 0x6a, 0x02, 0xe8, 0xac, 0x0a, 0x83, 0xc4, 0x02, 0x89, 0x46,
0xf6, 0x6a, 0x08, 0xe8, 0xa1, 0x0a, 0x83, 0xc4, 0x02, 0x6a, 0x02, 0x89, 0x46,
0xf4, 0xe8, 0x96, 0x0a, 0x83, 0xc4, 0x02, 0x8b, 0xc8, 0xc0, 0xe1, 0x02, 0x8a,
0x46, 0xf4, 0xd2, 0xe0, 0x8b, 0x5e, 0xfe, 0x03, 0x5e, 0xf6, 0x30, 0x07, 0x8b,
0x5e, 0xfe, 0x8a, 0x07, 0x25, 0x0f, 0x00, 0x48, 0x7c, 0x7a, 0x2d, 0x03, 0x00,
0x7e, 0x0b, 0x48, 0x7c, 0x72, 0x2d, 0x06, 0x00, 0x7e, 0x09, 0xeb, 0x6b, 0x90,
0x56, 0xe8, 0x3a, 0xf9, 0xeb, 0x52, 0xb8, 0xc3, 0xa5, 0x2b, 0x47, 0x02, 0x2b,
0x07, 0x89, 0x46, 0xfa, 0x39, 0x46, 0xf8, 0x74, 0x2a, 0x83, 0x3e, 0xfa, 0x0d,
0x00, 0x75, 0x23, 0x83, 0x06, 0xac, 0x0d, 0x01, 0x83, 0x16, 0xae, 0x0d, 0x00,
0x83, 0x44, 0x3e, 0x02, 0x8b, 0x46, 0xfa, 0x39, 0x46, 0xf8, 0x73, 0x45, 0x3d,
0x72, 0x06, 0x77, 0x40, 0x2b, 0x46, 0xf8, 0x89, 0x44, 0x28, 0xeb, 0x38, 0x8a,
0x07, 0x24, 0x70, 0xc0, 0xe8, 0x04, 0x2a, 0xe4, 0x39, 0x44, 0x1e, 0x76, 0x10,
0x6b, 0xc0, 0x24, 0x03, 0x44, 0x10, 0x50, 0xe8, 0x8c, 0xfb, 0x83, 0xc4, 0x02,
0xeb, 0x1b, 0x90, 0x83, 0x06, 0xb4, 0x0d, 0x01, 0x83, 0x16, 0xb6, 0x0d, 0x00,
0xeb, 0x0e, 0x83, 0x44, 0x3e, 0x02, 0x83, 0x06, 0xb8, 0x0d, 0x01, 0x83, 0x16,
0xba, 0x0d, 0x00, 0x83, 0x3d, 0x01, 0x75, 0x04, 0xc7, 0x05, 0x00, 0x00, 0x8b,
0xc6, 0x83, 0xc7, 0x0a, 0x2b, 0xc7, 0x3d, 0x58, 0xfe, 0x75, 0x03, 0x8d, 0x7c,
0x7c, 0x89, 0x7c, 0x0c, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x57, 0x56, 0x83, 0x06,
0x64, 0x0d, 0x01, 0x83, 0x16, 0x66, 0x0d, 0x00, 0xc7, 0x06, 0xa2, 0x7f, 0x00,
0x00, 0xbe, 0x50, 0x7c, 0xeb, 0x05, 0x90, 0x81, 0xc6, 0xa8, 0x01, 0x39, 0x36,
0xa0, 0x7f, 0x76, 0x12, 0x8b, 0x5c, 0x0c, 0x83, 0x3f, 0x01, 0x75, 0xee, 0x56,
0xe8, 0x76, 0xfe, 0x83, 0xc4, 0x02, 0xeb, 0xef, 0x90, 0xbe, 0x50, 0x7c, 0xeb,
0x29, 0x90, 0x83, 0x7c, 0x1e, 0x00, 0x74, 0x1e, 0x8b, 0x7c, 0x12, 0x83, 0xc7,
0x24, 0x39, 0x7c, 0x14, 0x77, 0x03, 0x8b, 0x7c, 0x10, 0xf6, 0x45, 0x08, 0x78,
0x74, 0x2a, 0x57, 0xe8, 0x16, 0xf2, 0x83, 0xc4, 0x02, 0x89, 0x7c, 0x12, 0x81,
0xc6, 0xa8, 0x01, 0x39, 0x36, 0xa0, 0x7f, 0x76, 0x1e, 0xf6, 0x44, 0x01, 0x10,
0x75, 0xf0, 0xf6, 0x44, 0x01, 0x01, 0x74, 0xc6, 0x56, 0xe8, 0x0a, 0xf1, 0x83,
0xc4, 0x02, 0xeb, 0xe1, 0x90, 0x39, 0x7c, 0x12, 0x75, 0xc0, 0xeb, 0xd9, 0x90,
0x5e, 0x5f, 0xc3, 0x90, 0x55, 0x8b, 0xec, 0x56, 0x8b, 0x76, 0x04, 0x83, 0x06,
0xe4, 0x0d, 0x01, 0x83, 0x16, 0xe6, 0x0d, 0x00, 0xf6, 0x04, 0x0a, 0x74, 0x10,
0xff, 0x44, 0x40, 0x83, 0x7c, 0x40, 0x0a, 0x72, 0x07, 0x81, 0x24, 0xe0, 0xfd,
0x80, 0x0c, 0x01, 0xf6, 0x04, 0x01, 0x74, 0x17, 0xff, 0x44, 0x3e, 0xc7, 0x44,
0x40, 0x00, 0x00, 0x80, 0x4c, 0x01, 0x01, 0x56, 0xe8, 0xbd, 0xf0, 0x83, 0xc4,
0x02, 0x5e, 0xc9, 0xc3, 0x90, 0xf6, 0x04, 0x02, 0x75, 0xec, 0xf6, 0x04, 0x0c,
0x75, 0x03, 0xe9, 0xac, 0x00, 0x80, 0x24, 0xe3, 0x83, 0x3e, 0x00, 0x0d, 0x00,
0x74, 0x07, 0x81, 0x0c, 0x14, 0x02, 0xe9, 0x92, 0x00, 0xa1, 0x04, 0x50, 0x39,
0x44, 0x36, 0x72, 0x54, 0xa1, 0x06, 0x50, 0x39, 0x44, 0x36, 0x77, 0x4c, 0xa0,
0x01, 0x50, 0x2a, 0xe4, 0x39, 0x44, 0x42, 0x75, 0x42, 0x83, 0x7c, 0x42, 0x00,
0x74, 0x08, 0xa1, 0x02, 0x50, 0x39, 0x44, 0x38, 0x75, 0x34, 0xa1, 0x0a, 0x50,
0x89, 0x44, 0x44, 0x83, 0x7c, 0x42, 0x00, 0x75, 0x14, 0xa1, 0x02, 0x50, 0x89,
0x44, 0x38, 0xa1, 0x04, 0x50, 0x89, 0x44, 0x4e, 0xa1, 0x06, 0x50, 0x89, 0x44,
0x50, 0xeb, 0x0c, 0x8b, 0x44, 0x4e, 0xa3, 0x04, 0x50, 0x8b, 0x44, 0x50, 0xa3,
0x06, 0x50, 0x81, 0x0c, 0x18, 0x01, 0xe9, 0x7c, 0xff, 0x90, 0xa0, 0xf8, 0x7d,
0x0a, 0x06, 0x50, 0x7c, 0xa8, 0x10, 0x75, 0x27, 0xc6, 0x06, 0x00, 0x50, 0x04,
0x8a, 0x44, 0x42, 0xa2, 0x01, 0x50, 0x8b, 0x44, 0x38, 0xa3, 0x02, 0x50, 0x8b,
0x44, 0x36, 0xa3, 0x04, 0x50, 0x8b, 0x44, 0x36, 0xa3, 0x06, 0x50, 0xc7, 0x06,
0x00, 0x0d, 0x00, 0x50, 0xe9, 0x6c, 0xff, 0x90, 0x81, 0x0c, 0x04, 0x02, 0xa1,
0x00, 0x0e, 0x05, 0x0a, 0x00, 0x89, 0x44, 0x20, 0x5e, 0xc9, 0xc3, 0x55, 0x8b,
0xec, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x7c, 0x12, 0xf6, 0x44, 0x09, 0x04,
0x74, 0x07, 0x80, 0x64, 0x09, 0xfb, 0xeb, 0x12, 0x90, 0xff, 0x45, 0x40, 0x83,
0x45, 0x3e, 0x02, 0x83, 0x06, 0xe0, 0x0d, 0x01, 0x83, 0x16, 0xe2, 0x0d, 0x00,
0x83, 0x7d, 0x40, 0x0a, 0x72, 0x14, 0xc7, 0x45, 0x40, 0x00, 0x00, 0x81, 0x25,
0xe0, 0xfd, 0x81, 0x0d, 0x01, 0x01, 0x57, 0xe8, 0xba, 0xef, 0x83, 0xc4, 0x02,
0xf6, 0x44, 0x08, 0x03, 0x74, 0x07, 0x80, 0x4c, 0x08, 0x08, 0xeb, 0x1a, 0x90,
0x8a, 0x44, 0x20, 0x38, 0x44, 0x21, 0x75, 0x09, 0x68, 0x93, 0x0b, 0xe8, 0x0e,
0xdb, 0x83, 0xc4, 0x02, 0x80, 0x4c, 0x08, 0x0a, 0x80, 0x64, 0x09, 0xfd, 0x56,
0xe8, 0x79, 0xf0, 0x83, 0xc4, 0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0xc8, 0x02, 0x00,
0x00, 0x57, 0x56, 0xeb, 0x03, 0xe8, 0x64, 0xe5, 0xa1, 0x10, 0x0d, 0x39, 0x06,
0x12, 0x0d, 0x75, 0xf4, 0x83, 0x3e, 0x3e, 0x7c, 0x00, 0x74, 0x2d, 0xc7, 0x06,
0x3e, 0x7c, 0x00, 0x00, 0xbf, 0x1e, 0x7b, 0xeb, 0x03, 0x83, 0xc7, 0x24, 0x39,
0x3e, 0x50, 0x54, 0x76, 0xdc, 0xf6, 0x45, 0x09, 0x01, 0x74, 0xf1, 0x57, 0xe8,
0x5b, 0xe7, 0x83, 0xc4, 0x02, 0xe8, 0x01, 0xee, 0x80, 0x65, 0x09, 0xfe, 0xe8,
0x12, 0xee, 0xeb, 0xde, 0x83, 0x3e, 0xa4, 0x7f, 0x00, 0x74, 0x71, 0xe8, 0xee,
0xed, 0x8b, 0x36, 0xa4, 0x7f, 0x0b, 0xf6, 0x74, 0x5f, 0x8b, 0x44, 0x04, 0xa3,
0xa4, 0x7f, 0x0b, 0xc0, 0x75, 0x06, 0xc7, 0x06, 0xa6, 0x7f, 0xa4, 0x7f, 0x83,
0x3c, 0x02, 0x75, 0x20, 0xe8, 0xe6, 0xed, 0x8b, 0x44, 0x08, 0x2d, 0x04, 0x00,
0x50, 0x8b, 0x44, 0x06, 0x05, 0x04, 0x00, 0x50, 0xff, 0x74, 0x02, 0xe8, 0x55,
0xe2, 0x83, 0xc4, 0x06, 0x89, 0x46, 0xfe, 0xe8, 0xb1, 0xed, 0xc7, 0x04, 0x00,
0x00, 0x83, 0x06, 0x74, 0x0d, 0x01, 0x83, 0x16, 0x76, 0x0d, 0x00, 0x83, 0x7e,
0xfe, 0x00, 0x74, 0x16, 0x83, 0x06, 0xc8, 0x0d, 0x01, 0x83, 0x16, 0xca, 0x0d,
0x00, 0xff, 0x76, 0xfe, 0xff, 0x74, 0x02, 0xe8, 0xb0, 0xf1, 0x83, 0xc4, 0x04,
0xe8, 0x9c, 0xed, 0xe9, 0x4c, 0xff, 0x90, 0x5e, 0x5f, 0xc9, 0xc3, 0xc8, 0x04,
0x00, 0x00, 0x57, 0x56, 0x8b, 0x76, 0x04, 0x8b, 0x44, 0x12, 0x89, 0x46, 0xfe,
0x8a, 0x44, 0x22, 0x2a, 0x44, 0x20, 0x24, 0x0f, 0x3c, 0x03, 0x7c, 0x09, 0x80,
0x64, 0x09, 0xfd, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x83, 0x3e, 0x1c, 0x7b, 0x00,
0x74, 0x09, 0x8b, 0x5e, 0xfe, 0x83, 0x7f, 0x3a, 0x00, 0x75, 0x18, 0x83, 0x06,
0x6c, 0x0d, 0x01, 0x83, 0x16, 0x6e, 0x0d, 0x00, 0xa1, 0x00, 0x0e, 0x05, 0x0a,
0x00, 0x89, 0x44, 0x18, 0x5e, 0x5f, 0xc9, 0xc3, 0x90, 0x8b, 0x3e, 0x1c, 0x7b,
0x8b, 0x05, 0xa3, 0x1c, 0x7b, 0xff, 0x4f, 0x3a, 0xe8, 0x39, 0xed, 0x8b, 0x5e,
0xfe, 0xff, 0x77, 0x4c, 0xff, 0x77, 0x34, 0x8d, 0x45, 0x08, 0x50, 0x56, 0xe8,
0xa4, 0xde, 0x83, 0xc4, 0x08, 0x89, 0x46, 0xfc, 0xe8, 0x07, 0xed, 0x81, 0x7e,
0xfc, 0x6e, 0x06, 0x76, 0x09, 0x68, 0x4b, 0x0c, 0xe8, 0xb2, 0xd9, 0x83, 0xc4,
0x02, 0xf6, 0x44, 0x09, 0x01, 0x74, 0x13, 0xa1, 0x1c, 0x7b, 0x89, 0x05, 0x89,
0x3e, 0x1c, 0x7b, 0x8b, 0x5e, 0xfe, 0xff, 0x47, 0x3a, 0x5e, 0x5f, 0xc9, 0xc3,
0x83, 0x7e, 0xfc, 0x00, 0x75, 0x3a, 0xa1, 0x00, 0x0e, 0x2b, 0x44, 0x1a, 0x3d,
0x00, 0x40, 0x72, 0x2f, 0xa1, 0x1c, 0x7b, 0x89, 0x05, 0x89, 0x3e, 0x1c, 0x7b,
0xf6, 0x44, 0x08, 0x80, 0x74, 0x16, 0xa1, 0x00, 0x0e, 0x2b, 0x44, 0x1c, 0x3d,
0x00, 0x40, 0x73, 0x0b, 0x80, 0x4c, 0x08, 0x08, 0x56, 0xe8, 0xdd, 0xee, 0x83,
0xc4, 0x02, 0x8b, 0x5e, 0xfe, 0xff, 0x47, 0x3a, 0xe9, 0x61, 0xff, 0x90, 0x83,
0x06, 0x70, 0x0d, 0x01, 0x83, 0x16, 0x72, 0x0d, 0x00, 0x80, 0x64, 0x09, 0xfd,
0x83, 0x7c, 0x0e, 0x00, 0x75, 0x03, 0x89, 0x7c, 0x0e, 0xc7, 0x05, 0x00, 0x00,
0x8b, 0x46, 0xfc, 0x05, 0x04, 0x00, 0x89, 0x45, 0x02, 0x8b, 0x5c, 0x10, 0x89,
0x3f, 0x89, 0x7c, 0x10, 0x8a, 0x44, 0x22, 0xfe, 0xc0, 0x24, 0x0f, 0x88, 0x44,
0x22, 0xa1, 0x00, 0x0e, 0x05, 0x88, 0x13, 0x89, 0x44, 0x1a, 0xf6, 0x44, 0x08,
0x03, 0x75, 0x0b, 0x80, 0x4c, 0x08, 0x08, 0x56, 0xe8, 0x83, 0xee, 0x83, 0xc4,
0x02, 0x5e, 0x5f, 0xc9, 0xc3, 0x57, 0x56, 0xc7, 0x06, 0xf8, 0x0d, 0x00, 0x00,
0xc7, 0x06, 0xfa, 0x0d, 0x00, 0x00, 0xe8, 0x39, 0xe9, 0xe8, 0x0c, 0xe7, 0xbf,
0x1e, 0x7b, 0xeb, 0x0b, 0x90, 0x57, 0xe8, 0x80, 0xe5, 0x83, 0xc4, 0x02, 0x83,
0xc7, 0x24, 0x39, 0x3e, 0x50, 0x54, 0x77, 0xf0, 0xb0, 0x4f, 0xa2, 0x20, 0x0d,
0xa2, 0x00, 0x0c, 0xb0, 0x53, 0xa2, 0x21, 0x0d, 0xa2, 0x01, 0x0c, 0x68, 0xdc,
0x00, 0x68, 0x28, 0xff, 0xe8, 0xd8, 0x05, 0x83, 0xc4, 0x04, 0x83, 0x06, 0x60,
0x0d, 0x01, 0x83, 0x16, 0x62, 0x0d, 0x00, 0x80, 0x3e, 0x0f, 0x0c, 0x00, 0x74,
0x03, 0xe8, 0x4d, 0xd9, 0xe8, 0xad, 0xfd, 0xbe, 0x50, 0x7c, 0xeb, 0x63, 0xf6,
0x44, 0x01, 0x20, 0x74, 0x20, 0xff, 0x74, 0x26, 0xe8, 0x87, 0x05, 0x83, 0xc4,
0x02, 0xa8, 0x04, 0x74, 0x13, 0x80, 0x64, 0x01, 0xdf, 0x8b, 0x44, 0x24, 0xd1,
0xe0, 0x50, 0x68, 0x0a, 0x02, 0xe8, 0x7d, 0x05, 0x83, 0xc4, 0x04, 0xa1, 0x00,
0x0e, 0x2b, 0x44, 0x20, 0x3d, 0x00, 0x40, 0x73, 0x2e, 0xe8, 0xb4, 0xeb, 0xa1,
0x00, 0x0e, 0x2b, 0x44, 0x20, 0x3d, 0x00, 0x40, 0x73, 0x1a, 0xa1, 0x00, 0x0e,
0x05, 0xf4, 0x01, 0x89, 0x44, 0x20, 0xf6, 0x44, 0x01, 0x02, 0x74, 0x0b, 0x80,
0x64, 0x01, 0xfd, 0x56, 0xe8, 0xe0, 0xfb, 0x83, 0xc4, 0x02, 0xe8, 0xa4, 0xeb,
0xe8, 0x49, 0xfd, 0x81, 0xc6, 0xa8, 0x01, 0x39, 0x36, 0xa0, 0x7f, 0x77, 0x97,
0xbf, 0x1e, 0x7b, 0xe9, 0x84, 0x00, 0x90, 0xa1, 0x00, 0x0e, 0x2b, 0x45, 0x16,
0x3d, 0x00, 0x40, 0x73, 0x2e, 0xe8, 0x6a, 0xeb, 0xa1, 0x00, 0x0e, 0x2b, 0x45,
0x16, 0x3d, 0x00, 0x40, 0x73, 0x1a, 0xa1, 0x00, 0x0e, 0x05, 0xf4, 0x01, 0x89,
0x45, 0x16, 0xf6, 0x45, 0x08, 0x04, 0x74, 0x0b, 0x80, 0x65, 0x08, 0xfb, 0x57,
0xe8, 0x94, 0xfc, 0x83, 0xc4, 0x02, 0xe8, 0x5a, 0xeb, 0xe8, 0xff, 0xfc, 0xa1,
0x00, 0x0e, 0x2b, 0x45, 0x18, 0x3d, 0x00, 0x40, 0x73, 0x3c, 0xe8, 0x31, 0xeb,
0xa1, 0x00, 0x0e, 0x2b, 0x45, 0x18, 0x3d, 0x00, 0x40, 0x73, 0x28, 0xa1, 0x00,
0x0e, 0x05, 0xf4, 0x01, 0x89, 0x45, 0x18, 0x8a, 0x45, 0x09, 0x24, 0x03, 0x3c,
0x02, 0x75, 0x16, 0xf6, 0x45, 0x08, 0x01, 0x74, 0x09, 0x68, 0x1d, 0x0d, 0xe8,
0xc0, 0xd7, 0x83, 0xc4, 0x02, 0x57, 0xe8, 0x85, 0xfd, 0x83, 0xc4, 0x02, 0xe8,
0x13, 0xeb, 0xe8, 0xb8, 0xfc, 0x83, 0xc7, 0x24, 0x39, 0x3e, 0x50, 0x54, 0x76,
0x03, 0xe9, 0x74, 0xff, 0xa1, 0x00, 0x0e, 0x2b, 0x06, 0xa8, 0x7f, 0x3d, 0x00,
0x40, 0x73, 0x0c, 0xa1, 0x00, 0x0e, 0x05, 0x0a, 0x00, 0xa3, 0xa8, 0x7f, 0xe8,
0xac, 0xdb, 0xa1, 0x00, 0x0e, 0x2b, 0x06, 0x56, 0x54, 0x3d, 0x00, 0x40, 0x72,
0x03, 0xe9, 0xc1, 0xfe, 0x83, 0x06, 0x56, 0x54, 0x64, 0x68, 0xfc, 0x00, 0x68,
0x28, 0xff, 0xe8, 0x88, 0x04, 0x83, 0xc4, 0x04, 0x68, 0x80, 0x00, 0xe8, 0x59,
0x04, 0x83, 0xc4, 0x02, 0xa2, 0x40, 0x7c, 0x6a, 0x01, 0x68, 0x80, 0x00, 0xe8,
0x8f, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x41, 0x7c, 0x6a, 0x03, 0x68, 0x80, 0x00,
0xe8, 0x81, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x43, 0x7c, 0x6a, 0x04, 0x68, 0x80,
0x00, 0xe8, 0x73, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x44, 0x7c, 0x6a, 0x05, 0x68,
0x80, 0x00, 0xe8, 0x65, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x45, 0x7c, 0x6a, 0x09,
0x68, 0x80, 0x00, 0xe8, 0x57, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x49, 0x7c, 0x6a,
0x0a, 0x68, 0x80, 0x00, 0xe8, 0x49, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x4a, 0x7c,
0x6a, 0x0f, 0x68, 0x80, 0x00, 0xe8, 0x3b, 0xd9, 0x83, 0xc4, 0x04, 0xa2, 0x4f,
0x7c, 0x68, 0xdc, 0x00, 0x68, 0x28, 0xff, 0xe8, 0x0e, 0x04, 0x83, 0xc4, 0x04,
0x68, 0xfc, 0x00, 0x68, 0x28, 0xff, 0xe8, 0x02, 0x04, 0x83, 0xc4, 0x04, 0xbe,
0x50, 0x7c, 0xeb, 0x3f, 0x90, 0xf6, 0x44, 0x01, 0x10, 0x74, 0x0b, 0xa1, 0x00,
0x0e, 0x2b, 0x44, 0x02, 0x3d, 0x00, 0x40, 0x72, 0x19, 0x8b, 0x44, 0x24, 0xc1,
0xe0, 0x02, 0x05, 0x03, 0x02, 0x50, 0xe8, 0xd2, 0xd8, 0x83, 0xc4, 0x02, 0x40,
0x74, 0x06, 0x83, 0x7c, 0x3e, 0x14, 0x72, 0x10, 0xc7, 0x44, 0x3e, 0x00, 0x00,
0x80, 0x4c, 0x01, 0x80, 0x56, 0xe8, 0x49, 0xee, 0x83, 0xc4, 0x02, 0x81, 0xc6,
0xa8, 0x01, 0x39, 0x36, 0xa0, 0x7f, 0x77, 0xbc, 0xe9, 0xd1, 0xfd, 0x90, 0x15,
0x00, 0x04, 0x20, 0x0a, 0x80, 0x0f, 0x00, 0x07, 0x7e, 0x0f, 0xc5, 0x07, 0x77,
0x03, 0xd8, 0x05, 0x61, 0x01, 0xf9, 0x0b, 0x16, 0x10, 0x00, 0x11, 0x00, 0x0e,
0x07, 0x05, 0x6b, 0x09, 0x0f, 0xff, 0x15, 0x01, 0x04, 0x20, 0x0a, 0x80, 0x0f,
0x00, 0x07, 0x7e, 0x0f, 0xc5, 0x07, 0x77, 0x03, 0xd8, 0x05, 0x61, 0x01, 0xf9,
0x0b, 0x16, 0x10, 0x00, 0x11, 0x00, 0x0e, 0x07, 0x05, 0x6b, 0x09, 0x0f, 0xff,
0x15, 0x00, 0x12, 0x80, 0x13, 0x08, 0x04, 0x20, 0x0a, 0x80, 0x0f, 0x04, 0x07,
0x7e, 0x0f, 0xc5, 0x07, 0x77, 0x03, 0xc8, 0x05, 0x61, 0x01, 0xf9, 0x0b, 0x08,
0x0e, 0x04, 0x05, 0x6b, 0x09, 0x0f, 0xff, 0x15, 0x00, 0x12, 0x80, 0x13, 0x08,
0x14, 0x08, 0x04, 0x20, 0x0a, 0x80, 0x0f, 0x04, 0x07, 0x7e, 0x0f, 0xc5, 0x07,
0x77, 0x03, 0xc8, 0x05, 0x61, 0x01, 0xf9, 0x0b, 0x08, 0x0e, 0x04, 0x05, 0x6b,
0x09, 0x0f, 0xff, 0x15, 0x00, 0x12, 0x02, 0x13, 0x02, 0x04, 0x20, 0x0a, 0xa0,
0x0f, 0x04, 0x07, 0x7e, 0x0f, 0xc5, 0x07, 0x77, 0x03, 0xc8, 0x05, 0x61, 0x01,
0xf9, 0x0b, 0x77, 0x0c, 0x0e, 0x0d, 0x00, 0x0e, 0x07, 0x0e, 0xe7, 0x0e, 0xa7,
0x0e, 0x27, 0x05, 0x6b, 0x09, 0x0f, 0xff, 0x15, 0x00, 0x12, 0x02, 0x13, 0x02,
0x04, 0x20, 0x0a, 0xe0, 0x0f, 0x04, 0x07, 0x7e, 0x0f, 0xc5, 0x07, 0x77, 0x03,
0xc8, 0x05, 0x61, 0x01, 0xf9, 0x0b, 0x77, 0x0c, 0x06, 0x0d, 0x00, 0x0e, 0x07,
0x0e, 0xc7, 0x0e, 0xa7, 0x0e, 0x27, 0x05, 0x6b, 0x09, 0x0f, 0xff, 0x00, 0x06,
0x58, 0x1b, 0x20, 0x03, 0x14, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x00,
0x03, 0xa0, 0x0f, 0x58, 0x02, 0x1e, 0x00, 0x28, 0x00, 0x1e, 0x00, 0x3c, 0x00,
0x80, 0x01, 0xd0, 0x07, 0xa4, 0x01, 0x28, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x78,
0x00, 0x00, 0x01, 0x08, 0x07, 0x7c, 0x01, 0x34, 0x00, 0x1e, 0x00, 0x14, 0x00,
0xb4, 0x00, 0xc0, 0x00, 0xb0, 0x04, 0x54, 0x01, 0x40, 0x00, 0x19, 0x00, 0x14,
0x00, 0xf0, 0x00, 0x60, 0x00, 0x58, 0x02, 0x2c, 0x01, 0x64, 0x00, 0x14, 0x00,
0x14, 0x00, 0xe0, 0x01, 0x40, 0x00, 0xf4, 0x01, 0x2c, 0x01, 0x96, 0x00, 0x14,
0x00, 0x14, 0x00, 0xd0, 0x02, 0x39, 0x00, 0xc2, 0x01, 0x2c, 0x01, 0xc8, 0x00,
0x14, 0x00, 0x14, 0x00, 0x20, 0x03, 0x30, 0x00, 0x90, 0x01, 0x2c, 0x01, 0xfa,
0x00, 0x14, 0x00, 0x14, 0x00, 0xc0, 0x03, 0x20, 0x00, 0x2c, 0x01, 0x2c, 0x01,
0x2c, 0x01, 0x14, 0x00, 0x14, 0x00, 0xa0, 0x05, 0x10, 0x00, 0xc8, 0x00, 0x2c,
0x01, 0x58, 0x02, 0x14, 0x00, 0x14, 0x00, 0x40, 0x0b, 0x08, 0x00, 0x64, 0x00,
0xe1, 0x00, 0xe8, 0x03, 0x0e, 0x00, 0x14, 0x00, 0x80, 0x16, 0x06, 0x00, 0x64,
0x00, 0xdc, 0x00, 0xb0, 0x04, 0x0c, 0x00, 0x14, 0x00, 0x00, 0x1e, 0x05, 0x00,
0x64, 0x00, 0xc8, 0x00, 0x40, 0x06, 0x0c, 0x00, 0x14, 0x00, 0x00, 0x24, 0x04,
0x00, 0x64, 0x00, 0xb4, 0x00, 0x40, 0x06, 0x0c, 0x00, 0x14, 0x00, 0x00, 0x2d,
0x03, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, 0x0c, 0x00, 0x14, 0x00, 0x00,
0x3c, 0x02, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, 0x0a, 0x00, 0x14, 0x00,
0x00, 0x5a, 0x03, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, 0x0c, 0x00, 0x14,
0x00, 0x00, 0x5a, 0x02, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, 0x0a, 0x00,
0x14, 0x00, 0x00, 0x5a, 0x04, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06, 0x0c,
0x00, 0x14, 0x00, 0x00, 0x5a, 0x03, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40, 0x06,
0x0c, 0x00, 0x14, 0x00, 0x00, 0x78, 0x02, 0x00, 0x64, 0x00, 0xa0, 0x00, 0x40,
0x06, 0x0c, 0x00, 0x14, 0x00, 0x00, 0xb4, 0xb4, 0x2a, 0x0e, 0x2c, 0x3a, 0x2b,
0x1c, 0x2c, 0x65, 0x2b, 0x2a, 0x2c, 0xb4, 0x2a, 0x90, 0x2b, 0xb4, 0x2a, 0x9e,
0x2b, 0xb4, 0x2a, 0xac, 0x2b, 0xb4, 0x2a, 0xc8, 0x2b, 0xb4, 0x2a, 0xd6, 0x2b,
0xb4, 0x2a, 0xe4, 0x2b, 0xb4, 0x2a, 0x00, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4,
0x2a, 0x1c, 0x2c, 0xb4, 0x2a, 0x2a, 0x2c, 0xb4, 0x2a, 0x54, 0x2c, 0xb4, 0x2a,
0x62, 0x2c, 0xf6, 0x2a, 0x90, 0x2b, 0xf6, 0x2a, 0x9e, 0x2b, 0xf6, 0x2a, 0xac,
0x2b, 0xf6, 0x2a, 0xc8, 0x2b, 0xf6, 0x2a, 0xd6, 0x2b, 0xf6, 0x2a, 0xe4, 0x2b,
0xf6, 0x2a, 0x00, 0x2c, 0xf6, 0x2a, 0x0e, 0x2c, 0xf6, 0x2a, 0x1c, 0x2c, 0xf6,
0x2a, 0x2a, 0x2c, 0xf6, 0x2a, 0x54, 0x2c, 0xf6, 0x2a, 0x62, 0x2c, 0xb4, 0x2a,
0x70, 0x2c, 0xb4, 0x2a, 0x7e, 0x2c, 0xb4, 0x2a, 0x8c, 0x2c, 0xf6, 0x2a, 0x70,
0x2c, 0xf6, 0x2a, 0x7e, 0x2c, 0xf6, 0x2a, 0x8c, 0x2c, 0xf6, 0x2a, 0xba, 0x2b,
0xb4, 0x2a, 0x0e, 0x2c, 0x17, 0x2b, 0x90, 0x2b, 0x17, 0x2b, 0x9e, 0x2b, 0x17,
0x2b, 0xac, 0x2b, 0x17, 0x2b, 0xba, 0x2b, 0x17, 0x2b, 0xc8, 0x2b, 0x17, 0x2b,
0xd6, 0x2b, 0x17, 0x2b, 0xe4, 0x2b, 0x17, 0x2b, 0xf2, 0x2b, 0x17, 0x2b, 0x00,
0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c,
0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4,
0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a,
0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e,
0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c,
0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4,
0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a,
0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e,
0x2c, 0xd5, 0x2a, 0x9a, 0x2c, 0xd5, 0x2a, 0xa8, 0x2c, 0xd5, 0x2a, 0xb6, 0x2c,
0xb4, 0x2a, 0x0e, 0x2c, 0xb4, 0x2a, 0x0e, 0x2c, 0xb8, 0xc4, 0x2c, 0xc3, 0x8b,
0xcd, 0x8b, 0xec, 0x8b, 0x46, 0x02, 0xf7, 0x66, 0x04, 0x8b, 0x5e, 0x08, 0x03,
0x07, 0x83, 0xd2, 0x00, 0xf7, 0x76, 0x06, 0x89, 0x17, 0x8b, 0xe9, 0xc3, 0x55,
0x8b, 0xec, 0x56, 0x57, 0x8c, 0xd8, 0x8e, 0xc0, 0x8b, 0x7e, 0x04, 0x8b, 0x76,
0x06, 0x8b, 0x4e, 0x08, 0xf3, 0xa4, 0x5f, 0x5e, 0x5d, 0xc3, 0x8b, 0xcd, 0x8b,
0xec, 0xb8, 0x45, 0x31, 0xf7, 0x26, 0x4a, 0x54, 0x05, 0x1f, 0x28, 0xa3, 0x4a,
0x54, 0xf7, 0x66, 0x02, 0x8b, 0xc2, 0x8b, 0xe9, 0xc3, 0x8b, 0xcd, 0x8b, 0xec,
0x8b, 0x56, 0x02, 0xec, 0x32, 0xe4, 0x8b, 0xe9, 0xc3, 0x8b, 0xcd, 0x8b, 0xec,
0x8b, 0x56, 0x02, 0x8a, 0x46, 0x04, 0xee, 0x8b, 0xe9, 0xc3, 0x8b, 0xcd, 0x8b,
0xec, 0x8b, 0x56, 0x02, 0xed, 0x8b, 0xe9, 0xc3, 0x8b, 0xcd, 0x8b, 0xec, 0x8b,
0x56, 0x02, 0x8b, 0x46, 0x04, 0xef, 0x8b, 0xe9, 0xc3, 0x40, 0x28, 0x23, 0x29,
0x24, 0x49, 0x64, 0x3a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e,
0x69, 0x6e, 0x63, 0x2c, 0x76, 0x20, 0x39, 0x2e, 0x35, 0x20, 0x31, 0x39, 0x39,
0x36, 0x2f, 0x31, 0x30, 0x2f, 0x30, 0x37, 0x20, 0x32, 0x31, 0x3a, 0x33, 0x38,
0x3a, 0x32, 0x39, 0x20, 0x74, 0x6f, 0x6e, 0x69, 0x20, 0x45, 0x78, 0x70, 0x20,
0x24, 0x09, 0x00, 0x40, 0x28, 0x23, 0x29, 0x24, 0x49, 0x64, 0x3a, 0x20, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x2c, 0x76, 0x20, 0x38,
0x2e, 0x31, 0x20, 0x31, 0x39, 0x39, 0x32, 0x2f, 0x30, 0x31, 0x2f, 0x32, 0x31,
0x20, 0x31, 0x31, 0x3a, 0x33, 0x37, 0x3a, 0x35, 0x34, 0x20, 0x67, 0x65, 0x6e,
0x65, 0x20, 0x45, 0x78, 0x70, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23, 0x29, 0x24,
0x49, 0x64, 0x3a, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x6e, 0x69, 0x74, 0x2e,
0x61, 0x73, 0x6d, 0x2c, 0x76, 0x20, 0x39, 0x2e, 0x33, 0x20, 0x31, 0x39, 0x39,
0x34, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x38, 0x20, 0x32, 0x32, 0x3a, 0x35, 0x32,
0x3a, 0x35, 0x37, 0x20, 0x6d, 0x69, 0x6c, 0x74, 0x20, 0x45, 0x78, 0x70, 0x20,
0x24, 0x09, 0x00, 0x40, 0x28, 0x23, 0x29, 0x24, 0x49, 0x64, 0x3a, 0x20, 0x68,
0x6f, 0x73, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x61, 0x73, 0x6d, 0x2c, 0x76,
0x20, 0x39, 0x2e, 0x31, 0x20, 0x31, 0x39, 0x39, 0x33, 0x2f, 0x30, 0x32, 0x2f,
0x32, 0x32, 0x20, 0x30, 0x39, 0x3a, 0x35, 0x36, 0x3a, 0x32, 0x33, 0x20, 0x6d,
0x69, 0x6c, 0x74, 0x20, 0x45, 0x78, 0x70, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23,
0x29, 0x24, 0x49, 0x64, 0x3a, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x66, 0x65, 0x70,
0x2e, 0x61, 0x73, 0x6d, 0x2c, 0x76, 0x20, 0x39, 0x2e, 0x31, 0x30, 0x20, 0x31,
0x39, 0x39, 0x37, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x30, 0x20, 0x32, 0x30, 0x3a,
0x35, 0x30, 0x3a, 0x34, 0x32, 0x20, 0x74, 0x6f, 0x6e, 0x69, 0x20, 0x45, 0x78,
0x70, 0x20, 0x24, 0x09, 0x00, 0x40, 0x28, 0x23, 0x29, 0x24, 0x49, 0x64, 0x3a,
0x20, 0x68, 0x6f, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x2e, 0x63, 0x2c, 0x76,
0x20, 0x39, 0x2e, 0x37, 0x20, 0x31, 0x39, 0x39, 0x34, 0x2f, 0x30, 0x33, 0x2f,
0x30, 0x32, 0x20, 0x32, 0x31, 0x3a, 0x35, 0x33, 0x3a, 0x34, 0x38, 0x20, 0x6d,
0x69, 0x6c, 0x74, 0x20, 0x45, 0x78, 0x70, 0x20, 0x24, 0x00, 0x40, 0x28, 0x23,
0x29, 0x24, 0x49, 0x64, 0x3a, 0x20, 0x73, 0x79, 0x6e, 0x63, 0x2e, 0x61, 0x73,
0x6d, 0x2c, 0x76, 0x20, 0x38, 0x2e, 0x35, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2f,
0x30, 0x32, 0x2f, 0x32, 0x38, 0x20, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x3a, 0x35,
0x34, 0x20, 0x63, 0x68, 0x72, 0x69, 0x73, 0x73, 0x20, 0x45, 0x78, 0x70, 0x20,
0x24, 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, 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, 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, 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
};

2296
sys/dev/digi/CX_PCI.bios.h Normal file

File diff suppressed because it is too large Load Diff

45
sys/dev/digi/CX_PCI.c Normal file
View File

@ -0,0 +1,45 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <dev/digi/CX_PCI.bios.h>
#include <dev/digi/CX_PCI.fepos.h>
#include <dev/digi/digi_mod.h>
struct digi_mod digi_mod_CX_PCI = {
DIGI_MOD_VERSION,
{ CX_PCI_bios, sizeof(CX_PCI_bios) },
{ CX_PCI_fepos, sizeof(CX_PCI_fepos) },
{ NULL, 0 }
};
DEV_MODULE(digi_CX_PCI, 0, 0);

2867
sys/dev/digi/CX_PCI.fepos.h Normal file

File diff suppressed because it is too large Load Diff

2257
sys/dev/digi/EPCX.bios.h Normal file

File diff suppressed because it is too large Load Diff

45
sys/dev/digi/EPCX.c Normal file
View File

@ -0,0 +1,45 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <dev/digi/EPCX.bios.h>
#include <dev/digi/EPCX.fepos.h>
#include <dev/digi/digi_mod.h>
struct digi_mod digi_mod_EPCX = {
DIGI_MOD_VERSION,
{ EPCX_bios, sizeof(EPCX_bios) },
{ EPCX_fepos, sizeof(EPCX_fepos) },
{ NULL, 0 }
};
DEV_MODULE(digi_EPCX, 0, 0);

2847
sys/dev/digi/EPCX.fepos.h Normal file

File diff suppressed because it is too large Load Diff

2355
sys/dev/digi/EPCX_PCI.bios.h Normal file

File diff suppressed because it is too large Load Diff

45
sys/dev/digi/EPCX_PCI.c Normal file
View File

@ -0,0 +1,45 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <dev/digi/EPCX_PCI.bios.h>
#include <dev/digi/EPCX_PCI.fepos.h>
#include <dev/digi/digi_mod.h>
struct digi_mod digi_mod_EPCX_PCI = {
DIGI_MOD_VERSION,
{ EPCX_PCI_bios, sizeof(EPCX_PCI_bios) },
{ EPCX_PCI_fepos, sizeof(EPCX_PCI_fepos) },
{ NULL, 0 }
};
DEV_MODULE(digi_EPCX_PCI, 0, 0);

File diff suppressed because it is too large Load Diff

189
sys/dev/digi/Xe.bios.h Normal file
View File

@ -0,0 +1,189 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* based on work by Slawa Olhovchenkov
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
const u_char Xe_bios[] = {
0x28, 0x43, 0x29, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74,
0x20, 0x31, 0x39, 0x39, 0x34, 0x2c, 0x20, 0x44, 0x69, 0x67, 0x69, 0x42, 0x6f,
0x61, 0x72, 0x64, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x00, 0x00, 0x8a, 0xf8, 0x8a,
0xf8, 0x15, 0xf9, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8,
0xbc, 0xf8, 0x8a, 0xf8, 0x96, 0xf8, 0x96, 0xf8, 0x96, 0xf8, 0x96, 0xf8, 0x96,
0xf8, 0x96, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x96, 0xf8, 0x96, 0xf8, 0x8a, 0xf8,
0xad, 0xf8, 0xb0, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a,
0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, 0x04, 0x02,
0x00, 0x02, 0x14, 0x02, 0x10, 0x02, 0x24, 0x02, 0x20, 0x02, 0x34, 0x02, 0x30,
0x02, 0x44, 0x02, 0x40, 0x02, 0x54, 0x02, 0x50, 0x02, 0x64, 0x02, 0x60, 0x02,
0x74, 0x02, 0x70, 0x02, 0x04, 0x01, 0x00, 0x01, 0x1e, 0x2e, 0x8e, 0x1e, 0x22,
0xf8, 0xfe, 0x06, 0x70, 0x00, 0x1f, 0xcf, 0x1e, 0x50, 0x52, 0x2e, 0x8e, 0x1e,
0x22, 0xf8, 0xfe, 0x06, 0x71, 0x00, 0xb8, 0x00, 0x80, 0xba, 0x22, 0xff, 0xef,
0x5a, 0x58, 0x1f, 0xcf, 0xb4, 0x80, 0xcf, 0x1e, 0x2e, 0x8e, 0x1e, 0x22, 0xf8,
0xfe, 0x06, 0x2b, 0x00, 0x1f, 0xcf, 0x1e, 0x52, 0x50, 0x2e, 0x8e, 0x1e, 0x22,
0xf8, 0xcd, 0x16, 0xfe, 0x06, 0x2a, 0x00, 0x80, 0x3e, 0x2a, 0x00, 0x12, 0x72,
0x39, 0xc6, 0x06, 0x2a, 0x00, 0x00, 0xfe, 0x06, 0x29, 0x00, 0x80, 0x3e, 0x29,
0x00, 0x3c, 0x72, 0x29, 0xc6, 0x06, 0x29, 0x00, 0x00, 0xfe, 0x06, 0x28, 0x00,
0x80, 0x3e, 0x28, 0x00, 0x3c, 0x72, 0x19, 0xc6, 0x06, 0x28, 0x00, 0x00, 0xfe,
0x06, 0x27, 0x00, 0x80, 0x3e, 0x27, 0x00, 0x18, 0x72, 0x09, 0xc6, 0x06, 0x27,
0x00, 0x00, 0xff, 0x06, 0x25, 0x00, 0xba, 0x22, 0xff, 0xb8, 0x00, 0x80, 0xef,
0x58, 0x5a, 0x1f, 0xcf, 0x60, 0x1e, 0x06, 0xfc, 0x2e, 0x8e, 0x06, 0x22, 0xf8,
0x2e, 0x8e, 0x1e, 0x22, 0xf8, 0x8d, 0x36, 0x40, 0x00, 0xad, 0x3c, 0x3f, 0x7f,
0x22, 0x3c, 0x1f, 0x7f, 0x22, 0x32, 0xe4, 0xd1, 0xe0, 0x3d, 0x16, 0x00, 0x90,
0x73, 0x14, 0xbb, 0x56, 0xf9, 0x03, 0xd8, 0x2e, 0xff, 0x17, 0x8d, 0x36, 0x40,
0x00, 0xb0, 0x00, 0x89, 0x04, 0x07, 0x1f, 0x61, 0xcf, 0xb4, 0x80, 0xeb, 0xf0,
0xcd, 0x15, 0xeb, 0xec, 0x6c, 0xf9, 0x79, 0xf9, 0xb9, 0xf9, 0xd3, 0xf9, 0xd8,
0xf9, 0xe1, 0xf9, 0xe9, 0xf9, 0xf2, 0xf9, 0xfa, 0xf9, 0xfd, 0xf9, 0x2a, 0xfa,
0xe4, 0x00, 0x24, 0xf7, 0xe6, 0x00, 0x0c, 0x08, 0xe6, 0x00, 0xb4, 0x00, 0xc3,
0x1e, 0xad, 0x8b, 0xd8, 0xad, 0x8e, 0xdb, 0x8b, 0xf0, 0x33, 0xdb, 0x8b, 0x07,
0x3d, 0x4f, 0x53, 0x75, 0x2a, 0x8a, 0x47, 0x02, 0x32, 0xe4, 0x86, 0xc4, 0x8b,
0xc8, 0x32, 0xc0, 0x02, 0x07, 0x43, 0xe2, 0xfb, 0x0a, 0xc0, 0x75, 0x16, 0x8c,
0xd9, 0x1f, 0x89, 0x0e, 0x2e, 0x00, 0x89, 0x36, 0x2c, 0x00, 0x8d, 0x1e, 0x02,
0x00, 0xc7, 0x07, 0x45, 0x4d, 0x32, 0xe4, 0xc3, 0x1f, 0xb4, 0x80, 0xc3, 0xad,
0x8b, 0xd8, 0xad, 0x8b, 0xd0, 0xad, 0x8e, 0xc0, 0xad, 0x8b, 0xf8, 0xad, 0x8b,
0xc8, 0x8b, 0xf2, 0x1e, 0x8e, 0xdb, 0xf3, 0xa4, 0x1f, 0x32, 0xe4, 0xc3, 0xea,
0xf0, 0xff, 0x00, 0xf0, 0xad, 0x8b, 0xd0, 0xec, 0x88, 0x04, 0x32, 0xe4, 0xc3,
0xad, 0x8b, 0xd0, 0xac, 0xee, 0x32, 0xe4, 0xc3, 0xad, 0x8b, 0xd0, 0xed, 0x89,
0x04, 0x32, 0xe4, 0xc3, 0xad, 0x8b, 0xd0, 0xad, 0xef, 0x32, 0xe4, 0xc3, 0xb4,
0x80, 0xc3, 0xac, 0x3c, 0x12, 0x7f, 0x25, 0xfe, 0xc8, 0x32, 0xe4, 0xd1, 0xe0,
0x8d, 0x1e, 0x66, 0xf8, 0x03, 0xd8, 0x2e, 0x8b, 0x17, 0xec, 0xac, 0x3c, 0x0f,
0x7f, 0x10, 0x3c, 0x00, 0x74, 0x03, 0xee, 0x90, 0x90, 0xec, 0x8b, 0xfe, 0x1e,
0x07, 0xaa, 0x32, 0xe4, 0xc3, 0xb4, 0x80, 0xc3, 0xac, 0x3c, 0x12, 0x7f, 0x1f,
0xfe, 0xc8, 0x32, 0xe4, 0xd1, 0xe0, 0x8d, 0x1e, 0x66, 0xf8, 0x03, 0xd8, 0x2e,
0x8b, 0x17, 0xec, 0xac, 0x3c, 0x0f, 0x7f, 0x0a, 0x3c, 0x00, 0x74, 0x01, 0xee,
0xac, 0xee, 0x32, 0xe4, 0xc3, 0xb4, 0x80, 0xc3, 0xfc, 0x8e, 0xc0, 0xb8, 0xff,
0xff, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xab, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xaf,
0xe3, 0x01, 0xc3, 0x8b, 0xcb, 0xbf, 0x00, 0x00, 0x26, 0x89, 0x3d, 0x83, 0xc7,
0x02, 0xe2, 0xf8, 0xbe, 0x00, 0x00, 0x8b, 0xcb, 0x26, 0x8b, 0x3c, 0x3b, 0xfe,
0x74, 0x01, 0xc3, 0x83, 0xc6, 0x02, 0x83, 0xc7, 0x02, 0xe2, 0xf0, 0x33, 0xc0,
0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xab, 0x8b, 0xcb, 0x33, 0xff, 0xf3, 0xaf, 0xc3,
0x32, 0xc0, 0x26, 0x80, 0x3e, 0x23, 0x00, 0x00, 0x74, 0x02, 0x0c, 0x01, 0x26,
0xf7, 0x06, 0x20, 0x00, 0x0f, 0x00, 0x74, 0x02, 0x0c, 0x02, 0x26, 0xf7, 0x06,
0x20, 0x00, 0xf0, 0x00, 0x74, 0x02, 0x0c, 0x04, 0x26, 0xf7, 0x06, 0x20, 0x00,
0x00, 0xff, 0x74, 0x02, 0x0c, 0x08, 0x26, 0xa2, 0x24, 0x00, 0xb8, 0x00, 0x40,
0xba, 0x5e, 0xff, 0xef, 0xba, 0x66, 0xff, 0xef, 0xba, 0x52, 0xff, 0xb8, 0x63,
0x0e, 0xef, 0xba, 0x56, 0xff, 0xb8, 0x05, 0xe0, 0xef, 0xba, 0x28, 0xff, 0xb8,
0xfc, 0x00, 0xef, 0xb8, 0x00, 0x02, 0x26, 0xa3, 0x2e, 0x00, 0xb8, 0x04, 0x00,
0x26, 0xa3, 0x2c, 0x00, 0xb0, 0xc3, 0xe6, 0x08, 0x8a, 0xd8, 0xe4, 0x08, 0x3a,
0xc3, 0x75, 0x06, 0x26, 0xc6, 0x06, 0xb4, 0x00, 0x01, 0xb0, 0x00, 0xe6, 0x00,
0xfc, 0x8d, 0x3e, 0x00, 0x00, 0xb8, 0x47, 0x44, 0xab, 0xb8, 0xff, 0xff, 0xab,
0xab, 0xab, 0xb8, 0x42, 0x49, 0xab, 0xb8, 0x4f, 0x53, 0xab, 0xb8, 0x58, 0x69,
0x26, 0x80, 0x3e, 0x10, 0x00, 0x04, 0x74, 0x0e, 0xb8, 0x58, 0x65, 0x26, 0x80,
0x3e, 0x10, 0x00, 0x03, 0x74, 0x03, 0xb8, 0x58, 0x74, 0xab, 0x8d, 0x36, 0xfe,
0xff, 0x8a, 0x04, 0x8d, 0x36, 0xff, 0xff, 0x8a, 0x24, 0xab, 0xfb, 0x26, 0x81,
0x0e, 0x12, 0x00, 0x00, 0x08, 0x06, 0x1f, 0xa1, 0x00, 0x00, 0x8b, 0x1e, 0x02,
0x00, 0x3d, 0x44, 0x47, 0x75, 0x0b, 0x26, 0x81, 0x0e, 0x12, 0x00, 0x00, 0x10,
0xff, 0x2e, 0x2c, 0x00, 0x81, 0xfb, 0x45, 0x4d, 0x75, 0xe3, 0x26, 0x81, 0x0e,
0x12, 0x00, 0x00, 0x20, 0xff, 0x2e, 0x2c, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xba, 0xa8,
0xff, 0xb8, 0xba, 0x81, 0xef, 0xba, 0xa4, 0xff, 0xb8, 0x3a, 0x00, 0xef, 0x90,
0xe4, 0x00, 0xa8, 0x60, 0x75, 0x0c, 0x24, 0x06, 0x74, 0x14, 0x3c, 0x02, 0x74,
0x1c, 0x3c, 0x04, 0x74, 0x24, 0xbb, 0x38, 0xc0, 0xbe, 0xf8, 0x81, 0xbf, 0xba,
0xa0, 0xeb, 0x22, 0x90, 0xbb, 0x38, 0xf0, 0xbe, 0xf8, 0x41, 0xbf, 0xba, 0x81,
0xeb, 0x16, 0x90, 0xbb, 0x38, 0xf0, 0xbe, 0xf8, 0xe1, 0xbf, 0xba, 0x88, 0xeb,
0x0a, 0x90, 0xbb, 0x38, 0xc0, 0xbe, 0xf8, 0x41, 0xbf, 0xba, 0x81, 0xba, 0xa0,
0xff, 0x8b, 0xc3, 0xef, 0xba, 0xa2, 0xff, 0xb8, 0xf8, 0x0f, 0xef, 0xba, 0xa6,
0xff, 0x8b, 0xc6, 0xef, 0xba, 0xa8, 0xff, 0x8b, 0xc7, 0xef, 0x8c, 0xc8, 0x8e,
0xd8, 0xe4, 0x00, 0x24, 0x06, 0x74, 0x17, 0xbb, 0x00, 0x80, 0xbd, 0xc0, 0xe0,
0x3c, 0x02, 0x74, 0x5a, 0xbd, 0xc0, 0xc0, 0x3c, 0x04, 0x74, 0x53, 0xbd, 0xc0,
0x80, 0xeb, 0x4e, 0x90, 0xb9, 0x08, 0x00, 0xb8, 0x00, 0x80, 0x8e, 0xc0, 0x26,
0xa3, 0x00, 0x00, 0x05, 0x00, 0x10, 0xe2, 0xf5, 0xbd, 0xc0, 0xf0, 0xbb, 0x00,
0x7c, 0xb8, 0x00, 0xe0, 0x8e, 0xc0, 0x26, 0x8b, 0x0e, 0x00, 0x00, 0x3b, 0xc8,
0x75, 0x28, 0xbb, 0x00, 0x80, 0xbd, 0xc0, 0xe0, 0xb8, 0x00, 0xc0, 0x8e, 0xc0,
0x26, 0x8b, 0x0e, 0x00, 0x00, 0x3b, 0xc8, 0x75, 0x14, 0xbd, 0xc0, 0xc0, 0xb8,
0x00, 0x80, 0x8e, 0xc0, 0x26, 0x8b, 0x0e, 0x00, 0x00, 0x3b, 0xc8, 0x75, 0x03,
0xbd, 0xc0, 0x80, 0x8c, 0xc8, 0x8e, 0xd0, 0xbc, 0xed, 0xfc, 0x8b, 0xc5, 0x25,
0x00, 0xf0, 0xe9, 0x6c, 0xfd, 0xb4, 0x00, 0x74, 0x06, 0xb4, 0xff, 0xeb, 0x02,
0xe5, 0xfc, 0x8e, 0xc5, 0x2e, 0x89, 0x2e, 0x22, 0xf8, 0xe4, 0x00, 0x24, 0x16,
0x26, 0xa2, 0x11, 0x00, 0x26, 0x83, 0x0e, 0x12, 0x00, 0x01, 0x80, 0xfc, 0x00,
0x74, 0x06, 0x26, 0x83, 0x0e, 0x14, 0x00, 0x01, 0x26, 0xc7, 0x06, 0x18, 0x00,
0x40, 0x00, 0x26, 0xc6, 0x06, 0x10, 0x00, 0x03, 0xa8, 0x10, 0x74, 0x06, 0x26,
0xc6, 0x06, 0x10, 0x00, 0x04, 0xb8, 0x00, 0x00, 0x8e, 0xc0, 0xb8, 0xaa, 0x55,
0x26, 0xa3, 0x00, 0x00, 0x26, 0xc7, 0x06, 0x02, 0x00, 0x00, 0x00, 0x26, 0xc7,
0x06, 0x04, 0x00, 0x00, 0x00, 0x8b, 0xcd, 0x81, 0xe1, 0x00, 0xf0, 0x8e, 0xc1,
0x26, 0x8b, 0x1e, 0x00, 0x00, 0x3b, 0xc3, 0x75, 0x13, 0x8e, 0xc5, 0x26, 0xc6,
0x06, 0x10, 0x00, 0x05, 0xb8, 0x40, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x04, 0xe9,
0x99, 0x00, 0x8c, 0xc8, 0x8e, 0xd0, 0xbc, 0x7c, 0xfd, 0xb8, 0x00, 0x00, 0xbb,
0x00, 0x20, 0xe9, 0xdd, 0xfc, 0xb4, 0x00, 0x74, 0x06, 0xb4, 0xff, 0xeb, 0x02,
0x74, 0xfd, 0x8e, 0xc5, 0x80, 0xfc, 0x00, 0x74, 0x08, 0x26, 0x83, 0x0e, 0x14,
0x00, 0x02, 0xeb, 0x0d, 0x26, 0xc7, 0x06, 0x16, 0x00, 0x10, 0x00, 0x26, 0x83,
0x0e, 0x12, 0x00, 0x02, 0xb8, 0x40, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x04, 0xe4,
0x00, 0xa8, 0x60, 0x75, 0x07, 0xba, 0xa2, 0xff, 0xb8, 0xfc, 0x0f, 0xef, 0xb8,
0x00, 0x04, 0x8e, 0xc0, 0xb8, 0xaa, 0x55, 0x26, 0xa3, 0x00, 0x00, 0x26, 0xc7,
0x06, 0x02, 0x00, 0x00, 0x00, 0x26, 0xc7, 0x06, 0x04, 0x00, 0x00, 0x00, 0xb9,
0x00, 0x00, 0x8e, 0xc1, 0x26, 0x8b, 0x1e, 0x00, 0x00, 0x3b, 0xc3, 0x75, 0x02,
0xeb, 0x24, 0x8e, 0xc5, 0x26, 0x83, 0x0e, 0x12, 0x00, 0x04, 0xb8, 0x00, 0x04,
0xbb, 0x00, 0x60, 0x06, 0xe8, 0x66, 0xfc, 0x07, 0x75, 0x09, 0x26, 0xc7, 0x06,
0x16, 0x00, 0x40, 0x00, 0xeb, 0x06, 0x26, 0x83, 0x0e, 0x14, 0x00, 0x04, 0x8e,
0xc5, 0x8c, 0xc0, 0x3d, 0xc0, 0xf0, 0x75, 0x03, 0xe9, 0x9f, 0x00, 0x3d, 0xc0,
0x80, 0x74, 0x62, 0x3d, 0xc0, 0xc0, 0x74, 0x23, 0x26, 0x83, 0x0e, 0x12, 0x00,
0x08, 0xb8, 0x00, 0xf0, 0xbb, 0x00, 0x7c, 0x06, 0xe8, 0x2e, 0xfc, 0x07, 0x75,
0x08, 0x26, 0x83, 0x06, 0x18, 0x00, 0x40, 0xeb, 0x06, 0x26, 0x83, 0x0e, 0x14,
0x00, 0x08, 0xeb, 0x72, 0xb9, 0x03, 0x00, 0xb8, 0x00, 0xd0, 0xba, 0x08, 0x00,
0xbb, 0x00, 0x80, 0x3d, 0x00, 0xf0, 0x75, 0x03, 0xbb, 0x00, 0x7c, 0x26, 0x09,
0x16, 0x12, 0x00, 0x06, 0x50, 0x51, 0xe8, 0xfc, 0xfb, 0x59, 0x58, 0x07, 0x75,
0x0f, 0x26, 0x83, 0x06, 0x18, 0x00, 0x40, 0xd1, 0xe2, 0x05, 0x00, 0x10, 0xe2,
0xd8, 0xeb, 0x05, 0x26, 0x09, 0x16, 0x14, 0x00, 0xeb, 0x38, 0xb9, 0x07, 0x00,
0xb8, 0x00, 0x90, 0xba, 0x08, 0x00, 0xbb, 0x00, 0x80, 0x3d, 0x00, 0xf0, 0x75,
0x03, 0xbb, 0x00, 0x7c, 0x26, 0x09, 0x16, 0x12, 0x00, 0x06, 0x50, 0x51, 0xe8,
0xc2, 0xfb, 0x59, 0x58, 0x07, 0x75, 0x0f, 0x26, 0x83, 0x06, 0x18, 0x00, 0x40,
0xd1, 0xe2, 0x05, 0x00, 0x10, 0xe2, 0xd8, 0xeb, 0x05, 0x26, 0x09, 0x16, 0x14,
0x00, 0x26, 0xa1, 0x18, 0x00, 0x2d, 0x10, 0x00, 0x26, 0xa3, 0x1a, 0x00, 0x06,
0xfc, 0x33, 0xff, 0x8e, 0xc7, 0xb9, 0x00, 0x02, 0xb8, 0x00, 0xf0, 0xf3, 0xab,
0x33, 0xff, 0xbe, 0x24, 0xf8, 0xb9, 0x20, 0x00, 0xa5, 0x47, 0x47, 0xe2, 0xfb,
0xbe, 0x64, 0xf8, 0xb9, 0xe0, 0x00, 0x8b, 0x1c, 0x26, 0x89, 0x1d, 0x83, 0xc7,
0x04, 0xe2, 0xf8, 0x07, 0xba, 0x28, 0xff, 0xb8, 0xfd, 0x00, 0xef, 0xba, 0x32,
0xff, 0xb8, 0x0d, 0x00, 0xef, 0xba, 0x34, 0xff, 0xb8, 0x0f, 0x00, 0xef, 0xba,
0x36, 0xff, 0xb8, 0x0e, 0x00, 0xef, 0xba, 0x38, 0xff, 0xb8, 0x19, 0x00, 0xef,
0xba, 0x3a, 0xff, 0xb8, 0x18, 0x00, 0xef, 0xba, 0x3c, 0xff, 0xb8, 0x0b, 0x00,
0xef, 0xba, 0x3e, 0xff, 0xb8, 0x1a, 0x00, 0xef, 0x8d, 0x3e, 0x90, 0x00, 0x8d,
0x36, 0x66, 0xf8, 0xb9, 0x10, 0x00, 0xf3, 0xa5, 0x8d, 0x3e, 0xb0, 0x00, 0x8d,
0x36, 0x86, 0xf8, 0xb9, 0x02, 0x00, 0xf3, 0xa5, 0xb9, 0x10, 0x00, 0x8d, 0x36,
0x90, 0x00, 0x83, 0xc6, 0x1e, 0x26, 0x8b, 0x14, 0xb3, 0x10, 0x32, 0xc0, 0xec,
0xb0, 0x0c, 0xee, 0x8a, 0xc3, 0x8a, 0xc3, 0xee, 0x83, 0xee, 0x02, 0x26, 0x8b,
0x14, 0xfe, 0xcb, 0xe2, 0xeb, 0xb9, 0x10, 0x00, 0x8d, 0x36, 0x90, 0x00, 0x26,
0x8b, 0x14, 0xb3, 0x01, 0xbf, 0x00, 0x80, 0xb0, 0x0c, 0xee, 0xf6, 0xe8, 0xec,
0x3a, 0xc3, 0x75, 0x0e, 0xd1, 0xc7, 0x26, 0x09, 0x3e, 0x20, 0x00, 0x26, 0xfe,
0x06, 0x22, 0x00, 0xeb, 0x07, 0x33, 0xc0, 0x26, 0x89, 0x04, 0xd1, 0xc7, 0x83,
0xc6, 0x02, 0x26, 0x8b, 0x14, 0xfe, 0xc3, 0xe2, 0xd7, 0x26, 0xc6, 0x06, 0x23,
0x00, 0x01, 0x8d, 0x36, 0xb0, 0x00, 0x26, 0x8b, 0x14, 0x32, 0xc0, 0xee, 0xb0,
0x0c, 0xee, 0xb0, 0x5a, 0xee, 0xb0, 0x0c, 0xee, 0xf6, 0xe8, 0xec, 0x3c, 0x5a,
0x74, 0x14, 0x26, 0xc7, 0x06, 0xb0, 0x00, 0x00, 0x00, 0x26, 0xc7, 0x06, 0xb2,
0x00, 0x00, 0x00, 0x26, 0xc6, 0x06, 0x23, 0x00, 0x00, 0xe9, 0xd3, 0xfa, 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, 0xea, 0x00, 0xfc, 0x00, 0xf0, 0x4d, 0x2f, 0x50, 0x43,
0x2f, 0x58, 0x2a, 0x39, 0x34, 0x34, 0x31
};

45
sys/dev/digi/Xe.c Normal file
View File

@ -0,0 +1,45 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <dev/digi/Xe.bios.h>
#include <dev/digi/Xe.fepos.h>
#include <dev/digi/digi_mod.h>
struct digi_mod digi_mod_Xe = {
DIGI_MOD_VERSION,
{ Xe_bios, sizeof(Xe_bios) },
{ Xe_fepos, sizeof(Xe_fepos) },
{ NULL, 0 }
};
DEV_MODULE(digi_Xe, 0, 0);

504
sys/dev/digi/Xe.fepos.h Normal file
View File

@ -0,0 +1,504 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* based on work by Slawa Olhovchenkov
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
const u_char Xe_fepos[] = {
0x4f, 0x53, 0x18, 0x80, 0xe9, 0xbf, 0x15, 0x00, 0x40, 0x28, 0x23, 0x29, 0x46,
0x45, 0x50, 0x4f, 0x53, 0x20, 0x37, 0x2e, 0x30, 0x38, 0x20, 0x34, 0x2f, 0x32,
0x30, 0x2f, 0x39, 0x35, 0x00, 0x40, 0x28, 0x23, 0x29, 0x28, 0x43, 0x29, 0x43,
0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x31, 0x39, 0x38, 0x39,
0x2d, 0x31, 0x39, 0x39, 0x35, 0x20, 0x44, 0x69, 0x67, 0x69, 0x42, 0x6f, 0x61,
0x72, 0x64, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x00, 0xcb, 0x0c, 0xcb, 0x0c, 0xe2,
0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0x57, 0x0c,
0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0x53, 0x0b, 0xcb, 0x0c, 0xcb, 0x0c, 0x42,
0x0b, 0xcb, 0x0c, 0xcb, 0x0c, 0x12, 0x0d, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c,
0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb,
0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0xcb, 0x0c, 0x00, 0x10, 0x80, 0x10, 0x00, 0x11,
0x80, 0x11, 0x00, 0x12, 0x80, 0x12, 0x00, 0x13, 0x80, 0x13, 0x00, 0x14, 0x80,
0x14, 0x00, 0x15, 0x80, 0x15, 0x00, 0x16, 0x80, 0x16, 0x00, 0x17, 0x80, 0x17,
0x78, 0x0b, 0xb9, 0x0b, 0x50, 0x0c, 0xb9, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x8d,
0x0b, 0x8d, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0x8d, 0x0b,
0x8d, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x50, 0x0c, 0xb9, 0x0b, 0x50, 0x0c, 0xb9,
0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b,
0xc0, 0x0b, 0xc0, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x94,
0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b,
0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94,
0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b,
0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94,
0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x94, 0x0b, 0x16, 0x00,
0xfe, 0x11, 0xfe, 0x0b, 0x2c, 0x08, 0xb5, 0x06, 0xfe, 0x05, 0x7e, 0x04, 0xfe,
0x02, 0x7e, 0x01, 0xbe, 0x00, 0x7e, 0x00, 0x5e, 0x00, 0x2e, 0x00, 0x16, 0x00,
0x0a, 0x00, 0x04, 0x00, 0x16, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e,
0x00, 0x06, 0x00, 0x7e, 0x04, 0xfe, 0x02, 0x7e, 0x01, 0xbe, 0x00, 0x7e, 0x00,
0x5e, 0x00, 0x2e, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x18, 0x00, 0x86,
0x13, 0x03, 0x0d, 0xdf, 0x08, 0x41, 0x07, 0x81, 0x06, 0xe0, 0x04, 0x3f, 0x03,
0x9f, 0x01, 0xce, 0x00, 0x89, 0x00, 0x66, 0x00, 0x32, 0x00, 0x18, 0x00, 0x0b,
0x00, 0x0b, 0x00, 0x18, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x41, 0x07,
0x81, 0x06, 0xe0, 0x04, 0x3f, 0x03, 0x9f, 0x01, 0xce, 0x00, 0x89, 0x00, 0x66,
0x00, 0x32, 0x00, 0x18, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x00, 0x80, 0x40, 0xc0,
0x1f, 0x3f, 0x7f, 0xff, 0x00, 0x04, 0x02, 0x06, 0x08, 0x0c, 0x0a, 0x0e, 0x00,
0x04, 0x02, 0x06, 0x08, 0x0c, 0x0a, 0x0e, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08,
0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0x1e, 0x06, 0x3e,
0x06, 0xef, 0x06, 0xf8, 0x05, 0x0e, 0x06, 0x55, 0x07, 0xa0, 0x08, 0xa0, 0x08,
0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0,
0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08,
0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d,
0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08,
0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d,
0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08,
0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d,
0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05,
0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1,
0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05,
0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1,
0x05, 0xa1, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08,
0x9d, 0x08, 0x9d, 0x08, 0x5b, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea,
0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05,
0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea,
0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0xea, 0x05,
0xea, 0x05, 0xea, 0x05, 0xea, 0x05, 0x69, 0x05, 0x77, 0x05, 0x85, 0x05, 0x93,
0x05, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08,
0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0,
0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08,
0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0,
0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0xa0, 0x08,
0xa0, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d,
0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08,
0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d,
0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08,
0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d,
0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08,
0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d,
0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08,
0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d,
0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08,
0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d,
0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08,
0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d,
0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08,
0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x00,
0x00, 0xfa, 0x8a, 0x5c, 0x50, 0xf6, 0xc3, 0x0e, 0x75, 0x3c, 0xf6, 0xc3, 0x40,
0x75, 0x16, 0xf6, 0xc3, 0x10, 0x74, 0x26, 0xf6, 0xc3, 0x01, 0x75, 0x13, 0xf6,
0xc3, 0x20, 0x75, 0x15, 0xc7, 0x04, 0xb6, 0x04, 0xe9, 0xcf, 0x00, 0x8b, 0x44,
0x02, 0x89, 0x04, 0xff, 0xe0, 0xc7, 0x04, 0x03, 0x05, 0xe9, 0x0e, 0x01, 0xc7,
0x04, 0x66, 0x08, 0xe9, 0x6a, 0x04, 0xf6, 0xc3, 0x20, 0x74, 0x1a, 0xc7, 0x04,
0xb3, 0x08, 0xe9, 0xab, 0x04, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0xf6, 0xc3,
0x02, 0x75, 0x42, 0xf6, 0xc3, 0x08, 0x75, 0x0e, 0xeb, 0x69, 0x90, 0xc7, 0x04,
0x20, 0x04, 0xfb, 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0xf6, 0xc1, 0x04, 0x74,
0x27, 0x80, 0x64, 0x50, 0xf7, 0xf6, 0x44, 0x51, 0x02, 0x74, 0x13, 0xf6, 0x44,
0x29, 0x10, 0x74, 0x0d, 0x8a, 0x44, 0x5d, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea,
0x02, 0xe9, 0x49, 0x04, 0x8a, 0x44, 0x5c, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea,
0x02, 0xe9, 0x3c, 0x04, 0xf6, 0x44, 0x50, 0x04, 0x75, 0x28, 0x83, 0x7c, 0x24,
0xff, 0x74, 0x1f, 0xa1, 0x00, 0x0e, 0x2b, 0x44, 0x26, 0x3d, 0x64, 0x00, 0x77,
0x14, 0xb0, 0x05, 0xee, 0x8a, 0x44, 0x75, 0x24, 0xef, 0x88, 0x44, 0x75, 0xee,
0x80, 0x64, 0x50, 0xfd, 0x80, 0x64, 0x4b, 0xfd, 0xe9, 0x0e, 0x04, 0xb0, 0x01,
0xee, 0x90, 0x90, 0x90, 0xec, 0xa8, 0x01, 0x74, 0x25, 0xb0, 0x05, 0xee, 0x8a,
0x44, 0x75, 0x0c, 0x10, 0x88, 0x44, 0x75, 0xee, 0xa1, 0x00, 0x0e, 0x03, 0x44,
0x24, 0x89, 0x44, 0x26, 0x80, 0x64, 0x50, 0xfb, 0x80, 0x64, 0x4b, 0xfb, 0x80,
0x4c, 0x50, 0x02, 0x80, 0x4c, 0x4b, 0x02, 0xe9, 0xdb, 0x03, 0xfa, 0x8b, 0x54,
0x20, 0xec, 0x8a, 0xc8, 0x22, 0x44, 0x52, 0x3a, 0x44, 0x53, 0x75, 0x19, 0x8b,
0x7c, 0x0c, 0x3b, 0x7c, 0x0a, 0x74, 0x18, 0x8e, 0x44, 0x08, 0x26, 0x8a, 0x05,
0x47, 0x23, 0x7c, 0x0e, 0x89, 0x7c, 0x0c, 0x83, 0xc2, 0x02, 0xee, 0xfb, 0x81,
0xc6, 0x80, 0x00, 0xff, 0x24, 0xb0, 0x01, 0xee, 0x90, 0x90, 0x90, 0xec, 0xa8,
0x01, 0x74, 0x0c, 0x80, 0x64, 0x50, 0xef, 0x80, 0x64, 0x4b, 0xef, 0xc7, 0x04,
0xc3, 0x03, 0xfb, 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0xfa, 0x8b, 0x54, 0x20,
0xec, 0x8a, 0xc8, 0x22, 0x44, 0x52, 0x3a, 0x44, 0x53, 0x75, 0x3a, 0x8b, 0x7c,
0x0c, 0x3b, 0x7c, 0x0a, 0x74, 0x1b, 0x8e, 0x44, 0x08, 0x26, 0x8a, 0x05, 0x47,
0x23, 0x7c, 0x0e, 0x89, 0x7c, 0x0c, 0x8a, 0xd8, 0x22, 0x5c, 0x62, 0x32, 0xff,
0x03, 0xdb, 0x2e, 0xff, 0xa7, 0xc1, 0x01, 0xb0, 0x01, 0xee, 0x90, 0x90, 0x90,
0xec, 0xa8, 0x01, 0x74, 0x0c, 0x80, 0x64, 0x50, 0xef, 0x80, 0x64, 0x4b, 0xef,
0xc7, 0x04, 0xc3, 0x03, 0xf6, 0xc1, 0x01, 0x75, 0x07, 0xfb, 0x81, 0xc6, 0x80,
0x00, 0xff, 0x24, 0xe9, 0x61, 0x03, 0xf6, 0x44, 0x2a, 0x01, 0x75, 0x03, 0xe9,
0x39, 0x03, 0xb0, 0x27, 0xeb, 0x42, 0x90, 0xf6, 0x44, 0x2a, 0x01, 0x75, 0x03,
0xe9, 0x2b, 0x03, 0xb0, 0x28, 0xeb, 0x34, 0x90, 0xf6, 0x44, 0x2a, 0x01, 0x75,
0x03, 0xe9, 0x1d, 0x03, 0xb0, 0x21, 0xeb, 0x26, 0x90, 0xf6, 0x44, 0x2a, 0x01,
0x75, 0x03, 0xe9, 0x0f, 0x03, 0xb0, 0x29, 0xeb, 0x18, 0x90, 0xf6, 0x44, 0x2a,
0x01, 0x75, 0x03, 0xe9, 0x01, 0x03, 0xb0, 0x5e, 0xeb, 0x0a, 0x90, 0xf6, 0x44,
0x2a, 0x01, 0x75, 0x03, 0xe9, 0xf3, 0x02, 0x88, 0x44, 0x61, 0xb0, 0x5c, 0x83,
0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, 0x80, 0x4c, 0x50, 0x40, 0xc7, 0x04, 0xc6,
0x05, 0xc7, 0x44, 0x02, 0xc6, 0x05, 0xe9, 0xcb, 0x02, 0xfa, 0x8b, 0x54, 0x20,
0xec, 0x8a, 0xc8, 0x22, 0x44, 0x52, 0x3a, 0x44, 0x53, 0x75, 0x12, 0x80, 0x64,
0x50, 0xbf, 0xc7, 0x04, 0x03, 0x05, 0x83, 0x44, 0x30, 0x02, 0x8a, 0x44, 0x61,
0xe9, 0xb9, 0x02, 0xe9, 0xa7, 0x02, 0xf6, 0x44, 0x2a, 0x02, 0x75, 0x03, 0xe9,
0xaa, 0x02, 0x2c, 0x20, 0xe9, 0xa5, 0x02, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea,
0x02, 0xf6, 0x44, 0x2b, 0x40, 0x75, 0x03, 0xe9, 0x89, 0x02, 0xb8, 0x7f, 0x00,
0xe9, 0x9b, 0x01, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, 0xf6, 0x44, 0x2b,
0x80, 0x75, 0xed, 0xe9, 0x73, 0x02, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02,
0xf7, 0x44, 0x30, 0xff, 0xff, 0x74, 0x03, 0xff, 0x4c, 0x30, 0xf6, 0x44, 0x2b,
0x20, 0x75, 0x03, 0xe9, 0x59, 0x02, 0xb8, 0x02, 0x00, 0xe9, 0x6b, 0x01, 0xb3,
0x18, 0x22, 0x5c, 0x2b, 0x75, 0x16, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02,
0x8b, 0x44, 0x30, 0x05, 0x08, 0x00, 0x25, 0xf8, 0xff, 0x89, 0x44, 0x30, 0xe9,
0x36, 0x02, 0x80, 0xfb, 0x18, 0x75, 0x57, 0xb0, 0x20, 0x83, 0xc2, 0x02, 0xee,
0x83, 0xea, 0x02, 0x8b, 0x44, 0x30, 0x8b, 0xd8, 0x05, 0x08, 0x00, 0x25, 0xf8,
0xff, 0x89, 0x44, 0x30, 0x2b, 0xc3, 0x48, 0x74, 0x38, 0x89, 0x44, 0x32, 0x80,
0x4c, 0x50, 0x40, 0xc7, 0x44, 0x02, 0x8f, 0x06, 0xc7, 0x04, 0x8f, 0x06, 0xe9,
0x02, 0x02, 0xfa, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0x22, 0x44, 0x52, 0x3a,
0x44, 0x53, 0x75, 0x16, 0xb0, 0x20, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02,
0xff, 0x4c, 0x32, 0x75, 0x08, 0x80, 0x64, 0x50, 0xbf, 0xc7, 0x04, 0x03, 0x05,
0xe9, 0xda, 0x01, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, 0x80, 0xfb, 0x08,
0x75, 0x18, 0x8b, 0x44, 0x30, 0x8b, 0xd8, 0x05, 0x08, 0x00, 0x25, 0xf8, 0xff,
0x89, 0x44, 0x30, 0x2b, 0xc3, 0x3d, 0x05, 0x00, 0x7c, 0xdc, 0xe9, 0xce, 0x00,
0x8b, 0x44, 0x30, 0x8b, 0xd8, 0x05, 0x08, 0x00, 0x25, 0xf8, 0xff, 0x89, 0x44,
0x30, 0xb8, 0x02, 0x00, 0xe9, 0xba, 0x00, 0xf6, 0x44, 0x2a, 0x20, 0x75, 0x43,
0xf6, 0x44, 0x2a, 0x04, 0x74, 0x42, 0xf6, 0x44, 0x2a, 0x10, 0x74, 0x07, 0xf7,
0x44, 0x30, 0xff, 0xff, 0x74, 0x30, 0xb0, 0x0d, 0x83, 0xc2, 0x02, 0xee, 0x83,
0xea, 0x02, 0x80, 0x4c, 0x50, 0x40, 0xc7, 0x04, 0x21, 0x07, 0xc7, 0x44, 0x02,
0x21, 0x07, 0xe9, 0x70, 0x01, 0xfa, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0x22,
0x44, 0x52, 0x3a, 0x44, 0x53, 0x75, 0x1c, 0x80, 0x64, 0x50, 0xbf, 0xc7, 0x04,
0x03, 0x05, 0xb0, 0x0a, 0xeb, 0x2b, 0x90, 0xb0, 0x0a, 0x83, 0xc2, 0x02, 0xee,
0x83, 0xea, 0x02, 0xf6, 0x44, 0x2b, 0x01, 0x75, 0x03, 0xe9, 0x42, 0x01, 0xb8,
0x05, 0x00, 0xeb, 0x55, 0x90, 0xf6, 0x44, 0x2a, 0x08, 0x75, 0xe2, 0xf6, 0x44,
0x2a, 0x10, 0x74, 0x06, 0x83, 0x7c, 0x30, 0x00, 0x74, 0x13, 0x83, 0xc2, 0x02,
0xee, 0x83, 0xea, 0x02, 0xb3, 0x06, 0x22, 0x5c, 0x2b, 0x75, 0x08, 0xc7, 0x44,
0x30, 0x00, 0x00, 0xe9, 0x14, 0x01, 0x80, 0xfb, 0x02, 0x75, 0x14, 0x8b, 0x44,
0x30, 0xc1, 0xe8, 0x04, 0x05, 0x03, 0x00, 0x3d, 0x06, 0x00, 0x72, 0x14, 0xb8,
0x06, 0x00, 0xeb, 0x0f, 0x90, 0x80, 0xfb, 0x04, 0x75, 0x06, 0xb8, 0x05, 0x00,
0xeb, 0x04, 0x90, 0xb8, 0x09, 0x00, 0xc7, 0x44, 0x30, 0x00, 0x00, 0xf6, 0x44,
0x2a, 0x40, 0x74, 0x45, 0x3d, 0x20, 0x00, 0x77, 0x40, 0xbb, 0x01, 0x00, 0x3d,
0x03, 0x00, 0x7e, 0x03, 0xbb, 0x02, 0x00, 0x89, 0x5c, 0x32, 0x80, 0x4c, 0x50,
0x40, 0xc7, 0x44, 0x02, 0xd2, 0x07, 0xc7, 0x04, 0xd2, 0x07, 0xe9, 0xbf, 0x00,
0xfa, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0x22, 0x44, 0x52, 0x3a, 0x44, 0x53,
0x75, 0x10, 0x8a, 0x44, 0x60, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, 0x83,
0x6c, 0x32, 0x01, 0x7e, 0x50, 0xe9, 0x9d, 0x00, 0x05, 0x06, 0x00, 0x03, 0xc0,
0x89, 0x44, 0x32, 0x80, 0x4c, 0x50, 0x40, 0xc7, 0x44, 0x02, 0x0c, 0x08, 0xc7,
0x04, 0x0c, 0x08, 0xe9, 0x85, 0x00, 0xfa, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8,
0xb0, 0x01, 0xee, 0x90, 0x90, 0x90, 0xec, 0xa8, 0x01, 0x74, 0x0f, 0xa1, 0x00,
0x0e, 0x01, 0x44, 0x32, 0xc7, 0x44, 0x02, 0x30, 0x08, 0xc7, 0x04, 0x30, 0x08,
0xeb, 0x62, 0x90, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0xa1, 0x00, 0x0e, 0x2b,
0x44, 0x32, 0x3d, 0xe8, 0x03, 0x77, 0xec, 0x80, 0x64, 0x50, 0xbf, 0xc7, 0x04,
0x03, 0x05, 0xeb, 0x46, 0x90, 0xb0, 0x01, 0xee, 0x90, 0x90, 0x90, 0xec, 0xa8,
0x01, 0x74, 0x3a, 0x80, 0x64, 0x50, 0xef, 0x80, 0x64, 0x4b, 0xef, 0xc7, 0x04,
0xb3, 0x08, 0xeb, 0x2c, 0x90, 0xfa, 0x8b, 0x54, 0x20, 0xec, 0x8a, 0xc8, 0x22,
0x44, 0x52, 0x3a, 0x44, 0x53, 0x75, 0x1c, 0x8b, 0x7c, 0x0c, 0x3b, 0x7c, 0x0a,
0x74, 0xcf, 0x8e, 0x44, 0x08, 0x26, 0x8a, 0x05, 0x47, 0x23, 0x7c, 0x0e, 0x89,
0x7c, 0x0c, 0x83, 0xc2, 0x02, 0xee, 0x83, 0xea, 0x02, 0xf6, 0xc1, 0x01, 0x75,
0x26, 0xfb, 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0xff, 0x44, 0x30, 0x83, 0xc2,
0x02, 0xee, 0x83, 0xea, 0x02, 0xf6, 0xc1, 0x01, 0x75, 0x10, 0xfb, 0x81, 0xc6,
0x80, 0x00, 0xff, 0x24, 0xfa, 0x8b, 0x54, 0x20, 0xec, 0xa8, 0x01, 0x74, 0xda,
0xc6, 0x44, 0x49, 0x02, 0x8b, 0x7c, 0x12, 0x8e, 0x44, 0x10, 0xb0, 0x01, 0xee,
0x90, 0x90, 0x90, 0xec, 0x8a, 0xe0, 0x90, 0xb0, 0x30, 0xee, 0x83, 0xc2, 0x02,
0x90, 0xec, 0x83, 0xea, 0x02, 0x23, 0x44, 0x34, 0xff, 0x64, 0x06, 0xb3, 0x1c,
0x22, 0x5c, 0x51, 0x75, 0x1a, 0xf6, 0x44, 0x29, 0x04, 0x74, 0x21, 0xf6, 0x44,
0x29, 0x20, 0x75, 0x2b, 0x80, 0x7c, 0x5e, 0x00, 0x75, 0x1d, 0xc7, 0x44, 0x06,
0x58, 0x0a, 0xe9, 0x56, 0x01, 0xf6, 0xc3, 0x10, 0x75, 0x2e, 0xf6, 0xc3, 0x04,
0x75, 0x74, 0xeb, 0x6b, 0x90, 0xc7, 0x44, 0x06, 0x62, 0x0a, 0xe9, 0x4b, 0x01,
0xc7, 0x44, 0x06, 0x53, 0x0a, 0xe9, 0x34, 0x01, 0x80, 0x7c, 0x5e, 0x00, 0x75,
0x08, 0xc7, 0x44, 0x06, 0xca, 0x09, 0xe9, 0x9d, 0x00, 0xc7, 0x44, 0x06, 0xc5,
0x09, 0xe9, 0x90, 0x00, 0x0a, 0xc0, 0x74, 0x2a, 0xfe, 0x4c, 0x63, 0x74, 0x1a,
0x80, 0xe3, 0xef, 0x75, 0xc4, 0xf6, 0x44, 0x29, 0x04, 0x74, 0x21, 0xf6, 0x44,
0x29, 0x20, 0x75, 0x21, 0x80, 0x7c, 0x5e, 0x00, 0x75, 0x18, 0xe9, 0x00, 0x01,
0x80, 0x64, 0x51, 0xef, 0x80, 0xe3, 0xef, 0x75, 0xa6, 0xeb, 0x85, 0x80, 0x64,
0x51, 0xef, 0xe9, 0x06, 0x01, 0xe9, 0xf5, 0x00, 0xe9, 0xe3, 0x00, 0x80, 0x7c,
0x5e, 0x00, 0x75, 0x4f, 0xeb, 0x52, 0x90, 0x80, 0x64, 0x51, 0xf7, 0xe9, 0xe2,
0x00, 0x80, 0x64, 0x53, 0x3f, 0x80, 0x64, 0x54, 0xfe, 0x80, 0x4c, 0x58, 0x01,
0x80, 0x64, 0x51, 0xfb, 0xf6, 0x44, 0x29, 0x40, 0x75, 0x2c, 0x3a, 0x44, 0x5d,
0x74, 0x27, 0x3a, 0x44, 0x5c, 0x74, 0x22, 0xf6, 0x44, 0x29, 0x20, 0x74, 0x0a,
0x3a, 0x44, 0x5a, 0x74, 0x17, 0x3a, 0x44, 0x5b, 0x74, 0x12, 0xf6, 0x44, 0x5e,
0xff, 0x74, 0x09, 0x3a, 0x44, 0x5e, 0x75, 0x04, 0x80, 0x4c, 0x51, 0x08, 0xe9,
0xa0, 0x00, 0xe9, 0xab, 0x00, 0x3a, 0x44, 0x5e, 0x74, 0x7d, 0x3a, 0x44, 0x5c,
0x74, 0x3d, 0x3a, 0x44, 0x5d, 0x74, 0x55, 0x3a, 0x44, 0x5a, 0x74, 0x08, 0x3a,
0x44, 0x5b, 0x74, 0x18, 0xe9, 0x81, 0x00, 0xf6, 0x44, 0x53, 0x40, 0x74, 0x07,
0x80, 0x64, 0x53, 0xbf, 0xe9, 0x82, 0x00, 0x3a, 0x44, 0x5b, 0x74, 0x03, 0xeb,
0x7b, 0x90, 0x80, 0x4c, 0x53, 0x40, 0xf6, 0x44, 0x29, 0x08, 0x74, 0x70, 0x80,
0x4c, 0x51, 0x04, 0xc7, 0x44, 0x06, 0xe1, 0x08, 0xeb, 0x65, 0x90, 0xf6, 0x44,
0x53, 0x80, 0x74, 0x0f, 0x80, 0x64, 0x53, 0x7f, 0x80, 0x64, 0x54, 0xfe, 0x80,
0x4c, 0x58, 0x01, 0xeb, 0x50, 0x90, 0x3a, 0x44, 0x5d, 0x74, 0x03, 0xeb, 0x48,
0x90, 0x80, 0x4c, 0x53, 0x80, 0x80, 0x4c, 0x54, 0x01, 0x80, 0x4c, 0x58, 0x01,
0xf6, 0x44, 0x29, 0x08, 0x74, 0x35, 0x80, 0x4c, 0x51, 0x04, 0xc7, 0x44, 0x06,
0xe1, 0x08, 0xeb, 0x2a, 0x90, 0x80, 0x4c, 0x51, 0x08, 0xc7, 0x44, 0x06, 0xe1,
0x08, 0xeb, 0x10, 0x90, 0x3a, 0x44, 0x5e, 0x74, 0xef, 0x3a, 0x44, 0x5c, 0x74,
0xaf, 0x3a, 0x44, 0x5d, 0x74, 0xc7, 0x3d, 0xff, 0x00, 0x73, 0x26, 0xaa, 0x23,
0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x4f, 0xec, 0xa8, 0x01, 0x74, 0x03, 0xe9,
0x4e, 0xfe, 0x89, 0x7c, 0x12, 0x2b, 0x7c, 0x14, 0x23, 0x7c, 0x16, 0x3b, 0x7c,
0x1c, 0x73, 0x46, 0xfb, 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0x0a, 0xe4, 0x75,
0x1e, 0xb3, 0x0c, 0x22, 0x5c, 0x28, 0x80, 0xfb, 0x08, 0x75, 0xcc, 0xaa, 0x23,
0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x1b, 0xaa, 0x23, 0x7c, 0x16, 0x3b, 0x7c,
0x14, 0x74, 0x12, 0xeb, 0xc1, 0xf6, 0x44, 0x28, 0x04, 0x75, 0xbb, 0xf6, 0x44,
0x28, 0x08, 0x75, 0x50, 0x32, 0xc0, 0xeb, 0xa8, 0x4f, 0x23, 0x7c, 0x16, 0x89,
0x7c, 0x12, 0xc6, 0x44, 0x59, 0x01, 0xeb, 0xa4, 0xf6, 0x44, 0x51, 0x02, 0x74,
0x07, 0xfb, 0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0x80, 0x4c, 0x51, 0x02, 0xb0,
0x05, 0xee, 0xb0, 0x82, 0x22, 0x44, 0x5f, 0xf6, 0xd0, 0x22, 0x44, 0x75, 0x88,
0x44, 0x75, 0xee, 0xf6, 0x44, 0x29, 0x10, 0x74, 0x10, 0x80, 0x4c, 0x54, 0x04,
0x80, 0x4c, 0x58, 0x04, 0x80, 0x74, 0x50, 0x08, 0xc7, 0x04, 0xc3, 0x03, 0xfb,
0x81, 0xc6, 0x80, 0x00, 0xff, 0x24, 0x26, 0xc6, 0x05, 0xff, 0x47, 0x23, 0x7c,
0x16, 0x3b, 0x7c, 0x14, 0x74, 0xa7, 0x32, 0xff, 0xf6, 0x44, 0x29, 0x80, 0x74,
0x0a, 0x8a, 0xdc, 0xc0, 0xeb, 0x04, 0x2e, 0x8a, 0xbf, 0xb1, 0x01, 0x26, 0x88,
0x3d, 0x47, 0x23, 0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x89, 0xaa, 0x23, 0x7c,
0x16, 0x3b, 0x7c, 0x14, 0x74, 0x80, 0xe9, 0x2e, 0xff, 0x1e, 0x2e, 0x8e, 0x1e,
0xc1, 0x03, 0xff, 0x06, 0x1c, 0x0e, 0x60, 0xbe, 0x00, 0x14, 0xeb, 0x0f, 0x90,
0x1e, 0x2e, 0x8e, 0x1e, 0xc1, 0x03, 0xff, 0x06, 0x1a, 0x0e, 0x60, 0xbe, 0x00,
0x10, 0xb9, 0x08, 0x00, 0x8b, 0x54, 0x20, 0xb0, 0x03, 0xee, 0x90, 0x90, 0x32,
0xff, 0xec, 0x8a, 0xd8, 0x02, 0xd8, 0x2e, 0xff, 0xa7, 0xa9, 0x00, 0x81, 0xc6,
0x00, 0x01, 0x8b, 0x54, 0x20, 0x0b, 0xd2, 0xe0, 0xe4, 0xb8, 0x00, 0x80, 0xba,
0x22, 0xff, 0xef, 0x61, 0x1f, 0xcf, 0x81, 0xce, 0x80, 0x00, 0x8b, 0x54, 0x20,
0xff, 0x06, 0x20, 0x0e, 0xb0, 0x01, 0xee, 0x8a, 0x44, 0x71, 0x24, 0xe7, 0x88,
0x44, 0x71, 0xee, 0xc6, 0x44, 0x49, 0x02, 0x80, 0x4c, 0x50, 0x20, 0xc7, 0x04,
0xc3, 0x03, 0x81, 0xe6, 0x7f, 0xff, 0x8b, 0x54, 0x20, 0xeb, 0xae, 0x81, 0xce,
0x80, 0x00, 0x8b, 0x54, 0x20, 0xff, 0x06, 0x22, 0x0e, 0xec, 0x0a, 0xc0, 0x79,
0x7a, 0x80, 0x4c, 0x51, 0x10, 0xc7, 0x44, 0x06, 0xe1, 0x08, 0xc6, 0x44, 0x63,
0x04, 0xf6, 0x44, 0x51, 0x04, 0x74, 0x08, 0x80, 0x64, 0x51, 0xfb, 0x80, 0x64,
0x53, 0x3f, 0xf6, 0x44, 0x28, 0x01, 0x75, 0x59, 0xf6, 0x44, 0x28, 0x02, 0x75,
0x4f, 0x8b, 0x7c, 0x12, 0x8c, 0xc3, 0x8e, 0x44, 0x10, 0xf6, 0x44, 0x28, 0x08,
0x74, 0x1e, 0xb0, 0xff, 0xaa, 0x23, 0x7c, 0x16, 0x3b, 0x7c, 0x14, 0x74, 0x26,
0x32, 0xc0, 0xf6, 0x44, 0x29, 0x80, 0x74, 0x02, 0xb0, 0x10, 0xaa, 0x23, 0x7c,
0x16, 0x3b, 0x7c, 0x14, 0x74, 0x13, 0x32, 0xc0, 0xaa, 0x23, 0x7c, 0x16, 0x3b,
0x7c, 0x14, 0x74, 0x08, 0x8e, 0xc3, 0x89, 0x7c, 0x12, 0xeb, 0x15, 0x90, 0x8e,
0xc3, 0x4f, 0x23, 0x7c, 0x16, 0x89, 0x7c, 0x12, 0xc6, 0x44, 0x59, 0x01, 0xeb,
0x05, 0x90, 0x80, 0x4c, 0x4f, 0x01, 0xb0, 0x10, 0xee, 0x81, 0xe6, 0x7f, 0xff,
0x8b, 0x54, 0x20, 0xe9, 0x17, 0xff, 0xff, 0x06, 0x1e, 0x0e, 0xe9, 0x10, 0xff,
0x1e, 0x2e, 0x8e, 0x1e, 0xc1, 0x03, 0x50, 0x52, 0x55, 0x8b, 0xec, 0x8b, 0x46,
0x08, 0xa3, 0x12, 0x0e, 0x32, 0xe4, 0xa0, 0x22, 0x0c, 0xa3, 0x10, 0x0e, 0xff,
0x06, 0x00, 0x0e, 0x83, 0x06, 0x0e, 0x0e, 0x0a, 0x83, 0x3e, 0x04, 0x0e, 0x00,
0x74, 0x31, 0x8b, 0x16, 0x00, 0x0e, 0x2b, 0x16, 0x02, 0x0e, 0x3b, 0x16, 0x04,
0x0e, 0x72, 0x23, 0x8b, 0x16, 0x00, 0x0e, 0x89, 0x16, 0x02, 0x0e, 0x8b, 0x16,
0x18, 0x0d, 0x3b, 0x16, 0x1a, 0x0d, 0x74, 0x11, 0x80, 0x3e, 0x10, 0x0c, 0x01,
0x74, 0x16, 0xb0, 0x00, 0x90, 0xe6, 0x00, 0x0c, 0x08, 0x90, 0xe6, 0x00, 0xb8,
0x00, 0x80, 0xba, 0x22, 0xff, 0xef, 0x5d, 0x5a, 0x58, 0x1f, 0xcf, 0xb0, 0x80,
0xe6, 0x00, 0xa0, 0x11, 0x0c, 0x0c, 0x10, 0xa2, 0x11, 0x0c, 0xeb, 0xe6, 0x1e,
0x2e, 0x8e, 0x1e, 0xc1, 0x03, 0xff, 0x06, 0x28, 0x0e, 0x55, 0x8b, 0xec, 0x8b,
0x6e, 0x02, 0x89, 0x2e, 0x16, 0x0e, 0x5d, 0x1f, 0xcf, 0x1e, 0x2e, 0x8e, 0x1e,
0xc1, 0x03, 0xff, 0x06, 0x24, 0x0e, 0x55, 0x8b, 0xec, 0x8b, 0x6e, 0x02, 0x89,
0x2e, 0x14, 0x0e, 0x5d, 0x80, 0x3e, 0x10, 0x0c, 0x01, 0x75, 0x12, 0x50, 0xa0,
0x11, 0x0c, 0x0c, 0x01, 0xa2, 0x11, 0x0c, 0xe4, 0x00, 0x90, 0x90, 0x24, 0x7f,
0xe6, 0x00, 0x58, 0x1f, 0xcf, 0x1e, 0x06, 0x60, 0xb8, 0x00, 0x80, 0xba, 0x22,
0xff, 0xef, 0x2e, 0x8e, 0x1e, 0xc1, 0x03, 0x2e, 0x8e, 0x06, 0xc1, 0x03, 0x2e,
0xff, 0x06, 0x30, 0x0d, 0xfc, 0xff, 0x26, 0x2e, 0x0e, 0x00, 0x00, 0xfb, 0x40,
0x43, 0x41, 0x42, 0x46, 0x47, 0x45, 0xeb, 0xf6, 0xc3, 0x00, 0x00, 0x8f, 0x06,
0x2e, 0x0e, 0x2e, 0xff, 0x06, 0x3d, 0x0d, 0xb8, 0x00, 0x00, 0xba, 0x58, 0xff,
0xef, 0xb8, 0x00, 0xe0, 0xba, 0x5e, 0xff, 0xef, 0x61, 0x07, 0x1f, 0xcf, 0xc2,
0xfe, 0xff, 0x8b, 0x7c, 0x0a, 0x2b, 0x7c, 0x0c, 0x23, 0x7c, 0x0e, 0x3b, 0x7c,
0x18, 0x77, 0x2e, 0xc6, 0x44, 0x4d, 0x00, 0x80, 0x4c, 0x4f, 0x02, 0xeb, 0x5a,
0x90, 0x8b, 0x7c, 0x0a, 0x3b, 0x7c, 0x0c, 0x75, 0x1b, 0x8b, 0x3e, 0x10, 0x0d,
0x3b, 0x3e, 0x12, 0x0d, 0x75, 0x53, 0xf6, 0x44, 0x4b, 0xff, 0x75, 0x4d, 0xc6,
0x44, 0x4c, 0x00, 0x80, 0x4c, 0x4f, 0x04, 0xeb, 0x43, 0x90, 0xf6, 0x44, 0x50,
0x10, 0x75, 0x3c, 0xeb, 0x09, 0x90, 0x8b, 0x7c, 0x0a, 0x2b, 0x7c, 0x0c, 0x74,
0x31, 0x80, 0x4c, 0x50, 0x10, 0x80, 0x4c, 0x4b, 0x10, 0xc7, 0x04, 0xc3, 0x03,
0xeb, 0x23, 0x90, 0xfa, 0x8b, 0x36, 0x08, 0x0e, 0x8b, 0x54, 0x20, 0xec, 0x8a,
0xf8, 0x8a, 0x5c, 0x54, 0x32, 0xfb, 0xf6, 0x44, 0x4d, 0xff, 0x75, 0x8e, 0xf6,
0x44, 0x4c, 0xff, 0x75, 0xa1, 0xf6, 0x44, 0x50, 0x10, 0x74, 0xc7, 0xec, 0x32,
0xc3, 0x22, 0xf8, 0x83, 0x2e, 0x10, 0x0e, 0x01, 0x78, 0x05, 0xd0, 0x6c, 0x49,
0x72, 0x45, 0x8b, 0x7c, 0x12, 0x2b, 0x7c, 0x14, 0x74, 0x22, 0x80, 0x7c, 0x4e,
0x00, 0x74, 0x1c, 0x23, 0x7c, 0x16, 0x03, 0xff, 0x3b, 0x7c, 0x16, 0x73, 0x43,
0x8b, 0x0e, 0x0e, 0x0e, 0x2b, 0x4c, 0x6e, 0x3b, 0x4c, 0x22, 0x73, 0x37, 0x80,
0x7c, 0x49, 0x00, 0x74, 0x31, 0xf6, 0x44, 0x51, 0x02, 0x75, 0x3c, 0xec, 0x32,
0xc3, 0x22, 0xf8, 0x80, 0xe7, 0x38, 0xfb, 0x89, 0x1e, 0x30, 0x0e, 0xbe, 0x00,
0x10, 0xff, 0x14, 0xeb, 0x61, 0x90, 0xb0, 0x01, 0xee, 0x8a, 0x44, 0x71, 0x0c,
0x10, 0x88, 0x44, 0x71, 0xee, 0x80, 0x64, 0x50, 0xdf, 0xc7, 0x04, 0xc3, 0x03,
0xeb, 0xa5, 0xc6, 0x44, 0x4e, 0x00, 0x8b, 0x0e, 0x0e, 0x0e, 0x89, 0x4c, 0x6e,
0x80, 0x4c, 0x4f, 0x08, 0xeb, 0xbe, 0x8b, 0x7c, 0x12, 0x2b, 0x7c, 0x14, 0x23,
0x7c, 0x16, 0x3b, 0x7c, 0x1a, 0x73, 0xb6, 0x80, 0x64, 0x51, 0xfd, 0xf6, 0x44,
0x29, 0x10, 0x74, 0x10, 0x80, 0x64, 0x54, 0xfb, 0x80, 0x4c, 0x58, 0x04, 0x80,
0x74, 0x50, 0x08, 0xc7, 0x04, 0xc3, 0x03, 0xb0, 0x05, 0xee, 0xb0, 0x82, 0x22,
0x44, 0x5f, 0x0a, 0x44, 0x75, 0x88, 0x44, 0x75, 0xee, 0xeb, 0x8b, 0xfa, 0x8b,
0x36, 0x08, 0x0e, 0x8b, 0x1e, 0x30, 0x0e, 0x8a, 0xcb, 0xe5, 0x80, 0x23, 0x44,
0x2e, 0x74, 0x02, 0xf6, 0xd1, 0x80, 0xe1, 0x40, 0x0a, 0xf9, 0x8a, 0xdf, 0x22,
0x5c, 0x55, 0x30, 0x5c, 0x54, 0x32, 0xfb, 0x88, 0x7c, 0x55, 0x0a, 0x5c, 0x58,
0x88, 0x5c, 0x58, 0x22, 0x5c, 0x56, 0x75, 0x24, 0x80, 0x7c, 0x4f, 0x00, 0x75,
0x22, 0xfb, 0x03, 0x74, 0x1e, 0x89, 0x36, 0x08, 0x0e, 0xff, 0x06, 0x26, 0x0e,
0x8b, 0x3e, 0x12, 0x0d, 0x3b, 0x3e, 0x10, 0x0d, 0x75, 0x46, 0xbe, 0x00, 0x10,
0xff, 0x14, 0xe9, 0xd3, 0xfe, 0x80, 0x4c, 0x4f, 0x20, 0x8b, 0x3e, 0x18, 0x0d,
0x8a, 0x44, 0x48, 0x8a, 0x64, 0x4f, 0x89, 0x85, 0x00, 0x08, 0x8a, 0x44, 0x54,
0x8a, 0x64, 0x57, 0x89, 0x85, 0x02, 0x08, 0x83, 0xc7, 0x04, 0x81, 0xe7, 0xfc,
0x03, 0x3b, 0x3e, 0x1a, 0x0d, 0x74, 0x13, 0x88, 0x44, 0x57, 0xc6, 0x44, 0x4f,
0x00, 0x8a, 0x44, 0x56, 0xf6, 0xd0, 0x20, 0x44, 0x58, 0x89, 0x3e, 0x18, 0x0d,
0xeb, 0xa4, 0xff, 0x06, 0x2c, 0x0e, 0xbe, 0x00, 0x10, 0xff, 0x14, 0xfa, 0x8b,
0x3e, 0x12, 0x0d, 0x81, 0xc7, 0x00, 0x04, 0x8a, 0x5d, 0x01, 0x83, 0xe3, 0x0f,
0x03, 0xdb, 0x2e, 0x8b, 0xb7, 0x89, 0x00, 0x8b, 0x54, 0x20, 0x0b, 0xd2, 0x74,
0x0d, 0x8a, 0x1d, 0x83, 0xe3, 0x1f, 0x03, 0xdb, 0xfa, 0x2e, 0xff, 0xa7, 0x9c,
0x0f, 0xff, 0x06, 0x2a, 0x0e, 0x8b, 0x3e, 0x12, 0x0d, 0x8b, 0x36, 0x18, 0x0d,
0x8b, 0x9d, 0x00, 0x04, 0x89, 0x9c, 0x00, 0x08, 0x8b, 0x9d, 0x02, 0x04, 0x89,
0x9c, 0x02, 0x08, 0x83, 0xc6, 0x04, 0x81, 0xe6, 0xfc, 0x03, 0x3b, 0x36, 0x1a,
0x0d, 0x74, 0x04, 0x89, 0x36, 0x18, 0x0d, 0xfb, 0x8b, 0x3e, 0x12, 0x0d, 0x83,
0xc7, 0x04, 0x81, 0xe7, 0xfc, 0x03, 0x89, 0x3e, 0x12, 0x0d, 0xbe, 0x00, 0x10,
0xff, 0x14, 0xe9, 0x1d, 0xfe, 0xdc, 0x0f, 0xe4, 0x0f, 0xec, 0x0f, 0x0d, 0x10,
0x1c, 0x10, 0x57, 0x0f, 0x2f, 0x10, 0x57, 0x0f, 0x3b, 0x10, 0x54, 0x10, 0x83,
0x10, 0xcf, 0x10, 0xdb, 0x10, 0xe4, 0x10, 0xeb, 0x10, 0x35, 0x11, 0x7d, 0x11,
0x83, 0x11, 0xa1, 0x11, 0xb9, 0x11, 0xf2, 0x11, 0x38, 0x12, 0x03, 0x13, 0x0c,
0x13, 0x57, 0x0f, 0x57, 0x0f, 0x57, 0x0f, 0x57, 0x0f, 0x57, 0x0f, 0x57, 0x0f,
0x57, 0x0f, 0x57, 0x0f, 0x8b, 0x45, 0x02, 0x89, 0x44, 0x1a, 0xeb, 0xa0, 0x8b,
0x45, 0x02, 0x89, 0x44, 0x1c, 0xeb, 0x98, 0x8b, 0x45, 0x02, 0x8b, 0x5c, 0x0a,
0x2b, 0x5c, 0x0c, 0x23, 0x5c, 0x0e, 0x8b, 0x4c, 0x0a, 0x2b, 0xc8, 0x23, 0x4c,
0x0e, 0x3b, 0xd9, 0x76, 0x06, 0x23, 0x44, 0x0e, 0x89, 0x44, 0x0c, 0xe9, 0x77,
0xff, 0x80, 0x4c, 0x53, 0x80, 0x80, 0x4c, 0x54, 0x01, 0x80, 0x4c, 0x58, 0x01,
0xe9, 0x68, 0xff, 0x80, 0x64, 0x53, 0x3f, 0x80, 0x64, 0x54, 0xfe, 0x80, 0x4c,
0x58, 0x01, 0x80, 0x64, 0x51, 0xfb, 0xe9, 0x55, 0xff, 0x8b, 0x45, 0x02, 0x88,
0x44, 0x5a, 0x88, 0x64, 0x5b, 0xe9, 0x49, 0xff, 0x8b, 0x45, 0x02, 0x0b, 0xc0,
0x74, 0x03, 0x89, 0x44, 0x24, 0x80, 0x4c, 0x50, 0x04, 0x80, 0x4c, 0x4b, 0x04,
0xc7, 0x04, 0xc3, 0x03, 0xe9, 0x30, 0xff, 0x8b, 0x5d, 0x02, 0xf6, 0xd7, 0x22,
0x7c, 0x54, 0x0a, 0xdf, 0x8a, 0x44, 0x54, 0x32, 0xc3, 0x24, 0x82, 0x30, 0x44,
0x54, 0xb0, 0x05, 0xee, 0x8a, 0x44, 0x75, 0x32, 0xd8, 0x8a, 0x7c, 0x5f, 0xf6,
0xd7, 0x22, 0xdf, 0x80, 0xe3, 0x82, 0x32, 0xc3, 0x88, 0x44, 0x75, 0xee, 0xe9,
0x01, 0xff, 0x8b, 0x5d, 0x02, 0xf6, 0xc7, 0x04, 0x75, 0x08, 0x80, 0x64, 0x53,
0x3f, 0x80, 0x64, 0x51, 0xfb, 0x8a, 0x44, 0x29, 0x32, 0xc7, 0xa8, 0x10, 0x74,
0x0e, 0xf6, 0x44, 0x51, 0x02, 0x74, 0x08, 0x80, 0x74, 0x50, 0x08, 0xc7, 0x04,
0xc3, 0x03, 0x88, 0x5c, 0x28, 0x88, 0x7c, 0x29, 0xb4, 0x60, 0xf6, 0xc3, 0x10,
0x74, 0x03, 0x80, 0xcc, 0x10, 0x8a, 0x44, 0x62, 0xf6, 0xc3, 0x20, 0x74, 0x02,
0x24, 0x7f, 0x89, 0x44, 0x34, 0xc7, 0x44, 0x06, 0xe1, 0x08, 0xe9, 0xb5, 0xfe,
0x8b, 0x45, 0x02, 0x88, 0x44, 0x5c, 0x88, 0x64, 0x5d, 0xe9, 0xa9, 0xfe, 0x8b,
0x45, 0x02, 0x89, 0x44, 0x18, 0xe9, 0xa0, 0xfe, 0xff, 0x1e, 0x24, 0x0d, 0xe9,
0x99, 0xfe, 0xf6, 0x44, 0x51, 0x02, 0x75, 0x41, 0x8b, 0x44, 0x12, 0x2b, 0x44,
0x14, 0x23, 0x44, 0x16, 0x3b, 0x44, 0x1a, 0x72, 0x33, 0x80, 0x4c, 0x51, 0x02,
0xf6, 0x44, 0x29, 0x10, 0x74, 0x10, 0x80, 0x4c, 0x54, 0x04, 0x80, 0x4c, 0x58,
0x04, 0x80, 0x74, 0x50, 0x08, 0xc7, 0x04, 0xc3, 0x03, 0xf6, 0x44, 0x5f, 0x82,
0x74, 0x13, 0xb0, 0x05, 0xee, 0x8a, 0x44, 0x75, 0xb4, 0x82, 0x22, 0x64, 0x5f,
0xf6, 0xd4, 0x22, 0xc4, 0x88, 0x44, 0x75, 0xee, 0xe9, 0x4f, 0xfe, 0xf6, 0x44,
0x51, 0x02, 0x74, 0x3f, 0x8b, 0x44, 0x12, 0x2b, 0x44, 0x14, 0x23, 0x44, 0x16,
0x3b, 0x44, 0x1c, 0x73, 0xe9, 0x80, 0x64, 0x51, 0xfd, 0xf6, 0x44, 0x29, 0x10,
0x74, 0x10, 0x80, 0x64, 0x54, 0xfb, 0x80, 0x4c, 0x58, 0x04, 0x80, 0x74, 0x50,
0x08, 0xc7, 0x04, 0xc3, 0x03, 0xf6, 0x44, 0x5f, 0x02, 0x74, 0x11, 0xb0, 0x05,
0xee, 0x8a, 0x44, 0x75, 0xb4, 0x82, 0x22, 0x64, 0x5f, 0x0a, 0xc4, 0x88, 0x44,
0x75, 0xee, 0xe9, 0x07, 0xfe, 0xe8, 0x8a, 0x02, 0xe9, 0x01, 0xfe, 0x8b, 0x45,
0x02, 0xbb, 0x10, 0x27, 0xf7, 0xe3, 0xbb, 0x0f, 0x00, 0xf7, 0xf3, 0xa3, 0x06,
0x0e, 0xba, 0x52, 0xff, 0xef, 0xba, 0x50, 0xff, 0xb8, 0x00, 0x00, 0xef, 0xe9,
0xe3, 0xfd, 0x8b, 0x45, 0x02, 0x3a, 0x06, 0x22, 0x0c, 0x72, 0x0c, 0x3b, 0x06,
0x1a, 0x0c, 0x77, 0x06, 0xe8, 0xab, 0x01, 0xe9, 0xce, 0xfd, 0xe9, 0x9e, 0xfd,
0x8b, 0x45, 0x02, 0x88, 0x44, 0x2a, 0x88, 0x64, 0x2b, 0x0b, 0xc0, 0x75, 0x07,
0x80, 0x64, 0x50, 0xfe, 0xeb, 0x10, 0x90, 0xf6, 0x44, 0x50, 0x01, 0x75, 0x09,
0x80, 0x4c, 0x50, 0x01, 0xc7, 0x44, 0x30, 0x00, 0x00, 0xa8, 0x80, 0x75, 0x07,
0xc6, 0x44, 0x60, 0x00, 0xeb, 0x05, 0x90, 0xc6, 0x44, 0x60, 0x7f, 0xc7, 0x04,
0xc3, 0x03, 0xe9, 0x92, 0xfd, 0x8b, 0x5d, 0x02, 0xf6, 0xd7, 0x22, 0x7c, 0x5f,
0x0a, 0xdf, 0x8a, 0xfb, 0x88, 0x5c, 0x5f, 0x8a, 0x44, 0x52, 0x8a, 0x64, 0x53,
0x8b, 0xcb, 0x33, 0xc8, 0x81, 0xe1, 0x38, 0x38, 0x33, 0xc1, 0x88, 0x44, 0x52,
0x88, 0x64, 0x53, 0xb0, 0x05, 0xee, 0xf6, 0xd3, 0x22, 0x5c, 0x54, 0xf6, 0x44,
0x51, 0x02, 0x75, 0x02, 0x0a, 0xdf, 0x8a, 0x44, 0x75, 0x32, 0xd8, 0x80, 0xe3,
0x82, 0x32, 0xc3, 0x88, 0x44, 0x75, 0xee, 0xe9, 0x4c, 0xfd, 0x8b, 0x5d, 0x02,
0x88, 0x5c, 0x2c, 0x88, 0x7c, 0x2d, 0x8b, 0xcb, 0x83, 0xe3, 0x0f, 0x03, 0xdb,
0x80, 0x3e, 0x10, 0x0c, 0x01, 0x75, 0x1f, 0xa1, 0x0e, 0x0c, 0x86, 0xe0, 0x3d,
0x32, 0x31, 0x73, 0x15, 0xf6, 0xc5, 0x04, 0x75, 0x08, 0x2e, 0x8b, 0x9f, 0x69,
0x01, 0xeb, 0x1b, 0x90, 0x2e, 0x8b, 0x9f, 0x89, 0x01, 0xeb, 0x13, 0x90, 0xf6,
0xc5, 0x04, 0x75, 0x08, 0x2e, 0x8b, 0x9f, 0x29, 0x01, 0xeb, 0x06, 0x90, 0x2e,
0x8b, 0x9f, 0x49, 0x01, 0xb0, 0x0c, 0xee, 0x8a, 0xc3, 0x88, 0x44, 0x7c, 0xee,
0xb0, 0x0d, 0x90, 0x90, 0xee, 0x8a, 0xc7, 0x88, 0x44, 0x7d, 0xee, 0xb0, 0x04,
0xee, 0xb0, 0x44, 0xf6, 0xc1, 0x40, 0x74, 0x0c, 0xf6, 0xc1, 0x80, 0x74, 0x05,
0x04, 0x04, 0xeb, 0x03, 0x90, 0x0c, 0x08, 0xf6, 0xc5, 0x01, 0x74, 0x09, 0x0c,
0x01, 0xf6, 0xc5, 0x02, 0x75, 0x02, 0x0c, 0x02, 0x88, 0x44, 0x74, 0xee, 0xb0,
0x03, 0x90, 0x90, 0xee, 0x8a, 0xd9, 0x80, 0xe3, 0x30, 0xc0, 0xeb, 0x04, 0x32,
0xff, 0x2e, 0x8a, 0xa7, 0xa9, 0x01, 0x8a, 0x44, 0x73, 0x24, 0x3f, 0x0a, 0xc4,
0x88, 0x44, 0x73, 0xee, 0x90, 0x90, 0xb0, 0x05, 0xee, 0xd0, 0xec, 0x8a, 0x44,
0x75, 0x24, 0x9f, 0x0a, 0xc4, 0x88, 0x44, 0x75, 0xee, 0x2e, 0x8a, 0x87, 0xad,
0x01, 0x88, 0x44, 0x62, 0xf6, 0x44, 0x28, 0x20, 0x74, 0x02, 0x24, 0x7f, 0x88,
0x44, 0x34, 0xe9, 0x81, 0xfc, 0x8a, 0x45, 0x02, 0x88, 0x44, 0x5e, 0xe9, 0x78,
0xfc, 0x8b, 0x45, 0x02, 0xba, 0x5a, 0xff, 0xef, 0x9c, 0xff, 0x36, 0x26, 0x0d,
0xff, 0x36, 0x24, 0x0d, 0x1e, 0x06, 0x60, 0x8b, 0x36, 0x0a, 0x0e, 0xc7, 0x04,
0x3f, 0x0d, 0xe9, 0x5a, 0xfc, 0xb8, 0x00, 0x00, 0x8e, 0xc0, 0x8b, 0xf0, 0x8b,
0xf8, 0x2e, 0x8b, 0x9c, 0x49, 0x00, 0x83, 0xc6, 0x02, 0x26, 0x89, 0x1d, 0x26,
0x8c, 0x4d, 0x02, 0x83, 0xc7, 0x04, 0x81, 0xff, 0x80, 0x00, 0x72, 0xe8, 0x26,
0xc7, 0x05, 0xcb, 0x0c, 0x26, 0x8c, 0x4d, 0x02, 0x83, 0xc7, 0x04, 0x81, 0xff,
0x00, 0x04, 0x72, 0xee, 0xc3, 0xc1, 0xe0, 0x06, 0x8b, 0xd8, 0x8c, 0xda, 0x81,
0xc2, 0x00, 0x04, 0x8b, 0xfa, 0x8a, 0x0e, 0x22, 0x0c, 0xb5, 0x00, 0xbe, 0x00,
0x10, 0x33, 0xc0, 0x89, 0x44, 0x0a, 0x89, 0x44, 0x0c, 0x89, 0x44, 0x12, 0x89,
0x44, 0x14, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xee, 0x89, 0x36, 0x0a, 0x0e, 0xb8,
0x01, 0x00, 0x8b, 0xd0, 0xb3, 0x00, 0x8a, 0x0e, 0x22, 0x0c, 0xb5, 0x00, 0xbe,
0x00, 0x10, 0x2b, 0xda, 0x72, 0x29, 0x89, 0x44, 0x16, 0x81, 0xc6, 0x80, 0x00,
0xe2, 0xf3, 0x8a, 0x0e, 0x22, 0x0c, 0xb5, 0x00, 0xbe, 0x00, 0x10, 0x2b, 0xda,
0x72, 0x13, 0x89, 0x44, 0x0e, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xf3, 0x8b, 0xd0,
0x03, 0xc0, 0x81, 0xfa, 0x00, 0x02, 0x72, 0xca, 0x8a, 0x0e, 0x22, 0x0c, 0xb5,
0x00, 0xbe, 0x00, 0x10, 0x89, 0x7c, 0x10, 0x8b, 0x44, 0x16, 0x03, 0xf8, 0x8b,
0xd7, 0xc1, 0xe0, 0x04, 0x48, 0x89, 0x44, 0x16, 0x81, 0xc6, 0x80, 0x00, 0xe2,
0xe9, 0x8a, 0x0e, 0x22, 0x0c, 0xb5, 0x00, 0xbe, 0x00, 0x10, 0x89, 0x7c, 0x08,
0x8b, 0x44, 0x0e, 0x03, 0xf8, 0x8b, 0xd7, 0xc1, 0xe0, 0x04, 0x48, 0x89, 0x44,
0x0e, 0x81, 0xc6, 0x80, 0x00, 0xe2, 0xe9, 0xc3, 0xc7, 0x04, 0x20, 0x04, 0xc7,
0x44, 0x06, 0xe1, 0x08, 0x8b, 0xc6, 0x2d, 0x00, 0x10, 0xb1, 0x80, 0xf6, 0xf1,
0x88, 0x44, 0x48, 0xc7, 0x44, 0x0a, 0x00, 0x00, 0xc7, 0x44, 0x0c, 0x00, 0x00,
0xc7, 0x44, 0x12, 0x00, 0x00, 0xc7, 0x44, 0x14, 0x00, 0x00, 0xc7, 0x44, 0x18,
0x00, 0x00, 0xc7, 0x44, 0x1a, 0x00, 0x00, 0xc7, 0x44, 0x1c, 0xff, 0xff, 0x8a,
0x5c, 0x48, 0x83, 0xe3, 0x0f, 0x03, 0xdb, 0x8b, 0x97, 0x90, 0x0c, 0x89, 0x54,
0x20, 0xb8, 0x01, 0x00, 0x8a, 0x4c, 0x48, 0xd3, 0xe0, 0x89, 0x44, 0x2e, 0xc7,
0x44, 0x24, 0x19, 0x00, 0xc7, 0x44, 0x26, 0x00, 0x00, 0xc6, 0x44, 0x4a, 0x00,
0xc7, 0x44, 0x30, 0x00, 0x00, 0xc7, 0x44, 0x32, 0x00, 0x00, 0xc6, 0x44, 0x4c,
0x00, 0xc6, 0x44, 0x4d, 0x00, 0xc6, 0x44, 0x4e, 0x00, 0xc6, 0x44, 0x4f, 0x00,
0xc6, 0x44, 0x50, 0x00, 0xc6, 0x44, 0x4b, 0x00, 0xc6, 0x44, 0x51, 0x00, 0xc6,
0x44, 0x28, 0x00, 0xc6, 0x44, 0x29, 0x00, 0xc6, 0x44, 0x2a, 0x00, 0xc6, 0x44,
0x2b, 0x00, 0xc6, 0x44, 0x54, 0x00, 0xc6, 0x44, 0x57, 0x00, 0xc6, 0x44, 0x55,
0x00, 0xc6, 0x44, 0x56, 0x00, 0xc6, 0x44, 0x58, 0x00, 0xc6, 0x44, 0x52, 0x04,
0xc6, 0x44, 0x53, 0x04, 0xc6, 0x44, 0x5f, 0x00, 0xc6, 0x44, 0x2c, 0x3d, 0xc6,
0x44, 0x2d, 0x00, 0xc7, 0x44, 0x34, 0xff, 0x60, 0xc6, 0x44, 0x62, 0xff, 0xc6,
0x44, 0x5d, 0x13, 0xc6, 0x44, 0x5c, 0x11, 0xc6, 0x44, 0x5e, 0x00, 0xc6, 0x44,
0x60, 0x23, 0xc6, 0x44, 0x61, 0x23, 0x0b, 0xd2, 0x75, 0x03, 0xe9, 0xd9, 0x00,
0xb0, 0x09, 0xee, 0x8a, 0x4c, 0x48, 0xb0, 0x80, 0xd2, 0xe8, 0xee, 0xc6, 0x44,
0x70, 0x00, 0xb0, 0x01, 0xee, 0xb0, 0x11, 0x88, 0x44, 0x71, 0xee, 0xb0, 0x02,
0x90, 0x90, 0xee, 0x8a, 0x44, 0x48, 0xc0, 0xe0, 0x03, 0x24, 0xf0, 0x88, 0x44,
0x72, 0xee, 0xb0, 0x03, 0x90, 0x90, 0xee, 0xb0, 0xc0, 0x88, 0x44, 0x73, 0xee,
0xb0, 0x04, 0x90, 0x90, 0xee, 0xb0, 0x44, 0x88, 0x44, 0x74, 0xee, 0xb0, 0x05,
0x90, 0xee, 0xb0, 0x60, 0x88, 0x44, 0x75, 0xee, 0xc6, 0x44, 0x76, 0x00, 0xc6,
0x44, 0x77, 0x00, 0xc6, 0x44, 0x78, 0x00, 0xb0, 0x09, 0xee, 0xb0, 0x09, 0x88,
0x44, 0x79, 0xee, 0xc6, 0x44, 0x7a, 0x00, 0xb0, 0x0b, 0xee, 0xb0, 0x52, 0x88,
0x44, 0x7b, 0xee, 0x80, 0x3e, 0x10, 0x0c, 0x01, 0x75, 0x21, 0xa1, 0x0e, 0x0c,
0x86, 0xe0, 0x3d, 0x32, 0x31, 0x73, 0x17, 0xb0, 0x0c, 0xee, 0xb0, 0x18, 0x88,
0x44, 0x7c, 0xee, 0xb0, 0x0d, 0x90, 0x90, 0xee, 0xb0, 0x00, 0x88, 0x44, 0x7d,
0xee, 0xeb, 0x15, 0x90, 0xb0, 0x0c, 0xee, 0xb0, 0x16, 0x88, 0x44, 0x7c, 0xee,
0xb0, 0x0d, 0x90, 0x90, 0xee, 0xb0, 0x00, 0x88, 0x44, 0x7d, 0xee, 0xb0, 0x0e,
0x90, 0x90, 0xee, 0xb0, 0x03, 0x88, 0x44, 0x7e, 0xee, 0xb0, 0x0f, 0x90, 0x90,
0xee, 0xb0, 0x80, 0x88, 0x44, 0x7f, 0xee, 0xb0, 0x03, 0x90, 0x90, 0xee, 0x8a,
0x44, 0x73, 0x0c, 0x01, 0x88, 0x44, 0x73, 0xee, 0x90, 0x90, 0xb0, 0x05, 0xee,
0x8a, 0x44, 0x75, 0x0c, 0x08, 0x88, 0x44, 0x75, 0xee, 0xc3, 0xfa, 0x8c, 0xd8,
0x25, 0x00, 0xf0, 0x8e, 0xd0, 0xbc, 0xfe, 0x1f, 0x8c, 0xd8, 0x25, 0x00, 0xf0,
0x8e, 0xd8, 0x80, 0x3e, 0x40, 0x0d, 0x01, 0x75, 0x51, 0xa1, 0x0e, 0x0c, 0x86,
0xe0, 0x3d, 0x30, 0x32, 0x73, 0x47, 0x8b, 0x1e, 0x20, 0x0c, 0x8a, 0x16, 0x23,
0x0c, 0xc6, 0x06, 0x23, 0x0c, 0x00, 0x83, 0xfb, 0x00, 0x74, 0x07, 0xfe, 0xca,
0xc6, 0x06, 0x23, 0x0c, 0x01, 0x88, 0x16, 0x22, 0x0c, 0xbe, 0x10, 0x0c, 0xbf,
0x90, 0x0c, 0xb9, 0x08, 0x00, 0x1e, 0x07, 0xfc, 0xf3, 0xa5, 0xbf, 0xa0, 0x0c,
0xb8, 0x00, 0x00, 0xb9, 0x08, 0x00, 0xf3, 0xab, 0xc7, 0x06, 0x1a, 0x0c, 0x70,
0x00, 0xa0, 0x40, 0x0d, 0xa2, 0x10, 0x0c, 0xc6, 0x06, 0x11, 0x0c, 0x00, 0x2e,
0x8c, 0x1e, 0xc1, 0x03, 0xc7, 0x06, 0x18, 0x0e, 0x02, 0x00, 0xe8, 0xec, 0xfc,
0xc7, 0x06, 0x24, 0x0d, 0x5a, 0x0d, 0x8c, 0x0e, 0x26, 0x0d, 0xc7, 0x06, 0x18,
0x0e, 0x06, 0x00, 0xa1, 0x1a, 0x0c, 0xe8, 0x0a, 0xfd, 0xc7, 0x06, 0x18, 0x0e,
0x0a, 0x00, 0xbe, 0x00, 0x10, 0xc7, 0x44, 0x1e, 0x80, 0x00, 0xe8, 0xa5, 0xfd,
0x81, 0xc6, 0x80, 0x00, 0x81, 0xfe, 0x00, 0x18, 0x72, 0xee, 0xa0, 0x22, 0x0c,
0xb4, 0x80, 0xf6, 0xe4, 0xbe, 0x00, 0x10, 0x03, 0xf0, 0x89, 0x36, 0x0a, 0x0e,
0x29, 0x44, 0x9e, 0xc7, 0x06, 0x00, 0x0e, 0x00, 0x00, 0xc7, 0x06, 0x02, 0x0e,
0x00, 0x00, 0xc7, 0x06, 0x04, 0x0e, 0x00, 0x00, 0xc7, 0x06, 0x06, 0x0e, 0x9a,
0x02, 0xba, 0x52, 0xff, 0xa1, 0x06, 0x0e, 0xef, 0xba, 0x50, 0xff, 0xb8, 0x00,
0x00, 0xef, 0xba, 0x56, 0xff, 0xb8, 0x05, 0xe0, 0xef, 0xba, 0x5e, 0xff, 0xb8,
0x00, 0x40, 0xef, 0xba, 0x66, 0xff, 0xb8, 0x00, 0x40, 0xef, 0xc7, 0x06, 0x10,
0x0d, 0x00, 0x00, 0xc7, 0x06, 0x12, 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x14, 0x0d,
0x00, 0x04, 0xc7, 0x06, 0x16, 0x0d, 0xfc, 0x03, 0xc7, 0x06, 0x18, 0x0d, 0x00,
0x00, 0xc7, 0x06, 0x1a, 0x0d, 0x00, 0x00, 0xc7, 0x06, 0x1c, 0x0d, 0x00, 0x08,
0xc7, 0x06, 0x1e, 0x0d, 0xfc, 0x03, 0xb0, 0x00, 0x90, 0xe6, 0x00, 0xc7, 0x06,
0x18, 0x0e, 0x32, 0x00, 0xba, 0x38, 0xff, 0xb8, 0x11, 0x00, 0xef, 0xba, 0x3a,
0xff, 0xb8, 0x08, 0x00, 0xef, 0xba, 0x3c, 0xff, 0xb8, 0x08, 0x00, 0xef, 0xba,
0x3e, 0xff, 0xb8, 0x08, 0x00, 0x80, 0x3e, 0x22, 0x0c, 0x08, 0x76, 0x03, 0xb8,
0x12, 0x00, 0xef, 0xba, 0x32, 0xff, 0xb8, 0x05, 0x00, 0xef, 0xba, 0x28, 0xff,
0xb8, 0x6c, 0x00, 0xef, 0xba, 0x22, 0xff, 0xb8, 0x00, 0x80, 0xef, 0xc7, 0x06,
0x18, 0x0e, 0x33, 0x00, 0xc7, 0x06, 0x20, 0x0d, 0x4f, 0x00, 0xc7, 0x06, 0x21,
0x0d, 0x53, 0x00, 0x8b, 0x36, 0x0a, 0x0e, 0xc7, 0x04, 0x3c, 0x0d, 0xc7, 0x06,
0x08, 0x0e, 0x00, 0x10, 0xe9, 0x63, 0xf6, 0x40, 0x28, 0x23, 0x29, 0x20, 0x24,
0x49, 0x64, 0x3a, 0x20, 0x78, 0x61, 0x63, 0x6f, 0x6f, 0x6b, 0x2e, 0x61, 0x73,
0x6d, 0x2c, 0x76, 0x20, 0x37, 0x2e, 0x32, 0x35, 0x20, 0x31, 0x39, 0x39, 0x35,
0x2f, 0x30, 0x31, 0x2f, 0x31, 0x32, 0x20, 0x32, 0x30, 0x3a, 0x35, 0x39, 0x3a,
0x32, 0x31, 0x20, 0x6d, 0x69, 0x6c, 0x74, 0x20, 0x45, 0x78, 0x70, 0x20, 0x24,
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, 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
};

3202
sys/dev/digi/Xem.bios.h Normal file

File diff suppressed because it is too large Load Diff

45
sys/dev/digi/Xem.c Normal file
View File

@ -0,0 +1,45 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <dev/digi/Xem.bios.h>
#include <dev/digi/Xem.fepos.h>
#include <dev/digi/digi_mod.h>
struct digi_mod digi_mod_Xem = {
DIGI_MOD_VERSION,
{ Xem_bios, sizeof(Xem_bios) },
{ Xem_fepos, sizeof(Xem_fepos) },
{ NULL, 0 }
};
DEV_MODULE(digi_Xem, 0, 0);

2217
sys/dev/digi/Xem.fepos.h Normal file

File diff suppressed because it is too large Load Diff

1665
sys/dev/digi/Xr.bios.h Normal file

File diff suppressed because it is too large Load Diff

45
sys/dev/digi/Xr.c Normal file
View File

@ -0,0 +1,45 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <dev/digi/Xr.bios.h>
#include <dev/digi/Xr.fepos.h>
#include <dev/digi/digi_mod.h>
struct digi_mod digi_mod_Xr = {
DIGI_MOD_VERSION,
{ Xr_bios, sizeof(Xr_bios) },
{ Xr_fepos, sizeof(Xr_fepos) },
{ NULL, 0 }
};
DEV_MODULE(digi_Xr, 0, 0);

1238
sys/dev/digi/Xr.fepos.h Normal file

File diff suppressed because it is too large Load Diff

1555
sys/dev/digi/con.CX-IBM.h Normal file

File diff suppressed because it is too large Load Diff

1561
sys/dev/digi/con.CX.h Normal file

File diff suppressed because it is too large Load Diff

3975
sys/dev/digi/con.EPCX.h Normal file

File diff suppressed because it is too large Load Diff

7870
sys/dev/digi/con.MBank.h Normal file

File diff suppressed because it is too large Load Diff

1941
sys/dev/digi/digi.c Normal file

File diff suppressed because it is too large Load Diff

204
sys/dev/digi/digi.h Normal file
View File

@ -0,0 +1,204 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#define W(p) (*(u_int16_t *)(p))
#define vW(p) (*(u_int16_t volatile *)(p))
#define D(p) (*(u_int32_t *)(p))
#define vD(p) (*(u_int32_t volatile *)(p))
#define CE_OVERRUN 0
#define CE_INTERRUPT_BUF_OVERFLOW 1
#define CE_TTY_BUF_OVERFLOW 2
#define CE_NTYPES 3
#define CE_RECORD(com, errnum) (++(com)->delta_error_counts[errnum])
#define DEBUG
#ifdef DEBUG
extern unsigned digi_debug;
#define DLOG(level, args) if (digi_debug & (level)) device_printf args
#else
#define DLOG(level, args)
#endif
struct digi_softc;
/* digiboard port structure */
struct digi_p {
struct digi_softc *sc;
int status;
#define ENABLED 1
#define DIGI_DTR_OFF 2
#define PAUSE_TX 8
#define PAUSE_RX 16
int opencnt;
ushort txbufsize;
ushort rxbufsize;
volatile struct board_chan *bc;
struct tty *tp;
dev_t dev[6];
u_char *txbuf;
u_char *rxbuf;
u_char txwin;
u_char rxwin;
u_char pnum; /* port number */
u_char modemfake; /* Modem values to be forced */
u_char mstat;
u_char modem; /* Force values */
int active_out; /* nonzero if the callout device is open */
int dtr_wait; /* time to hold DTR down on close (* 1/hz) */
u_int wopeners; /* # processes waiting for DCD in open() */
/*
* The high level of the driver never reads status registers directly
* because there would be too many side effects to handle conveniently.
* Instead, it reads copies of the registers stored here by the
* interrupt handler.
*/
u_char last_modem_status; /* last MSR read by intr handler */
u_char prev_modem_status; /* last MSR handled by high level */
/* Initial state. */
struct termios it_in; /* should be in struct tty */
struct termios it_out;
/* Lock state. */
struct termios lt_in; /* should be in struct tty */
struct termios lt_out;
u_int do_timestamp;
u_int do_dcd_timestamp;
struct timeval dcd_timestamp;
u_long bytes_in, bytes_out;
u_int delta_error_counts[CE_NTYPES];
u_long error_counts;
tcflag_t c_iflag; /* hold true IXON/IXOFF/IXANY */
int lcc, lostcc, lbuf;
u_char send_ring;
};
/*
* Map TIOCM_* values to digiboard values
*/
struct digi_control_signals {
int rts;
int cd;
int dsr;
int cts;
int ri;
int dtr;
};
enum digi_board_status {
DIGI_STATUS_NOTINIT,
DIGI_STATUS_ENABLED,
DIGI_STATUS_DISABLED
};
/* Digiboard per-board structure */
struct digi_softc {
/* struct board_info */
device_t dev;
const char *name;
enum digi_board_status status;
ushort numports; /* number of ports on card */
ushort port; /* I/O port */
ushort wport; /* window select I/O port */
struct {
struct resource *mem;
int mrid;
struct resource *irq;
int irqrid;
struct resource *io;
int iorid;
void *irqHandler;
int unit;
dev_t ctldev;
} res;
u_char *vmem; /* virtual memory address */
u_char *memcmd;
volatile u_char *memevent;
long pmem; /* physical memory address */
struct {
u_char *data;
size_t size;
} bios, fep, link;
#ifdef DIGI_INTERRUPT
struct timeval intr_timestamp;
#endif
struct digi_p *ports; /* pointer to array of port descriptors */
struct tty *ttys; /* pointer to array of TTY structures */
volatile struct global_data *gdata;
u_char window; /* saved window */
int win_size;
int win_bits;
int mem_size;
int mem_seg;
digiModel_t model;
const struct digi_control_signals *csigs;
int opencnt;
unsigned pcibus : 1; /* On a PCI bus ? */
struct callout_handle callout; /* poll timeout handle */
struct callout_handle inttest; /* int test timeout handle */
const char *module;
u_char *(*setwin)(struct digi_softc *_sc, unsigned _addr);
void (*hidewin)(struct digi_softc *_sc);
void (*towin)(struct digi_softc *_sc, int _win);
#ifdef DEBUG
int intr_count;
#endif
};
extern devclass_t digi_devclass;
extern const struct digi_control_signals digi_xixe_signals;
extern const struct digi_control_signals digi_normal_signals;
const char *digi_errortxt(int _id);
int digi_modhandler(module_t _mod, int _event, void *_arg);
int digi_attach(struct digi_softc *);
int digi_detach(device_t _dev);
int digi_shutdown(device_t _dev);

472
sys/dev/digi/digi_isa.c Normal file
View File

@ -0,0 +1,472 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
/*-
* TODO:
* Figure out how to make the non-Xi boards use memory addresses other
* than 0xd0000 !!!
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/tty.h>
#include <sys/syslog.h>
#include <sys/bus.h>
#include <machine/bus.h>
#include <sys/rman.h>
#include <machine/resource.h>
#include <vm/vm.h>
#include <vm/pmap.h>
#include <digi/digireg.h>
#include <digi/digiio.h>
#include <digi/digi.h>
/* Valid i/o addresses are any of these with either 0 or 4 added */
static u_long digi_validio[] = {
0x100, 0x110, 0x120, 0x200, 0x220, 0x300, 0x320
};
#define DIGI_NVALIDIO (sizeof(digi_validio) / sizeof(digi_validio[0]))
#define IO_SIZE 0x04
static u_long digi_validmem[] = {
0x80000, 0x88000, 0x90000, 0x98000, 0xa0000, 0xa8000, 0xb0000, 0xb8000,
0xc0000, 0xc8000, 0xd0000, 0xd8000, 0xe0000, 0xe8000, 0xf0000, 0xf8000,
0xf0000000, 0xf1000000, 0xf2000000, 0xf3000000, 0xf4000000, 0xf5000000,
0xf6000000, 0xf7000000, 0xf8000000, 0xf9000000, 0xfa000000, 0xfb000000,
0xfc000000, 0xfd000000, 0xfe000000, 0xff000000
};
#define DIGI_NVALIDMEM (sizeof(digi_validmem) / sizeof(digi_validmem[0]))
static u_char *
digi_isa_setwin(struct digi_softc *sc, unsigned int addr)
{
outb(sc->wport, sc->window = FEPWIN | (addr >> sc->win_bits));
return (sc->vmem + (addr % sc->win_size));
}
static u_char *
digi_xi_setwin(struct digi_softc *sc, unsigned int addr)
{
outb(sc->wport, sc->window = FEPMEM);
return (sc->vmem + addr);
}
static void
digi_isa_hidewin(struct digi_softc *sc)
{
outb(sc->wport, sc->window = 0);
/* outb(sc->port, 0); */
}
static void
digi_isa_towin(struct digi_softc *sc, int win)
{
outb(sc->wport, sc->window = win);
}
static void
digi_xi_towin(struct digi_softc *sc, int win)
{
outb(sc->wport, sc->window = FEPMEM);
}
/*
* sc->port should be set and its resource allocated.
*/
static int
digi_isa_check(struct digi_softc *sc)
{
int i, ident;
sc->name = NULL;
/* Invasive probe - reset the card */
outb(sc->port, FEPRST);
for (i = 1000; DELAY(1), i >= 0; i--)
if ((inb(sc->port) & FEPMASK) == FEPRST)
break;
if (i == -1)
return (NULL);
DLOG(DIGIDB_INIT, (sc->dev, "got reset after %d us\n", 1000 - i));
ident = inb(sc->port);
/*
* NOTE, this probe is all wrong. I haven't got the data sheets !
*/
DLOG(DIGIDB_INIT, (sc->dev, "board type is 0x%x\n", ident));
if (ident & 0x1) {
switch (ident) {
case 0x05:
case 0x15:
case 0x25:
case 0x35:
sc->model = PCXI;
sc->csigs = &digi_xixe_signals;
switch (ident & 0x30) {
case 0:
sc->name = "Digiboard PC/Xi 64K";
sc->mem_seg = 0xf000;
sc->win_size = 0x10000;
sc->win_bits = 16;
break;
case 0x10:
sc->name = "Digiboard PC/Xi 128K";
sc->mem_seg = 0xE000;
sc->win_size = 0x20000;
sc->win_bits = 17;
break;
case 0x20:
sc->name = "Digiboard PC/Xi 256K";
sc->mem_seg = 0xC000;
sc->win_size = 0x40000;
sc->win_bits = 18;
break;
case 0x30:
sc->name = "Digiboard PC/Xi 512K";
sc->mem_seg = 0x8000;
sc->win_size = 0x80000;
sc->win_bits = 19;
break;
}
sc->wport = sc->port;
sc->module = "Xe";
sc->setwin = digi_xi_setwin;
sc->hidewin = digi_isa_hidewin;
sc->towin = digi_xi_towin;
break;
case 0xf5:
sc->name = "Digiboard PC/Xem";
sc->model = PCXEM;
sc->csigs = &digi_normal_signals;
sc->win_size = 0x8000;
sc->win_bits = 15;
sc->wport = sc->port + 1;
sc->module = "Xem";
sc->setwin = digi_isa_setwin;
sc->hidewin = digi_isa_hidewin;
sc->towin = digi_isa_towin;
break;
}
} else {
outb(sc->port, 1);
ident = inb(sc->port);
if (ident & 0x1) {
device_printf(sc->dev, "PC/Xm is unsupported\n");
return (NULL);
}
sc->mem_seg = 0xf000;
if (!(ident & 0xc0)) {
sc->name = "Digiboard PC/Xe 64K";
sc->model = PCXE;
sc->csigs = &digi_xixe_signals;
sc->win_size = 0x10000;
sc->win_bits = 16;
sc->wport = sc->port;
} else {
sc->name = "Digiboard PC/Xe 64/8K (windowed)";
sc->model = PCXEVE;
sc->csigs = &digi_normal_signals;
sc->win_size = 0x2000;
sc->win_bits = 13;
sc->wport = sc->port + 1;
}
sc->module = "Xe";
sc->setwin = digi_isa_setwin;
sc->hidewin = digi_isa_hidewin;
sc->towin = digi_isa_towin;
}
return (sc->name != NULL);
}
static int
digi_isa_probe(device_t dev)
{
struct digi_softc *sc = device_get_softc(dev);
int i;
KASSERT(sc, ("digi%d: softc not allocated in digi_isa_probe\n",
device_get_unit(dev)));
bzero(sc, sizeof(*sc));
sc->status = DIGI_STATUS_NOTINIT;
sc->dev = dev;
sc->res.unit = device_get_unit(dev);
if (sc->res.unit >= 16) {
/* Don't overflow our control mask */
device_printf(dev, "At most 16 digiboards may be used\n");
return (ENXIO);
}
DLOG(DIGIDB_INIT, (sc->dev, "probing on isa bus\n"));
/* Check that we've got a valid i/o address */
if ((sc->port = bus_get_resource_start(dev, SYS_RES_IOPORT, 0)) == 0) {
DLOG(DIGIDB_INIT, (sc->dev, "io address not given\n"));
return (ENXIO);
}
for (i = 0; i < DIGI_NVALIDIO; i++)
if (sc->port == digi_validio[i] ||
sc->port == digi_validio[i] + 4)
break;
if (i == DIGI_NVALIDIO) {
device_printf(dev, "0x%03x: Invalid i/o address\n", sc->port);
return (ENXIO);
}
/* Ditto for our memory address */
if ((sc->pmem = bus_get_resource_start(dev, SYS_RES_MEMORY, 0)) == 0)
return (ENXIO);
for (i = 0; i < DIGI_NVALIDMEM; i++)
if (sc->pmem == digi_validmem[i])
break;
if (i == DIGI_NVALIDMEM) {
device_printf(dev, "0x%lx: Invalid memory address\n", sc->pmem);
return (ENXIO);
}
if ((sc->pmem & 0xfffffful) != sc->pmem) {
device_printf(dev, "0x%lx: Memory address not supported\n",
sc->pmem);
return (ENXIO);
}
sc->vmem = (u_char *)sc->pmem;
DLOG(DIGIDB_INIT, (sc->dev, "isa? port 0x%03x mem 0x%lx\n",
sc->port, sc->pmem));
/* Temporarily map our io ports */
sc->res.iorid = 0;
sc->res.io = bus_alloc_resource(dev, SYS_RES_IOPORT, &sc->res.iorid,
0ul, ~0ul, IO_SIZE, RF_ACTIVE);
if (sc->res.io == NULL)
return (ENXIO);
/* Check the type of card and get internal memory characteristics */
if (!digi_isa_check(sc)) {
bus_release_resource(dev, SYS_RES_IOPORT, sc->res.iorid,
sc->res.io);
return (ENXIO);
}
/* Temporarily map our memory */
sc->res.mrid = 0;
sc->res.mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &sc->res.mrid,
0ul, ~0ul, sc->win_size, RF_ALLOCATED);
if (sc->res.mem == NULL) {
device_printf(dev, "0x%lx: Memory range is in use\n", sc->pmem);
bus_release_resource(dev, SYS_RES_IOPORT, sc->res.iorid,
sc->res.io);
return (ENXIO);
}
outb(sc->port, FEPCLR); /* drop RESET */
sc->hidewin(sc); /* set initial sc->window */
bus_release_resource(dev, SYS_RES_MEMORY, sc->res.mrid, sc->res.mem);
bus_release_resource(dev, SYS_RES_IOPORT, sc->res.iorid, sc->res.io);
/* Let digi_isa_attach() know what we've found */
bus_set_resource(dev, SYS_RES_IOPORT, 0, sc->port, IO_SIZE);
bus_set_resource(dev, SYS_RES_MEMORY, 0, sc->pmem, sc->win_size);
DLOG(DIGIDB_INIT, (sc->dev, "Probe returns -10\n"));
return (-10); /* Other drivers are preferred for now */
}
static int
digi_isa_attach(device_t dev)
{
struct digi_softc *sc = device_get_softc(dev);
int i, t, res;
u_char *ptr;
int reset;
u_long msize, iosize;
long scport;
KASSERT(sc, ("digi%d: softc not allocated in digi_isa_attach\n",
device_get_unit(dev)));
res = ENXIO;
bzero(sc, sizeof(*sc));
sc->status = DIGI_STATUS_NOTINIT;
sc->dev = dev;
sc->res.unit = device_get_unit(dev);
DLOG(DIGIDB_INIT, (sc->dev, "attaching\n"));
bus_get_resource(dev, SYS_RES_IOPORT, 0, &scport, &iosize);
bus_get_resource(dev, SYS_RES_MEMORY, 0, &sc->pmem, &msize);
sc->port = scport;
/* sc->altpin = !!(device_get_flags(dev) & DGBFLAG_ALTPIN); */
/* Allocate resources (verified in digi_isa_probe()) */
sc->res.iorid = 0;
sc->res.io = bus_alloc_resource(dev, SYS_RES_IOPORT, &sc->res.iorid,
0ul, ~0ul, iosize, RF_ACTIVE);
if (sc->res.io == NULL)
return (ENXIO);
/* Check the type of card and get internal memory characteristics */
DLOG(DIGIDB_INIT, (sc->dev, "Checking card type\n"));
if (!digi_isa_check(sc))
goto failed;
callout_handle_init(&sc->callout);
callout_handle_init(&sc->inttest);
sc->res.mrid = 0;
sc->res.mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &sc->res.mrid,
0ul, ~0ul, msize, RF_ACTIVE);
if (sc->res.mem == NULL) {
device_printf(dev, "0x%lx: Memory range is in use\n", sc->pmem);
sc->hidewin(sc);
goto failed;
}
/* map memory */
sc->vmem = pmap_mapdev(sc->pmem, msize);
DLOG(DIGIDB_INIT, (sc->dev, "internal memory segment 0x%x\n",
sc->mem_seg));
/* Start by resetting the card */
reset = FEPRST;
if (sc->model == PCXI)
reset |= FEPMEM;
outb(sc->port, reset);
for (i = 10; DELAY(1), i >= 0; i--) {
if ((inb(sc->port) & FEPMASK) == reset)
break;
tsleep(sc, PUSER | PCATCH, "digirst0", hz / 5);
}
if (i == -1) {
device_printf(dev, "1st reset failed\n");
sc->hidewin(sc);
goto failed;
}
DLOG(DIGIDB_INIT, (sc->dev, "got reset after %d us\n",
(10 - i) * (hz / 5)));
if (sc->model != PCXI) {
t = (sc->pmem >> 8) & 0xffe0;
if (sc->model == PCXEVE)
t |= 0x10; /* enable windowing */
outb(sc->port + 2, t & 0xff);
outb(sc->port + 3, t >> 8);
}
if (sc->model == PCXI || sc->model == PCXE) {
outb(sc->port, FEPRST | FEPMEM);
for (i = 10000; DELAY(1), i >= 0; i--)
if ((inb(sc->port) & FEPMASK) != FEPRST)
break;
if (i == -1) {
device_printf(dev, "2nd reset failed (0x%02x)\n",
inb(sc->port));
sc->hidewin(sc);
goto failed;
}
DLOG(DIGIDB_INIT, (sc->dev, "got memory after %d us\n",
10000 - i));
}
DLOG(DIGIDB_INIT, (sc->dev, "short memory test\n"));
ptr = sc->setwin(sc, BOTWIN);
vD(ptr) = 0xA55A3CC3;
if (vD(ptr) != 0xA55A3CC3) {
device_printf(dev, "1st memory test failed\n");
sc->hidewin(sc);
goto failed;
}
DLOG(DIGIDB_INIT, (sc->dev, "1st memory test ok\n"));
ptr = sc->setwin(sc, TOPWIN);
vD(ptr) = 0x5AA5C33C;
if (vD(ptr) != 0x5AA5C33C) {
device_printf(dev, "2nd memory test failed\n");
sc->hidewin(sc);
goto failed;
}
DLOG(DIGIDB_INIT, (sc->dev, "2nd memory test ok\n"));
ptr = sc->setwin(sc, BIOSCODE + ((0xf000 - sc->mem_seg) << 4));
vD(ptr) = 0x5AA5C33C;
if (vD(ptr) != 0x5AA5C33C) {
device_printf(dev, "3rd (BIOS) memory test failed\n");
sc->hidewin(sc);
goto failed;
}
DLOG(DIGIDB_INIT, (sc->dev, "3rd memory test ok\n"));
if ((res = digi_attach(sc)) == 0)
return (0);
failed:
if (sc->res.mem != NULL) {
bus_release_resource(dev, SYS_RES_MEMORY, sc->res.mrid,
sc->res.mem);
sc->res.mem = NULL;
}
if (sc->res.io != NULL) {
bus_release_resource(dev, SYS_RES_IOPORT, sc->res.iorid,
sc->res.io);
sc->res.io = NULL;
}
return (res);
}
static device_method_t digi_isa_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, digi_isa_probe),
DEVMETHOD(device_attach, digi_isa_attach),
DEVMETHOD(device_detach, digi_detach),
DEVMETHOD(device_shutdown, digi_shutdown),
{0, 0}
};
static driver_t digi_isa_drv = {
"digi",
digi_isa_methods,
sizeof(struct digi_softc),
};
DRIVER_MODULE(digi, isa, digi_isa_drv, digi_devclass, digi_modhandler, 0);

37
sys/dev/digi/digi_mod.h Normal file
View File

@ -0,0 +1,37 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#define DIGI_MOD_VERSION 1
struct digi_mod {
int dm_version;
struct {
const u_char *data;
size_t size;
} dm_bios, dm_fep, dm_link;
};

228
sys/dev/digi/digi_pci.c Normal file
View File

@ -0,0 +1,228 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/tty.h>
#include <sys/syslog.h>
#include <sys/bus.h>
#include <machine/bus.h>
#include <sys/rman.h>
#include <machine/resource.h>
#include <vm/vm.h>
#include <vm/pmap.h>
#include <pci/pcivar.h>
#include <digi/digireg.h>
#include <digi/digiio.h>
#include <digi/digi.h>
#include <digi/digi_pci.h>
static u_char *
digi_pci_setwin(struct digi_softc *sc, unsigned int addr)
{
return (sc->vmem + addr);
}
static void
digi_pci_hidewin(struct digi_softc *sc)
{
return;
}
static void
digi_pci_towin(struct digi_softc *sc, int win)
{
return;
}
static int
digi_pci_probe(device_t dev)
{
unsigned int device_id = pci_get_devid(dev);
if (device_get_unit(dev) >= 16) {
/* Don't overflow our control mask */
device_printf(dev, "At most 16 digiboards may be used\n");
return (ENXIO);
}
if ((device_id & 0xffff) != PCI_VENDOR_DIGI)
return (ENXIO);
switch (device_id >> 16) {
case PCI_DEVICE_EPC:
case PCI_DEVICE_XEM:
case PCI_DEVICE_XR:
case PCI_DEVICE_CX:
case PCI_DEVICE_XRJ:
case PCI_DEVICE_EPCJ:
case PCI_DEVICE_920_4:
case PCI_DEVICE_920_8:
case PCI_DEVICE_920_2:
return 0;
}
return ENXIO;
}
static int
digi_pci_attach(device_t dev)
{
struct digi_softc *sc;
u_int32_t device_id;
#ifdef DIGI_INTERRUPT
int retVal = 0;
#endif
sc = device_get_softc(dev);
KASSERT(sc, ("digi%d: softc not allocated in digi_pci_attach\n",
device_get_unit(dev)));
bzero(sc, sizeof(*sc));
sc->dev = dev;
sc->res.unit = device_get_unit(dev);
device_id = pci_get_devid(dev);
switch (device_id >> 16) {
case PCI_DEVICE_EPC:
sc->name = "Digiboard PCI EPC/X ASIC";
sc->res.mrid = 0x10;
sc->model = PCIEPCX;
sc->module = "EPCX_PCI";
break;
case PCI_DEVICE_XEM:
sc->name = "Digiboard PCI PC/Xem ASIC";
sc->res.mrid = 0x10;
sc->model = PCXEM;
sc->module = "Xem";
break;
case PCI_DEVICE_XR:
sc->name = "Digiboard PCI PC/Xr ASIC";
sc->res.mrid = 0x10;
sc->model = PCIXR;
sc->module = "Xr";
break;
case PCI_DEVICE_CX:
sc->name = "Digiboard PCI C/X ASIC";
sc->res.mrid = 0x10;
sc->model = PCCX;
sc->module = "CX_PCI";
break;
case PCI_DEVICE_XRJ:
sc->name = "Digiboard PCI PC/Xr PLX";
sc->res.mrid = 0x18;
sc->model = PCIXR;
sc->module = "Xr";
break;
case PCI_DEVICE_EPCJ:
sc->name = "Digiboard PCI EPC/X PLX";
sc->res.mrid = 0x18;
sc->model = PCIEPCX;
sc->module = "EPCX_PCI";
break;
case PCI_DEVICE_920_4: /* Digi PCI4r 920 */
sc->name = "Digiboard PCI4r 920";
sc->res.mrid = 0x10;
sc->model = PCIXR;
sc->module = "Xr";
break;
case PCI_DEVICE_920_8: /* Digi PCI8r 920 */
sc->name = "Digiboard PCI8r 920";
sc->res.mrid = 0x10;
sc->model = PCIXR;
sc->module = "Xr";
break;
case PCI_DEVICE_920_2: /* Digi PCI2r 920 */
sc->name = "Digiboard PCI2r 920";
sc->res.mrid = 0x10;
sc->model = PCIXR;
sc->module = "Xr";
break;
default:
device_printf(dev, "Unknown device id = %08x\n", device_id);
return (ENXIO);
}
pci_write_config(dev, 0x40, 0, 4);
pci_write_config(dev, 0x46, 0, 4);
sc->res.mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &sc->res.mrid,
0, ~0, 1, RF_ACTIVE);
#ifdef DIGI_INTERRUPT
sc->res.irqrid = 0;
sc->res.irq = bus_alloc_resource(dev, SYS_RES_IRQ, &sc->res.irqrid,
0, ~0, 1, RF_SHAREABLE | RF_ACTIVE);
if (sc->res.irq == NULL) {
device_printf(dev, "couldn't map interrupt\n");
return ENXIO;
}
retVal = bus_setup_intr(dev, sc->res.irq, INTR_TYPE_TTY,
digiintr, sc, &sc->res.irqHandler);
#else
DLOG(DIGIDB_IRQ, (sc->dev, "Interrupt support compiled out\n"));
#endif
sc->vmem = rman_get_virtual(sc->res.mem);
sc->pmem = vtophys(sc->vmem);
sc->pcibus = 1;
sc->win_size = 0x200000;
sc->win_bits = 21;
sc->csigs = &digi_normal_signals;
sc->status = DIGI_STATUS_NOTINIT;
callout_handle_init(&sc->callout);
callout_handle_init(&sc->inttest);
sc->setwin = digi_pci_setwin;
sc->hidewin = digi_pci_hidewin;
sc->towin = digi_pci_towin;
PCIPORT = FEPRST;
return (digi_attach(sc));
}
static device_method_t digi_pci_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, digi_pci_probe),
DEVMETHOD(device_attach, digi_pci_attach),
DEVMETHOD(device_detach, digi_detach),
DEVMETHOD(device_shutdown, digi_shutdown),
{0, 0}
};
static driver_t digi_pci_drv = {
"digi",
digi_pci_methods,
sizeof(struct digi_softc),
};
DRIVER_MODULE(digi, pci, digi_pci_drv, digi_devclass, digi_modhandler, 0);

42
sys/dev/digi/digi_pci.h Normal file
View File

@ -0,0 +1,42 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#define PCI_VENDOR_DIGI 0x114F
#define PCI_DEVICE_EPC 0x0002
#define PCI_DEVICE_RIGHTSWITCH 0x0003 /* For testing */
#define PCI_DEVICE_XEM 0x0004
#define PCI_DEVICE_XR 0x0005
#define PCI_DEVICE_CX 0x0006
#define PCI_DEVICE_XRJ 0x0009 /* Jupiter boards with */
#define PCI_DEVICE_EPCJ 0x000a /* PLX 9060 chip for PCI */
#define PCI_DEVICE_XR_422 0x0012 /* Xr-422 */
#define PCI_DEVICE_920_4 0x0026 /* XR-Plus 920 K, 4 port */
#define PCI_DEVICE_920_8 0x0027 /* XR-Plus 920 K, 8 port */
#define PCI_DEVICE_920_2 0x0034 /* XR-Plus 920 K, 2 port */
#define PCIPORT sc->vmem[0x200000]

66
sys/dev/digi/digiio.h Normal file
View File

@ -0,0 +1,66 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
typedef struct {
int32_t size;
const u_int8_t *data;
} digiDescriptor_t;
/*
* A very small subset of cards.
*/
typedef enum {
PCXE,
PCXEVE,
PCXI,
PCXEM,
PCCX,
PCIEPCX,
PCIXR
} digiModel_t;
enum {
DIGIDB_INIT = (1<<0),
DIGIDB_OPEN = (1<<1),
DIGIDB_CLOSE = (1<<2),
DIGIDB_SET = (1<<3),
DIGIDB_INT = (1<<4),
DIGIDB_READ = (1<<5),
DIGIDB_WRITE = (1<<6),
DIGIDB_RX = (1<<7),
DIGIDB_TX = (1<<8),
DIGIDB_IRQ = (1<<9),
DIGIDB_MODEM = (1<<10),
DIGIDB_RI = (1<<11),
};
#define DIGIIO_REINIT _IO('e', 'A')
#define DIGIIO_DEBUG _IOW('e', 'B', int)
#define DIGIIO_RING _IO('e', 'C')
#define DIGIIO_MODEL _IOR('e', 'D', digiModel_t)
#define DIGIIO_IDENT _IOW('e', 'E', char *)

206
sys/dev/digi/digireg.h Normal file
View File

@ -0,0 +1,206 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* based on work by Slawa Olhovchenkov
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
struct global_data {
volatile ushort cin;
volatile ushort cout;
volatile ushort cstart;
volatile ushort cmax;
volatile ushort ein;
volatile ushort eout;
volatile ushort istart;
volatile ushort imax;
};
struct board_chan {
volatile ushort tpjmp;
volatile ushort tcjmp;
volatile ushort fil1;
volatile ushort rpjmp;
volatile ushort tseg;
volatile ushort tin;
volatile ushort tout;
volatile ushort tmax;
volatile ushort rseg;
volatile ushort rin;
volatile ushort rout;
volatile ushort rmax;
volatile ushort tlow;
volatile ushort rlow;
volatile ushort rhigh;
volatile ushort incr;
volatile ushort dev;
volatile ushort edelay;
volatile ushort blen;
volatile ushort btime;
volatile ushort iflag;
volatile ushort oflag;
volatile ushort cflag;
volatile ushort gmask;
volatile ushort col;
volatile ushort delay;
volatile ushort imask;
volatile ushort tflush;
volatile u_char _1[16];
volatile u_char num;
volatile u_char ract;
volatile u_char bstat;
volatile u_char tbusy;
volatile u_char iempty;
volatile u_char ilow;
volatile u_char idata;
volatile u_char eflag;
volatile u_char tflag;
volatile u_char rflag;
volatile u_char xmask;
volatile u_char xval;
volatile u_char mstat;
volatile u_char mchange;
volatile u_char mint;
volatile u_char lstat;
volatile u_char mtran;
volatile u_char orun;
volatile u_char startca;
volatile u_char stopca;
volatile u_char startc;
volatile u_char stopc;
volatile u_char vnext;
volatile u_char hflow;
volatile u_char fillc;
volatile u_char ochar;
volatile u_char omask;
volatile u_char _2;
volatile u_char _3[28];
};
#define SRXLWATER 0xe0
#define SRXHWATER 0xe1
#define STPTR 0xe2
#define PAUSETX 0xe3
#define RESUMETX 0xe4
#define SAUXONOFFC 0xe6
#define SENDBREAK 0xe8
#define SETMODEM 0xe9
#define SETIFLAGS 0xeA
#define SONOFFC 0xeB
#define STXLWATER 0xeC
#define PAUSERX 0xeE
#define RESUMERX 0xeF
#define RESETCHAN 0xf0
#define SETBUFFER 0xf2
#define SETCOOKED 0xf3
#define SETHFLOW 0xf4
#define SETCFLAGS 0xf5
#define SETVNEXT 0xf6
#define SETBSLICE 0xf7
#define SETRSMODE 0xfd
#define SETCMDACK 0xfe
#define RESERV 0xff
#define BREAK_IND 0x01
#define LOWTX_IND 0x02
#define EMPTYTX_IND 0x04
#define DATA_IND 0x08
#define MODEMCHG_IND 0x20
#define RECV_OVR_IND 0x40
#define CMD_ACK_IND 0x40
#define UART_OVR_IND 0x80
#define ALL_IND (BREAK_IND|LOWTX_IND|EMPTYTX_IND|DATA_IND|MODEMCHG_IND)
#define FEPTIMEOUT 2000
#define FEPCLR 0x0
#define FEPMEM 0x2
#define FEPRST 0x4
#define FEPREQ 0x8
#define FEPWIN 0x80
#define FEPMASK 0xe
/* #define FEPMASK 0x4 */
#define BOTWIN 0x100L
#define TOPWIN 0xFF00L
#define MISCGLOBAL 0x0C00L
#define FEPCODESEG 0x0200L
/* #define BIOSCODE 0xff800 */ /* Window 15, offset 7800h */
#define FEPCODE 0x0d000
#define FEP_CSTART 0x400L
#define FEP_CMAX 0x800L
#define FEP_ISTART 0x800L
#define FEP_IMAX 0xC00L
#define MBOX 0xC40L
#define FEP_CIN 0xD10L
#define FEP_GLOBAL 0xD10L
#define FEP_EIN 0xD18L
#define FEPSTAT 0xD20L
#define CHANSTRUCT 0x1000L
#define RXTXBUF 0x4000L
#define BIOSOFFSET 0x1000L
#define BIOSCODE 0xf800L
#define FEPOFFSET 0x2000L
/* c_cflag bits */
#define FEP_CSIZE 0x000030
#define FEP_CS5 0x000000
#define FEP_CS6 0x000010
#define FEP_CS7 0x000020
#define FEP_CS8 0x000030
#define FEP_CSTOPB 0x000040
#define FEP_CREAD 0x000080
#define FEP_PARENB 0x000100
#define FEP_PARODD 0x000200
#define FEP_CLOCAL 0x000800
#define FEP_FASTBAUD 0x000400
/* c_iflag bits */
#define FEP_IGNBRK 0000001
#define FEP_BRKINT 0000002
#define FEP_IGNPAR 0000004
#define FEP_PARMRK 0000010
#define FEP_INPCK 0000020
#define FEP_ISTRIP 0000040
#define FEP_IXON 0002000
#define FEP_IXANY 0004000
#define FEP_IXOFF 0010000

View File

@ -1934,7 +1934,8 @@ hint.pca.0.port="0x040"
# bktr: Brooktree bt848/848a/849a/878/879 video capture and TV Tuner board
# cy: Cyclades serial driver
# dgb: Digiboard PC/Xi and PC/Xe series driver (ALPHA QUALITY!)
# dgm: Digiboard PC/Xem driver
# dgm: Digiboard PC/Xem driver (obsolete)
# digi: Digiboard driver
# gp: National Instruments AT-GPIB and AT-GPIB/TNT board, PCMCIA-GPIB
# asc: GI1904-based hand scanners, e.g. the Trust Amiscan Grey
# gsc: Genius GS-4500 hand scanner.
@ -2086,10 +2087,22 @@ options NDGBPORTS=16 # Defaults to 16*NDGB
hint.dgb.0.at="isa"
hint.dgb.0.port="0x220"
hint.dgb.0.maddr="0xfc000"
device dgm 1
device dgm
hint.dgm.0.at="isa"
hint.dgm.0.port="0x104"
hint.dgm.0.maddr="0xd0000"
device digi
hint.dgm.0.at="isa"
hint.dgm.0.port="0x104"
hint.dgm.0.maddr="0xd0000"
# BIOS & FEP/OS components of device digi. Normally left as modules
device digi_CX
device digi_CX_PCI
device digi_EPCX
device digi_EPCX_PCI
device digi_Xe
device digi_Xem
device digi_Xr
device rc 1
hint.rc.0.at="isa"
hint.rc.0.port="0x220"

View File

@ -7,7 +7,7 @@ _random= random
.endif
SUBDIR= 3dfx accf_data accf_http agp aha amr an aue \
cam ccd cd9660 coda cue dc de dgm ed fdesc fxp if_disc if_ef \
cam ccd cd9660 coda cue dc de dgm digi ed fdesc fxp if_disc if_ef \
if_ppp if_sl if_tap if_tun ip6fw ipfilter ipfw ispfw joy kue \
libmchain linux lnc md mfs mii mlx msdos ncp netgraph nfs ntfs nullfs \
nwfs pcn portal procfs ${_random} \

12
sys/modules/digi/Makefile Executable file
View File

@ -0,0 +1,12 @@
# $FreeBSD$
SUBDIR= digi
SUBDIR+=digi_CX
SUBDIR+=digi_CX_PCI
SUBDIR+=digi_EPCX
SUBDIR+=digi_EPCX_PCI
SUBDIR+=digi_Xe
SUBDIR+=digi_Xem
SUBDIR+=digi_Xr
.include <bsd.subdir.mk>

3
sys/modules/digi/Makefile.inc Executable file
View File

@ -0,0 +1,3 @@
# $FreeBSD$
.include "../Makefile.inc"

View File

@ -0,0 +1,9 @@
# $FreeBSD$
.PATH: ${.CURDIR}/../../../dev/digi
KMOD= digi
SRCS= digi.c digi_pci.c digi_isa.c
SRCS+= digi.h digi_pci.h digireg.h digiio.h digi_mod.h
SRCS+= bus_if.h pci_if.h device_if.h
.include <bsd.kmod.mk>

View File

@ -0,0 +1,7 @@
# $FreeBSD$
.PATH: ${.CURDIR}/../../../dev/digi
KMOD= digi_CX
SRCS= CX.c CX.bios.h CX.fepos.h digi_mod.h
.include <bsd.kmod.mk>

View File

@ -0,0 +1,7 @@
# $FreeBSD$
.PATH: ${.CURDIR}/../../../dev/digi
KMOD= digi_CX_PCI
SRCS= CX_PCI.c CX_PCI.bios.h CX_PCI.fepos.h digi_mod.h
.include <bsd.kmod.mk>

View File

@ -0,0 +1,7 @@
# $FreeBSD$
.PATH: ${.CURDIR}/../../../dev/digi
KMOD= digi_EPCX
SRCS= EPCX.c EPCX.bios.h EPCX.fepos.h digi_mod.h
.include <bsd.kmod.mk>

View File

@ -0,0 +1,7 @@
# $FreeBSD$
.PATH: ${.CURDIR}/../../../dev/digi
KMOD= digi_EPCX_PCI
SRCS= EPCX_PCI.c EPCX_PCI.bios.h EPCX_PCI.fepos.h digi_mod.h
.include <bsd.kmod.mk>

View File

@ -0,0 +1,7 @@
# $FreeBSD$
.PATH: ${.CURDIR}/../../../dev/digi
KMOD= digi_Xe
SRCS= Xe.c Xe.bios.h Xe.fepos.h digi_mod.h
.include <bsd.kmod.mk>

View File

@ -0,0 +1,7 @@
# $FreeBSD$
.PATH: ${.CURDIR}/../../../dev/digi
KMOD= digi_Xem
SRCS= Xem.c Xem.bios.h Xem.fepos.h digi_mod.h
.include <bsd.kmod.mk>

View File

@ -0,0 +1,7 @@
# $FreeBSD$
.PATH: ${.CURDIR}/../../../dev/digi
KMOD= digi_Xr
SRCS= Xr.c Xr.bios.h Xr.fepos.h digi_mod.h
.include <bsd.kmod.mk>

66
sys/sys/digiio.h Normal file
View File

@ -0,0 +1,66 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
typedef struct {
int32_t size;
const u_int8_t *data;
} digiDescriptor_t;
/*
* A very small subset of cards.
*/
typedef enum {
PCXE,
PCXEVE,
PCXI,
PCXEM,
PCCX,
PCIEPCX,
PCIXR
} digiModel_t;
enum {
DIGIDB_INIT = (1<<0),
DIGIDB_OPEN = (1<<1),
DIGIDB_CLOSE = (1<<2),
DIGIDB_SET = (1<<3),
DIGIDB_INT = (1<<4),
DIGIDB_READ = (1<<5),
DIGIDB_WRITE = (1<<6),
DIGIDB_RX = (1<<7),
DIGIDB_TX = (1<<8),
DIGIDB_IRQ = (1<<9),
DIGIDB_MODEM = (1<<10),
DIGIDB_RI = (1<<11),
};
#define DIGIIO_REINIT _IO('e', 'A')
#define DIGIIO_DEBUG _IOW('e', 'B', int)
#define DIGIIO_RING _IO('e', 'C')
#define DIGIIO_MODEL _IOR('e', 'D', digiModel_t)
#define DIGIIO_IDENT _IOW('e', 'E', char *)

View File

@ -23,6 +23,7 @@ SUBDIR= IPXrouted \
ctm \
dev_mkdb \
devinfo \
digictl \
diskpart \
edquota \
extattrctl \

View File

@ -0,0 +1,9 @@
# $FreeBSD$
PROG= digictl
MAN= digictl.8
CFLAGS+=-Wall
CFLAGS+=-I${.CURDIR}/../../sys
.include <bsd.prog.mk>

View File

@ -0,0 +1,80 @@
.\" $FreeBSD$
.Dd May 1, 2001
.Dt DIGICTL 8
.Os
.Sh NAME
.Nm digictl
.Nd Control Digiboard devices
.Sh SYNOPSIS
.Nm
.Op Fl d Ar debug
.Op Fl ir
.Ar device ...
.Sh DESCRIPTION
The
.Nm
program provides control of the Digiboard installed with the given control
.Ar device
name.
A digiboard control
.Ar device
is usually of the form
.Dq /dev/digi Ns Ar N Ns No .ctl
where
.Ar N
is the card number and starts at 0 for the first attached card.
.Pp
The following flags are recognised:
.Bl -tag -width XXXX -offset XXXX
.It Fl d Ar debug
If the driver has been compiled with
.Dv DEBUG
defined, the following bits from the
.Ar debug
variable are used to enable diagnostics in the digiboard driver:
.Bl -tag -width XXXXXXXXXXXX
.It 1 ( Em INIT )
Diagnostics during card attach, detach and initialisation.
.It 2 ( Em OPEN )
Diagnostics when opening a port.
.It 4 ( Em CLOSE )
Diagnostics when closing a port.
.It 8 ( Em SET )
Diagnostics when setting tty device flags.
.It 16 ( Em INT )
Diagnostics when processing card events.
.It 32 ( Em READ )
Reports return values from port reads.
.It 64 ( Em WRITE )
Reports return values from port writes.
.It 128 ( Em RX )
Reports receive queue flow control.
.It 256 ( Em TX )
Reports transmit queue flow control.
.It 512 ( Em IRQ )
Diagnostics during interrupts (enable these with care).
.It 1024 ( Em MODEM )
Diagnostics when setting modem status flags.
.It 2048 ( Em RI )
Reports when a RING is received.
.El
.It Fl i
Display the card identification string and type id.
.It Fl r
Reinitialise the card.
For boards with external port modules, it is possible to add or remove
modules and dynamically reprobe the number of ports using this switch.
All ports on the card must be closed in order to reinitialise the card.
.Pp
It is preferable to reinitialise the card rather than reload the entire
digi module as reinitialisation only affects the specified board rather
than affecting all attached boards.
.El
.Sh BUGS
It should be possible to reinitialise a board without closing all of the
existing ports.
.Sh HISTORY
The
.Nm
command first appeared in
.Fx 5.0 .

120
usr.sbin/digictl/digictl.c Normal file
View File

@ -0,0 +1,120 @@
/*-
* Copyright (c) 2001 Brian Somers <brian@Awfulhak.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sysexits.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include "dev/digi/digiio.h"
static int
usage(const char *prog)
{
fprintf(stderr, "Usage: %s [-d debug] [-ir] device...\n", prog);
return (EX_USAGE);
}
int
main(int argc, char **argv)
{
char namedata[256], *name = namedata;
const char *prog;
digiModel_t model;
int ch, debug, fd, i, res;
int dflag, iflag, rflag;
if ((prog = strrchr(argv[0], '/')) == NULL)
prog = argv[0];
else
prog++;
dflag = iflag = rflag = 0;
while ((ch = getopt(argc, argv, "d:ir")) != -1)
switch (ch) {
case 'd':
dflag = 1;
debug = atoi(optarg);
break;
case 'i':
iflag = 1;
break;
case 'r':
rflag = 1;
break;
default:
return usage(prog);
}
if (argc < optind)
return usage(prog);
res = 0;
for (i = optind; i < argc; i++) {
if ((fd = open(argv[i], O_RDONLY)) == -1) {
fprintf(stderr, "%s: %s: open: %s\n", prog, argv[i],
strerror(errno));
res++;
continue;
}
if (dflag && ioctl(fd, DIGIIO_DEBUG, &debug) != 0) {
fprintf(stderr, "%s: %s: debug: %s\n",
prog, argv[i], strerror(errno));
res++;
}
if (iflag) {
if (ioctl(fd, DIGIIO_MODEL, &model) != 0) {
fprintf(stderr, "%s: %s: model: %s\n",
prog, argv[i], strerror(errno));
res++;
} else if (ioctl(fd, DIGIIO_IDENT, &name) != 0) {
fprintf(stderr, "%s: %s: ident: %s\n",
prog, argv[i], strerror(errno));
res++;
} else
printf("%s: %s (type %d)\n",
argv[i], name, (int)model);
}
if (rflag && ioctl(fd, DIGIIO_REINIT) != 0) {
fprintf(stderr, "%s: %s: reinit: %s\n",
prog, argv[i], strerror(errno));
res++;
}
close(fd);
}
return (res);
}