F5OEO-rpitx/src/dvb/dvbsenco8.s

1163 wiersze
52 KiB
ArmAsm

@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@:
@: DVBSENCO8.s
@:
@: DVBS TS Encoder for ARM
@:
@: Brian Jordan, G4EWJ, 22 February 2013
@:
@: This software is provided free for non-commercial amateur radio use.
@: It has no warranty of fitness for any purpose.
@: Use at your own risk.
@:
@: If @ is not the comment character for your assembler,
@: search and replace @: with yours.
@:
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@:
@: dvbsenco - DVBS Encode
@:
@: Converts raw 188 byte transport stream packets by performing
@: sync inversion, energy distribution, Reed Solomon and interleaving.
@: Returns a packet ready for Viterbi processing.
@:
@: The first 11 packets returned after initialisation are incomplete due to
@: the effect of interleaving, which spreads each input packet over the
@: following 12 output packets.
@:
@: Uses non-aligned addressing.
@:
@: Processes a packet in 15us on a 700MHz Raspberry Pi when running
@: within the cache.
@:
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.text
@: Only these 2 external calls are necessary.
@: The individual sections show calling requirements for information only.
.global dvbsenco_init
.global dvbsenco
.global energy
.global reed
.global interleave
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@:
@: Initialisation
@:
@: Calling from C:
@: void dvbsenco_init (void) ;
@:
@: Any registers used are restored to their original values.
@:
@: Memory usage:
@: None
@:
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
dvbsenco_init:
push {r14}
bl energy_init
bl reed_init
bl interleave_init
pop {r14}
bx lr
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@:
@: DVBS Encode
@:
@: Accepts a pointer to a 188 byte packet and performs:
@: Sync inversion and energy distribution
@: Reed Solomon
@: Interleaving
@:
@: Returns a pointer to a 204 byte packet ready for Viterbi processing.
@:
@: Supplied buffer address must be aligned to a word (4 byte) boundary.
@: Any registers used (except R0) are restored to their original values.
@:
@: Calling from C:
@: char* dvbsenco (char* packetin) ; (unsigned char may be used)
@:
@: Memory usage:
@: Scratchpad (workbuff) 256 bytes
@: Plus, see individual sections.
@:
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
dvbsenco:
push {r1,r2,r14}
@: r0 points to the input packet -
ldr r1,=workbuff @: output to workbuff
bl energy
ldr r0,=workbuff
bl reed
ldr r0,=workbuff
bl interleave @: returns with r0 = pointer to an output packet
yy:
pop {r1,r2,r14}
bx lr
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@:
@: Energy processing
@:
@: Accepts a pointer to an input packet.
@: Returns a pointer to an output packet.
@: The input and output addresses may be the same.
@:
@: Calling from C:
@: void energy_init (void) ;
@: void energy (char* input, char* output) ; (unsigned char may be used)
@:
@: Supplied buffer addresses must be aligned to word (4 byte) boundaries.
@: Any registers used are restored to their original values.
@:
@: Memory usage:
@: Constant table (energy_table) 1504 bytes
@:
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
energy_init:
push {r0,r1}
ldr r1,=energytableindex
mov r0,#0
str r0,[r1]
ldr r1,=packetcount
mov r0,#0
str r0,[r1]
pop {r0,r1}
bx lr
@: r0 points to the 188 byte input packet starting with 0x47
@: r1 points to the 188 byte output buffer
energy:
push {r0,r1,r2,r3,r4,r5,r6,r7,r8}
ldr r4,=packetcount
ldr r4,[r4] @: packetcount
and r4,#(NIPACKETS-1) @: modulo
ldr r2,=energytableindex
ldr r5,[r2] @: energytableindex
mov r6,#0x47
ands r4,#7
moveq r6,#0xb8
moveq r5,#0 @: reset energytableindex
strb r6,[r0] @: save sync byte in the packet
eng2:
mov r6,#188/4
ldr r7,=energytable
eng4:
ldr r8,[r0],#4 @: get a word to process
ldr r3,[r7,r5] @: get a word from the energy table
eor r8,r3 @: r8 = r8 ^ r3
add r5,#4 @: increment energytableindex
str r8,[r1],#4 @: store it back and move to next
adds r6,#-1 @: decrement loop counter
bne eng4
str r5,[r2] @: save energytableindex
eng6:
pop {r0,r1,r2,r3,r4,r5,r6,r7,r8}
bx lr
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@:
@: Reed Solomon processing
@:
@: Accepts a pointer to a 188 byte input packet.
@: Adds the 16 RS bytes to the end of the 188 bytes.
@:
@: ***NOTE***
@: If reed() is called from outside dvbsenco8, the packet buffer
@: pointed to must be 208 bytes long and not 204,
@: as 4 bytes of scratchpad are required at the end.
@:
@: Calling from C:
@: void reed_init (void) ;
@: void reed (char *input188) ;
@:
@: Supplied buffer address must be aligned to a word (4 byte) boundary.
@: Any registers used are restored to their original values.
@:
@: Memory usage:
@: Constant table (reed1table) 256 bytes
@: Constant table (reed2table) 4096 bytes
@:
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
reed_init:
bx lr
reed:
push {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12}
@: r0 points to the input packet
add r1,r0,#188 @: r1 = pointer to 16 RS bytes at the end of 188 bytes
mov r12,#0
str r12,[r1,#0]
str r12,[r1,#4]
str r12,[r1,#8]
str r12,[r1,#12]
str r12,[r1,#16] @: extra word for unaligned access - calling buffer must be 208 bytes
mov r3,#188 @: number of bytes to process
ldr r12,=reed1table
@: outer loop here
areed4a:
ldrb r2,[r0],#1 @: get a byte to process
ldrb r4,[r1] @: byte 0 of RS16
eor r2,r4
ldrb r2,[r2,r12] @: feedback
teq r2,#0xff
beq areed4c
lsl r2,#4
@: offset into reed2table - 256 sections of 16 bytes
ldr r4,=reed2table
add r2,r4 @: r2 now points to the 16 bytes of interest in reed2table
@: old inner loop here
ldr r4,[r2,#0] @: load from reed2table
ldr r8,[r1,#1] @: load offset RS 16 bytes
ldr r5,[r2,#4]
ldr r9,[r1,#5]
ldr r6,[r2,#8]
ldr r10,[r1,#9]
ldr r7,[r2,#12]
ldr r11,[r1,#13]
eor r4,r8
eor r5,r9
eor r6,r10
eor r7,r11
stm r1,{r4,r5,r6,r7} @: save the new RS 16 bytes
areed4b:
adds r3,#-1
bne areed4a
areed4x:
pop {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12}
bx LR
areed4c: @: feedback = 0xff
ldr r4,[r1,#1]
str r4,[r1,#0]
ldr r4,[r1,#5]
str r4,[r1,#4]
ldr r4,[r1,#9]
str r4,[r1,#8]
ldr r4,[r1,#13]
str r4,[r1,#12]
b areed4b
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@:
@: Interleave processing
@:
@: Accepts a pointer to an input packet.
@: Returns a pointer to an output packet.
@:
@: The first 11 packets returned after initialisation are incomplete
@: due to the way each input packet is spread over the next 12 output packets.
@:
@: Calling from C:
@: void interleave_init (void) ;
@: char* interleave (char* packetin) ; (unsigned char may be used)
@:
@: Supplied buffer address must be aligned to a word (4 byte) boundary.
@: Any registers used (except R0) are restored to their original values.
@:
@: Memory usage:
@: constant table (interleavetable) 416 bytes
@: ram scratchpad (ipackets) 8192 bytes
@:
@:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
interleave_init:
push {r0,r1,r2}
ldr r1,=packetcount
mov r0,#0
str r0,[r1] @: initialise the packet count for sync inversion
mov r1,#NIPACKETS
mov r2,#IPACKETSIZE
mul r2,r1 @: r2 = r2 * r1
ldr r1,=ipackets
mov r0,#0
ini2:
strb r0,[r1],#1 @: clear the interleaved packets buffer
adds r2,#-1
bne ini2
pop {r0,r1,r2}
bx lr
@: On entry r0 points to the 204 byte packet to be interleaved
@: On exit r0 points to the 204 byte packet ready for Viterbi
interleave:
push {r1,r2,r3,r4,r5,r6,r7,r8}
ldr r1,=ipackets @: r1 = base address of the ipackets output array
mov r2,#NIPACKETS * IPACKETSIZE
add r2,#-1 @: r2 = modulo mask for the ipackets output array
ldr r3,=interleavetable @: r3 = base address of the interleave offset table
ldr r4,=packetcount @: r4 = address of input packet number
ldr r5,[r4] @: r5 = input packet count
and r5,#(NIPACKETS-1) @: mask off actual number of output packet slots
mov r6,#IPACKETSIZE
mul r5,r6 @: r5 = offset into ipackets of first byte to be filled
mov r6,#204
inv2:
ldrh r7,[r3],#2 @: get a 16 bit offset value from the interleave table and increment
ldrb r8,[r0],#1 @: get an input byte
add r7,r5 @: r7 = offset into ipackets for this input byte
and r7,r2 @: mask r7 for wrapping
strb r8,[r1,r7] @: store the input byte into ipackets
adds r6,#-1
bne inv2
ldr r1,=packetcount @: packet count
ldr r2,[r1] @: get the packet count
add r2,#1 @: count a packet processed
str r2,[r1] @: save packet count
ldr r1,=ipackets
add r0,r1,r5 @: return with output packet address
pop {r1,r2,r3,r4,r5,r6,r7,r8}
bx lr
@:****************************************************************************
.data
energytableindex: .word 0
packetcount: .word 0
.equ NIPACKETS, 32
.equ IPACKETSIZE, 256
ipackets:
.space NIPACKETS * IPACKETSIZE
workbuff:
.space 256
@: PRBS energy scrambler
energytable:
.byte 0x00,0x03,0xF6,0x08,0x34,0x30,0xB8,0xA3
.byte 0x93,0xC9,0x68,0xB7,0x73,0xB3,0x29,0xAA
.byte 0xF5,0xFE,0x3C,0x04,0x88,0x1B,0x30,0x5A
.byte 0xA1,0xDF,0xC4,0xC0,0x9A,0x83,0x5F,0x0B
.byte 0xC2,0x38,0x8C,0x93,0x2B,0x6A,0xFB,0x7E
.byte 0x1B,0x04,0x5A,0x19,0xDC,0x54,0xC9,0xFA
.byte 0xB4,0x1F,0xB8,0x41,0x91,0x85,0x65,0x1F
.byte 0x5E,0x43,0xC5,0x88,0x9D,0x33,0x4E,0xAB
.byte 0xA7,0xF9,0xD0,0x14,0xE0,0x7A,0x41,0x1D
.byte 0x86,0x4D,0x15,0xAE,0x7D,0xE5,0x0C,0x5E
.byte 0x29,0xC4,0xF4,0x9A,0x3B,0x5C,0x9B,0xCB
.byte 0x58,0xBB,0xD3,0x98,0xE9,0x52,0x77,0xED
.byte 0x30,0x6E,0xA1,0x67,0xC7,0x50,0x93,0xE3
.byte 0x68,0x4B,0x71,0xBB,0x25,0x9A,0xDD,0x5E
.byte 0xCF,0xC6,0xA0,0x97,0xC3,0x70,0x8B,0x23
.byte 0x3A,0xCA,0x9E,0xBF,0x47,0x83,0x91,0x09
.byte 0x66,0x37,0x54,0xB3,0xFB,0xA8,0x19,0xF0
.byte 0x54,0x21,0xF8,0xC4,0x12,0x98,0x6F,0x51
.byte 0x63,0xE7,0x48,0x53,0xB1,0xE9,0xA4,0x75
.byte 0xD9,0x3C,0xD6,0x8A,0xF7,0x3E,0x32,0x84
.byte 0xAF,0x1B,0xE2,0x58,0x4D,0xD1,0xAC,0xE5
.byte 0xEA,0x5C,0x7D,0xC9,0x0C,0xB6,0x2B,0xB4
.byte 0xF9,0xBA,0x15,0x9C,0x7D,0x49,0x0F,0xB6
.byte 0x21,0xB4,0xC5,0xBA,0x00,0x9F,0x4D,0x43
.byte 0xAF,0x89,0xE1,0x34,0x46,0xB9,0x97,0x95
.byte 0x71,0x7F,0x27,0x02,0xD2,0x0E,0xEC,0x26
.byte 0x68,0xD5,0x72,0xFF,0x2E,0x02,0xE4,0x0E
.byte 0x58,0x25,0xD0,0xDC,0xE2,0xCA,0x4E,0xBD
.byte 0xA7,0x8D,0xD1,0x2C,0xE6,0xEA,0x56,0x7D
.byte 0xF5,0x0C,0x3E,0x28,0x84,0xF3,0x1A,0x2A
.byte 0x5C,0xFD,0xCA,0x0C,0xBC,0x2B,0x88,0xF9
.byte 0x32,0x16,0xAC,0x77,0xE9,0x30,0x76,0xA1
.byte 0x37,0xC6,0xB0,0x97,0xA3,0x71,0xCB,0x24
.byte 0xBA,0xDB,0x9E,0xD9,0x46,0xD7,0x96,0xF1
.byte 0x76,0x27,0x34,0xD2,0xBA,0xEF,0x9E,0x61
.byte 0x45,0x47,0x9F,0x91,0x41,0x67,0x87,0x51
.byte 0x13,0xE6,0x68,0x55,0x71,0xFF,0x24,0x02
.byte 0xD8,0x0E,0xD0,0x26,0xE0,0xD6,0x42,0xF5
.byte 0x8E,0x3D,0x24,0x8E,0xDB,0x26,0xDA,0xD6
.byte 0xDE,0xF6,0xC6,0x36,0x94,0xB7,0x7B,0xB3
.byte 0x19,0xAA,0x55,0xFD,0xFC,0x0C,0x08,0x28
.byte 0x30,0xF0,0xA2,0x23,0xCC,0xC8,0xAA,0xB3
.byte 0xFF,0xA8,0x01,0xF0,0x04,0x20,0x18,0xC0
.byte 0x52,0x81,0xEF,0x04,0x62,0x19,0x4C,0x57
.byte 0xA9,0xF1,0xF4,0x24,0x38,0xD8,0x92,0xD3
.byte 0x6E,0xEB,0x66,0x7B,0x55,0x1B,0xFE,0x58
.byte 0x05,0xD0,0x1C,0xE0,0x4A,0x41,0xBD,0x85
.byte 0x00,0x1D,0x2E,0x4E,0xE5,0xA6,0x5D,0xD5
.byte 0xCC,0xFC,0xAA,0x0B,0xFC,0x38,0x08,0x90
.byte 0x33,0x60,0xAB,0x43,0xFB,0x88,0x19,0x30
.byte 0x56,0xA1,0xF7,0xC4,0x30,0x98,0xA3,0x53
.byte 0xCB,0xE8,0xB8,0x73,0x91,0x29,0x66,0xF7
.byte 0x56,0x33,0xF4,0xA8,0x3B,0xF0,0x98,0x23
.byte 0x50,0xCB,0xE2,0xB8,0x4F,0x91,0xA1,0x65
.byte 0xC7,0x5C,0x93,0xCB,0x68,0xBB,0x73,0x9B
.byte 0x29,0x5A,0xF7,0xDE,0x30,0xC4,0xA2,0x9B
.byte 0xCF,0x58,0xA3,0xD3,0xC8,0xE8,0xB2,0x73
.byte 0xAD,0x29,0xEE,0xF4,0x66,0x39,0x54,0x97
.byte 0xFB,0x70,0x1B,0x20,0x5A,0xC1,0xDE,0x84
.byte 0xC7,0x1A,0x92,0x5F,0x6D,0xC3,0x6C,0x8B
.byte 0x6B,0x3B,0x7A,0x9B,0x1F,0x5A,0x43,0xDD
.byte 0x88,0xCD,0x32,0xAE,0xAF,0xE7,0xE0,0x50
.byte 0x41,0xE1,0x84,0x45,0x19,0x9E,0x55,0x45
.byte 0xFF,0x9C,0x01,0x48,0x07,0xB0,0x11,0xA0
.byte 0x65,0xC1,0x5C,0x87,0xCB,0x10,0xBA,0x63
.byte 0x9D,0x49,0x4F,0xB7,0xA1,0xB1,0xC5,0xA4
.byte 0x9D,0xDB,0x4C,0xDB,0xAA,0xD9,0xFE,0xD4
.byte 0x06,0xF8,0x16,0x10,0x74,0x61,0x39,0x46
.byte 0x97,0x97,0x71,0x73,0x27,0x2A,0xD2,0xFE
.byte 0xEE,0x06,0x64,0x15,0x58,0x7F,0xD1,0x00
.byte 0xE6,0x02,0x54,0x0D,0x00,0x2C,0x10,0xE8
.byte 0x62,0x71,0x4D,0x27,0xAE,0xD1,0xE6,0xE4
.byte 0x56,0x59,0xF5,0xD4,0x3C,0xF8,0x8A,0x13
.byte 0x3C,0x6A,0x89,0x7F,0x37,0x02,0xB2,0x0F
.byte 0xAC,0x21,0xE8,0xC4,0x72,0x99,0x2F,0x56
.byte 0xE3,0xF6,0x48,0x35,0xB0,0xBD,0xA3,0x8D
.byte 0xC9,0x2C,0xB6,0xEB,0xB6,0x79,0xB5,0x15
.byte 0xBE,0x7D,0x85,0x0D,0x1E,0x2E,0x44,0xE5
.byte 0x9A,0x5D,0x5D,0xCF,0xCC,0xA0,0xAB,0xC3
.byte 0xF8,0x88,0x13,0x30,0x6A,0xA1,0x7F,0xC7
.byte 0x00,0x92,0x03,0x6C,0x0B,0x68,0x3B,0x70
.byte 0x9B,0x23,0x5A,0xCB,0xDE,0xB8,0xC7,0x92
.byte 0x91,0x6F,0x67,0x63,0x53,0x4B,0xEB,0xB8
.byte 0x79,0x91,0x15,0x66,0x7F,0x55,0x03,0xFE
.byte 0x08,0x04,0x30,0x18,0xA0,0x53,0xC1,0xE8
.byte 0x84,0x73,0x19,0x2A,0x56,0xFD,0xF6,0x0C
.byte 0x34,0x28,0xB8,0xF3,0x92,0x29,0x6C,0xF7
.byte 0x6A,0x33,0x7C,0xAB,0x0B,0xFA,0x38,0x1C
.byte 0x90,0x4B,0x61,0xBB,0x45,0x9B,0x9D,0x59
.byte 0x4F,0xD7,0xA0,0xF1,0xC2,0x24,0x8C,0xDB
.byte 0x2A,0xDA,0xFE,0xDE,0x06,0xC4,0x16,0x98
.byte 0x77,0x51,0x33,0xE6,0xA8,0x57,0xF1,0xF0
.byte 0x24,0x20,0xD8,0xC2,0xD2,0x8E,0xEF,0x26
.byte 0x62,0xD5,0x4E,0xFF,0xA6,0x01,0xD4,0x04
.byte 0x00,0x1A,0x10,0x5C,0x61,0xC9,0x44,0xB7
.byte 0x9B,0xB1,0x59,0xA7,0xD5,0xD0,0xFC,0xE2
.byte 0x0A,0x4C,0x3D,0xA8,0x8D,0xF3,0x2C,0x2A
.byte 0xE8,0xFE,0x72,0x05,0x2C,0x1E,0xE8,0x46
.byte 0x71,0x95,0x25,0x7E,0xDF,0x06,0xC2,0x16
.byte 0x8C,0x77,0x29,0x32,0xF6,0xAE,0x37,0xE4
.byte 0xB0,0x5B,0xA1,0xD9,0xC4,0xD4,0x9A,0xFB
.byte 0x5E,0x1B,0xC4,0x58,0x99,0xD3,0x54,0xEB
.byte 0xFA,0x78,0x1D,0x10,0x4E,0x61,0xA5,0x45
.byte 0xDF,0x9C,0xC1,0x4A,0x87,0xBF,0x11,0x82
.byte 0x65,0x0D,0x5E,0x2F,0xC4,0xE0,0x9A,0x43
.byte 0x5D,0x8B,0xCD,0x38,0xAE,0x93,0xE7,0x68
.byte 0x53,0x71,0xEB,0x24,0x7A,0xD9,0x1E,0xD6
.byte 0x46,0xF5,0x96,0x3D,0x74,0x8F,0x3B,0x22
.byte 0x9A,0xCF,0x5E,0xA3,0xC7,0xC8,0x90,0xB3
.byte 0x63,0xAB,0x49,0xFB,0xB4,0x19,0xB8,0x55
.byte 0x91,0xFD,0x64,0x0F,0x58,0x23,0xD0,0xC8
.byte 0xE2,0xB2,0x4F,0xAD,0xA1,0xED,0xC4,0x6C
.byte 0x99,0x6B,0x57,0x7B,0xF3,0x18,0x2A,0x50
.byte 0xFD,0xE2,0x0C,0x4C,0x29,0xA8,0xF5,0xF2
.byte 0x3C,0x2C,0x88,0xEB,0x32,0x7A,0xAD,0x1F
.byte 0xEE,0x40,0x65,0x81,0x5D,0x07,0xCE,0x10
.byte 0xA4,0x63,0xD9,0x48,0xD7,0xB2,0xF1,0xAE
.byte 0x25,0xE4,0xDC,0x5A,0x00,0xDE,0xB4,0xC7
.byte 0xBA,0x91,0x9F,0x65,0x43,0x5F,0x8B,0xC1
.byte 0x38,0x86,0x93,0x17,0x6A,0x73,0x7D,0x2B
.byte 0x0E,0xFA,0x26,0x1C,0xD4,0x4A,0xF9,0xBE
.byte 0x15,0x84,0x7D,0x19,0x0E,0x56,0x25,0xF4
.byte 0xDC,0x3A,0xC8,0x9E,0xB3,0x47,0xAB,0x91
.byte 0xF9,0x64,0x17,0x58,0x73,0xD1,0x28,0xE6
.byte 0xF2,0x56,0x2D,0xF4,0xEC,0x3A,0x68,0x9D
.byte 0x73,0x4F,0x2B,0xA2,0xF9,0xCE,0x14,0xA4
.byte 0x7B,0xD9,0x18,0xD6,0x52,0xF5,0xEE,0x3C
.byte 0x64,0x89,0x5B,0x37,0xDA,0xB0,0xDF,0xA2
.byte 0xC1,0xCE,0x84,0xA7,0x1B,0xD2,0x58,0xED
.byte 0xD2,0x6C,0xED,0x6A,0x6F,0x7D,0x63,0x0F
.byte 0x4A,0x23,0xBC,0xC9,0x8A,0xB5,0x3F,0xBE
.byte 0x81,0x87,0x05,0x12,0x1E,0x6C,0x45,0x69
.byte 0x9F,0x75,0x43,0x3F,0x8A,0x81,0x3F,0x06
.byte 0x82,0x17,0x0C,0x72,0x29,0x2C,0xF6,0xEA
.byte 0x36,0x7C,0xB5,0x0B,0xBE,0x39,0x84,0x95
.byte 0x1B,0x7E,0x5B,0x05,0xDA,0x1C,0xDC,0x4A
.byte 0xC9,0xBE,0xB5,0x87,0xBD,0x11,0x8E,0x65
.byte 0x25,0x5E,0xDF,0xC6,0xC0,0x96,0x83,0x77
.byte 0x0B,0x32,0x3A,0xAC,0x9F,0xEB,0x40,0x7B
.byte 0x81,0x19,0x06,0x56,0x15,0xF4,0x7C,0x39
.byte 0x08,0x96,0x33,0x74,0xAB,0x3B,0xFA,0x98
.byte 0x00,0x50,0x43,0xE1,0x88,0x45,0x31,0x9E
.byte 0xA5,0x47,0xDF,0x90,0xC1,0x62,0x87,0x4F
.byte 0x13,0xA2,0x69,0xCD,0x74,0xAF,0x3B,0xE2
.byte 0x98,0x4F,0x51,0xA3,0xE5,0xC8,0x5C,0xB1
.byte 0xCB,0xA4,0xB9,0xDB,0x94,0xD9,0x7A,0xD7
.byte 0x1E,0xF2,0x46,0x2D,0x94,0xED,0x7A,0x6F
.byte 0x1D,0x62,0x4F,0x4D,0xA3,0xAD,0xC9,0xEC
.byte 0xB4,0x6B,0xB9,0x79,0x97,0x15,0x72,0x7F
.byte 0x2D,0x02,0xEE,0x0E,0x64,0x25,0x58,0xDF
.byte 0xD2,0xC0,0xEE,0x82,0x67,0x0D,0x52,0x2F
.byte 0xEC,0xE0,0x6A,0x41,0x7D,0x87,0x0D,0x12
.byte 0x2E,0x6C,0xE5,0x6A,0x5F,0x7D,0xC3,0x0C
.byte 0x8A,0x2B,0x3C,0xFA,0x8A,0x1F,0x3C,0x42
.byte 0x89,0x8F,0x35,0x22,0xBE,0xCF,0x86,0xA1
.byte 0x17,0xC6,0x70,0x95,0x23,0x7E,0xCB,0x06
.byte 0xBA,0x17,0x9C,0x71,0x49,0x27,0xB6,0xD1
.byte 0xB6,0xE5,0xB6,0x5D,0xB5,0xCD,0xBC,0xAD
.byte 0x8B,0xED,0x38,0x6E,0x91,0x67,0x67,0x53
.byte 0x53,0xEB,0xE8,0x78,0x71,0x11,0x26,0x66
.byte 0xD5,0x56,0xFF,0xF6,0x00,0x34,0x00,0xB8
.byte 0x03,0x90,0x09,0x60,0x37,0x40,0xB3,0x83
.byte 0xA9,0x09,0xF6,0x34,0x34,0xB8,0xBB,0x93
.byte 0x99,0x69,0x57,0x77,0xF3,0x30,0x2A,0xA0
.byte 0xFF,0xC2,0x00,0x8C,0x00,0x28,0x0A,0xF0
.byte 0x3E,0x20,0x84,0xC3,0x1A,0x8A,0x5F,0x3D
.byte 0xC2,0x8C,0x8F,0x2B,0x22,0xFA,0xCE,0x1E
.byte 0xA4,0x47,0xD9,0x90,0xD5,0x62,0xFF,0x4E
.byte 0x03,0xA4,0x09,0xD8,0x34,0xD0,0xBA,0xE3
.byte 0x9E,0x49,0x45,0xB7,0x9D,0xB1,0x4D,0xA7
.byte 0xAD,0xD1,0xEC,0xE4,0x6A,0x59,0x7D,0xD7
.byte 0x0C,0xF2,0x2A,0x2C,0xFC,0xEA,0x0A,0x7C
.byte 0x3D,0x08,0x8E,0x33,0x24,0xAA,0xDB,0xFE
.byte 0xD8,0x06,0xD0,0x16,0xE0,0x76,0x41,0x35
.byte 0x86,0xBD,0x17,0x8E,0x71,0x25,0x26,0xDE
.byte 0xD6,0xC6,0xF6,0x96,0x37,0x74,0xB3,0x3B
.byte 0xAA,0x99,0xFF,0x54,0x03,0xF8,0x08,0x10
.byte 0x30,0x60,0xA1,0x43,0xC7,0x88,0x91,0x33
.byte 0x66,0xAB,0x57,0xFB,0xF0,0x18,0x20,0x50
.byte 0xC1,0xE2,0x84,0x4F,0x19,0xA2,0x55,0xCD
.byte 0xFC,0xAC,0x0B,0xE8,0x38,0x70,0x91,0x23
.byte 0x66,0xCB,0x56,0xBB,0xF7,0x98,0x31,0x50
.byte 0xA7,0xE3,0xD0,0x48,0xE1,0xB2,0x45,0xAD
.byte 0x9D,0xED,0x4C,0x6F,0xA9,0x61,0xF7,0x44
.byte 0x33,0x98,0xA9,0x53,0xF7,0xE8,0x30,0x70
.byte 0xA1,0x23,0xC6,0xC8,0x96,0xB3,0x77,0xAB
.byte 0x31,0xFA,0xA4,0x1F,0xD8,0x40,0xD1,0x82
.byte 0xE5,0x0E,0x5E,0x25,0xC4,0xDC,0x9A,0xCB
reed1table:
.byte 0xFF,0x00,0x01,0x19,0x02,0x32,0x1A,0xC6
.byte 0x03,0xDF,0x33,0xEE,0x1B,0x68,0xC7,0x4B
.byte 0x04,0x64,0xE0,0x0E,0x34,0x8D,0xEF,0x81
.byte 0x1C,0xC1,0x69,0xF8,0xC8,0x08,0x4C,0x71
.byte 0x05,0x8A,0x65,0x2F,0xE1,0x24,0x0F,0x21
.byte 0x35,0x93,0x8E,0xDA,0xF0,0x12,0x82,0x45
.byte 0x1D,0xB5,0xC2,0x7D,0x6A,0x27,0xF9,0xB9
.byte 0xC9,0x9A,0x09,0x78,0x4D,0xE4,0x72,0xA6
.byte 0x06,0xBF,0x8B,0x62,0x66,0xDD,0x30,0xFD
.byte 0xE2,0x98,0x25,0xB3,0x10,0x91,0x22,0x88
.byte 0x36,0xD0,0x94,0xCE,0x8F,0x96,0xDB,0xBD
.byte 0xF1,0xD2,0x13,0x5C,0x83,0x38,0x46,0x40
.byte 0x1E,0x42,0xB6,0xA3,0xC3,0x48,0x7E,0x6E
.byte 0x6B,0x3A,0x28,0x54,0xFA,0x85,0xBA,0x3D
.byte 0xCA,0x5E,0x9B,0x9F,0x0A,0x15,0x79,0x2B
.byte 0x4E,0xD4,0xE5,0xAC,0x73,0xF3,0xA7,0x57
.byte 0x07,0x70,0xC0,0xF7,0x8C,0x80,0x63,0x0D
.byte 0x67,0x4A,0xDE,0xED,0x31,0xC5,0xFE,0x18
.byte 0xE3,0xA5,0x99,0x77,0x26,0xB8,0xB4,0x7C
.byte 0x11,0x44,0x92,0xD9,0x23,0x20,0x89,0x2E
.byte 0x37,0x3F,0xD1,0x5B,0x95,0xBC,0xCF,0xCD
.byte 0x90,0x87,0x97,0xB2,0xDC,0xFC,0xBE,0x61
.byte 0xF2,0x56,0xD3,0xAB,0x14,0x2A,0x5D,0x9E
.byte 0x84,0x3C,0x39,0x53,0x47,0x6D,0x41,0xA2
.byte 0x1F,0x2D,0x43,0xD8,0xB7,0x7B,0xA4,0x76
.byte 0xC4,0x17,0x49,0xEC,0x7F,0x0C,0x6F,0xF6
.byte 0x6C,0xA1,0x3B,0x52,0x29,0x9D,0x55,0xAA
.byte 0xFB,0x60,0x86,0xB1,0xBB,0xCC,0x3E,0x5A
.byte 0xCB,0x59,0x5F,0xB0,0x9C,0xA9,0xA0,0x51
.byte 0x0B,0xF5,0x16,0xEB,0x7A,0x75,0x2C,0xD7
.byte 0x4F,0xAE,0xD5,0xE9,0xE6,0xE7,0xAD,0xE8
.byte 0x74,0xD6,0xF4,0xEA,0xA8,0x50,0x58,0xAF
reed2table:
.byte 0x3B,0x0D,0x68,0xBD,0x44,0xD1,0x1E,0x08
.byte 0xA3,0x41,0x29,0xE5,0x62,0x32,0x24,0x3B
.byte 0x76,0x1A,0xD0,0x67,0x88,0xBF,0x3C,0x10
.byte 0x5B,0x82,0x52,0xD7,0xC4,0x64,0x48,0x76
.byte 0xEC,0x34,0xBD,0xCE,0x0D,0x63,0x78,0x20
.byte 0xB6,0x19,0xA4,0xB3,0x95,0xC8,0x90,0xEC
.byte 0xC5,0x68,0x67,0x81,0x1A,0xC6,0xF0,0x40
.byte 0x71,0x32,0x55,0x7B,0x37,0x8D,0x3D,0xC5
.byte 0x97,0xD0,0xCE,0x1F,0x34,0x91,0xFD,0x80
.byte 0xE2,0x64,0xAA,0xF6,0x6E,0x07,0x7A,0x97
.byte 0x33,0xBD,0x81,0x3E,0x68,0x3F,0xE7,0x1D
.byte 0xD9,0xC8,0x49,0xF1,0xDC,0x0E,0xF4,0x33
.byte 0x66,0x67,0x1F,0x7C,0xD0,0x7E,0xD3,0x3A
.byte 0xAF,0x8D,0x92,0xFF,0xA5,0x1C,0xF5,0x66
.byte 0xCC,0xCE,0x3E,0xF8,0xBD,0xFC,0xBB,0x74
.byte 0x43,0x07,0x39,0xE3,0x57,0x38,0xF7,0xCC
.byte 0x85,0x81,0x7C,0xED,0x67,0xE5,0x6B,0xE8
.byte 0x86,0x0E,0x72,0xDB,0xAE,0x70,0xF3,0x85
.byte 0x17,0x1F,0xF8,0xC7,0xCE,0xD7,0xD6,0xCD
.byte 0x11,0x1C,0xE4,0xAB,0x41,0xE0,0xFB,0x17
.byte 0x2E,0x3E,0xED,0x93,0x81,0xB3,0xB1,0x87
.byte 0x22,0x38,0xD5,0x4B,0x82,0xDD,0xEB,0x2E
.byte 0x5C,0x7C,0xC7,0x3B,0x1F,0x7B,0x7F,0x13
.byte 0x44,0x70,0xB7,0x96,0x19,0xA7,0xCB,0x5C
.byte 0xB8,0xF8,0x93,0x76,0x3E,0xF6,0xFE,0x26
.byte 0x88,0xE0,0x73,0x31,0x32,0x53,0x8B,0xB8
.byte 0x6D,0xED,0x3B,0xEC,0x7C,0xF1,0xE1,0x4C
.byte 0x0D,0xDD,0xE6,0x62,0x64,0xA6,0x0B,0x6D
.byte 0xDA,0xC7,0x76,0xC5,0xF8,0xFF,0xDF,0x98
.byte 0x1A,0xA7,0xD1,0xC4,0xC8,0x51,0x16,0xDA
.byte 0xA9,0x93,0xEC,0x97,0xED,0xE3,0xA3,0x2D
.byte 0x34,0x53,0xBF,0x95,0x8D,0xA2,0x2C,0xA9
.byte 0x4F,0x3B,0xC5,0x33,0xC7,0xDB,0x5B,0x5A
.byte 0x68,0xA6,0x63,0x37,0x07,0x59,0x58,0x4F
.byte 0x9E,0x76,0x97,0x66,0x93,0xAB,0xB6,0xB4
.byte 0xD0,0x51,0xC6,0x6E,0x0E,0xB2,0xB0,0x9E
.byte 0x21,0xEC,0x33,0xCC,0x3B,0x4B,0x71,0x75
.byte 0xBD,0xA2,0x91,0xDC,0x1C,0x79,0x7D,0x21
.byte 0x42,0xC5,0x66,0x85,0x76,0x96,0xE2,0xEA
.byte 0x67,0x59,0x3F,0xA5,0x38,0xF2,0xFA,0x42
.byte 0x84,0x97,0xCC,0x17,0xEC,0x31,0xD9,0xC9
.byte 0xCE,0xB2,0x7E,0x57,0x70,0xF9,0xE9,0x84
.byte 0x15,0x33,0x85,0x2E,0xC5,0x62,0xAF,0x8F
.byte 0x81,0x79,0xFC,0xAE,0xE0,0xEF,0xCF,0x15
.byte 0x2A,0x66,0x17,0x5C,0x97,0xC4,0x43,0x03
.byte 0x1F,0xF2,0xE5,0x41,0xDD,0xC3,0x83,0x2A
.byte 0x54,0xCC,0x2E,0xB8,0x33,0x95,0x86,0x06
.byte 0x3E,0xF9,0xD7,0x82,0xA7,0x9B,0x1B,0x54
.byte 0xA8,0x85,0x5C,0x6D,0x66,0x37,0x11,0x0C
.byte 0x7C,0xEF,0xB3,0x19,0x53,0x2B,0x36,0xA8
.byte 0x4D,0x17,0xB8,0xDA,0xCC,0x6E,0x22,0x18
.byte 0xF8,0xC3,0x7B,0x32,0xA6,0x56,0x6C,0x4D
.byte 0x9A,0x2E,0x6D,0xA9,0x85,0xDC,0x44,0x30
.byte 0xED,0x9B,0xF6,0x64,0x51,0xAC,0xD8,0x9A
.byte 0x29,0x5C,0xDA,0x4F,0x17,0xA5,0x88,0x60
.byte 0xC7,0x2B,0xF1,0xC8,0xA2,0x45,0xAD,0x29
.byte 0x52,0xB8,0xA9,0x9E,0x2E,0x57,0x0D,0xC0
.byte 0x93,0x56,0xFF,0x8D,0x59,0x8A,0x47,0x52
.byte 0xA4,0x6D,0x4F,0x21,0x5C,0xAE,0x1A,0x9D
.byte 0x3B,0xAC,0xE3,0x07,0xB2,0x09,0x8E,0xA4
.byte 0x55,0xDA,0x9E,0x42,0xB8,0x41,0x34,0x27
.byte 0x76,0x45,0xDB,0x0E,0x79,0x12,0x01,0x55
.byte 0xAA,0xA9,0x21,0x84,0x6D,0x82,0x68,0x4E
.byte 0xEC,0x8A,0xAB,0x1C,0xF2,0x24,0x02,0xAA
.byte 0x49,0x4F,0x42,0x15,0xDA,0x19,0xD0,0x9C
.byte 0xC5,0x09,0x4B,0x38,0xF9,0x48,0x04,0x49
.byte 0x92,0x9E,0x84,0x2A,0xA9,0x32,0xBD,0x25
.byte 0x97,0x12,0x96,0x70,0xEF,0x90,0x08,0x92
.byte 0x39,0x21,0x15,0x54,0x4F,0x64,0x67,0x4A
.byte 0x33,0x24,0x31,0xE0,0xC3,0x3D,0x10,0x39
.byte 0x72,0x42,0x2A,0xA8,0x9E,0xC8,0xCE,0x94
.byte 0x66,0x48,0x62,0xDD,0x9B,0x7A,0x20,0x72
.byte 0xE4,0x84,0x54,0x4D,0x21,0x8D,0x81,0x35
.byte 0xCC,0x90,0xC4,0xA7,0x2B,0xF4,0x40,0xE4
.byte 0xD5,0x15,0xA8,0x9A,0x42,0x07,0x1F,0x6A
.byte 0x85,0x3D,0x95,0x53,0x56,0xF5,0x80,0xD5
.byte 0xB7,0x2A,0x4D,0x29,0x84,0x0E,0x3E,0xD4
.byte 0x17,0x7A,0x37,0xA6,0xAC,0xF7,0x1D,0xB7
.byte 0x73,0x54,0x9A,0x52,0x15,0x1C,0x7C,0xB5
.byte 0x2E,0xF4,0x6E,0x51,0x45,0xF3,0x3A,0x73
.byte 0xE6,0xA8,0x29,0xA4,0x2A,0x38,0xF8,0x77
.byte 0x5C,0xF5,0xDC,0xA2,0x8A,0xFB,0x74,0xE6
.byte 0xD1,0x4D,0x52,0x55,0x54,0x70,0xED,0xEE
.byte 0xB8,0xF7,0xA5,0x59,0x09,0xEB,0xE8,0xD1
.byte 0xBF,0x9A,0xA4,0xAA,0xA8,0xE0,0xC7,0xC1
.byte 0x6D,0xF3,0x57,0xB2,0x12,0xCB,0xCD,0xBF
.byte 0x63,0x29,0x55,0x49,0x4D,0xDD,0x93,0x9F
.byte 0xDA,0xFB,0xAE,0x79,0x24,0x8B,0x87,0x63
.byte 0xC6,0x52,0xAA,0x92,0x9A,0xA7,0x3B,0x23
.byte 0xA9,0xEB,0x41,0xF2,0x48,0x0B,0x13,0xC6
.byte 0x91,0xA4,0x49,0x39,0x29,0x53,0x76,0x46
.byte 0x4F,0xCB,0x82,0xF9,0x90,0x16,0x26,0x91
.byte 0x3F,0x55,0x92,0x72,0x52,0xA6,0xEC,0x8C
.byte 0x9E,0x8B,0x19,0xEF,0x3D,0x2C,0x4C,0x3F
.byte 0x7E,0xAA,0x39,0xE4,0xA4,0x51,0xC5,0x05
.byte 0x21,0x0B,0x32,0xC3,0x7A,0x58,0x98,0x7E
.byte 0xFC,0x49,0x72,0xD5,0x55,0xA2,0x97,0x0A
.byte 0x42,0x16,0x64,0x9B,0xF4,0xB0,0x2D,0xFC
.byte 0xE5,0x92,0xE4,0xB7,0xAA,0x59,0x33,0x14
.byte 0x84,0x2C,0xC8,0x2B,0xF5,0x7D,0x5A,0xE5
.byte 0xD7,0x39,0xD5,0x73,0x49,0xB2,0x66,0x28
.byte 0x15,0x58,0x8D,0x56,0xF7,0xFA,0xB4,0xD7
.byte 0xB3,0x72,0xB7,0xE6,0x92,0x79,0xCC,0x50
.byte 0x2A,0xB0,0x07,0xAC,0xF3,0xE9,0x75,0xB3
.byte 0x7B,0xE4,0x73,0xD1,0x39,0xF2,0x85,0xA0
.byte 0x54,0x7D,0x0E,0x45,0xFB,0xCF,0xEA,0x7B
.byte 0xF6,0xD5,0xE6,0xBF,0x72,0xF9,0x17,0x5D
.byte 0xA8,0xFA,0x1C,0x8A,0xEB,0x83,0xC9,0xF6
.byte 0xF1,0xB7,0xD1,0x63,0xE4,0xEF,0x2E,0xBA
.byte 0x4D,0xE9,0x38,0x09,0xCB,0x1B,0x8F,0xF1
.byte 0xFF,0x73,0xBF,0xC6,0xD5,0xC3,0x5C,0x69
.byte 0x9A,0xCF,0x70,0x12,0x8B,0x36,0x03,0xFF
.byte 0xE3,0xE6,0x63,0x91,0xB7,0x9B,0xB8,0xD2
.byte 0x29,0x83,0xE0,0x24,0x0B,0x6C,0x06,0xE3
.byte 0xDB,0xD1,0xC6,0x3F,0x73,0x2B,0x6D,0xB9
.byte 0x52,0x1B,0xDD,0x48,0x16,0xD8,0x0C,0xDB
.byte 0xAB,0xBF,0x91,0x7E,0xE6,0x56,0xDA,0x6F
.byte 0xA4,0x36,0xA7,0x90,0x2C,0xAD,0x18,0xAB
.byte 0x4B,0x63,0x3F,0xFC,0xD1,0xAC,0xA9,0xDE
.byte 0x55,0x6C,0x53,0x3D,0x58,0x47,0x30,0x4B
.byte 0x96,0xC6,0x7E,0xE5,0xBF,0x45,0x4F,0xA1
.byte 0xAA,0xD8,0xA6,0x7A,0xB0,0x8E,0x60,0x96
.byte 0x31,0x91,0xFC,0xD7,0x63,0x8A,0x9E,0x5F
.byte 0x49,0xAD,0x51,0xF4,0x7D,0x01,0xC0,0x31
.byte 0x62,0x3F,0xE5,0xB3,0xC6,0x09,0x21,0xBE
.byte 0x92,0x47,0xA2,0xF5,0xFA,0x02,0x9D,0x62
.byte 0xC4,0x7E,0xD7,0x7B,0x91,0x12,0x42,0x61
.byte 0x39,0x8E,0x59,0xF7,0xE9,0x04,0x27,0xC4
.byte 0x95,0xFC,0xB3,0xF6,0x3F,0x24,0x84,0xC2
.byte 0x72,0x01,0xB2,0xF3,0xCF,0x08,0x4E,0x95
.byte 0x37,0xE5,0x7B,0xF1,0x7E,0x48,0x15,0x99
.byte 0xE4,0x02,0x79,0xFB,0x83,0x10,0x9C,0x37
.byte 0x6E,0xD7,0xF6,0xFF,0xFC,0x90,0x2A,0x2F
.byte 0xD5,0x04,0xF2,0xEB,0x1B,0x20,0x25,0x6E
.byte 0xDC,0xB3,0xF1,0xE3,0xE5,0x3D,0x54,0x5E
.byte 0xB7,0x08,0xF9,0xCB,0x36,0x40,0x4A,0xDC
.byte 0xA5,0x7B,0xFF,0xDB,0xD7,0x7A,0xA8,0xBC
.byte 0x73,0x10,0xEF,0x8B,0x6C,0x80,0x94,0xA5
.byte 0x57,0xF6,0xE3,0xAB,0xB3,0xF4,0x4D,0x65
.byte 0xE6,0x20,0xC3,0x0B,0xD8,0x1D,0x35,0x57
.byte 0xAE,0xF1,0xDB,0x4B,0x7B,0xF5,0x9A,0xCA
.byte 0xD1,0x40,0x9B,0x16,0xAD,0x3A,0x6A,0xAE
.byte 0x41,0xFF,0xAB,0x96,0xF6,0xF7,0x29,0x89
.byte 0xBF,0x80,0x2B,0x2C,0x47,0x74,0xD4,0x41
.byte 0x82,0xE3,0x4B,0x31,0xF1,0xF3,0x52,0x0F
.byte 0x63,0x1D,0x56,0x58,0x8E,0xE8,0xB5,0x82
.byte 0x19,0xDB,0x96,0x62,0xFF,0xFB,0xA4,0x1E
.byte 0xC6,0x3A,0xAC,0xB0,0x01,0xCD,0x77,0x19
.byte 0x32,0xAB,0x31,0xC4,0xE3,0xEB,0x55,0x3C
.byte 0x91,0x74,0x45,0x7D,0x02,0x87,0xEE,0x32
.byte 0x64,0x4B,0x62,0x95,0xDB,0xCB,0xAA,0x78
.byte 0x3F,0xE8,0x8A,0xFA,0x04,0x13,0xC1,0x64
.byte 0xC8,0x96,0xC4,0x37,0xAB,0x8B,0x49,0xF0
.byte 0x7E,0xCD,0x09,0xE9,0x08,0x26,0x9F,0xC8
.byte 0x8D,0x31,0x95,0x6E,0x4B,0x0B,0x92,0xFD
.byte 0xFC,0x87,0x12,0xCF,0x10,0x4C,0x23,0x8D
.byte 0x07,0x62,0x37,0xDC,0x96,0x16,0x39,0xE7
.byte 0xE5,0x13,0x24,0x83,0x20,0x98,0x46,0x07
.byte 0x0E,0xC4,0x6E,0xA5,0x31,0x2C,0x72,0xD3
.byte 0xD7,0x26,0x48,0x1B,0x40,0x2D,0x8C,0x0E
.byte 0x1C,0x95,0xDC,0x57,0x62,0x58,0xE4,0xBB
.byte 0xB3,0x4C,0x90,0x36,0x80,0x5A,0x05,0x1C
.byte 0x38,0x37,0xA5,0xAE,0xC4,0xB0,0xD5,0x6B
.byte 0x7B,0x98,0x3D,0x6C,0x1D,0xB4,0x0A,0x38
.byte 0x70,0x6E,0x57,0x41,0x95,0x7D,0xB7,0xD6
.byte 0xF6,0x2D,0x7A,0xD8,0x3A,0x75,0x14,0x70
.byte 0xE0,0xDC,0xAE,0x82,0x37,0xFA,0x73,0xB1
.byte 0xF1,0x5A,0xF4,0xAD,0x74,0xEA,0x28,0xE0
.byte 0xDD,0xA5,0x41,0x19,0x6E,0xE9,0xE6,0x7F
.byte 0xFF,0xB4,0xF5,0x47,0xE8,0xC9,0x50,0xDD
.byte 0xA7,0x57,0x82,0x32,0xDC,0xCF,0xD1,0xFE
.byte 0xE3,0x75,0xF7,0x8E,0xCD,0x8F,0xA0,0xA7
.byte 0x53,0xAE,0x19,0x64,0xA5,0x83,0xBF,0xE1
.byte 0xDB,0xEA,0xF3,0x01,0x87,0x03,0x5D,0x53
.byte 0xA6,0x41,0x32,0xC8,0x57,0x1B,0x63,0xDF
.byte 0xAB,0xC9,0xFB,0x02,0x13,0x06,0xBA,0xA6
.byte 0x51,0x82,0x64,0x8D,0xAE,0x36,0xC6,0xA3
.byte 0x4B,0x8F,0xEB,0x04,0x26,0x0C,0x69,0x51
.byte 0xA2,0x19,0xC8,0x07,0x41,0x6C,0x91,0x5B
.byte 0x96,0x03,0xCB,0x08,0x4C,0x18,0xD2,0xA2
.byte 0x59,0x32,0x8D,0x0E,0x82,0xD8,0x3F,0xB6
.byte 0x31,0x06,0x8B,0x10,0x98,0x30,0xB9,0x59
.byte 0xB2,0x64,0x07,0x1C,0x19,0xAD,0x7E,0x71
.byte 0x62,0x0C,0x0B,0x20,0x2D,0x60,0x6F,0xB2
.byte 0x79,0xC8,0x0E,0x38,0x32,0x47,0xFC,0xE2
.byte 0xC4,0x18,0x16,0x40,0x5A,0xC0,0xDE,0x79
.byte 0xF2,0x8D,0x1C,0x70,0x64,0x8E,0xE5,0xD9
.byte 0x95,0x30,0x2C,0x80,0xB4,0x9D,0xA1,0xF2
.byte 0xF9,0x07,0x38,0xE0,0xC8,0x01,0xD7,0xAF
.byte 0x37,0x60,0x58,0x1D,0x75,0x27,0x5F,0xF9
.byte 0xEF,0x0E,0x70,0xDD,0x8D,0x02,0xB3,0x43
.byte 0x6E,0xC0,0xB0,0x3A,0xEA,0x4E,0xBE,0xEF
.byte 0xC3,0x1C,0xE0,0xA7,0x07,0x04,0x7B,0x86
.byte 0xDC,0x9D,0x7D,0x74,0xC9,0x9C,0x61,0xC3
.byte 0x9B,0x38,0xDD,0x53,0x0E,0x08,0xF6,0x11
.byte 0xA5,0x27,0xFA,0xE8,0x8F,0x25,0xC2,0x9B
.byte 0x2B,0x70,0xA7,0xA6,0x1C,0x10,0xF1,0x22
.byte 0x57,0x4E,0xE9,0xCD,0x03,0x4A,0x99,0x2B
.byte 0x56,0xE0,0x53,0x51,0x38,0x20,0xFF,0x44
.byte 0xAE,0x9C,0xCF,0x87,0x06,0x94,0x2F,0x56
.byte 0xAC,0xDD,0xA6,0xA2,0x70,0x40,0xE3,0x88
.byte 0x41,0x25,0x83,0x13,0x0C,0x35,0x5E,0xAC
.byte 0x45,0xA7,0x51,0x59,0xE0,0x80,0xDB,0x0D
.byte 0x82,0x4A,0x1B,0x26,0x18,0x6A,0xBC,0x45
.byte 0x8A,0x53,0xA2,0xB2,0xDD,0x1D,0xAB,0x1A
.byte 0x19,0x94,0x36,0x4C,0x30,0xD4,0x65,0x8A
.byte 0x09,0xA6,0x59,0x79,0xA7,0x3A,0x4B,0x34
.byte 0x32,0x35,0x6C,0x98,0x60,0xB5,0xCA,0x09
.byte 0x12,0x51,0xB2,0xF2,0x53,0x74,0x96,0x68
.byte 0x64,0x6A,0xD8,0x2D,0xC0,0x77,0x89,0x12
.byte 0x24,0xA2,0x79,0xF9,0xA6,0xE8,0x31,0xD0
.byte 0xC8,0xD4,0xAD,0x5A,0x9D,0xEE,0x0F,0x24
.byte 0x48,0x59,0xF2,0xEF,0x51,0xCD,0x62,0xBD
.byte 0x8D,0xB5,0x47,0xB4,0x27,0xC1,0x1E,0x48
.byte 0x90,0xB2,0xF9,0xC3,0xA2,0x87,0xC4,0x67
.byte 0x07,0x77,0x8E,0x75,0x4E,0x9F,0x3C,0x90
.byte 0x3D,0x79,0xEF,0x9B,0x59,0x13,0x95,0xCE
.byte 0x0E,0xEE,0x01,0xEA,0x9C,0x23,0x78,0x3D
.byte 0x7A,0xF2,0xC3,0x2B,0xB2,0x26,0x37,0x81
.byte 0x1C,0xC1,0x02,0xC9,0x25,0x46,0xF0,0x7A
.byte 0xF4,0xF9,0x9B,0x56,0x79,0x4C,0x6E,0x1F
.byte 0x38,0x9F,0x04,0x8F,0x4A,0x8C,0xFD,0xF4
.byte 0xF5,0xEF,0x2B,0xAC,0xF2,0x98,0xDC,0x3E
.byte 0x70,0x23,0x08,0x03,0x94,0x05,0xE7,0xF5
.byte 0xF7,0xC3,0x56,0x45,0xF9,0x2D,0xA5,0x7C
.byte 0xE0,0x46,0x10,0x06,0x35,0x0A,0xD3,0xF7
.byte 0xF3,0x9B,0xAC,0x8A,0xEF,0x5A,0x57,0xF8
.byte 0xDD,0x8C,0x20,0x0C,0x6A,0x14,0xBB,0xF3
.byte 0xFB,0x2B,0x45,0x09,0xC3,0xB4,0xAE,0xED
.byte 0xA7,0x05,0x40,0x18,0xD4,0x28,0x6B,0xFB
.byte 0xEB,0x56,0x8A,0x12,0x9B,0x75,0x41,0xC7
.byte 0x53,0x0A,0x80,0x30,0xB5,0x50,0xD6,0xEB
.byte 0xCB,0xAC,0x09,0x24,0x2B,0xEA,0x82,0x93
.byte 0xA6,0x14,0x1D,0x60,0x77,0xA0,0xB1,0xCB
.byte 0x8B,0x45,0x12,0x48,0x56,0xC9,0x19,0x3B
.byte 0x51,0x28,0x3A,0xC0,0xEE,0x5D,0x7F,0x8B
.byte 0x0B,0x8A,0x24,0x90,0xAC,0x8F,0x32,0x76
.byte 0xA2,0x50,0x74,0x9D,0xC1,0xBA,0xFE,0x0B
.byte 0x16,0x09,0x48,0x3D,0x45,0x03,0x64,0xEC
.byte 0x59,0xA0,0xE8,0x27,0x9F,0x69,0xE1,0x16
.byte 0x2C,0x12,0x90,0x7A,0x8A,0x06,0xC8,0xC5
.byte 0xB2,0x5D,0xCD,0x4E,0x23,0xD2,0xDF,0x2C
.byte 0x58,0x24,0x3D,0xF4,0x09,0x0C,0x8D,0x97
.byte 0x79,0xBA,0x87,0x9C,0x46,0xB9,0xA3,0x58
.byte 0xB0,0x48,0x7A,0xF5,0x12,0x18,0x07,0x33
.byte 0xF2,0x69,0x13,0x25,0x8C,0x6F,0x5B,0xB0
.byte 0x7D,0x90,0xF4,0xF7,0x24,0x30,0x0E,0x66
.byte 0xF9,0xD2,0x26,0x4A,0x05,0xDE,0xB6,0x7D
.byte 0xFA,0x3D,0xF5,0xF3,0x48,0x60,0x1C,0xCC
.byte 0xEF,0xB9,0x4C,0x94,0x0A,0xA1,0x71,0xFA
.byte 0xE9,0x7A,0xF7,0xFB,0x90,0xC0,0x38,0x85
.byte 0xC3,0x6F,0x98,0x35,0x14,0x5F,0xE2,0xE9
.byte 0xCF,0xF4,0xF3,0xEB,0x3D,0x9D,0x70,0x17
.byte 0x9B,0xDE,0x2D,0x6A,0x28,0xBE,0xD9,0xCF
.byte 0x83,0xF5,0xFB,0xCB,0x7A,0x27,0xE0,0x2E
.byte 0x2B,0xA1,0x5A,0xD4,0x50,0x61,0xAF,0x83
.byte 0x1B,0xF7,0xEB,0x8B,0xF4,0x4E,0xDD,0x5C
.byte 0x56,0x5F,0xB4,0xB5,0xA0,0xC2,0x43,0x1B
.byte 0x36,0xF3,0xCB,0x0B,0xF5,0x9C,0xA7,0xB8
.byte 0xAC,0xBE,0x75,0x77,0x5D,0x99,0x86,0x36
.byte 0x6C,0xFB,0x8B,0x16,0xF7,0x25,0x53,0x6D
.byte 0x45,0x61,0xEA,0xEE,0xBA,0x2F,0x11,0x6C
.byte 0xD8,0xEB,0x0B,0x2C,0xF3,0x4A,0xA6,0xDA
.byte 0x8A,0xC2,0xC9,0xC1,0x69,0x5E,0x22,0xD8
.byte 0xAD,0xCB,0x16,0x58,0xFB,0x94,0x51,0xA9
.byte 0x09,0x99,0x8F,0x9F,0xD2,0xBC,0x44,0xAD
.byte 0x47,0x8B,0x2C,0xB0,0xEB,0x35,0xA2,0x4F
.byte 0x12,0x2F,0x03,0x23,0xB9,0x65,0x88,0x47
.byte 0x8E,0x0B,0x58,0x7D,0xCB,0x6A,0x59,0x9E
.byte 0x24,0x5E,0x06,0x46,0x6F,0xCA,0x0D,0x8E
.byte 0x01,0x16,0xB0,0xFA,0x8B,0xD4,0xB2,0x21
.byte 0x48,0xBC,0x0C,0x8C,0xDE,0x89,0x1A,0x01
.byte 0x02,0x2C,0x7D,0xE9,0x0B,0xB5,0x79,0x42
.byte 0x90,0x65,0x18,0x05,0xA1,0x0F,0x34,0x02
.byte 0x04,0x58,0xFA,0xCF,0x16,0x77,0xF2,0x84
.byte 0x3D,0xCA,0x30,0x0A,0x5F,0x1E,0x68,0x04
.byte 0x08,0xB0,0xE9,0x83,0x2C,0xEE,0xF9,0x15
.byte 0x7A,0x89,0x60,0x14,0xBE,0x3C,0xD0,0x08
.byte 0x10,0x7D,0xCF,0x1B,0x58,0xC1,0xEF,0x2A
.byte 0xF4,0x0F,0xC0,0x28,0x61,0x78,0xBD,0x10
.byte 0x20,0xFA,0x83,0x36,0xB0,0x9F,0xC3,0x54
.byte 0xF5,0x1E,0x9D,0x50,0xC2,0xF0,0x67,0x20
.byte 0x40,0xE9,0x1B,0x6C,0x7D,0x23,0x9B,0xA8
.byte 0xF7,0x3C,0x27,0xA0,0x99,0xFD,0xCE,0x40
.byte 0x80,0xCF,0x36,0xD8,0xFA,0x46,0x2B,0x4D
.byte 0xF3,0x78,0x4E,0x5D,0x2F,0xE7,0x81,0x80
.byte 0x1D,0x83,0x6C,0xAD,0xE9,0x8C,0x56,0x9A
.byte 0xFB,0xF0,0x9C,0xBA,0x5E,0xD3,0x1F,0x1D
.byte 0x3A,0x1B,0xD8,0x47,0xCF,0x05,0xAC,0x29
.byte 0xEB,0xFD,0x25,0x69,0xBC,0xBB,0x3E,0x3A
.byte 0x74,0x36,0xAD,0x8E,0x83,0x0A,0x45,0x52
.byte 0xCB,0xE7,0x4A,0xD2,0x65,0x6B,0x7C,0x74
.byte 0xE8,0x6C,0x47,0x01,0x1B,0x14,0x8A,0xA4
.byte 0x8B,0xD3,0x94,0xB9,0xCA,0xD6,0xF8,0xE8
.byte 0xCD,0xD8,0x8E,0x02,0x36,0x28,0x09,0x55
.byte 0x0B,0xBB,0x35,0x6F,0x89,0xB1,0xED,0xCD
.byte 0x87,0xAD,0x01,0x04,0x6C,0x50,0x12,0xAA
.byte 0x16,0x6B,0x6A,0xDE,0x0F,0x7F,0xC7,0x87
.byte 0x13,0x47,0x02,0x08,0xD8,0xA0,0x24,0x49
.byte 0x2C,0xD6,0xD4,0xA1,0x1E,0xFE,0x93,0x13
.byte 0x26,0x8E,0x04,0x10,0xAD,0x5D,0x48,0x92
.byte 0x58,0xB1,0xB5,0x5F,0x3C,0xE1,0x3B,0x26
.byte 0x4C,0x01,0x08,0x20,0x47,0xBA,0x90,0x39
.byte 0xB0,0x7F,0x77,0xBE,0x78,0xDF,0x76,0x4C
.byte 0x98,0x02,0x10,0x40,0x8E,0x69,0x3D,0x72
.byte 0x7D,0xFE,0xEE,0x61,0xF0,0xA3,0xEC,0x98
.byte 0x2D,0x04,0x20,0x80,0x01,0xD2,0x7A,0xE4
.byte 0xFA,0xE1,0xC1,0xC2,0xFD,0x5B,0xC5,0x2D
.byte 0x5A,0x08,0x40,0x1D,0x02,0xB9,0xF4,0xD5
.byte 0xE9,0xDF,0x9F,0x99,0xE7,0xB6,0x97,0x5A
.byte 0xB4,0x10,0x80,0x3A,0x04,0x6F,0xF5,0xB7
.byte 0xCF,0xA3,0x23,0x2F,0xD3,0x71,0x33,0xB4
.byte 0x75,0x20,0x1D,0x74,0x08,0xDE,0xF7,0x73
.byte 0x83,0x5B,0x46,0x5E,0xBB,0xE2,0x66,0x75
.byte 0xEA,0x40,0x3A,0xE8,0x10,0xA1,0xF3,0xE6
.byte 0x1B,0xB6,0x8C,0xBC,0x6B,0xD9,0xCC,0xEA
.byte 0xC9,0x80,0x74,0xCD,0x20,0x5F,0xFB,0xD1
.byte 0x36,0x71,0x05,0x65,0xD6,0xAF,0x85,0xC9
.byte 0x8F,0x1D,0xE8,0x87,0x40,0xBE,0xEB,0xBF
.byte 0x6C,0xE2,0x0A,0xCA,0xB1,0x43,0x17,0x8F
.byte 0x03,0x3A,0xCD,0x13,0x80,0x61,0xCB,0x63
.byte 0xD8,0xD9,0x14,0x89,0x7F,0x86,0x2E,0x03
.byte 0x06,0x74,0x87,0x26,0x1D,0xC2,0x8B,0xC6
.byte 0xAD,0xAF,0x28,0x0F,0xFE,0x11,0x5C,0x06
.byte 0x0C,0xE8,0x13,0x4C,0x3A,0x99,0x0B,0x91
.byte 0x47,0x43,0x50,0x1E,0xE1,0x22,0xB8,0x0C
.byte 0x18,0xCD,0x26,0x98,0x74,0x2F,0x16,0x3F
.byte 0x8E,0x86,0xA0,0x3C,0xDF,0x44,0x6D,0x18
.byte 0x30,0x87,0x4C,0x2D,0xE8,0x5E,0x2C,0x7E
.byte 0x01,0x11,0x5D,0x78,0xA3,0x88,0xDA,0x30
.byte 0x60,0x13,0x98,0x5A,0xCD,0xBC,0x58,0xFC
.byte 0x02,0x22,0xBA,0xF0,0x5B,0x0D,0xA9,0x60
.byte 0xC0,0x26,0x2D,0xB4,0x87,0x65,0xB0,0xE5
.byte 0x04,0x44,0x69,0xFD,0xB6,0x1A,0x4F,0xC0
.byte 0x9D,0x4C,0x5A,0x75,0x13,0xCA,0x7D,0xD7
.byte 0x08,0x88,0xD2,0xE7,0x71,0x34,0x9E,0x9D
.byte 0x27,0x98,0xB4,0xEA,0x26,0x89,0xFA,0xB3
.byte 0x10,0x0D,0xB9,0xD3,0xE2,0x68,0x21,0x27
.byte 0x4E,0x2D,0x75,0xC9,0x4C,0x0F,0xE9,0x7B
.byte 0x20,0x1A,0x6F,0xBB,0xD9,0xD0,0x42,0x4E
.byte 0x9C,0x5A,0xEA,0x8F,0x98,0x1E,0xCF,0xF6
.byte 0x40,0x34,0xDE,0x6B,0xAF,0xBD,0x84,0x9C
.byte 0x25,0xB4,0xC9,0x03,0x2D,0x3C,0x83,0xF1
.byte 0x80,0x68,0xA1,0xD6,0x43,0x67,0x15,0x25
.byte 0x4A,0x75,0x8F,0x06,0x5A,0x78,0x1B,0xFF
.byte 0x1D,0xD0,0x5F,0xB1,0x86,0xCE,0x2A,0x4A
.byte 0x94,0xEA,0x03,0x0C,0xB4,0xF0,0x36,0xE3
.byte 0x3A,0xBD,0xBE,0x7F,0x11,0x81,0x54,0x94
.byte 0x35,0xC9,0x06,0x18,0x75,0xFD,0x6C,0xDB
.byte 0x74,0x67,0x61,0xFE,0x22,0x1F,0xA8,0x35
.byte 0x6A,0x8F,0x0C,0x30,0xEA,0xE7,0xD8,0xAB
.byte 0xE8,0xCE,0xC2,0xE1,0x44,0x3E,0x4D,0x6A
.byte 0xD4,0x03,0x18,0x60,0xC9,0xD3,0xAD,0x4B
.byte 0xCD,0x81,0x99,0xDF,0x88,0x7C,0x9A,0xD4
.byte 0xB5,0x06,0x30,0xC0,0x8F,0xBB,0x47,0x96
.byte 0x87,0x1F,0x2F,0xA3,0x0D,0xF8,0x29,0xB5
.byte 0x77,0x0C,0x60,0x9D,0x03,0x6B,0x8E,0x31
.byte 0x13,0x3E,0x5E,0x5B,0x1A,0xED,0x52,0x77
.byte 0xEE,0x18,0xC0,0x27,0x06,0xD6,0x01,0x62
.byte 0x26,0x7C,0xBC,0xB6,0x34,0xC7,0xA4,0xEE
.byte 0xC1,0x30,0x9D,0x4E,0x0C,0xB1,0x02,0xC4
.byte 0x4C,0xF8,0x65,0x71,0x68,0x93,0x55,0xC1
.byte 0x9F,0x60,0x27,0x9C,0x18,0x7F,0x04,0x95
.byte 0x98,0xED,0xCA,0xE2,0xD0,0x3B,0xAA,0x9F
.byte 0x23,0xC0,0x4E,0x25,0x30,0xFE,0x08,0x37
.byte 0x2D,0xC7,0x89,0xD9,0xBD,0x76,0x49,0x23
.byte 0x46,0x9D,0x9C,0x4A,0x60,0xE1,0x10,0x6E
.byte 0x5A,0x93,0x0F,0xAF,0x67,0xEC,0x92,0x46
.byte 0x8C,0x27,0x25,0x94,0xC0,0xDF,0x20,0xDC
.byte 0xB4,0x3B,0x1E,0x43,0xCE,0xC5,0x39,0x8C
.byte 0x05,0x4E,0x4A,0x35,0x9D,0xA3,0x40,0xA5
.byte 0x75,0x76,0x3C,0x86,0x81,0x97,0x72,0x05
.byte 0x0A,0x9C,0x94,0x6A,0x27,0x5B,0x80,0x57
.byte 0xEA,0xEC,0x78,0x11,0x1F,0x33,0xE4,0x0A
.byte 0x14,0x25,0x35,0xD4,0x4E,0xB6,0x1D,0xAE
.byte 0xC9,0xC5,0xF0,0x22,0x3E,0x66,0xD5,0x14
.byte 0x28,0x4A,0x6A,0xB5,0x9C,0x71,0x3A,0x41
.byte 0x8F,0x97,0xFD,0x44,0x7C,0xCC,0xB7,0x28
.byte 0x50,0x94,0xD4,0x77,0x25,0xE2,0x74,0x82
.byte 0x03,0x33,0xE7,0x88,0xF8,0x85,0x73,0x50
.byte 0xA0,0x35,0xB5,0xEE,0x4A,0xD9,0xE8,0x19
.byte 0x06,0x66,0xD3,0x0D,0xED,0x17,0xE6,0xA0
.byte 0x5D,0x6A,0x77,0xC1,0x94,0xAF,0xCD,0x32
.byte 0x0C,0xCC,0xBB,0x1A,0xC7,0x2E,0xD1,0x5D
.byte 0xBA,0xD4,0xEE,0x9F,0x35,0x43,0x87,0x64
.byte 0x18,0x85,0x6B,0x34,0x93,0x5C,0xBF,0xBA
.byte 0x69,0xB5,0xC1,0x23,0x6A,0x86,0x13,0xC8
.byte 0x30,0x17,0xD6,0x68,0x3B,0xB8,0x63,0x69
.byte 0xD2,0x77,0x9F,0x46,0xD4,0x11,0x26,0x8D
.byte 0x60,0x2E,0xB1,0xD0,0x76,0x6D,0xC6,0xD2
.byte 0xB9,0xEE,0x23,0x8C,0xB5,0x22,0x4C,0x07
.byte 0xC0,0x5C,0x7F,0xBD,0xEC,0xDA,0x91,0xB9
.byte 0x6F,0xC1,0x46,0x05,0x77,0x44,0x98,0x0E
.byte 0x9D,0xB8,0xFE,0x67,0xC5,0xA9,0x3F,0x6F
.byte 0xDE,0x9F,0x8C,0x0A,0xEE,0x88,0x2D,0x1C
.byte 0x27,0x6D,0xE1,0xCE,0x97,0x4F,0x7E,0xDE
.byte 0xA1,0x23,0x05,0x14,0xC1,0x0D,0x5A,0x38
.byte 0x4E,0xDA,0xDF,0x81,0x33,0x9E,0xFC,0xA1
.byte 0x5F,0x46,0x0A,0x28,0x9F,0x1A,0xB4,0x70
.byte 0x9C,0xA9,0xA3,0x1F,0x66,0x21,0xE5,0x5F
.byte 0xBE,0x8C,0x14,0x50,0x23,0x34,0x75,0xE0
.byte 0x25,0x4F,0x5B,0x3E,0xCC,0x42,0xD7,0xBE
.byte 0x61,0x05,0x28,0xA0,0x46,0x68,0xEA,0xDD
.byte 0x4A,0x9E,0xB6,0x7C,0x85,0x84,0xB3,0x61
.byte 0xC2,0x0A,0x50,0x5D,0x8C,0xD0,0xC9,0xA7
.byte 0x94,0x21,0x71,0xF8,0x17,0x15,0x7B,0xC2
.byte 0x99,0x14,0xA0,0xBA,0x05,0xBD,0x8F,0x53
.byte 0x35,0x42,0xE2,0xED,0x2E,0x2A,0xF6,0x99
.byte 0x2F,0x28,0x5D,0x69,0x0A,0x67,0x03,0xA6
.byte 0x6A,0x84,0xD9,0xC7,0x5C,0x54,0xF1,0x2F
.byte 0x5E,0x50,0xBA,0xD2,0x14,0xCE,0x06,0x51
.byte 0xD4,0x15,0xAF,0x93,0xB8,0xA8,0xFF,0x5E
.byte 0xBC,0xA0,0x69,0xB9,0x28,0x81,0x0C,0xA2
.byte 0xB5,0x2A,0x43,0x3B,0x6D,0x4D,0xE3,0xBC
.byte 0x65,0x5D,0xD2,0x6F,0x50,0x1F,0x18,0x59
.byte 0x77,0x54,0x86,0x76,0xDA,0x9A,0xDB,0x65
.byte 0xCA,0xBA,0xB9,0xDE,0xA0,0x3E,0x30,0xB2
.byte 0xEE,0xA8,0x11,0xEC,0xA9,0x29,0xAB,0xCA
.byte 0x89,0x69,0x6F,0xA1,0x5D,0x7C,0x60,0x79
.byte 0xC1,0x4D,0x22,0xC5,0x4F,0x52,0x4B,0x89
.byte 0x0F,0xD2,0xDE,0x5F,0xBA,0xF8,0xC0,0xF2
.byte 0x9F,0x9A,0x44,0x97,0x9E,0xA4,0x96,0x0F
.byte 0x1E,0xB9,0xA1,0xBE,0x69,0xED,0x9D,0xF9
.byte 0x23,0x29,0x88,0x33,0x21,0x55,0x31,0x1E
.byte 0x3C,0x6F,0x5F,0x61,0xD2,0xC7,0x27,0xEF
.byte 0x46,0x52,0x0D,0x66,0x42,0xAA,0x62,0x3C
.byte 0x78,0xDE,0xBE,0xC2,0xB9,0x93,0x4E,0xC3
.byte 0x8C,0xA4,0x1A,0xCC,0x84,0x49,0xC4,0x78
.byte 0xF0,0xA1,0x61,0x99,0x6F,0x3B,0x9C,0x9B
.byte 0x05,0x55,0x34,0x85,0x15,0x92,0x95,0xF0
.byte 0xFD,0x5F,0xC2,0x2F,0xDE,0x76,0x25,0x2B
.byte 0x0A,0xAA,0x68,0x17,0x2A,0x39,0x37,0xFD
.byte 0xE7,0xBE,0x99,0x5E,0xA1,0xEC,0x4A,0x56
.byte 0x14,0x49,0xD0,0x2E,0x54,0x72,0x6E,0xE7
.byte 0xD3,0x61,0x2F,0xBC,0x5F,0xC5,0x94,0xAC
.byte 0x28,0x92,0xBD,0x5C,0xA8,0xE4,0xDC,0xD3
.byte 0xBB,0xC2,0x5E,0x65,0xBE,0x97,0x35,0x45
.byte 0x50,0x39,0x67,0xB8,0x4D,0xD5,0xA5,0xBB
.byte 0x6B,0x99,0xBC,0xCA,0x61,0x33,0x6A,0x8A
.byte 0xA0,0x72,0xCE,0x6D,0x9A,0xB7,0x57,0x6B
.byte 0xD6,0x2F,0x65,0x89,0xC2,0x66,0xD4,0x09
.byte 0x5D,0xE4,0x81,0xDA,0x29,0x73,0xAE,0xD6
.byte 0xB1,0x5E,0xCA,0x0F,0x99,0xCC,0xB5,0x12
.byte 0xBA,0xD5,0x1F,0xA9,0x52,0xE6,0x41,0xB1
.byte 0x7F,0xBC,0x89,0x1E,0x2F,0x85,0x77,0x24
.byte 0x69,0xB7,0x3E,0x4F,0xA4,0xD1,0x82,0x7F
.byte 0xFE,0x65,0x0F,0x3C,0x5E,0x17,0xEE,0x48
.byte 0xD2,0x73,0x7C,0x9E,0x55,0xBF,0x19,0xFE
.byte 0xE1,0xCA,0x1E,0x78,0xBC,0x2E,0xC1,0x90
.byte 0xB9,0xE6,0xF8,0x21,0xAA,0x63,0x32,0xE1
.byte 0xDF,0x89,0x3C,0xF0,0x65,0x5C,0x9F,0x3D
.byte 0x6F,0xD1,0xED,0x42,0x49,0xC6,0x64,0xDF
.byte 0xA3,0x0F,0x78,0xFD,0xCA,0xB8,0x23,0x7A
.byte 0xDE,0xBF,0xC7,0x84,0x92,0x91,0xC8,0xA3
.byte 0x5B,0x1E,0xF0,0xE7,0x89,0x6D,0x46,0xF4
.byte 0xA1,0x63,0x93,0x15,0x39,0x3F,0x8D,0x5B
.byte 0xB6,0x3C,0xFD,0xD3,0x0F,0xDA,0x8C,0xF5
.byte 0x5F,0xC6,0x3B,0x2A,0x72,0x7E,0x07,0xB6
.byte 0x71,0x78,0xE7,0xBB,0x1E,0xA9,0x05,0xF7
.byte 0xBE,0x91,0x76,0x54,0xE4,0xFC,0x0E,0x71
.byte 0xE2,0xF0,0xD3,0x6B,0x3C,0x4F,0x0A,0xF3
.byte 0x61,0x3F,0xEC,0xA8,0xD5,0xE5,0x1C,0xE2
.byte 0xD9,0xFD,0xBB,0xD6,0x78,0x9E,0x14,0xFB
.byte 0xC2,0x7E,0xC5,0x4D,0xB7,0xD7,0x38,0xD9
.byte 0xAF,0xE7,0x6B,0xB1,0xF0,0x21,0x28,0xEB
.byte 0x99,0xFC,0x97,0x9A,0x73,0xB3,0x70,0xAF
.byte 0x43,0xD3,0xD6,0x7F,0xFD,0x42,0x50,0xCB
.byte 0x2F,0xE5,0x33,0x29,0xE6,0x7B,0xE0,0x43
.byte 0x86,0xBB,0xB1,0xFE,0xE7,0x84,0xA0,0x8B
.byte 0x5E,0xD7,0x66,0x52,0xD1,0xF6,0xDD,0x86
.byte 0x11,0x6B,0x7F,0xE1,0xD3,0x15,0x5D,0x0B
.byte 0xBC,0xB3,0xCC,0xA4,0xBF,0xF1,0xA7,0x11
.byte 0x22,0xD6,0xFE,0xDF,0xBB,0x2A,0xBA,0x16
.byte 0x65,0x7B,0x85,0x55,0x63,0xFF,0x53,0x22
.byte 0x44,0xB1,0xE1,0xA3,0x6B,0x54,0x69,0x2C
.byte 0xCA,0xF6,0x17,0xAA,0xC6,0xE3,0xA6,0x44
.byte 0x88,0x7F,0xDF,0x5B,0xD6,0xA8,0xD2,0x58
.byte 0x89,0xF1,0x2E,0x49,0x91,0xDB,0x51,0x88
.byte 0x0D,0xFE,0xA3,0xB6,0xB1,0x4D,0xB9,0xB0
.byte 0x0F,0xFF,0x5C,0x92,0x3F,0xAB,0xA2,0x0D
.byte 0x1A,0xE1,0x5B,0x71,0x7F,0x9A,0x6F,0x7D
.byte 0x1E,0xE3,0xB8,0x39,0x7E,0x4B,0x59,0x1A
.byte 0x34,0xDF,0xB6,0xE2,0xFE,0x29,0xDE,0xFA
.byte 0x3C,0xDB,0x6D,0x72,0xFC,0x96,0xB2,0x34
.byte 0x68,0xA3,0x71,0xD9,0xE1,0x52,0xA1,0xE9
.byte 0x78,0xAB,0xDA,0xE4,0xE5,0x31,0x79,0x68
.byte 0xD0,0x5B,0xE2,0xAF,0xDF,0xA4,0x5F,0xCF
.byte 0xF0,0x4B,0xA9,0xD5,0xD7,0x62,0xF2,0xD0
.byte 0xBD,0xB6,0xD9,0x43,0xA3,0x55,0xBE,0x83
.byte 0xFD,0x96,0x4F,0xB7,0xB3,0xC4,0xF9,0xBD
.byte 0x67,0x71,0xAF,0x86,0x5B,0xAA,0x61,0x1B
.byte 0xE7,0x31,0x9E,0x73,0x7B,0x95,0xEF,0x67
.byte 0xCE,0xE2,0x43,0x11,0xB6,0x49,0xC2,0x36
.byte 0xD3,0x62,0x21,0xE6,0xF6,0x37,0xC3,0xCE
.byte 0x81,0xD9,0x86,0x22,0x71,0x92,0x99,0x6C
.byte 0xBB,0xC4,0x42,0xD1,0xF1,0x6E,0x9B,0x81
.byte 0x1F,0xAF,0x11,0x44,0xE2,0x39,0x2F,0xD8
.byte 0x6B,0x95,0x84,0xBF,0xFF,0xDC,0x2B,0x1F
.byte 0x3E,0x43,0x22,0x88,0xD9,0x72,0x5E,0xAD
.byte 0xD6,0x37,0x15,0x63,0xE3,0xA5,0x56,0x3E
.byte 0x7C,0x86,0x44,0x0D,0xAF,0xE4,0xBC,0x47
.byte 0xB1,0x6E,0x2A,0xC6,0xDB,0x57,0xAC,0x7C
.byte 0xF8,0x11,0x88,0x1A,0x43,0xD5,0x65,0x8E
.byte 0x7F,0xDC,0x54,0x91,0xAB,0xAE,0x45,0xF8
.byte 0xED,0x22,0x0D,0x34,0x86,0xB7,0xCA,0x01
.byte 0xFE,0xA5,0xA8,0x3F,0x4B,0x41,0x8A,0xED
.byte 0xC7,0x44,0x1A,0x68,0x11,0x73,0x89,0x02
.byte 0xE1,0x57,0x4D,0x7E,0x96,0x82,0x09,0xC7
.byte 0x93,0x88,0x34,0xD0,0x22,0xE6,0x0F,0x04
.byte 0xDF,0xAE,0x9A,0xFC,0x31,0x19,0x12,0x93
.byte 0x3B,0x0D,0x68,0xBD,0x44,0xD1,0x1E,0x08
.byte 0xA3,0x41,0x29,0xE5,0x62,0x32,0x24,0x3B
@: byte interleaving - 256 bytes storage per packet
interleavetable:
.short 0x0000,0x0101,0x0202,0x0303,0x0404,0x0505,0x0606,0x0707
.short 0x0808,0x0909,0x0A0A,0x0B0B,0x000C,0x010D,0x020E,0x030F
.short 0x0410,0x0511,0x0612,0x0713,0x0814,0x0915,0x0A16,0x0B17
.short 0x0018,0x0119,0x021A,0x031B,0x041C,0x051D,0x061E,0x071F
.short 0x0820,0x0921,0x0A22,0x0B23,0x0024,0x0125,0x0226,0x0327
.short 0x0428,0x0529,0x062A,0x072B,0x082C,0x092D,0x0A2E,0x0B2F
.short 0x0030,0x0131,0x0232,0x0333,0x0434,0x0535,0x0636,0x0737
.short 0x0838,0x0939,0x0A3A,0x0B3B,0x003C,0x013D,0x023E,0x033F
.short 0x0440,0x0541,0x0642,0x0743,0x0844,0x0945,0x0A46,0x0B47
.short 0x0048,0x0149,0x024A,0x034B,0x044C,0x054D,0x064E,0x074F
.short 0x0850,0x0951,0x0A52,0x0B53,0x0054,0x0155,0x0256,0x0357
.short 0x0458,0x0559,0x065A,0x075B,0x085C,0x095D,0x0A5E,0x0B5F
.short 0x0060,0x0161,0x0262,0x0363,0x0464,0x0565,0x0666,0x0767
.short 0x0868,0x0969,0x0A6A,0x0B6B,0x006C,0x016D,0x026E,0x036F
.short 0x0470,0x0571,0x0672,0x0773,0x0874,0x0975,0x0A76,0x0B77
.short 0x0078,0x0179,0x027A,0x037B,0x047C,0x057D,0x067E,0x077F
.short 0x0880,0x0981,0x0A82,0x0B83,0x0084,0x0185,0x0286,0x0387
.short 0x0488,0x0589,0x068A,0x078B,0x088C,0x098D,0x0A8E,0x0B8F
.short 0x0090,0x0191,0x0292,0x0393,0x0494,0x0595,0x0696,0x0797
.short 0x0898,0x0999,0x0A9A,0x0B9B,0x009C,0x019D,0x029E,0x039F
.short 0x04A0,0x05A1,0x06A2,0x07A3,0x08A4,0x09A5,0x0AA6,0x0BA7
.short 0x00A8,0x01A9,0x02AA,0x03AB,0x04AC,0x05AD,0x06AE,0x07AF
.short 0x08B0,0x09B1,0x0AB2,0x0BB3,0x00B4,0x01B5,0x02B6,0x03B7
.short 0x04B8,0x05B9,0x06BA,0x07BB,0x08BC,0x09BD,0x0ABE,0x0BBF
.short 0x00C0,0x01C1,0x02C2,0x03C3,0x04C4,0x05C5,0x06C6,0x07C7
.short 0x08C8,0x09C9,0x0ACA,0x0BCB,0x0000,0x0000,0x0000,0x0000
.end