serial port output, basic, nucleo STM32F401Re board

Dependencies:   mbed-src

cpu.c

Committer:
tothjani
Date:
2015-09-04
Revision:
0:1dac8a6d8994

File content as of revision 0:1dac8a6d8994:

#include <stdint.h>
extern void printhex(uint16_t val);
extern void serout(uint8_t value);

#define NULL (void *) 0
#define RAM_SIZE 1536

//6502 defines
//#define UNDOCUMENTED //when this is defined, undocumented opcodes are handled.
//otherwise, they're simply treated as NOPs.

//#define USE_TIMING //slower, but allows you to specify number of cycles to run for exec6502
//rather than simply a number of instructions. also uses a little more
//program memory when enabled.

#define FLAG_CARRY     0x01
#define FLAG_ZERO      0x02
#define FLAG_INTERRUPT 0x04
#define FLAG_DECIMAL   0x08
#define FLAG_BREAK     0x10
#define FLAG_CONSTANT  0x20
#define FLAG_OVERFLOW  0x40
#define FLAG_SIGN      0x80

#define BASE_STACK     0x100

#define saveaccum(n) a = (uint8_t)((n) & 0x00FF)

//flag modifier macros
#define setcarry() cpustatus |= FLAG_CARRY
#define clearcarry() cpustatus &= (~FLAG_CARRY)
#define setzero() cpustatus |= FLAG_ZERO
#define clearzero() cpustatus &= (~FLAG_ZERO)
#define setinterrupt() cpustatus |= FLAG_INTERRUPT
#define clearinterrupt() cpustatus &= (~FLAG_INTERRUPT)
#define setdecimal() cpustatus |= FLAG_DECIMAL
#define cleardecimal() cpustatus &= (~FLAG_DECIMAL)
#define setoverflow() cpustatus |= FLAG_OVERFLOW
#define clearoverflow() cpustatus &= (~FLAG_OVERFLOW)
#define setsign() cpustatus |= FLAG_SIGN
#define clearsign() cpustatus &= (~FLAG_SIGN)


//flag calculation macros
#define zerocalc(n) { if ((n) & 0x00FF) clearzero(); else setzero(); }

#define signcalc(n) { if ((n) & 0x0080) setsign(); else clearsign(); }

#define carrycalc(n) { if ((n) & 0xFF00) setcarry(); else clearcarry(); }

#define overflowcalc(n, m, o) { if (((n) ^ (uint16_t)(m)) & ((n) ^ (o)) & 0x0080) setoverflow(); else clearoverflow(); }


//6502 CPU registers
uint16_t pc;
uint8_t sp, a, x, y, cpustatus;


//helper variables
uint32_t instructions = 0; //keep track of total instructions executed
int32_t clockticks6502 = 0, clockgoal6502 = 0;
uint16_t oldpc, ea, reladdr, value, result;
uint8_t opcode, oldcpustatus, useaccum;

uint8_t RAM[RAM_SIZE];
uint8_t BIOS[10496] = {
    0xA0,0x04,0xB9,0xF6,0xE0,0x99,0x00,0x02,0x88,0x10,0xF7,
    0xA2,0xFF,0x86,0x88,0x9A,0xA9,0x4C,0x85,0xA1,0xA2,0x1C,
    0xBD,0xFA,0xE0,0x95,0xBB,0xCA,0xD0,0xF8,0xA2,0x12,0xBD,
    0x17,0xE1,0x95,0x00,0xCA,0x10,0xF8,0xA9,0x00,0x85,0xDC,
    0x85,0xDF,0x85,0xB2,0x85,0x67,0xA9,0x0E,0x85,0x64,0xA9,
    0x03,0x85,0xA0,0xA2,0x68,0x86,0x65,0x20,0x92,0xC8,0xA9,
    0x2A,0xA0,0xE1,0x20,0xD3,0xC8,0x20,0x40,0xC2,0x86,0xC3,
    0x84,0xC4,0x20,0xC2,0x00,0xD0,0x1F,0xA0,0x00,0xE6,0x11,
    0xD0,0x08,0xE6,0x12,0xA5,0x12,0xC9,0xC0,0xF0,0x1D,0xA9,
    0x55,0x91,0x11,0xD1,0x11,0xD0,0x15,0x0A,0x91,0x11,0xD1,
    0x11,0xF0,0xE5,0xD0,0x0C,0x20,0xA6,0xD9,0xA5,0xAC,0xC9,
    0x98,0xB0,0xA2,0x20,0xF7,0xD4,0xA5,0x11,0xA4,0x12,0xC0,
    0x01,0x90,0x97,0x85,0x85,0x84,0x86,0x85,0x81,0x84,0x82,
    0xA0,0x00,0xA2,0x03,0x84,0x79,0x86,0x7A,0x98,0x91,0x79,
    0xE6,0x79,0x20,0x92,0xC8,0x20,0x50,0xC3,0xA5,0x85,0x38,
    0xE5,0x79,0xAA,0xA5,0x86,0xE5,0x7A,0x20,0x82,0xDA,0xA9,
    0x39,0xA0,0xE1,0x20,0xD3,0xC8,0xA9,0x5A,0xA0,0xC1,0x85,
    0x01,0x84,0x02,0x6C,0x01,0x00,0x20,0x0B,0xC1,0x85,0x7F,
    0x84,0x80,0x38,0xA5,0xA6,0xE5,0xAA,0xA8,0xA5,0xA7,0xE5,
    0xAB,0xAA,0xE8,0x98,0xF0,0x24,0x38,0x49,0xFF,0x65,0xA6,
    0x85,0xA6,0xB0,0x03,0xC6,0xA7,0x38,0x98,0x49,0xFF,0x65,
    0xA4,0x85,0xA4,0xB0,0x08,0xC6,0xA5,0x90,0x04,0xB1,0xA6,
    0x91,0xA4,0x88,0xD0,0xF9,0xB1,0xA6,0x91,0xA4,0xC6,0xA7,
    0xC6,0xA5,0xCA,0xD0,0xF2,0x60,0x85,0x78,0xBA,0xE4,0x78,
    0x90,0x30,0x60,0xC4,0x82,0x90,0x2A,0xD0,0x04,0xC5,0x81,
    0x90,0x24,0x48,0xA2,0x08,0x98,0x48,0xB5,0xA3,0xCA,0x10,
    0xFA,0x20,0xDF,0xD1,0xA2,0x00,0x68,0x95,0xA4,0xE8,0xE0,
    0x08,0x30,0xF8,0x68,0xA8,0x68,0xC4,0x82,0x90,0x06,0xD0,
    0x05,0xC5,0x81,0xB0,0x01,0x60,0xA2,0x0C,0x20,0x92,0xC8,
    0xBD,0xA9,0xE6,0xBC,0xAA,0xE6,0x20,0xD3,0xC8,0x20,0x89,
    0xC3,0xA9,0xE6,0xA0,0xE7,0x20,0xD3,0xC8,0xA4,0x88,0xC8,
    0xF0,0x03,0x20,0x77,0xDA,0xA9,0x00,0x85,0xDF,0x85,0xDC,
    0xA9,0xF7,0xA0,0xE7,0x20,0xD3,0xC8,0x20,0x4D,0xC2,0x86,
    0xC3,0x84,0xC4,0x20,0xC2,0x00,0xF0,0xF4,0xA2,0xFF,0x86,
    0x88,0x90,0x06,0x20,0x7E,0xC2,0x4C,0xF3,0xC4,0x20,0x55,
    0xC7,0x20,0x7E,0xC2,0x84,0x5D,0x20,0x24,0xC3,0x90,0x44,
    0xA0,0x01,0xB1,0xAA,0x85,0x72,0xA5,0x7B,0x85,0x71,0xA5,
    0xAB,0x85,0x74,0xA5,0xAA,0x88,0xF1,0xAA,0x18,0x65,0x7B,
    0x85,0x7B,0x85,0x73,0xA5,0x7C,0x69,0xFF,0x85,0x7C,0xE5,
    0xAB,0xAA,0x38,0xA5,0xAA,0xE5,0x7B,0xA8,0xB0,0x03,0xE8,
    0xC6,0x74,0x18,0x65,0x71,0x90,0x03,0xC6,0x72,0x18,0xB1,
    0x71,0x91,0x73,0xC8,0xD0,0xF9,0xE6,0x72,0xE6,0x74,0xCA,
    0xD0,0xF2,0xAD,0x21,0x02,0xF0,0x3F,0xA5,0x85,0xA4,0x86,
    0x85,0x81,0x84,0x82,0xA5,0x7B,0x85,0xA6,0xA4,0x7C,0x84,
    0xA7,0x65,0x5D,0x90,0x01,0xC8,0x85,0xA4,0x84,0xA5,0x20,
    0xC1,0xC0,0xA5,0x7F,0xA4,0x80,0x85,0x7B,0x84,0x7C,0xA4,
    0x5D,0x88,0xB9,0x1D,0x02,0x91,0xAA,0x88,0xC0,0x03,0xD0,
    0xF6,0xA5,0x12,0x91,0xAA,0x88,0xA5,0x11,0x91,0xAA,0x88,
    0xA9,0xFF,0x91,0xAA,0x20,0x65,0xC3,0xA6,0x79,0xA5,0x7A,
    0xA0,0x01,0x86,0x71,0x85,0x72,0xB1,0x71,0xF0,0x18,0xA0,
    0x04,0xC8,0xB1,0x71,0xD0,0xFB,0x38,0x98,0x65,0x71,0xAA,
    0xA0,0x00,0x91,0x71,0x98,0x65,0x72,0xC8,0x91,0x71,0x90,
    0xE0,0x4C,0x67,0xC1,0x20,0xEB,0xC8,0x20,0xE8,0xC8,0xD0,
    0x05,0x20,0xED,0xC8,0xCA,0x2C,0xA2,0x00,0x20,0xEA,0xE0,
    0x90,0xFB,0xF0,0xF9,0xC9,0x07,0xF0,0x10,0xC9,0x0D,0xF0,
    0x19,0xE0,0x00,0xD0,0x04,0xC9,0x21,0x90,0xE9,0xC9,0x08,
    0xF0,0xDE,0xE0,0x47,0xB0,0x0C,0x9D,0x21,0x02,0xE8,0x20,
    0xED,0xC8,0xD0,0xD8,0x4C,0x89,0xC8,0xA9,0x07,0xD0,0xF4,
    0xA0,0xFF,0x38,0xA5,0xC3,0xE9,0x21,0xAA,0x86,0x60,0xBD,
    0x21,0x02,0xF0,0x51,0xC9,0x5F,0xB0,0x4D,0xC9,0x3C,0xB0,
    0x0E,0xC9,0x30,0xB0,0x45,0x85,0x5C,0xC9,0x22,0xF0,0x61,
    0xC9,0x2A,0x90,0x3B,0x24,0x60,0x70,0x37,0x86,0x78,0x84,
    0xBA,0xA0,0x10,0x84,0x73,0xA0,0xE3,0x84,0x74,0xA0,0x00,
    0xD1,0x73,0xF0,0x05,0x90,0x21,0xC8,0xD0,0xF7,0x98,0x0A,
    0xAA,0xBD,0x2E,0xE3,0x85,0x73,0xBD,0x2F,0xE3,0x85,0x74,
    0xA0,0xFF,0xA6,0x78,0xC8,0xB1,0x73,0x30,0x08,0xE8,0xDD,
    0x21,0x02,0xF0,0xF5,0xD0,0x2B,0xA4,0xBA,0xE8,0xC8,0x99,
    0x21,0x02,0xC9,0x00,0xF0,0x32,0xE9,0x3A,0xF0,0x04,0xC9,
    0x49,0xD0,0x02,0x85,0x60,0x49,0x57,0xD0,0x93,0x85,0x5C,
    0xBD,0x21,0x02,0xF0,0xE2,0xC5,0x5C,0xF0,0xDE,0xC8,0x99,
    0x21,0x02,0xE8,0xD0,0xF0,0xA6,0x78,0xB1,0x73,0x08,0xC8,
    0x28,0x10,0xF9,0xB1,0x73,0xD0,0xBE,0xBD,0x21,0x02,0x10,
    0xC3,0xC8,0xC8,0x99,0x21,0x02,0xC8,0xC8,0xC8,0xC6,0xC3,
    0x60,0xA5,0x79,0xA6,0x7A,0xA0,0x01,0x85,0xAA,0x86,0xAB,
    0xB1,0xAA,0xF0,0x1A,0xA0,0x03,0xB1,0xAA,0x88,0xC5,0x12,
    0xD0,0x04,0xB1,0xAA,0xC5,0x11,0xB0,0x09,0x88,0xB1,0xAA,
    0xAA,0x88,0xB1,0xAA,0x90,0xDE,0xF0,0x01,0x18,0x60,0xD0,
    0xFD,0xA9,0x00,0xA8,0x91,0x79,0xC8,0x91,0x79,0x18,0xA5,
    0x79,0x69,0x02,0x85,0x7B,0xA5,0x7A,0x69,0x00,0x85,0x7C,
    0x18,0xA5,0x79,0x69,0xFF,0x85,0xC3,0xA5,0x7A,0x69,0xFF,
    0x85,0xC4,0xA5,0x85,0xA4,0x86,0x85,0x81,0x84,0x82,0xA5,
    0x7B,0xA4,0x7C,0x85,0x7D,0x84,0x7E,0x85,0x7F,0x84,0x80,
    0x20,0x44,0xC5,0xA2,0x68,0x86,0x65,0x68,0xAA,0x68,0x8E,
    0xFE,0x01,0x8D,0xFF,0x01,0xA2,0xFD,0x9A,0xA9,0x00,0x85,
    0x8C,0x85,0x61,0x60,0xF0,0xD0,0x60,0x90,0x06,0xF0,0x04,
    0xC9,0xB7,0xD0,0xF4,0x20,0x55,0xC7,0x20,0x24,0xC3,0x20,
    0xC2,0x00,0xF0,0x0C,0xC9,0xB7,0xD0,0x93,0x20,0xBC,0x00,
    0x20,0x55,0xC7,0xD0,0x8B,0xA5,0x11,0x05,0x12,0xD0,0x06,
    0xA9,0xFF,0x85,0x11,0x85,0x12,0xA0,0x01,0x84,0x60,0x20,
    0x92,0xC8,0xB1,0xAA,0xF0,0x3E,0x20,0x14,0xC5,0xC8,0xB1,
    0xAA,0xAA,0xC8,0xB1,0xAA,0xC5,0x12,0xD0,0x04,0xE4,0x11,
    0xF0,0x02,0xB0,0x2A,0x84,0x97,0x20,0x82,0xDA,0xA9,0x20,
    0xA4,0x97,0x29,0x7F,0x20,0xED,0xC8,0xC9,0x22,0xD0,0x06,
    0xA5,0x60,0x49,0xFF,0x85,0x60,0xC8,0xB1,0xAA,0xD0,0x0E,
    0xA8,0xB1,0xAA,0xAA,0xC8,0xB1,0xAA,0x86,0xAA,0x85,0xAB,
    0xD0,0xB7,0x60,0x10,0xDE,0x24,0x60,0x30,0xDA,0xA2,0xE5,
    0x0A,0x0A,0x90,0x02,0xE8,0x18,0x69,0x11,0x90,0x01,0xE8,
    0x85,0x73,0x86,0x74,0x84,0x97,0xA0,0x00,0xB1,0x73,0xAA,
    0xC8,0xB1,0x73,0xCA,0xF0,0xB8,0x20,0xED,0xC8,0xC8,0xB1,
    0x73,0x48,0xC8,0xB1,0x73,0xA0,0x00,0x85,0x74,0x68,0x85,
    0x73,0xB1,0x73,0xCA,0xF0,0xA2,0x20,0xED,0xC8,0xC8,0xD0,
    0xF5,0xA9,0x80,0x85,0x61,0x20,0xB4,0xC7,0x68,0x68,0xA9,
    0x10,0x20,0x03,0xC1,0x20,0x9D,0xC6,0x18,0x98,0x65,0xC3,
    0x48,0xA5,0xC4,0x69,0x00,0x48,0xA5,0x88,0x48,0xA5,0x87,
    0x48,0xA9,0xAD,0x20,0xF1,0xCB,0x20,0xD0,0xCA,0x20,0xCD,
    0xCA,0xA5,0xB0,0x09,0x7F,0x25,0xAD,0x85,0xAD,0xA9,0x97,
    0xA0,0xC4,0x85,0x71,0x84,0x72,0x4C,0x84,0xCB,0xA9,0xE0,
    0xA0,0xE1,0x20,0x7D,0xD8,0x20,0xC2,0x00,0xC9,0xB2,0xD0,
    0x06,0x20,0xBC,0x00,0x20,0xCD,0xCA,0x20,0xE9,0xD8,0x85,
    0xB0,0x20,0x79,0xCB,0xA5,0x98,0x48,0xA5,0x97,0x48,0xA9,
    0x81,0x48,0x20,0x14,0xC5,0xA5,0xC3,0xA4,0xC4,0xA6,0x88,
    0xE8,0xF0,0x04,0x85,0x8B,0x84,0x8C,0xA0,0x00,0xB1,0xC3,
    0xF0,0x07,0xC9,0x3A,0xF0,0x1D,0x4C,0x02,0xCC,0xA0,0x02,
    0xB1,0xC3,0x18,0xF0,0x56,0xC8,0xB1,0xC3,0x85,0x87,0xC8,
    0xB1,0xC3,0x85,0x88,0x98,0x65,0xC3,0x85,0xC3,0x90,0x02,
    0xE6,0xC4,0x20,0xBC,0x00,0x20,0xFC,0xC4,0x4C,0xBC,0xC4,
    0xF0,0x54,0x0A,0xB0,0x03,0x4C,0xB4,0xC7,0xC9,0x56,0xB0,
    0xCE,0xA8,0xB9,0x08,0xE2,0x48,0xB9,0x07,0xE2,0x48,0x4C,
    0xBC,0x00,0x6C,0x03,0x02,0xC9,0x03,0xB0,0x01,0x18,0xD0,
    0x67,0xA5,0xC4,0x49,0x02,0xF0,0x10,0x49,0x02,0xA4,0xC3,
    0x84,0x8B,0x85,0x8C,0xA5,0x87,0xA4,0x88,0x85,0x89,0x84,
    0x8A,0x68,0x68,0x90,0x07,0xA9,0xDE,0xA0,0xE7,0x4C,0x4F,
    0xC1,0x4C,0x5A,0xC1,0xD0,0x0F,0x38,0xA5,0x79,0xE9,0x01,
    0xA4,0x7A,0xB0,0x01,0x88,0x85,0x8F,0x84,0x90,0x60,0x20,
    0x55,0xC7,0x20,0xA0,0xC6,0xA5,0x88,0xC5,0x12,0xB0,0x0B,
    0x98,0x38,0x65,0xC3,0xA6,0xC4,0x90,0x07,0xE8,0xB0,0x04,
    0xA5,0x79,0xA6,0x7A,0x20,0x28,0xC3,0xB0,0x03,0x4C,0x72,
    0xC6,0xA5,0xAA,0xE9,0x01,0xA4,0xAB,0xB0,0xD0,0x90,0xCD,
    0x20,0x8C,0xD4,0x86,0x0D,0x60,0xD0,0xFD,0xA4,0x8C,0xD0,
    0x05,0xA2,0x1E,0x4C,0x3C,0xC1,0xA9,0x93,0x20,0x14,0xDF,
    0xA9,0x93,0x20,0x17,0xDF,0x84,0xC4,0xA5,0x8B,0x85,0xC3,
    0xA5,0x89,0xA4,0x8A,0x85,0x87,0x84,0x88,0x60,0xD0,0x03,
    0x4C,0x65,0xC3,0x20,0x72,0xC3,0xF0,0x2E,0xA9,0x05,0x20,
    0x03,0xC1,0xA5,0xC4,0x48,0xA5,0xC3,0x48,0xA5,0x88,0x48,
    0xA5,0x87,0x48,0xA9,0x9D,0x48,0x20,0xC2,0x00,0x4C,0xBC,
    0xC4,0xA9,0x05,0x20,0x03,0xC1,0xA5,0xC4,0x48,0xA5,0xC3,
    0x48,0xA5,0x88,0x48,0xA5,0x87,0x48,0xA9,0x8D,0x48,0x20,
    0xC2,0x00,0x20,0xEB,0xC5,0x4C,0xBC,0xC4,0x20,0x55,0xC7,
    0x20,0xA0,0xC6,0xA5,0x88,0xC5,0x12,0xB0,0x0B,0x98,0x38,
    0x65,0xC3,0xA6,0xC4,0x90,0x07,0xE8,0xB0,0x04,0xA5,0x79,
    0xA6,0x7A,0x20,0x28,0xC3,0x90,0x67,0xA5,0xAA,0xE9,0x01,
    0x85,0xC3,0xA5,0xAB,0xE9,0x00,0x85,0xC4,0x60,0xA2,0x22,
    0x4C,0x3C,0xC1,0xA8,0xBA,0xBD,0x03,0x01,0xC9,0x9D,0xD0,
    0xF2,0xE8,0xE8,0x9A,0x98,0xF0,0x20,0xC9,0x3A,0xF0,0x1C,
    0xE9,0xB3,0xAA,0xF0,0x04,0xCA,0xD0,0x62,0xCA,0x86,0x98,
    0x20,0xBC,0x00,0x20,0xE1,0xCA,0xA5,0xAC,0xF0,0x02,0xA9,
    0xFF,0xBA,0x45,0x98,0xD0,0x1A,0xBD,0x02,0x01,0x85,0x87,
    0xBD,0x03,0x01,0x85,0x88,0xBD,0x04,0x01,0x85,0xC3,0xBD,
    0x05,0x01,0x85,0xC4,0x20,0xC2,0x00,0x4C,0xBC,0xC4,0xE8,
    0xE8,0xE8,0xE8,0xE8,0x9A,0x4C,0x8C,0xC6,0xA2,0x04,0x2C,
    0xA2,0x0E,0x4C,0x3C,0xC1,0xD0,0x9E,0x68,0x68,0x68,0xC9,
    0x8D,0xD0,0xEF,0x68,0x85,0x87,0x68,0x85,0x88,0x68,0x85,
    0xC3,0x68,0x85,0xC4,0x20,0x9D,0xC6,0x98,0x18,0x65,0xC3,
    0x85,0xC3,0x90,0x02,0xE6,0xC4,0x60,0x4C,0x02,0xCC,0xA2,
    0x3A,0x2C,0xA2,0x00,0xA0,0x00,0x84,0x5C,0x8A,0x45,0x5C,
    0x85,0x5C,0xB1,0xC3,0xF0,0xEA,0xC5,0x5C,0xF0,0xE6,0xC8,
    0xC9,0x22,0xD0,0xF3,0xF0,0xEC,0x20,0xE1,0xCA,0x20,0xC2,
    0x00,0xC9,0xB0,0xF0,0x11,0xC9,0x89,0xD0,0xD2,0xA6,0xC3,
    0xA4,0xC4,0x20,0xBC,0x00,0xB0,0xC9,0x86,0xC3,0x84,0xC4,
    0xA5,0xAC,0xF0,0x1B,0x20,0xBC,0x00,0xB0,0x03,0x4C,0xEB,
    0xC5,0xC9,0x90,0xD0,0x03,0x4C,0xFE,0xC4,0x20,0xFC,0xC4,
    0xA0,0x00,0xB1,0xC3,0xC9,0xAC,0xF0,0x99,0x60,0xA0,0x00,
    0xA2,0x01,0xC8,0xB1,0xC3,0xF0,0x0F,0xC9,0x8B,0xD0,0x03,
    0xE8,0xD0,0xF4,0xC9,0xAC,0xD0,0xF0,0xCA,0xD0,0xED,0xC8,
    0x98,0x18,0x65,0xC3,0x85,0xC3,0x90,0x02,0xE6,0xC4,0x20,
    0xC2,0x00,0x90,0xC3,0x4C,0xFC,0xC4,0x20,0xA0,0xC6,0x4C,
    0x8F,0xC6,0x4C,0x02,0xCC,0xC9,0xA9,0xD0,0x03,0x4C,0x38,
    0xDF,0xC9,0xAA,0xD0,0x03,0x4C,0x3C,0xDF,0x20,0x8C,0xD4,
    0x48,0xC9,0x8D,0xF0,0x04,0xC9,0x89,0xD0,0xE3,0xC6,0xAF,
    0xD0,0x04,0x68,0x4C,0xFE,0xC4,0x20,0xBC,0x00,0x20,0x55,
    0xC7,0xC9,0x2C,0xF0,0xEE,0x68,0x60,0xA2,0x00,0x86,0x11,
    0x86,0x12,0xB0,0xF7,0xE0,0x19,0xA8,0xB0,0xDD,0xE9,0x2F,
    0xA8,0xA5,0x11,0x0A,0x26,0x12,0x0A,0x26,0x12,0x65,0x11,
    0x85,0x11,0x8A,0x65,0x12,0x06,0x11,0x2A,0xAA,0x98,0x65,
    0x11,0x85,0x11,0x90,0x01,0xE8,0x20,0xBC,0x00,0x4C,0x59,
    0xC7,0xA9,0xE4,0x2C,0xA9,0xE0,0x48,0x20,0xAA,0xCD,0xA6,
    0x5F,0x30,0x1E,0x85,0x97,0x84,0x98,0x20,0x7D,0xD8,0x68,
    0x48,0xA0,0xE1,0x20,0xBE,0xD5,0x20,0xA3,0xD8,0x20,0xC2,
    0x00,0xC9,0x2C,0xD0,0xA8,0x20,0xBC,0x00,0x4C,0x8C,0xC7,
    0x4C,0xDC,0xCA,0x20,0xAA,0xCD,0x85,0x97,0x84,0x98,0xA9,
    0xC1,0x20,0xF1,0xCB,0xA5,0x5F,0x48,0x20,0xE1,0xCA,0x68,
    0x2A,0x20,0xD3,0xCA,0xD0,0x03,0x4C,0xA3,0xD8,0xA0,0x02,
    0xB1,0xAE,0xC5,0x82,0x90,0x17,0xD0,0x07,0x88,0xB1,0xAE,
    0xC5,0x81,0x90,0x0E,0xA4,0xAF,0xC4,0x7C,0x90,0x08,0xD0,
    0x0D,0xA5,0xAE,0xC5,0x7B,0xB0,0x07,0xA5,0xAE,0xA4,0xAF,
    0x4C,0x0C,0xC8,0xA0,0x00,0xB1,0xAE,0x20,0x32,0xD1,0xA5,
    0x9E,0xA4,0x9F,0x85,0xB8,0x84,0xB9,0x20,0x11,0xD3,0xA9,
    0xAC,0xA0,0x00,0x85,0x9E,0x84,0x9F,0x20,0x73,0xD3,0xA0,
    0x00,0xB1,0x9E,0x91,0x97,0xC8,0xB1,0x9E,0x91,0x97,0xC8,
    0xB1,0x9E,0x91,0x97,0x60,0x20,0xAA,0xCD,0x85,0x97,0x84,
    0x98,0x20,0x00,0xDF,0xA6,0x5F,0x30,0x07,0xA8,0x20,0x66,
    0xD0,0x4C,0xA3,0xD8,0x48,0xA9,0x01,0xB0,0x01,0x68,0x20,
    0x3A,0xD1,0xF0,0x05,0x68,0xA0,0x00,0x91,0xAD,0x20,0x85,
    0xD1,0x4C,0xD0,0xC7,0x20,0xD6,0xC8,0x20,0xC2,0x00,0xF0,
    0x3B,0xC9,0xAB,0xF0,0x56,0xC9,0xAF,0xF0,0x52,0xC9,0x2C,
    0xF0,0x38,0xC9,0x3B,0xF0,0x66,0x20,0xE1,0xCA,0x24,0x5F,
    0x30,0xE1,0x20,0x95,0xDA,0x20,0x44,0xD1,0xA0,0x00,0xA5,
    0x0F,0xF0,0x0A,0x38,0xE5,0x0E,0xF1,0xAE,0xB0,0x03,0x20,
    0x92,0xC8,0x20,0xD6,0xC8,0xF0,0xC9,0xA9,0x00,0x9D,0x21,
    0x02,0xA2,0x21,0xA0,0x02,0xA9,0x0D,0x20,0xED,0xC8,0xA9,
    0x0A,0xD0,0x52,0xA5,0x0E,0xC5,0x10,0x90,0x05,0x20,0x92,
    0xC8,0xD0,0x27,0x38,0xE5,0x64,0xB0,0xFC,0x49,0xFF,0x69,
    0x01,0xD0,0x12,0x48,0x20,0x89,0xD4,0xC9,0x29,0xD0,0x7B,
    0x68,0xC9,0xAB,0xD0,0x06,0x8A,0xE5,0x0E,0x90,0x0A,0xAA,
    0x8A,0xF0,0x06,0x20,0xE8,0xC8,0xCA,0xD0,0xFA,0x20,0xBC,
    0x00,0xD0,0x85,0x60,0x20,0x44,0xD1,0x20,0x3E,0xD3,0xA0,
    0x00,0xAA,0xF0,0x49,0xB1,0x71,0x20,0xED,0xC8,0xC8,0xCA,
    0xD0,0xF7,0x60,0xA9,0x20,0x2C,0xA9,0x3F,0xC9,0x20,0x90,
    0x19,0x48,0xA5,0x0F,0xD0,0x0A,0xA5,0x0E,0xE5,0x64,0xD0,
    0x0B,0x85,0x0E,0xF0,0x07,0xC5,0x0E,0xD0,0x03,0x20,0x92,
    0xC8,0xE6,0x0E,0x68,0x20,0xED,0xE0,0xC9,0x0D,0xD0,0x14,
    0x86,0x78,0xA6,0x0D,0xF0,0x0A,0xA9,0x00,0x20,0xED,0xC8,
    0xCA,0xD0,0xFA,0xA9,0x0D,0x86,0x0E,0xA6,0x78,0x29,0xFF,
    0x60,0xA5,0x62,0x10,0x0B,0xA5,0x8D,0xA4,0x8E,0x85,0x87,
    0x84,0x88,0x4C,0x02,0xCC,0xA9,0x12,0xA0,0xE8,0x20,0xD3,
    0xC8,0xA5,0x8B,0xA4,0x8C,0x85,0xC3,0x84,0xC4,0x60,0xC9,
    0x22,0xD0,0x0B,0x20,0xBE,0xCB,0xA9,0x3B,0x20,0xF1,0xCB,
    0x20,0xD6,0xC8,0x20,0x6A,0xD0,0x20,0x40,0xC2,0xA9,0x00,
    0xCD,0x21,0x02,0xD0,0x0A,0x18,0x4C,0x2C,0xC5,0xA6,0x8F,
    0xA4,0x90,0xA9,0x80,0x85,0x62,0x86,0x91,0x84,0x92,0x20,
    0xAA,0xCD,0x85,0x97,0x84,0x98,0xA5,0xC3,0xA4,0xC4,0x85,
    0x11,0x84,0x12,0xA6,0x91,0xA4,0x92,0x86,0xC3,0x84,0xC4,
    0x20,0xC2,0x00,0xD0,0x11,0x24,0x62,0x30,0x65,0x20,0xEB,
    0xC8,0x20,0x40,0xC2,0x86,0xC3,0x84,0xC4,0x20,0xC2,0x00,
    0x24,0x5F,0x10,0x24,0x85,0x5B,0xC9,0x22,0xF0,0x07,0xA9,
    0x3A,0x85,0x5B,0xA9,0x2C,0x18,0x85,0x5C,0xA5,0xC3,0xA4,
    0xC4,0x69,0x00,0x90,0x01,0xC8,0x20,0x4A,0xD1,0x20,0xCF,
    0xD4,0x20,0xD0,0xC7,0x4C,0xCE,0xC9,0x20,0xA6,0xD9,0x20,
    0xA3,0xD8,0x20,0xC2,0x00,0xF0,0x0A,0xC9,0x2C,0xF0,0x03,
    0x4C,0x28,0xC9,0x20,0xBC,0x00,0xA5,0xC3,0xA4,0xC4,0x85,
    0x91,0x84,0x92,0xA5,0x11,0xA4,0x12,0x85,0xC3,0x84,0xC4,
    0x20,0xC2,0x00,0xF0,0x2C,0x20,0xFE,0xCB,0x4C,0x73,0xC9,
    0x20,0x9D,0xC6,0xC8,0xAA,0xD0,0x12,0xA2,0x06,0xC8,0xB1,
    0xC3,0xF0,0x73,0xC8,0xB1,0xC3,0x85,0x8D,0xC8,0xB1,0xC3,
    0xC8,0x85,0x8E,0xB1,0xC3,0xC8,0xAA,0x20,0x8F,0xC6,0xE0,
    0x83,0xF0,0x81,0xD0,0xDA,0xA5,0x91,0xA4,0x92,0xA6,0x62,
    0x10,0x03,0x4C,0x4E,0xC5,0xA0,0x00,0xB1,0x91,0xD0,0x01,
    0x60,0xA9,0x01,0xA0,0xE8,0x4C,0xD3,0xC8,0xBA,0xE8,0xE8,
    0xE8,0xE8,0xBD,0x01,0x01,0xC9,0x81,0xD0,0x21,0xA5,0x98,
    0xD0,0x0A,0xBD,0x02,0x01,0x85,0x97,0xBD,0x03,0x01,0x85,
    0x98,0xDD,0x03,0x01,0xD0,0x07,0xA5,0x97,0xDD,0x02,0x01,
    0xF0,0x07,0x8A,0x18,0x69,0x10,0xAA,0xD0,0xD8,0x60,0xD0,
    0x04,0xA0,0x00,0xF0,0x03,0x20,0xAA,0xCD,0x85,0x97,0x84,
    0x98,0x20,0x37,0xCA,0xF0,0x04,0xA2,0x00,0xF0,0x63,0x9A,
    0x8A,0x38,0xE9,0xF7,0x85,0x73,0x69,0xFB,0xA0,0x01,0x20,
    0x7D,0xD8,0xBA,0xBD,0x08,0x01,0x85,0xB0,0xA5,0x97,0xA4,
    0x98,0x20,0xBE,0xD5,0x20,0xA3,0xD8,0xA0,0x01,0x20,0x19,
    0xD9,0xBA,0xDD,0x08,0x01,0xF0,0x17,0xBD,0x0D,0x01,0x85,
    0x87,0xBD,0x0E,0x01,0x85,0x88,0xBD,0x10,0x01,0x85,0xC3,
    0xBD,0x0F,0x01,0x85,0xC4,0x4C,0xBC,0xC4,0x8A,0x69,0x0F,
    0xAA,0x9A,0x20,0xC2,0x00,0xC9,0x2C,0xD0,0xF1,0x20,0xBC,
    0x00,0x20,0x6B,0xCA,0x20,0xE1,0xCA,0x18,0x24,0x38,0x24,
    0x5F,0x30,0x03,0xB0,0x03,0x60,0xB0,0xFD,0xA2,0x18,0x4C,
    0x3C,0xC1,0xA6,0xC3,0xD0,0x02,0xC6,0xC4,0xC6,0xC3,0xA9,
    0x00,0x48,0xA9,0x02,0x20,0x03,0xC1,0x20,0xCD,0xCB,0xA9,
    0x00,0x85,0x9B,0x20,0xC2,0x00,0x38,0xE9,0xC0,0x90,0x17,
    0xC9,0x03,0xB0,0x13,0xC9,0x01,0x2A,0x49,0x01,0x45,0x9B,
    0xC5,0x9B,0x90,0x67,0x85,0x9B,0x20,0xBC,0x00,0x4C,0xFB,
    0xCA,0xA6,0x9B,0xD0,0x2C,0xB0,0x79,0x69,0x0A,0x90,0x75,
    0xD0,0x07,0x24,0x5F,0x10,0x03,0x4C,0xD4,0xD2,0x85,0x71,
    0x0A,0x65,0x71,0xA8,0x68,0xD9,0xE9,0xE2,0xB0,0x65,0x20,
    0xD0,0xCA,0x48,0x20,0x62,0xCB,0x68,0xA4,0x99,0x10,0x19,
    0xAA,0xF0,0x76,0xD0,0x5D,0x26,0x5F,0x8A,0x85,0x5F,0x2A,
    0xA6,0xC3,0xD0,0x02,0xC6,0xC4,0xC6,0xC3,0xA0,0x24,0x85,
    0x9B,0xD0,0xD5,0xD9,0xE9,0xE2,0xB0,0x44,0x90,0xD7,0xB9,
    0xEB,0xE2,0x48,0xB9,0xEA,0xE2,0x48,0x20,0x79,0xCB,0xA5,
    0x9B,0x48,0xB9,0xE9,0xE2,0x4C,0xEB,0xCA,0x4C,0x02,0xCC,
    0x68,0x85,0x71,0xE6,0x71,0x68,0x85,0x72,0xA5,0xB0,0x48,
    0x20,0xD9,0xD8,0xA5,0xAF,0x48,0xA5,0xAE,0x48,0xA5,0xAD,
    0x48,0xA5,0xAC,0x48,0x6C,0x71,0x00,0xA0,0xFF,0x68,0xF0,
    0x20,0xC9,0x64,0xF0,0x03,0x20,0xD0,0xCA,0x84,0x99,0x68,
    0x4A,0x85,0x63,0x68,0x85,0xB3,0x68,0x85,0xB4,0x68,0x85,
    0xB5,0x68,0x85,0xB6,0x68,0x85,0xB7,0x45,0xB0,0x85,0xB8,
    0xA5,0xAC,0x60,0xA5,0xC3,0xA4,0xC4,0x69,0x00,0x90,0x01,
    0xC8,0x20,0x44,0xD1,0x4C,0xCF,0xD4,0x20,0xBC,0x00,0xB0,
    0x03,0x4C,0xA6,0xD9,0xAA,0x30,0x2F,0xC9,0x24,0xF0,0xF6,
    0xC9,0x25,0xF0,0xF2,0xC9,0x2E,0xF0,0xEE,0xC9,0x22,0xF0,
    0xD6,0xC9,0x28,0xD0,0x4F,0x20,0xE9,0xCA,0xA9,0x29,0xA0,
    0x00,0xD1,0xC3,0xD0,0x0B,0x4C,0xBC,0x00,0xA9,0x28,0xD0,
    0xF3,0xA9,0x2C,0xD0,0xEF,0xA2,0x02,0x4C,0x3C,0xC1,0xC9,
    0xB7,0xF0,0x29,0xC9,0xB6,0xF0,0xBE,0xC9,0xB1,0xD0,0x13,
    0xA0,0x21,0xD0,0x1F,0x20,0xA6,0xCE,0xA5,0xAF,0x49,0xFF,
    0xA8,0xA5,0xAE,0x49,0xFF,0x4C,0x59,0xD0,0xC9,0xAE,0xD0,
    0x03,0x4C,0xB4,0xD0,0xE9,0xC3,0xB0,0x19,0x4C,0x02,0xCC,
    0xA0,0x1E,0x68,0x68,0x4C,0x3A,0xCB,0x20,0xAA,0xCD,0x85,
    0xAE,0x84,0xAF,0xA6,0x5F,0x30,0x03,0x4C,0x7D,0xD8,0x60,
    0x0A,0xA8,0xB9,0xA4,0xE2,0x48,0xB9,0xA3,0xE2,0x48,0xB9,
    0x5E,0xE2,0xF0,0x05,0x48,0xB9,0x5D,0xE2,0x48,0x60,0x20,
    0xEC,0xCB,0x4C,0xD2,0xCA,0x20,0xEC,0xCB,0x4C,0xD0,0xCA,
    0x46,0x5F,0x4C,0xBC,0x00,0x20,0xE9,0xCA,0x20,0xFE,0xCB,
    0x20,0xD2,0xCA,0x68,0xAA,0x68,0xA8,0xA5,0xAF,0x48,0xA5,
    0xAE,0x48,0x98,0x48,0x8A,0x48,0x20,0x8C,0xD4,0x8A,0x60,
    0x20,0xE9,0xCA,0x20,0xD0,0xCA,0xA5,0xAC,0xC9,0x98,0xB0,
    0x20,0x20,0x50,0xD9,0xA2,0x02,0xB5,0xAD,0x95,0x11,0xCA,
    0x10,0xF9,0x20,0xC2,0x00,0xA2,0x00,0xC9,0x29,0xF0,0x0A,
    0x20,0xDE,0xD4,0x20,0xC2,0x00,0xC9,0x29,0xD0,0x01,0x60,
    0x4C,0x29,0xCF,0x20,0xE2,0xCC,0x45,0x5B,0xA8,0xA5,0xAE,
    0x45,0x5C,0x4C,0x59,0xD0,0x20,0xE2,0xCC,0x05,0x5B,0xA8,
    0xA5,0xAE,0x05,0x5C,0x4C,0x59,0xD0,0x20,0xE2,0xCC,0x25,
    0x5B,0xA8,0xA5,0xAE,0x25,0x5C,0x4C,0x59,0xD0,0x20,0xA6,
    0xCE,0xA5,0xAE,0x85,0x5C,0xA5,0xAF,0x85,0x5B,0x20,0xC3,
    0xD5,0x20,0xA6,0xCE,0xA5,0xAF,0x60,0x20,0xD3,0xCA,0xB0,
    0x13,0xA5,0xB7,0x09,0x7F,0x25,0xB4,0x85,0xB4,0xA9,0xB3,
    0xA0,0x00,0x20,0x17,0xD9,0xAA,0x4C,0x3F,0xCD,0x46,0x5F,
    0xC6,0x9B,0x20,0x3E,0xD3,0x85,0xAC,0x86,0xAD,0x84,0xAE,
    0xA5,0xB5,0xA4,0xB6,0x20,0x42,0xD3,0x86,0xB5,0x84,0xB6,
    0xAA,0x38,0xE5,0xAC,0xF0,0x08,0xA9,0x01,0x90,0x04,0xA6,
    0xAC,0xA9,0xFF,0x85,0xB0,0xA0,0xFF,0xE8,0xC8,0xCA,0xD0,
    0x07,0xA6,0xB0,0x30,0x0F,0x18,0x90,0x0C,0xB1,0xB5,0xD1,
    0xAD,0xF0,0xEF,0xA2,0xFF,0xB0,0x02,0xA2,0x01,0xE8,0x8A,
    0x2A,0x25,0x63,0xF0,0x02,0xA9,0xFF,0x4C,0xFA,0xD8,0x20,
    0xFE,0xCB,0xAA,0x20,0xAF,0xCD,0x20,0xC2,0x00,0xD0,0xF4,
    0x60,0x20,0x9F,0xCD,0xA5,0xAE,0xA6,0x78,0xF0,0x22,0xE0,
    0x10,0xB0,0x23,0x06,0xAF,0x2A,0xCA,0xD0,0xFA,0xA4,0xAF,
    0x4C,0x59,0xD0,0x20,0x9F,0xCD,0xA5,0xAE,0xA6,0x78,0xF0,
    0x0A,0xE0,0x10,0xB0,0x0B,0x4A,0x66,0xAF,0xCA,0xD0,0xFA,
    0xA4,0xAF,0x4C,0x59,0xD0,0xA9,0x00,0xA8,0x4C,0x59,0xD0,
    0x20,0x8F,0xD4,0x86,0x78,0x20,0xC3,0xD5,0x4C,0xA6,0xCE,
    0xA2,0x00,0x20,0xC2,0x00,0x86,0x5E,0x85,0x93,0x29,0x7F,
    0x20,0x1E,0xCE,0xB0,0x03,0x4C,0x02,0xCC,0xA2,0x00,0x86,
    0x5F,0x20,0xBC,0x00,0x90,0x05,0x20,0x1E,0xCE,0x90,0x0B,
    0xAA,0x20,0xBC,0x00,0x90,0xFB,0x20,0x1E,0xCE,0xB0,0xF6,
    0xC9,0x24,0xD0,0x0B,0xA9,0xFF,0x85,0x5F,0x8A,0x09,0x80,
    0xAA,0x20,0xBC,0x00,0x86,0x94,0x05,0x61,0xC9,0x28,0xD0,
    0x03,0x4C,0xB8,0xCE,0xA9,0x00,0x85,0x61,0xA5,0x7B,0xA6,
    0x7C,0xA0,0x00,0x86,0xAB,0x85,0xAA,0xE4,0x7E,0xD0,0x04,
    0xC5,0x7D,0xF0,0x2C,0xA5,0x93,0xD1,0xAA,0xD0,0x08,0xA5,
    0x94,0xC8,0xD1,0xAA,0xF0,0x69,0x88,0x18,0xA5,0xAA,0x69,
    0x06,0x90,0xE1,0xE8,0xD0,0xDC,0xC9,0x61,0xB0,0x0A,0xC9,
    0x41,0x90,0x05,0xE9,0x5B,0x38,0xE9,0xA5,0x60,0xE9,0x7B,
    0x38,0xE9,0x85,0x60,0x68,0x48,0xC9,0x3D,0xD0,0x05,0xA9,
    0xE1,0xA0,0xE1,0x60,0xA5,0x7D,0xA4,0x7E,0x85,0xAA,0x84,
    0xAB,0xA5,0x7F,0xA4,0x80,0x85,0xA6,0x84,0xA7,0x18,0x69,
    0x06,0x90,0x01,0xC8,0x85,0xA4,0x84,0xA5,0x20,0xC1,0xC0,
    0xA5,0xA4,0xA4,0xA5,0xC8,0x85,0x7D,0x84,0x7E,0xA0,0x00,
    0xA5,0x93,0x91,0xAA,0xC8,0xA5,0x94,0x91,0xAA,0xA9,0x00,
    0xC8,0x91,0xAA,0xC8,0x91,0xAA,0xC8,0x91,0xAA,0xC8,0x91,
    0xAA,0xA5,0xAA,0x18,0x69,0x02,0xA4,0xAB,0x90,0x01,0xC8,
    0x85,0x95,0x84,0x96,0x60,0xA5,0x5D,0x0A,0x69,0x05,0x65,
    0xAA,0xA4,0xAB,0x90,0x01,0xC8,0x85,0xA4,0x84,0xA5,0x60,
    0x20,0xBC,0x00,0x20,0xCD,0xCA,0xA5,0xB0,0x30,0x0D,0xA5,
    0xAC,0xC9,0x90,0x90,0x09,0xA9,0xE8,0xA0,0xE1,0x20,0x17,
    0xD9,0xD0,0x74,0x4C,0x50,0xD9,0xA5,0x5E,0x48,0xA5,0x5F,
    0x48,0xA0,0x00,0x98,0x48,0xA5,0x94,0x48,0xA5,0x93,0x48,
    0x20,0x9C,0xCE,0x68,0x85,0x93,0x68,0x85,0x94,0x68,0xA8,
    0xBA,0xBD,0x02,0x01,0x48,0xBD,0x01,0x01,0x48,0xA5,0xAE,
    0x9D,0x02,0x01,0xA5,0xAF,0x9D,0x01,0x01,0xC8,0x20,0xC2,
    0x00,0xC9,0x2C,0xF0,0xD2,0x84,0x5D,0x20,0xEF,0xCB,0x68,
    0x85,0x5F,0x68,0x85,0x5E,0xA6,0x7D,0xA5,0x7E,0x86,0xAA,
    0x85,0xAB,0xC5,0x80,0xD0,0x04,0xE4,0x7F,0xF0,0x39,0xA0,
    0x00,0xB1,0xAA,0xC8,0xC5,0x93,0xD0,0x06,0xA5,0x94,0xD1,
    0xAA,0xF0,0x16,0xC8,0xB1,0xAA,0x18,0x65,0xAA,0xAA,0xC8,
    0xB1,0xAA,0x65,0xAB,0x90,0xD7,0xA2,0x10,0x2C,0xA2,0x08,
    0x4C,0x3C,0xC1,0xA2,0x12,0xA5,0x5E,0xD0,0xF7,0x20,0x8B,
    0xCE,0xA5,0x5D,0xA0,0x04,0xD1,0xAA,0xD0,0xE7,0x4C,0xC5,
    0xCF,0x20,0x8B,0xCE,0x20,0x0B,0xC1,0xA0,0x00,0x84,0xBB,
    0xA5,0x93,0x91,0xAA,0xC8,0xA5,0x94,0x91,0xAA,0xA5,0x5D,
    0xA0,0x04,0x84,0xBA,0x91,0xAA,0x18,0xA2,0x0B,0xA9,0x00,
    0x24,0x5E,0x50,0x07,0x68,0x69,0x01,0xAA,0x68,0x69,0x00,
    0xC8,0x91,0xAA,0xC8,0x8A,0x91,0xAA,0x20,0x14,0xD0,0x86,
    0xBA,0x85,0xBB,0xA4,0x71,0xC6,0x5D,0xD0,0xDD,0x65,0xA5,
    0xB0,0x5D,0x85,0xA5,0xA8,0x8A,0x65,0xA4,0x90,0x03,0xC8,
    0xF0,0x52,0x20,0x0B,0xC1,0x85,0x7F,0x84,0x80,0xA9,0x00,
    0xE6,0xBB,0xA4,0xBA,0xF0,0x05,0x88,0x91,0xA4,0xD0,0xFB,
    0xC6,0xA5,0xC6,0xBB,0xD0,0xF5,0xE6,0xA5,0x38,0xA0,0x02,
    0xA5,0x7F,0xE5,0xAA,0x91,0xAA,0xC8,0xA5,0x80,0xE5,0xAB,
    0x91,0xAA,0xA5,0x5E,0xD0,0x53,0xC8,0xB1,0xAA,0x85,0x5D,
    0xA9,0x00,0x85,0xBA,0x85,0xBB,0xC8,0x68,0xAA,0x85,0xAE,
    0x68,0x85,0xAF,0xD1,0xAA,0x90,0x0E,0xD0,0x06,0xC8,0x8A,
    0xD1,0xAA,0x90,0x07,0x4C,0x26,0xCF,0x4C,0x3A,0xC1,0xC8,
    0xA5,0xBB,0x05,0xBA,0xF0,0x0A,0x20,0x14,0xD0,0x8A,0x65,
    0xAE,0xAA,0x98,0xA4,0x71,0x65,0xAF,0x86,0xBA,0xC6,0x5D,
    0xD0,0xCB,0x06,0xBA,0x2A,0x06,0xBA,0x2A,0xA8,0xA5,0xBA,
    0x65,0xA4,0x85,0x95,0x98,0x65,0xA5,0x85,0x96,0xA8,0xA5,
    0x95,0x60,0x84,0x71,0xB1,0xAA,0x85,0x76,0x88,0xB1,0xAA,
    0x85,0x77,0xA9,0x10,0x85,0xA8,0xA2,0x00,0xA0,0x00,0x8A,
    0x0A,0xAA,0x98,0x2A,0xA8,0xB0,0xB3,0x06,0xBA,0x26,0xBB,
    0x90,0x0B,0x18,0x8A,0x65,0x76,0xAA,0x98,0x65,0x77,0xA8,
    0xB0,0xA2,0xC6,0xA8,0xD0,0xE3,0x60,0xA5,0x5F,0x10,0x03,
    0x20,0x3E,0xD3,0x20,0xDF,0xD1,0x38,0xA5,0x81,0xE5,0x7F,
    0xA8,0xA5,0x82,0xE5,0x80,0x46,0x5F,0x85,0xAD,0x84,0xAE,
    0xA2,0x90,0x4C,0x02,0xD9,0xA4,0x0E,0xA9,0x00,0xF0,0xEF,
    0xA6,0x88,0xE8,0xD0,0xA4,0xA2,0x16,0x4C,0x3C,0xC1,0x20,
    0xA5,0xD0,0x85,0x9C,0x84,0x9D,0x20,0x6A,0xD0,0x20,0xFA,
    0xCB,0xA9,0x80,0x85,0x61,0x20,0xAA,0xCD,0x20,0xD0,0xCA,
    0x20,0xEF,0xCB,0xA9,0xC1,0x20,0xF1,0xCB,0xA5,0x96,0x48,
    0xA5,0x95,0x48,0xA5,0xC4,0x48,0xA5,0xC3,0x48,0x20,0x8C,
    0xC6,0x4C,0x14,0xD1,0xA9,0xAE,0x20,0xF1,0xCB,0x09,0x80,
    0x85,0x61,0x20,0xB1,0xCD,0x4C,0xD0,0xCA,0x20,0xA5,0xD0,
    0x48,0x98,0x48,0x20,0xFA,0xCB,0x20,0xE1,0xCA,0x20,0xEF,
    0xCB,0x20,0xD0,0xCA,0x68,0x85,0x9D,0x68,0x85,0x9C,0xA2,
    0x20,0xA0,0x03,0xB1,0x9C,0xF0,0x9D,0x85,0x96,0x88,0xB1,
    0x9C,0x85,0x95,0xAA,0xC8,0xB1,0x95,0x48,0x88,0x10,0xFA,
    0xA4,0x96,0x20,0xA7,0xD8,0xA5,0xC4,0x48,0xA5,0xC3,0x48,
    0xB1,0x9C,0x85,0xC3,0xC8,0xB1,0x9C,0x85,0xC4,0xA5,0x96,
    0x48,0xA5,0x95,0x48,0x20,0xCD,0xCA,0x68,0x85,0x9C,0x68,
    0x85,0x9D,0x20,0xC2,0x00,0xF0,0x03,0x4C,0x02,0xCC,0x68,
    0x85,0xC3,0x68,0x85,0xC4,0xA0,0x00,0x68,0x91,0x9C,0xC8,
    0x68,0x91,0x9C,0xC8,0x68,0x91,0x9C,0xC8,0x68,0x91,0x9C,
    0x60,0x20,0xD0,0xCA,0x20,0x95,0xDA,0xA9,0xF0,0xA0,0x00,
    0xF0,0x12,0xA6,0xAE,0xA4,0xAF,0x86,0x9E,0x84,0x9F,0x20,
    0xAD,0xD1,0x86,0xAD,0x84,0xAE,0x85,0xAC,0x60,0xA2,0x22,
    0x86,0x5B,0x86,0x5C,0x85,0xB8,0x84,0xB9,0x85,0xAD,0x84,
    0xAE,0xA0,0xFF,0xC8,0xB1,0xB8,0xF0,0x0C,0xC5,0x5B,0xF0,
    0x04,0xC5,0x5C,0xD0,0xF3,0xC9,0x22,0xF0,0x01,0x18,0x84,
    0xAC,0x98,0x65,0xB8,0x85,0xBA,0xA6,0xB9,0x90,0x01,0xE8,
    0x86,0xBB,0xA5,0xB9,0xC9,0x03,0xB0,0x0B,0x98,0x20,0x32,
    0xD1,0xA6,0xB8,0xA4,0xB9,0x20,0x1F,0xD3,0xA6,0x65,0xE0,
    0x71,0xD0,0x05,0xA2,0x1C,0x4C,0x3C,0xC1,0xA5,0xAC,0x95,
    0x00,0xA5,0xAD,0x95,0x01,0xA5,0xAE,0x95,0x02,0xA0,0x00,
    0x86,0xAE,0x84,0xAF,0x88,0x84,0x5F,0x86,0x66,0xE8,0xE8,
    0xE8,0x86,0x65,0x60,0x46,0x60,0x48,0x49,0xFF,0x38,0x65,
    0x81,0xA4,0x82,0xB0,0x01,0x88,0xC4,0x80,0x90,0x11,0xD0,
    0x04,0xC5,0x7F,0x90,0x0B,0x85,0x81,0x84,0x82,0x85,0x83,
    0x84,0x84,0xAA,0x68,0x60,0xA2,0x0C,0xA5,0x60,0x30,0xB8,
    0x20,0xDF,0xD1,0xA9,0x80,0x85,0x60,0x68,0xD0,0xD0,0xA6,
    0x85,0xA5,0x86,0x86,0x81,0x85,0x82,0xA0,0x00,0x84,0x9D,
    0xA5,0x7F,0xA6,0x80,0x85,0xAA,0x86,0xAB,0xA9,0x68,0x85,
    0x71,0x84,0x72,0xC5,0x65,0xF0,0x05,0x20,0x63,0xD2,0xF0,
    0xF7,0x06,0xA0,0xA5,0x7B,0xA6,0x7C,0x85,0x71,0x86,0x72,
    0xE4,0x7E,0xD0,0x04,0xC5,0x7D,0xF0,0x05,0x20,0x5D,0xD2,
    0xF0,0xF3,0x85,0xA4,0x86,0xA5,0xA9,0x04,0x85,0xA0,0xA5,
    0xA4,0xA6,0xA5,0xE4,0x80,0xD0,0x04,0xC5,0x7F,0xF0,0x75,
    0x85,0x71,0x86,0x72,0xA0,0x02,0xB1,0x71,0x65,0xA4,0x85,
    0xA4,0xC8,0xB1,0x71,0x65,0xA5,0x85,0xA5,0xA0,0x01,0xB1,
    0x71,0x10,0xDB,0xA0,0x04,0xB1,0x71,0x0A,0x69,0x05,0x20,
    0x95,0xD2,0xE4,0xA5,0xD0,0x04,0xC5,0xA4,0xF0,0xCD,0x20,
    0x63,0xD2,0xF0,0xF3,0xC8,0xB1,0x71,0x10,0x30,0xC8,0xB1,
    0x71,0xF0,0x2B,0xC8,0xB1,0x71,0xAA,0xC8,0xB1,0x71,0xC5,
    0x82,0x90,0x06,0xD0,0x1E,0xE4,0x81,0xB0,0x1A,0xC5,0xAB,
    0x90,0x17,0xD0,0x04,0xE4,0xAA,0x90,0x11,0x86,0xAA,0x85,
    0xAB,0xA5,0x71,0xA6,0x72,0x85,0x9C,0x86,0x9D,0x88,0x88,
    0x84,0xA2,0x18,0xA5,0xA0,0x65,0x71,0x85,0x71,0x90,0x02,
    0xE6,0x72,0xA6,0x72,0xA0,0x00,0x60,0xC6,0xA0,0xA6,0x9D,
    0xF0,0xF5,0xA4,0xA2,0x18,0xB1,0x9C,0x65,0xAA,0x85,0xA6,
    0xA5,0xAB,0x69,0x00,0x85,0xA7,0xA5,0x81,0xA6,0x82,0x85,
    0xA4,0x86,0xA5,0x20,0xC8,0xC0,0xA4,0xA2,0xC8,0xA5,0xA4,
    0x91,0x9C,0xAA,0xE6,0xA5,0xA5,0xA5,0xC8,0x91,0x9C,0x4C,
    0xE3,0xD1,0xA5,0xAF,0x48,0xA5,0xAE,0x48,0x20,0xCD,0xCB,
    0x20,0xD2,0xCA,0x68,0x85,0xB8,0x68,0x85,0xB9,0xA0,0x00,
    0xB1,0xB8,0x18,0x71,0xAE,0x90,0x05,0xA2,0x1A,0x4C,0x3C,
    0xC1,0x20,0x32,0xD1,0x20,0x11,0xD3,0xA5,0x9E,0xA4,0x9F,
    0x20,0x42,0xD3,0x20,0x23,0xD3,0xA5,0xB8,0xA4,0xB9,0x20,
    0x42,0xD3,0x20,0x85,0xD1,0x4C,0xF8,0xCA,0xA0,0x00,0xB1,
    0xB8,0x48,0xC8,0xB1,0xB8,0xAA,0xC8,0xB1,0xB8,0xA8,0x68,
    0x86,0x71,0x84,0x72,0xAA,0xF0,0x14,0xA0,0x00,0xB1,0x71,
    0x91,0x83,0xC8,0xCA,0xD0,0xF8,0x98,0x18,0x65,0x83,0x85,
    0x83,0x90,0x02,0xE6,0x84,0x60,0x20,0xD2,0xCA,0xA5,0xAE,
    0xA4,0xAF,0x85,0x71,0x84,0x72,0x20,0x73,0xD3,0x08,0xA0,
    0x00,0xB1,0x71,0x48,0xC8,0xB1,0x71,0xAA,0xC8,0xB1,0x71,
    0xA8,0x68,0x28,0xD0,0x13,0xC4,0x82,0xD0,0x0F,0xE4,0x81,
    0xD0,0x0B,0x48,0x18,0x65,0x81,0x85,0x81,0x90,0x02,0xE6,
    0x82,0x68,0x86,0x71,0x84,0x72,0x60,0xC4,0x67,0xD0,0x0C,
    0xC5,0x66,0xD0,0x08,0x85,0x65,0xE9,0x03,0x85,0x66,0xA0,
    0x00,0x60,0x20,0x8F,0xD4,0x8A,0x48,0xA9,0x01,0x20,0x3A,
    0xD1,0x68,0xA0,0x00,0x91,0xAD,0x4C,0x85,0xD1,0x48,0x20,
    0xF7,0xD3,0xD1,0x9E,0x98,0xF0,0x09,0x48,0x20,0xF7,0xD3,
    0x18,0xF1,0x9E,0x49,0xFF,0x90,0x04,0xB1,0x9E,0xAA,0x98,
    0x48,0x8A,0x48,0x20,0x3A,0xD1,0xA5,0x9E,0xA4,0x9F,0x20,
    0x42,0xD3,0x68,0xA8,0x68,0x18,0x65,0x71,0x85,0x71,0x90,
    0x02,0xE6,0x72,0x98,0x20,0x23,0xD3,0x4C,0x85,0xD1,0x48,
    0xA9,0xFF,0x85,0xAF,0x20,0xC2,0x00,0xC9,0x29,0xF0,0x06,
    0x20,0xFE,0xCB,0x20,0x8C,0xD4,0x20,0xF7,0xD3,0xCA,0x8A,
    0x48,0x18,0xA2,0x00,0xF1,0x9E,0xB0,0xC2,0x49,0xFF,0xC5,
    0xAF,0x90,0xBD,0xA5,0xAF,0xB0,0xB9,0x20,0xEF,0xCB,0x68,
    0x85,0xA2,0x68,0x85,0xA3,0x68,0xAA,0x68,0x85,0x9E,0x68,
    0x85,0x9F,0xA0,0x00,0x8A,0xF0,0x79,0xE6,0xA2,0x6C,0xA2,
    0x00,0x20,0x3B,0xD3,0x85,0xAC,0xA8,0xF0,0x38,0x20,0x3A,
    0xD1,0x86,0xAD,0x84,0xAE,0xA8,0x88,0xB1,0x71,0x20,0x22,
    0xCE,0x90,0x02,0x09,0x20,0x91,0x83,0x98,0xD0,0xF1,0xF0,
    0x1F,0x20,0x3B,0xD3,0x85,0xAC,0xA8,0xF0,0x17,0x20,0x3A,
    0xD1,0x86,0xAD,0x84,0xAE,0xA8,0x88,0xB1,0x71,0x20,0x1E,
    0xCE,0x90,0x02,0x29,0xDF,0x91,0x83,0x98,0xD0,0xF1,0x4C,
    0x85,0xD1,0x20,0xBC,0x00,0x20,0xAA,0xCD,0x20,0xEF,0xCB,
    0x20,0xD2,0xCA,0xA0,0x02,0xB1,0x95,0xAA,0x88,0xB1,0x95,
    0xA8,0x8A,0x4C,0x59,0xD0,0x20,0x74,0xD4,0x4C,0x66,0xD0,
    0x20,0x3B,0xD3,0xA8,0x60,0x20,0x74,0xD4,0xF0,0x08,0xA0,
    0x00,0xB1,0x71,0xA8,0x4C,0x66,0xD0,0x4C,0x29,0xCF,0x20,
    0xBC,0x00,0x20,0xCD,0xCA,0x20,0xA2,0xCE,0xA4,0xAE,0xD0,
    0xF0,0xA6,0xAF,0x4C,0xC2,0x00,0x20,0x74,0xD4,0xD0,0x03,
    0x4C,0x50,0xD6,0xA6,0xC3,0xA4,0xC4,0x86,0xBA,0x84,0xBB,
    0xA6,0x71,0x86,0xC3,0x18,0x65,0x71,0x85,0x73,0xA5,0x72,
    0x85,0xC4,0x69,0x00,0x85,0x74,0xA0,0x00,0xB1,0x73,0x48,
    0x98,0x91,0x73,0x20,0xC2,0x00,0x20,0xA6,0xD9,0x68,0xA0,
    0x00,0x91,0x73,0xA6,0xBA,0xA4,0xBB,0x86,0xC3,0x84,0xC4,
    0x60,0x20,0xCD,0xCA,0x20,0xF1,0xD4,0x20,0xFE,0xCB,0xA5,
    0x12,0x48,0xA5,0x11,0x48,0x20,0x8C,0xD4,0x68,0x85,0x11,
    0x68,0x85,0x12,0x60,0xA5,0xAC,0xC9,0x98,0xB0,0x8F,0x20,
    0x50,0xD9,0xA5,0xAE,0xA4,0xAF,0x84,0x11,0x85,0x12,0x60,
    0x20,0xF1,0xD4,0xA2,0x00,0xA1,0x11,0xA8,0x4C,0x66,0xD0,
    0x20,0xD8,0xD4,0x8A,0xA2,0x00,0x81,0x11,0x60,0x20,0xF1,
    0xD4,0xA2,0x00,0xA1,0x11,0xA8,0xE6,0x11,0xD0,0x02,0xE6,
    0x12,0xA1,0x11,0x4C,0x59,0xD0,0x20,0xCD,0xCA,0x20,0xF1,
    0xD4,0x84,0x97,0x85,0x98,0x20,0xFE,0xCB,0x20,0xCD,0xCA,
    0x20,0xF1,0xD4,0x98,0xA2,0x00,0x81,0x97,0xE6,0x97,0xD0,
    0x02,0xE6,0x98,0xA5,0x12,0x81,0x97,0x4C,0xC2,0x00,0x20,
    0xAA,0xCD,0x85,0x97,0x84,0x98,0xA5,0x5F,0x48,0x20,0xFE,
    0xCB,0x20,0xAA,0xCD,0x68,0x45,0x5F,0x10,0x10,0xA0,0x03,
    0xB1,0x97,0xAA,0xB1,0x95,0x91,0x97,0x8A,0x91,0x95,0x88,
    0x10,0xF3,0x60,0x4C,0xDC,0xCA,0x20,0xCD,0xCA,0x20,0xF1,
    0xD4,0xA9,0xD5,0x48,0xA9,0x85,0x48,0x6C,0x11,0x00,0x4C,
    0xC2,0x00,0x20,0xD8,0xD4,0x86,0x97,0xA2,0x00,0x20,0xC2,
    0x00,0xF0,0x03,0x20,0xDE,0xD4,0x86,0x98,0xB1,0x11,0x45,
    0x98,0x25,0x97,0xF0,0xF8,0x60,0x20,0x8B,0xD7,0xA5,0xB0,
    0x49,0xFF,0x85,0xB0,0x45,0xB7,0x85,0xB8,0xA5,0xAC,0x4C,
    0xC1,0xD5,0x20,0xDA,0xD6,0x90,0x4D,0xA9,0xE9,0xA0,0xE1,
    0x20,0x8B,0xD7,0xD0,0x10,0xA5,0xB7,0x85,0xB0,0xA2,0x04,
    0xB5,0xB2,0x95,0xAB,0xCA,0xD0,0xF9,0x86,0xB9,0x60,0xA6,
    0xB9,0x86,0xA3,0xA2,0xB3,0xA5,0xB3,0xA8,0xF0,0xC4,0x38,
    0xE5,0xAC,0xF0,0x24,0x90,0x12,0x84,0xAC,0xA4,0xB7,0x84,
    0xB0,0x49,0xFF,0x69,0x00,0xA0,0x00,0x84,0xA3,0xA2,0xAC,
    0xD0,0x04,0xA0,0x00,0x84,0xB9,0xC9,0xF9,0x30,0xB6,0xA8,
    0xA5,0xB9,0x56,0x01,0x20,0xF1,0xD6,0x24,0xB8,0x10,0x4C,
    0xA0,0xAC,0xE0,0xB3,0xF0,0x02,0xA0,0xB3,0x38,0x49,0xFF,
    0x65,0xA3,0x85,0xB9,0xB9,0x03,0x00,0xF5,0x03,0x85,0xAF,
    0xB9,0x02,0x00,0xF5,0x02,0x85,0xAE,0xB9,0x01,0x00,0xF5,
    0x01,0x85,0xAD,0xB0,0x03,0x20,0x96,0xD6,0xA0,0x00,0x98,
    0x18,0xA6,0xAD,0xD0,0x3E,0xA6,0xAE,0x86,0xAD,0xA6,0xAF,
    0x86,0xAE,0xA6,0xB9,0x86,0xAF,0x84,0xB9,0x69,0x08,0xC9,
    0x18,0xD0,0xE8,0xA9,0x00,0x85,0xAC,0x85,0xB0,0x60,0x65,
    0xA3,0x85,0xB9,0xA5,0xAF,0x65,0xB6,0x85,0xAF,0xA5,0xAE,
    0x65,0xB5,0x85,0xAE,0xA5,0xAD,0x65,0xB4,0x85,0xAD,0xB0,
    0x1A,0x60,0x69,0x01,0x06,0xB9,0x26,0xAF,0x26,0xAE,0x26,
    0xAD,0x10,0xF4,0x38,0xE5,0xAC,0xB0,0xCF,0x49,0xFF,0x69,
    0x01,0x85,0xAC,0x90,0x0C,0xE6,0xAC,0xF0,0x36,0x66,0xAD,
    0x66,0xAE,0x66,0xAF,0x66,0xB9,0x60,0xA5,0xB0,0x49,0xFF,
    0x85,0xB0,0xA5,0xAD,0x49,0xFF,0x85,0xAD,0xA5,0xAE,0x49,
    0xFF,0x85,0xAE,0xA5,0xAF,0x49,0xFF,0x85,0xAF,0xA5,0xB9,
    0x49,0xFF,0x85,0xB9,0xE6,0xB9,0xD0,0x0A,0xE6,0xAF,0xD0,
    0x06,0xE6,0xAE,0xD0,0x02,0xE6,0xAD,0x60,0xA2,0x0A,0x4C,
    0x3C,0xC1,0xA2,0x74,0xB4,0x03,0x84,0xB9,0xB4,0x02,0x94,
    0x03,0xB4,0x01,0x94,0x02,0xA4,0xB2,0x94,0x01,0x69,0x08,
    0x30,0xEC,0xF0,0xEA,0xE9,0x08,0xA8,0xA5,0xB9,0xB0,0x12,
    0x16,0x01,0x90,0x02,0xF6,0x01,0x76,0x01,0x76,0x01,0x76,
    0x02,0x76,0x03,0x6A,0xC8,0xD0,0xEE,0x18,0x60,0x20,0xE9,
    0xD8,0xF0,0x02,0x10,0x03,0x4C,0x29,0xCF,0xA5,0xAC,0xE9,
    0x7F,0x48,0xA9,0x80,0x85,0xAC,0xA9,0x69,0xA0,0xE1,0x20,
    0xBE,0xD5,0xA9,0x6D,0xA0,0xE1,0x20,0x01,0xD8,0xA9,0xE0,
    0xA0,0xE1,0x20,0xA3,0xD5,0xA9,0x5C,0xA0,0xE1,0x20,0x51,
    0xDC,0xA9,0x71,0xA0,0xE1,0x20,0xBE,0xD5,0x68,0x20,0x45,
    0xDA,0xA9,0x75,0xA0,0xE1,0x20,0x8B,0xD7,0xF0,0x4C,0x20,
    0xB1,0xD7,0xA9,0x00,0x85,0x75,0x85,0x76,0x85,0x77,0xA5,
    0xB9,0x20,0x60,0xD7,0xA5,0xAF,0x20,0x60,0xD7,0xA5,0xAE,
    0x20,0x60,0xD7,0xA5,0xAD,0x20,0x65,0xD7,0x4C,0x6E,0xD8,
    0xD0,0x03,0x4C,0xC8,0xD6,0x4A,0x09,0x80,0xA8,0x90,0x13,
    0x18,0xA5,0x77,0x65,0xB6,0x85,0x77,0xA5,0x76,0x65,0xB5,
    0x85,0x76,0xA5,0x75,0x65,0xB4,0x85,0x75,0x66,0x75,0x66,
    0x76,0x66,0x77,0x66,0xB9,0x98,0x4A,0xD0,0xDE,0x60,0x85,
    0x71,0x84,0x72,0xA0,0x03,0xB1,0x71,0x85,0xB6,0x88,0xB1,
    0x71,0x85,0xB5,0x88,0xB1,0x71,0x85,0xB7,0x45,0xB0,0x85,
    0xB8,0xA5,0xB7,0x09,0x80,0x85,0xB4,0x88,0xB1,0x71,0x85,
    0xB3,0xA5,0xAC,0x60,0xA5,0xB3,0xF0,0x1D,0x18,0x65,0xAC,
    0x90,0x04,0x30,0x31,0x18,0x2C,0x10,0x12,0x69,0x80,0x85,
    0xAC,0xD0,0x03,0x4C,0x54,0xD6,0xA5,0xB8,0x85,0xB0,0x60,
    0xA5,0xB0,0x10,0x1B,0x68,0x68,0x4C,0x50,0xD6,0x20,0xCA,
    0xD8,0xAA,0xF0,0xF0,0x18,0x69,0x02,0xB0,0x0B,0xA2,0x00,
    0x86,0xB8,0x20,0xDB,0xD5,0xE6,0xAC,0xD0,0xE0,0x4C,0xC3,
    0xD6,0x20,0xCA,0xD8,0xA9,0xF1,0xA0,0xE1,0xA2,0x00,0x86,
    0xB8,0x20,0x7D,0xD8,0x4C,0x04,0xD8,0x20,0x8B,0xD7,0xF0,
    0x63,0x20,0xD9,0xD8,0xA9,0x00,0x38,0xE5,0xAC,0x85,0xAC,
    0x20,0xB1,0xD7,0xE6,0xAC,0xF0,0xD6,0xA2,0xFF,0xA9,0x01,
    0xA4,0xB4,0xC4,0xAD,0xD0,0x0A,0xA4,0xB5,0xC4,0xAE,0xD0,
    0x04,0xA4,0xB6,0xC4,0xAF,0x08,0x2A,0x90,0x0E,0xA0,0x01,
    0xE8,0xE0,0x02,0x30,0x04,0xD0,0x28,0xA0,0x40,0x95,0x75,
    0x98,0x28,0x90,0x14,0xA8,0xA5,0xB6,0xE5,0xAF,0x85,0xB6,
    0xA5,0xB5,0xE5,0xAE,0x85,0xB5,0xA5,0xB4,0xE5,0xAD,0x85,
    0xB4,0x98,0x06,0xB6,0x26,0xB5,0x26,0xB4,0xB0,0xCF,0x30,
    0xBD,0x10,0xCB,0x4A,0x6A,0x6A,0x85,0xB9,0x28,0x4C,0x6E,
    0xD8,0xA2,0x14,0x4C,0x3C,0xC1,0xA5,0x75,0x85,0xAD,0xA5,
    0x76,0x85,0xAE,0xA5,0x77,0x85,0xAF,0x4C,0x34,0xD6,0x85,
    0x71,0x84,0x72,0xA0,0x03,0xB1,0x71,0x85,0xAF,0x88,0xB1,
    0x71,0x85,0xAE,0x88,0xB1,0x71,0x85,0xB0,0x09,0x80,0x85,
    0xAD,0x88,0xB1,0x71,0x85,0xAC,0x84,0xB9,0x60,0xA2,0xA4,
    0xA0,0x00,0xF0,0x04,0xA6,0x97,0xA4,0x98,0x20,0xD9,0xD8,
    0x86,0x71,0x84,0x72,0xA0,0x03,0xA5,0xAF,0x91,0x71,0x88,
    0xA5,0xAE,0x91,0x71,0x88,0xA5,0xB0,0x09,0x7F,0x25,0xAD,
    0x91,0x71,0x88,0xA5,0xAC,0x91,0x71,0x84,0xB9,0x60,0x20,
    0xD9,0xD8,0xA2,0x05,0xB5,0xAB,0x95,0xB2,0xCA,0xD0,0xF9,
    0x86,0xB9,0x60,0xA5,0xAC,0xF0,0xFB,0x06,0xB9,0x90,0xF7,
    0x20,0xB8,0xD6,0xD0,0xF2,0x4C,0x89,0xD6,0xA5,0xAC,0xF0,
    0x09,0xA5,0xB0,0x2A,0xA9,0xFF,0xB0,0x02,0xA9,0x01,0x60,
    0x20,0xE9,0xD8,0x85,0xAD,0xA9,0x00,0x85,0xAE,0xA2,0x88,
    0xA5,0xAD,0x49,0xFF,0x2A,0xA9,0x00,0x85,0xAF,0x86,0xAC,
    0x85,0xB9,0x85,0xB0,0x4C,0x2F,0xD6,0x46,0xB0,0x60,0x85,
    0x73,0x84,0x74,0xA0,0x00,0xB1,0x73,0xC8,0xAA,0xF0,0xC6,
    0xB1,0x73,0x45,0xB0,0x30,0xC4,0xE4,0xAC,0xD0,0x1A,0xB1,
    0x73,0x09,0x80,0xC5,0xAD,0xD0,0x12,0xC8,0xB1,0x73,0xC5,
    0xAE,0xD0,0x0B,0xC8,0xA9,0x7F,0xC5,0xB9,0xB1,0x73,0xE5,
    0xAF,0xF0,0x28,0xA5,0xB0,0x90,0x02,0x49,0xFF,0x4C,0xEF,
    0xD8,0xA5,0xAC,0xF0,0x4A,0x38,0xE9,0x98,0x24,0xB0,0x10,
    0x09,0xAA,0xA9,0xFF,0x85,0xB2,0x20,0x9C,0xD6,0x8A,0xA2,
    0xAC,0xC9,0xF9,0x10,0x06,0x20,0xDA,0xD6,0x84,0xB2,0x60,
    0xA8,0xA5,0xB0,0x29,0x80,0x46,0xAD,0x05,0xAD,0x85,0xAD,
    0x20,0xF1,0xD6,0x84,0xB2,0x60,0xA5,0xAC,0xC9,0x98,0xB0,
    0x1E,0x20,0x50,0xD9,0x84,0xB9,0xA5,0xB0,0x84,0xB0,0x49,
    0x80,0x2A,0xA9,0x98,0x85,0xAC,0xA5,0xAF,0x85,0x5B,0x4C,
    0x2F,0xD6,0x85,0xAD,0x85,0xAE,0x85,0xAF,0xA8,0x60,0xA0,
    0x00,0x84,0x5F,0xA2,0x09,0x94,0xA8,0xCA,0x10,0xFB,0x90,
    0x7F,0xC9,0x2D,0xD0,0x04,0x86,0xB1,0xF0,0x04,0xC9,0x2B,
    0xD0,0x05,0x20,0xBC,0x00,0x90,0x6E,0xC9,0x24,0xD0,0x03,
    0x4C,0x6E,0xDE,0xC9,0x25,0xD0,0x08,0x4C,0x9C,0xDE,0x20,
    0xBC,0x00,0x90,0x5B,0xC9,0x2E,0xF0,0x2E,0xC9,0x45,0xD0,
    0x30,0x20,0xBC,0x00,0x90,0x17,0xC9,0xB7,0xF0,0x0E,0xC9,
    0x2D,0xF0,0x0A,0xC9,0xB6,0xF0,0x08,0xC9,0x2B,0xF0,0x04,
    0xD0,0x07,0x66,0xAB,0x20,0xBC,0x00,0x90,0x5B,0x24,0xAB,
    0x10,0x0E,0xA9,0x00,0x38,0xE5,0xA9,0x4C,0x11,0xDA,0x66,
    0xAA,0x24,0xAA,0x50,0xC3,0xA5,0xA9,0x38,0xE5,0xA8,0x85,
    0xA9,0xF0,0x12,0x10,0x09,0x20,0xF0,0xD7,0xE6,0xA9,0xD0,
    0xF9,0xF0,0x07,0x20,0xD7,0xD7,0xC6,0xA9,0xD0,0xF9,0xA5,
    0xB1,0x30,0x01,0x60,0x4C,0xF4,0xDB,0x48,0x24,0xAA,0x10,
    0x02,0xE6,0xA8,0x20,0xD7,0xD7,0x68,0x29,0x0F,0x20,0x45,
    0xDA,0x4C,0xD2,0xD9,0x48,0x20,0xCA,0xD8,0x68,0x20,0xFA,
    0xD8,0xA5,0xB7,0x45,0xB0,0x85,0xB8,0xA6,0xAC,0x4C,0xC1,
    0xD5,0xA5,0xA9,0xC9,0x0A,0x90,0x09,0xA9,0x64,0x24,0xAB,
    0x30,0x0E,0x4C,0xC3,0xD6,0x0A,0x0A,0x65,0xA9,0x0A,0xA0,
    0x00,0x71,0xC3,0xE9,0x2F,0x85,0xA9,0x4C,0xF8,0xD9,0xA9,
    0xED,0xA0,0xE7,0x20,0xD3,0xC8,0xA5,0x88,0xA6,0x87,0x85,
    0xAD,0x86,0xAE,0xA2,0x90,0x38,0x20,0x07,0xD9,0xA0,0x00,
    0x98,0x20,0xA2,0xDA,0x4C,0xD3,0xC8,0xA0,0x01,0xA9,0x20,
    0x24,0xB0,0x10,0x02,0xA9,0x2D,0x99,0xEF,0x00,0x85,0xB0,
    0x84,0xBA,0xC8,0xA6,0xAC,0xD0,0x05,0xA9,0x30,0x4C,0xAE,
    0xDB,0xA9,0x00,0xE0,0x81,0xB0,0x09,0xA9,0x81,0xA0,0xE1,
    0x20,0x39,0xD7,0xA9,0xFA,0x85,0xA8,0xA9,0x7D,0xA0,0xE1,
    0x20,0x17,0xD9,0xF0,0x1E,0x10,0x12,0xA9,0x79,0xA0,0xE1,
    0x20,0x17,0xD9,0xF0,0x02,0x10,0x0E,0x20,0xD7,0xD7,0xC6,
    0xA8,0xD0,0xEE,0x20,0xF0,0xD7,0xE6,0xA8,0xD0,0xDC,0x20,
    0xBA,0xD5,0x20,0x50,0xD9,0xA2,0x01,0xA5,0xA8,0x18,0x69,
    0x07,0x30,0x09,0xC9,0x08,0xB0,0x06,0x69,0xFF,0xAA,0xA9,
    0x02,0x38,0xE9,0x02,0x85,0xA9,0x86,0xA8,0x8A,0xF0,0x02,
    0x10,0x13,0xA4,0xBA,0xA9,0x2E,0xC8,0x99,0xEF,0x00,0x8A,
    0xF0,0x06,0xA9,0x30,0xC8,0x99,0xEF,0x00,0x84,0xBA,0xA0,
    0x00,0xA2,0x80,0xA5,0xAF,0x18,0x79,0xF7,0xE1,0x85,0xAF,
    0xA5,0xAE,0x79,0xF6,0xE1,0x85,0xAE,0xA5,0xAD,0x79,0xF5,
    0xE1,0x85,0xAD,0xE8,0xB0,0x04,0x10,0xE5,0x30,0x02,0x30,
    0xE1,0x8A,0x90,0x04,0x49,0xFF,0x69,0x0A,0x69,0x2F,0xC8,
    0xC8,0xC8,0x84,0x95,0xA4,0xBA,0xC8,0xAA,0x29,0x7F,0x99,
    0xEF,0x00,0xC6,0xA8,0xD0,0x06,0xA9,0x2E,0xC8,0x99,0xEF,
    0x00,0x84,0xBA,0xA4,0x95,0x8A,0x49,0xFF,0x29,0x80,0xAA,
    0xC0,0x12,0xD0,0xB2,0xA4,0xBA,0xB9,0xEF,0x00,0x88,0xC9,
    0x30,0xF0,0xF8,0xC9,0x2E,0xF0,0x01,0xC8,0xA9,0x2B,0xA6,
    0xA9,0xF0,0x2E,0x10,0x08,0xA9,0x00,0x38,0xE5,0xA9,0xAA,
    0xA9,0x2D,0x99,0xF1,0x00,0xA9,0x45,0x99,0xF0,0x00,0x8A,
    0xA2,0x2F,0x38,0xE8,0xE9,0x0A,0xB0,0xFB,0x69,0x3A,0x99,
    0xF3,0x00,0x8A,0x99,0xF2,0x00,0xA9,0x00,0x99,0xF4,0x00,
    0xF0,0x08,0x99,0xEF,0x00,0xA9,0x00,0x99,0xF0,0x00,0xA9,
    0xF0,0xA0,0x00,0x60,0xF0,0x42,0xA5,0xB3,0xD0,0x03,0x4C,
    0x52,0xD6,0xA2,0x9C,0xA0,0x00,0x20,0xA7,0xD8,0xA5,0xB7,
    0x10,0x0F,0x20,0x81,0xD9,0xA9,0x9C,0xA0,0x00,0x20,0x17,
    0xD9,0xD0,0x03,0x98,0xA4,0x5B,0x20,0xC5,0xD5,0x98,0x48,
    0x20,0xFB,0xD6,0xA9,0x9C,0xA0,0x00,0x20,0x39,0xD7,0x20,
    0xFF,0xDB,0x68,0x4A,0x90,0x0A,0xA5,0xAC,0xF0,0x06,0xA5,
    0xB0,0x49,0xFF,0x85,0xB0,0x60,0xA9,0x85,0xA0,0xE1,0x20,
    0x39,0xD7,0xA5,0xB9,0x69,0x50,0x90,0x03,0x20,0xE1,0xD8,
    0x85,0xA3,0x20,0xCD,0xD8,0xA5,0xAC,0xC9,0x88,0x90,0x03,
    0x20,0xCE,0xD7,0x20,0x81,0xD9,0xA5,0x5B,0x18,0x69,0x81,
    0xF0,0xF3,0x38,0xE9,0x01,0x48,0xA2,0x04,0xB5,0xB3,0xB4,
    0xAC,0x95,0xAC,0x94,0xB3,0xCA,0x10,0xF5,0xA5,0xA3,0x85,
    0xB9,0x20,0xA6,0xD5,0x20,0xF4,0xDB,0xA9,0x89,0xA0,0xE1,
    0x20,0x67,0xDC,0xA9,0x00,0x85,0xB8,0x68,0x4C,0xB3,0xD7,
    0x85,0xBA,0x84,0xBB,0x20,0x9D,0xD8,0xA9,0xA4,0x20,0x39,
    0xD7,0x20,0x6B,0xDC,0xA9,0xA4,0xA0,0x00,0x4C,0x39,0xD7,
    0x85,0xBA,0x84,0xBB,0xA2,0xA8,0x20,0x9F,0xD8,0xB1,0xBA,
    0x85,0xB1,0xA4,0xBA,0xC8,0x98,0xD0,0x02,0xE6,0xBB,0x85,
    0xBA,0xA4,0xBB,0x20,0x39,0xD7,0xA5,0xBA,0xA4,0xBB,0x18,
    0x69,0x04,0x90,0x01,0xC8,0x85,0xBA,0x84,0xBB,0x20,0xBE,
    0xD5,0xA9,0xA8,0xA0,0x00,0xC6,0xB1,0xD0,0xE4,0x60,0xA5,
    0xAC,0xF0,0x07,0xA2,0xD8,0xA0,0x00,0x20,0xA7,0xD8,0xA2,
    0xAF,0xA0,0x13,0x06,0xD9,0x26,0xDA,0x26,0xDB,0x26,0xD8,
    0x90,0x05,0x8A,0x45,0xD9,0x85,0xD9,0x88,0xD0,0xEE,0xA2,
    0x02,0xB5,0xD9,0x95,0xAD,0xCA,0x10,0xF9,0xA9,0x80,0x85,
    0xAC,0x0A,0x85,0xB0,0x4C,0x34,0xD6,0xA9,0xA6,0xA0,0xE1,
    0x20,0xBE,0xD5,0x20,0xCA,0xD8,0xA9,0xBB,0xA0,0xE1,0xA6,
    0xB7,0x20,0xF9,0xD7,0x20,0xCA,0xD8,0x20,0x81,0xD9,0xA9,
    0x00,0x85,0xB8,0x20,0xA6,0xD5,0xA9,0xED,0xA0,0xE1,0x20,
    0xA3,0xD5,0xA5,0xB0,0x48,0x10,0x0D,0x20,0xBA,0xD5,0xA5,
    0xB0,0x30,0x09,0xA5,0x63,0x49,0xFF,0x85,0x63,0x20,0xF4,
    0xDB,0xA9,0xED,0xA0,0xE1,0x20,0xBE,0xD5,0x68,0x10,0x03,
    0x20,0xF4,0xDB,0xA9,0xAA,0xA0,0xE1,0x4C,0x51,0xDC,0x20,
    0x9D,0xD8,0xA9,0x00,0x85,0x63,0x20,0xD8,0xDC,0xA2,0x9C,
    0xA0,0x00,0x20,0xA7,0xD8,0xA9,0xA4,0xA0,0x00,0x20,0x7D,
    0xD8,0xA9,0x00,0x85,0xB0,0xA5,0x63,0x20,0x49,0xDD,0xA9,
    0x9C,0xA0,0x00,0x4C,0x01,0xD8,0x48,0x4C,0x0A,0xDD,0x20,
    0x0A,0x00,0x4C,0xEF,0xCB,0xA5,0xB0,0x48,0x10,0x03,0x20,
    0xF4,0xDB,0xA5,0xAC,0x48,0xC9,0x81,0x90,0x07,0xA9,0xE0,
    0xA0,0xE1,0x20,0x01,0xD8,0xA9,0xBF,0xA0,0xE1,0x20,0x51,
    0xDC,0x68,0xC9,0x81,0x90,0x07,0xA9,0xA6,0xA0,0xE1,0x20,
    0xA3,0xD5,0x68,0x10,0x16,0x4C,0xF4,0xDB,0x20,0xD8,0xD4,
    0xE0,0x08,0xB0,0x20,0xA9,0x00,0x38,0x2A,0xCA,0x10,0xFC,
    0xE8,0x01,0x11,0x81,0x11,0x60,0x20,0xD8,0xD4,0xE0,0x08,
    0xB0,0x0C,0xA9,0xFF,0x2A,0xCA,0x10,0xFC,0xE8,0x21,0x11,
    0x81,0x11,0x60,0x4C,0x29,0xCF,0x20,0xBC,0x00,0x20,0xD8,
    0xD4,0xE0,0x08,0xB0,0xF3,0x20,0xC2,0x00,0xC9,0x29,0xF0,
    0x03,0x4C,0x02,0xCC,0x20,0xBC,0x00,0xA9,0x00,0x38,0x2A,
    0xCA,0x10,0xFC,0xE8,0x21,0x11,0xF0,0x02,0xA9,0xFF,0x4C,
    0xFA,0xD8,0xE0,0x19,0xB0,0x48,0x86,0x78,0xA9,0x18,0x20,
    0x3A,0xD1,0xA0,0x17,0xA2,0x18,0x46,0x11,0x66,0x12,0x66,
    0x13,0x8A,0x2A,0x91,0xAD,0x88,0x10,0xF3,0xA5,0x78,0xF0,
    0x0A,0xAA,0x38,0x49,0xFF,0x69,0x18,0xF0,0x1C,0xD0,0x0F,
    0xA8,0xB1,0xAD,0xC9,0x30,0xD0,0x07,0xCA,0xF0,0x03,0xC8,
    0x10,0xF4,0xE8,0x98,0x18,0x65,0xAD,0x85,0xAD,0xA9,0x00,
    0x65,0xAE,0x85,0xAE,0x86,0xAC,0x20,0xBC,0x00,0x4C,0x85,
    0xD1,0x4C,0x29,0xCF,0xE0,0x07,0xB0,0xF9,0x86,0x78,0xA9,
    0x06,0x20,0x3A,0xD1,0xA0,0x05,0xF8,0xA5,0x13,0x20,0x51,
    0xDE,0xA5,0x12,0x20,0x51,0xDE,0xA5,0x11,0x20,0x51,0xDE,
    0xD8,0xA2,0x06,0xA5,0x78,0xF0,0xB7,0xAA,0x38,0x49,0xFF,
    0x69,0x06,0xF0,0xC9,0xD0,0xBC,0xAA,0x29,0x0F,0x20,0x5C,
    0xDE,0x8A,0x4A,0x4A,0x4A,0x4A,0xC9,0x0A,0x69,0x30,0x91,
    0xAD,0x88,0x60,0x85,0xAC,0xA9,0x00,0x85,0xB8,0x8A,0x20,
    0x45,0xDA,0x20,0xBC,0x00,0x90,0x0A,0x09,0x20,0xE9,0x61,
    0xC9,0x06,0xB0,0x2A,0x69,0x0A,0x29,0x0F,0xAA,0xA5,0xAC,
    0xF0,0xE4,0x69,0x04,0x90,0xDC,0x4C,0xC3,0xD6,0xAA,0xA5,
    0xAC,0xF0,0x06,0xE6,0xAC,0xF0,0xF4,0xA9,0x00,0x85,0xB8,
    0x8A,0x20,0x45,0xDA,0x20,0xBC,0x00,0x49,0x30,0xC9,0x02,
    0x90,0xE6,0x4C,0x2A,0xDA,0xAD,0x00,0x02,0xD0,0x18,0x20,
    0xEA,0xE0,0x90,0x0B,0x8D,0x01,0x02,0xA2,0x20,0x8E,0x02,
    0x02,0x4C,0x17,0xC5,0xAE,0x02,0x02,0xF0,0x03,0xCE,0x02,
    0x02,0xA2,0xDC,0x20,0xD0,0xDE,0xA2,0xDF,0x20,0xD0,0xDE,
    0x60,0xB5,0x00,0x10,0xFB,0x0A,0x29,0x40,0xF0,0xF6,0x95,
    0x00,0x8A,0xA8,0x68,0x68,0xA9,0x05,0x20,0x03,0xC1,0xA5,
    0xC4,0x48,0xA5,0xC3,0x48,0xA5,0x88,0x48,0xA5,0x87,0x48,
    0xA9,0x8D,0x48,0xB9,0x01,0x00,0x85,0xC3,0xB9,0x02,0x00,
    0x85,0xC4,0x4C,0xBC,0xC4,0x20,0xEA,0xE0,0xB0,0x09,0xAD,
    0x02,0x02,0xF0,0x09,0xAD,0x01,0x02,0x38,0xA2,0x00,0x8E,
    0x02,0x02,0x60,0xA2,0xDF,0x2C,0xA2,0xDC,0xC9,0x93,0xF0,
    0x11,0xC9,0xB5,0xF0,0x07,0x49,0xA2,0xF0,0x0E,0x4C,0x02,
    0xCC,0xA9,0x7F,0x35,0x00,0x10,0x05,0xB5,0x00,0x0A,0x15,
    0x00,0x95,0x00,0x4C,0xBC,0x00,0x58,0xA2,0xDF,0x2C,0xA2,
    0xDC,0x86,0x78,0x20,0xBC,0x00,0x20,0x55,0xC7,0xA5,0x79,
    0xA6,0x7A,0x20,0x28,0xC3,0xB0,0x03,0x4C,0x72,0xC6,0xA6,
    0x78,0xA5,0xAA,0xE9,0x01,0x95,0x01,0xA5,0xAB,0xE9,0x00,
    0x95,0x02,0xA9,0xC0,0x95,0x00,0x60,0xD0,0xFD,0xA5,0xDF,
    0x0A,0x05,0xDF,0x85,0xDF,0x4C,0x79,0xC6,0xD0,0xF1,0xA5,
    0xDC,0x0A,0x05,0xDC,0x85,0xDC,0x4C,0x79,0xC6,0x20,0xE9,
    0xCA,0x4C,0xD0,0xCA,0x20,0xB1,0xDF,0x10,0xFB,0xA5,0xB4,
    0x09,0x80,0x85,0xB4,0x20,0xC3,0xD5,0xF0,0xF0,0x20,0xB1,
    0xDF,0x30,0xFB,0xF0,0xF9,0xA5,0xB4,0x09,0x80,0x85,0xB4,
    0x20,0xC3,0xD5,0xF0,0xEE,0xC9,0x29,0xD0,0x05,0x68,0x68,
    0x4C,0xBC,0x00,0x4C,0x02,0xCC,0x20,0xC2,0x00,0xC9,0x2C,
    0xD0,0xED,0x20,0xD9,0xD8,0xA5,0xB0,0x09,0x7F,0x25,0xAD,
    0x48,0xA5,0xAE,0x48,0xA5,0xAF,0x48,0xA5,0xAC,0x48,0x20,
    0xBC,0x00,0x20,0xCD,0xCA,0x68,0x85,0xB3,0x68,0x85,0xB6,
    0x68,0x85,0xB5,0x68,0x85,0xB4,0x85,0xB7,0xA9,0xB3,0xA0,
    0x00,0x4C,0x17,0xD9,0xC9,0x2C,0xF0,0x1B,0x20,0x8C,0xD4,
    0x8A,0xF0,0x0A,0xE0,0x10,0x90,0x45,0xE4,0x64,0xB0,0x02,
    0x86,0x64,0x86,0x0F,0x20,0xC2,0x00,0xF0,0x1A,0xC9,0x2C,
    0xD0,0xA9,0x20,0x89,0xD4,0x8A,0x30,0x2E,0xE0,0x01,0x90,
    0x2A,0xA5,0x0F,0xF0,0x06,0xE4,0x0F,0xF0,0x02,0xB0,0x20,
    0x86,0x64,0xA5,0x0F,0xF0,0x06,0xC5,0x64,0xB0,0x03,0x85,
    0x64,0x38,0xE5,0x64,0xB0,0xFC,0x65,0x64,0x18,0x65,0x64,
    0x85,0x10,0xA5,0x0F,0x38,0xE5,0x10,0x85,0x10,0x60,0x4C,
    0x29,0xCF,0xA5,0xB0,0x30,0xF9,0xA5,0xAC,0xF0,0xF4,0x20,
    0xCA,0xD8,0xA9,0x00,0x85,0x77,0x85,0x76,0x85,0x75,0x85,
    0x78,0x85,0xAF,0x85,0xAE,0x85,0xAD,0xA2,0x18,0xA5,0xB3,
    0x4A,0xB0,0x0E,0x06,0xB6,0x26,0xB5,0x26,0xB4,0x26,0x77,
    0x26,0x76,0x26,0x75,0x26,0x78,0x06,0xB6,0x26,0xB5,0x26,
    0xB4,0x26,0x77,0x26,0x76,0x26,0x75,0x26,0x78,0x06,0xAF,
    0x26,0xAE,0x26,0xAD,0xA5,0xAF,0x2A,0x85,0x5B,0xA5,0xAE,
    0x2A,0x85,0x5C,0xA5,0xAD,0x2A,0x85,0x5D,0xA9,0x00,0x2A,
    0x85,0x5E,0xA5,0x77,0xE5,0x5B,0x85,0x5B,0xA5,0x76,0xE5,
    0x5C,0x85,0x5C,0xA5,0x75,0xE5,0x5D,0xA8,0xA5,0x78,0xE5,
    0x5E,0x90,0x0E,0x85,0x78,0x84,0x75,0xA5,0x5C,0x85,0x76,
    0xA5,0x5B,0x85,0x77,0xE6,0xAF,0xCA,0xD0,0xA2,0x38,0xA5,
    0xB3,0xE9,0x80,0x6A,0x69,0x00,0x85,0xAC,0x4C,0x34,0xD6,
    0x20,0xBC,0x00,0x20,0xAA,0xCD,0x20,0xEF,0xCB,0xA4,0x95,
    0xA5,0x96,0x4C,0x59,0xD0,0xA9,0xBB,0xA0,0xE1,0x20,0x7D,
    0xD8,0xC6,0xAC,0x60,0xA9,0xBB,0xA0,0xE1,0x4C,0x7D,0xD8,
    0x6C,0x05,0x02,0x6C,0x07,0x02,0x6C,0x09,0x02,0x6C,0x0B,
    0x02,0x00,0x00,0x00,0xA8,0xDE,0xE6,0xC3,0xD0,0x02,0xE6,
    0xC4,0xAD,0xFF,0xFF,0xC9,0xAC,0xF0,0x0E,0xC9,0x3A,0xB0,
    0x0A,0xC9,0x20,0xF0,0xEB,0x38,0xE9,0x30,0x38,0xE9,0xD0,
    0x60,0x4C,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x4C,0x29,0xCF,0x00,0x00,0x00,0xF2,0x00,0x03,0x0D,0x0A,
    0x4D,0x65,0x6D,0x6F,0x72,0x79,0x20,0x73,0x69,0x7A,0x65,
    0x20,0x00,0x20,0x42,0x79,0x74,0x65,0x73,0x20,0x66,0x72,
    0x65,0x65,0x0D,0x0A,0x0A,0x45,0x6E,0x68,0x61,0x6E,0x63,
    0x65,0x64,0x20,0x42,0x41,0x53,0x49,0x43,0x20,0x32,0x2E,
    0x32,0x32,0x0A,0x00,0x02,0x80,0x19,0x56,0x62,0x80,0x76,
    0x22,0xF3,0x82,0x38,0xAA,0x40,0x80,0x35,0x04,0xF3,0x81,
    0x35,0x04,0xF3,0x80,0x80,0x00,0x00,0x80,0x31,0x72,0x18,
    0x91,0x43,0x4F,0xF8,0x94,0x74,0x23,0xF7,0x94,0x74,0x24,
    0x00,0x81,0x38,0xAA,0x3B,0x06,0x74,0x63,0x90,0x8C,0x77,
    0x23,0x0C,0xAB,0x7A,0x1E,0x94,0x00,0x7C,0x63,0x42,0x80,
    0x7E,0x75,0xFE,0xD0,0x80,0x31,0x72,0x15,0x81,0x00,0x00,
    0x00,0x81,0x49,0x0F,0xDB,0x04,0x86,0x1E,0xD7,0xFB,0x87,
    0x99,0x26,0x65,0x87,0x23,0x34,0x58,0x86,0xA5,0x5D,0xE1,
    0x83,0x49,0x0F,0xDB,0x08,0x78,0x3A,0xC5,0x37,0x7B,0x83,
    0xA2,0x5C,0x7C,0x2E,0xDD,0x4D,0x7D,0x99,0xB0,0x1E,0x7D,
    0x59,0xED,0x24,0x7E,0x91,0x72,0x00,0x7E,0x4C,0xB9,0x73,
    0x7F,0xAA,0xAA,0x53,0x81,0x00,0x00,0x00,0x81,0x80,0x00,
    0x00,0x90,0x80,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x84,
    0x20,0x00,0x00,0xFE,0x79,0x60,0x00,0x27,0x10,0xFF,0xFC,
    0x18,0x00,0x00,0x64,0xFF,0xFF,0xF6,0x00,0x00,0x01,0x1A,
    0xC5,0x57,0xC4,0x64,0xCA,0x8B,0xC6,0x46,0xC9,0x5E,0xCD,
    0x66,0xC9,0xB3,0xC7,0x85,0xC7,0xEA,0xC5,0xA9,0xC5,0xB9,
    0xC6,0x41,0xC5,0xCD,0xC5,0x64,0xDF,0x70,0xDF,0x76,0xC6,
    0x1D,0xC7,0x18,0xC5,0x26,0xC7,0x7F,0xC5,0x88,0xC7,0x88,
    0xD5,0xEF,0xE0,0xF2,0xE0,0x73,0xD0,0x0D,0xD5,0x29,0xD5,
    0x76,0xD5,0xB3,0xC5,0x1C,0xC6,0x54,0xC8,0x85,0xC5,0xA2,
    0xC3,0x9F,0xC3,0x4D,0xC3,0xE5,0xDF,0x23,0xC8,0x4E,0xD5,
    0x81,0xDD,0x95,0xDD,0x13,0xDF,0x16,0xDF,0x64,0xCC,0x64,
    0xCC,0x64,0xCC,0xE8,0xCA,0xEB,0xCB,0xEB,0xCB,0x64,0xCC,
    0x64,0xCC,0x64,0xCC,0x64,0xCC,0x64,0xCC,0x64,0xCC,0x64,
    0xCC,0x64,0xCC,0x64,0xCC,0x64,0xCC,0x00,0x00,0x5E,0xCC,
    0x64,0xCC,0x5E,0xCC,0x5E,0xCC,0x5E,0xCC,0x5E,0xCC,0x64,
    0xCC,0x8B,0xCC,0x8B,0xCC,0x00,0x00,0x7C,0xDF,0x7C,0xDF,
    0x6A,0xCC,0x6A,0xCC,0x00,0x00,0x6F,0xCC,0x6F,0xCC,0x6F,
    0xCC,0xF6,0xD8,0x80,0xD9,0x13,0xD9,0x4C,0xDD,0x44,0xD0,
    0x63,0xD0,0x3B,0xE0,0x9C,0xDC,0xFA,0xD6,0xFE,0xDB,0xD0,
    0xDC,0xD7,0xDC,0x20,0xDD,0x52,0xDD,0x02,0xD5,0x16,0xD5,
    0x54,0xD4,0x6D,0xD4,0x25,0xD1,0x9A,0xD4,0x78,0xD4,0x32,
    0xD4,0x11,0xD4,0x83,0xD3,0x22,0xDE,0xD3,0xDD,0xAB,0xDD,
    0x82,0xDF,0x92,0xDF,0xD8,0xE0,0xE2,0xE0,0xC8,0xE0,0x95,
    0xD3,0x9E,0xD3,0xCD,0xD3,0x79,0xC0,0xD5,0x79,0xA5,0xD5,
    0x7B,0x3B,0xD7,0x7B,0x03,0xD8,0x7F,0xBA,0xDB,0x50,0xD4,
    0xCC,0x46,0xBA,0xCC,0x46,0xC7,0xCC,0x56,0x80,0xCD,0x56,
    0x68,0xCD,0x7D,0xF3,0xDB,0x5A,0x16,0xCC,0x64,0xF5,0xCC,
    0x2A,0x2B,0x2D,0x2F,0x3C,0x3D,0x3E,0x3F,0x41,0x42,0x43,
    0x44,0x45,0x46,0x47,0x48,0x49,0x4C,0x4D,0x4E,0x4F,0x50,
    0x52,0x53,0x54,0x55,0x56,0x57,0x5E,0x00,0x68,0xE3,0x6A,
    0xE3,0x6C,0xE3,0x6E,0xE3,0x70,0xE3,0x74,0xE3,0x76,0xE3,
    0x7A,0xE3,0x7C,0xE3,0x8C,0xE3,0xA5,0xE3,0xBC,0xE3,0xD5,
    0xE3,0xE4,0xE3,0xEE,0xE3,0xFB,0xE3,0x01,0xE4,0x13,0xE4,
    0x38,0xE4,0x46,0xE4,0x58,0xE4,0x60,0xE4,0x75,0xE4,0xA4,
    0xE4,0xCF,0xE4,0xE3,0xE4,0xF4,0xE4,0x00,0xE5,0x0F,0xE5,
    0xB8,0x00,0xB6,0x00,0xB7,0x00,0xB9,0x00,0x3C,0xBF,0xC2,
    0x00,0xC1,0x00,0x3E,0xBE,0xC0,0x00,0x9F,0x00,0x42,0x53,
    0x28,0xC5,0x4E,0x44,0xBB,0x53,0x43,0x28,0xD7,0x54,0x4E,
    0x28,0xD0,0x00,0x49,0x4E,0x24,0x28,0xDC,0x49,0x54,0x43,
    0x4C,0x52,0xA8,0x49,0x54,0x53,0x45,0x54,0xA7,0x49,0x54,
    0x54,0x53,0x54,0x28,0xDD,0x00,0x41,0x4C,0x4C,0x9C,0x48,
    0x52,0x24,0x28,0xDA,0x4C,0x45,0x41,0x52,0xA2,0x4F,0x4E,
    0x54,0xA0,0x4F,0x53,0x28,0xCD,0x00,0x41,0x54,0x41,0x83,
    0x45,0x43,0x88,0x45,0x45,0x4B,0x28,0xD2,0x45,0x46,0x99,
    0x49,0x4D,0x85,0x4F,0x4B,0x45,0x9B,0x4F,0x9D,0x00,0x4C,
    0x53,0x45,0xAC,0x4E,0x44,0x80,0x4F,0x52,0xBC,0x58,0x50,
    0x28,0xCC,0x00,0x4E,0xAE,0x4F,0x52,0x81,0x52,0x45,0x28,
    0xC7,0x00,0x45,0x54,0xA5,0x4F,0x53,0x55,0x42,0x8D,0x4F,
    0x54,0x4F,0x89,0x00,0x45,0x58,0x24,0x28,0xDB,0x00,0x46,
    0x8B,0x4E,0x43,0x95,0x4E,0x50,0x55,0x54,0x84,0x4E,0x54,
    0x28,0xC4,0x52,0x51,0xA9,0x00,0x43,0x41,0x53,0x45,0x24,
    0x28,0xD9,0x45,0x46,0x54,0x24,0x28,0xE3,0x45,0x4E,0x28,
    0xD4,0x45,0x54,0x87,0x49,0x53,0x54,0xA1,0x4F,0x41,0x44,
    0x97,0x4F,0x47,0x28,0xCB,0x4F,0x4F,0x50,0x9E,0x00,0x41,
    0x58,0x28,0xDE,0x49,0x44,0x24,0x28,0xE5,0x49,0x4E,0x28,
    0xDF,0x00,0x45,0x57,0xA3,0x45,0x58,0x54,0x82,0x4D,0x49,
    0xAA,0x4F,0x54,0xB1,0x55,0x4C,0x4C,0x94,0x00,0x46,0x46,
    0xB5,0x4E,0x93,0x52,0xBD,0x00,0x45,0x45,0x4B,0x28,0xD1,
    0x49,0xE0,0x4F,0x4B,0x45,0x9A,0x4F,0x53,0x28,0xC8,0x52,
    0x49,0x4E,0x54,0x9F,0x00,0x45,0x41,0x44,0x86,0x45,0x4D,
    0x91,0x45,0x53,0x54,0x4F,0x52,0x45,0x8C,0x45,0x54,0x49,
    0x52,0x51,0x8E,0x45,0x54,0x4E,0x4D,0x49,0x8F,0x45,0x54,
    0x55,0x52,0x4E,0x90,0x49,0x47,0x48,0x54,0x24,0x28,0xE4,
    0x4E,0x44,0x28,0xCA,0x55,0x4E,0x8A,0x00,0x41,0x44,0x44,
    0x28,0xD3,0x41,0x56,0x45,0x98,0x47,0x4E,0x28,0xC3,0x49,
    0x4E,0x28,0xCE,0x50,0x43,0x28,0xAF,0x51,0x52,0x28,0xC9,
    0x54,0x45,0x50,0xB2,0x54,0x4F,0x50,0x92,0x54,0x52,0x24,
    0x28,0xD5,0x57,0x41,0x50,0xA6,0x00,0x41,0x42,0x28,0xAB,
    0x41,0x4E,0x28,0xCF,0x48,0x45,0x4E,0xB0,0x4F,0xAD,0x57,
    0x4F,0x50,0x49,0xE1,0x00,0x43,0x41,0x53,0x45,0x24,0x28,
    0xD8,0x4E,0x54,0x49,0x4C,0xB3,0x53,0x52,0x28,0xC6,0x00,
    0x41,0x4C,0x28,0xD6,0x41,0x52,0x50,0x54,0x52,0x28,0xE2,
    0x00,0x41,0x49,0x54,0x96,0x48,0x49,0x4C,0x45,0xB4,0x49,
    0x44,0x54,0x48,0xA4,0x00,0xBA,0x00,0x03,0x45,0xD9,0xE3,
    0x03,0x46,0xE6,0xE3,0x04,0x4E,0x49,0xE4,0x04,0x44,0xBC,
    0xE3,0x05,0x49,0x06,0xE4,0x03,0x44,0xCB,0xE3,0x04,0x52,
    0x75,0xE4,0x03,0x4C,0x24,0xE4,0x03,0x44,0xC0,0xE3,0x04,
    0x47,0xF6,0xE3,0x03,0x52,0xA0,0xE4,0x02,0x49,0x01,0xE4,
    0x07,0x52,0x7C,0xE4,0x05,0x47,0xF1,0xE3,0x06,0x52,0x83,
    0xE4,0x06,0x52,0x89,0xE4,0x06,0x52,0x8F,0xE4,0x03,0x52,
    0x79,0xE4,0x04,0x53,0xC1,0xE4,0x02,0x4F,0x5B,0xE4,0x04,
    0x4E,0x53,0xE4,0x03,0x49,0x03,0xE4,0x04,0x57,0x00,0xE5,
    0x04,0x4C,0x2B,0xE4,0x04,0x53,0xA9,0xE4,0x03,0x44,0xC8,
    0xE3,0x04,0x50,0x67,0xE4,0x04,0x44,0xCE,0xE3,0x04,0x43,
    0xA5,0xE3,0x02,0x44,0xD2,0xE3,0x04,0x4C,0x33,0xE4,0x05,
    0x50,0x6F,0xE4,0x04,0x43,0xB3,0xE3,0x04,0x4C,0x27,0xE4,
    0x05,0x43,0xAE,0xE3,0x03,0x4E,0x46,0xE4,0x05,0x57,0x09,
    0xE5,0x03,0x47,0xEE,0xE3,0x04,0x53,0xCA,0xE4,0x06,0x42,
    0x97,0xE3,0x06,0x42,0x91,0xE3,0x03,0x49,0x0F,0xE4,0x03,
    0x4E,0x4D,0xE4,0x04,0x54,0xCF,0xE4,0x04,0x45,0xD5,0xE3,
    0x02,0x54,0xDB,0xE4,0x02,0x46,0xE4,0xE3,0x04,0x53,0xB5,
    0xE4,0x04,0x54,0xD7,0xE4,0x03,0x4E,0x50,0xE4,0x04,0x53,
    0xBD,0xE4,0x05,0x55,0xEA,0xE4,0x05,0x57,0x04,0xE5,0x03,
    0x4F,0x58,0xE4,0x01,0x2B,0x00,0x00,0x01,0x2D,0x00,0x00,
    0x01,0x2A,0x00,0x00,0x01,0x2F,0x00,0x00,0x01,0x5E,0x00,
    0x00,0x03,0x41,0x80,0xE3,0x03,0x45,0xDC,0xE3,0x02,0x4F,
    0x5D,0xE4,0x02,0x3E,0x76,0xE3,0x02,0x3C,0x70,0xE3,0x01,
    0x3E,0x00,0x00,0x01,0x3D,0x00,0x00,0x01,0x3C,0x00,0x00,
    0x04,0x53,0xAD,0xE4,0x04,0x49,0x0B,0xE4,0x04,0x41,0x7C,
    0xE3,0x04,0x55,0xEF,0xE4,0x04,0x46,0xE9,0xE3,0x04,0x50,
    0x6B,0xE4,0x04,0x53,0xB9,0xE4,0x04,0x52,0x9C,0xE4,0x04,
    0x4C,0x2F,0xE4,0x04,0x45,0xDF,0xE3,0x04,0x43,0xB7,0xE3,
    0x04,0x53,0xB1,0xE4,0x04,0x54,0xD3,0xE4,0x04,0x41,0x87,
    0xE3,0x05,0x50,0x60,0xE4,0x05,0x44,0xC3,0xE3,0x05,0x53,
    0xA4,0xE4,0x04,0x4C,0x20,0xE4,0x05,0x53,0xC5,0xE4,0x04,
    0x56,0xF4,0xE4,0x04,0x41,0x83,0xE3,0x07,0x55,0xE3,0xE4,
    0x07,0x4C,0x13,0xE4,0x05,0x43,0xA9,0xE3,0x05,0x48,0xFB,
    0xE3,0x05,0x42,0x8C,0xE3,0x07,0x42,0x9D,0xE3,0x04,0x4D,
    0x38,0xE4,0x04,0x4D,0x41,0xE4,0x02,0x50,0x65,0xE4,0x05,
    0x54,0xDD,0xE4,0x07,0x56,0xF8,0xE4,0x06,0x4C,0x1A,0xE4,
    0x07,0x52,0x95,0xE4,0x05,0x4D,0x3C,0xE4,0xCD,0xE6,0xDE,
    0xE6,0xE5,0xE6,0xFA,0xE6,0x06,0xE7,0x14,0xE7,0x1D,0xE7,
    0x2B,0xE7,0x3F,0xE7,0x4C,0xE7,0x5D,0xE7,0x6C,0xE7,0x7B,
    0xE7,0x89,0xE7,0x99,0xE7,0xAC,0xE7,0xBB,0xE7,0xCE,0xE7,
    0x4E,0x45,0x58,0x54,0x20,0x77,0x69,0x74,0x68,0x6F,0x75,
    0x74,0x20,0x46,0x4F,0x52,0x00,0x53,0x79,0x6E,0x74,0x61,
    0x78,0x00,0x52,0x45,0x54,0x55,0x52,0x4E,0x20,0x77,0x69,
    0x74,0x68,0x6F,0x75,0x74,0x20,0x47,0x4F,0x53,0x55,0x42,
    0x00,0x4F,0x75,0x74,0x20,0x6F,0x66,0x20,0x44,0x41,0x54,
    0x41,0x00,0x46,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,
    0x63,0x61,0x6C,0x6C,0x00,0x4F,0x76,0x65,0x72,0x66,0x6C,
    0x6F,0x77,0x00,0x4F,0x75,0x74,0x20,0x6F,0x66,0x20,0x6D,
    0x65,0x6D,0x6F,0x72,0x79,0x00,0x55,0x6E,0x64,0x65,0x66,
    0x69,0x6E,0x65,0x64,0x20,0x73,0x74,0x61,0x74,0x65,0x6D,
    0x65,0x6E,0x74,0x00,0x41,0x72,0x72,0x61,0x79,0x20,0x62,
    0x6F,0x75,0x6E,0x64,0x73,0x00,0x44,0x6F,0x75,0x62,0x6C,
    0x65,0x20,0x64,0x69,0x6D,0x65,0x6E,0x73,0x69,0x6F,0x6E,
    0x00,0x44,0x69,0x76,0x69,0x64,0x65,0x20,0x62,0x79,0x20,
    0x7A,0x65,0x72,0x6F,0x00,0x49,0x6C,0x6C,0x65,0x67,0x61,
    0x6C,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x00,0x54,0x79,
    0x70,0x65,0x20,0x6D,0x69,0x73,0x6D,0x61,0x74,0x63,0x68,
    0x00,0x53,0x74,0x72,0x69,0x6E,0x67,0x20,0x74,0x6F,0x6F,
    0x20,0x6C,0x6F,0x6E,0x67,0x00,0x53,0x74,0x72,0x69,0x6E,
    0x67,0x20,0x74,0x6F,0x6F,0x20,0x63,0x6F,0x6D,0x70,0x6C,
    0x65,0x78,0x00,0x43,0x61,0x6E,0x27,0x74,0x20,0x63,0x6F,
    0x6E,0x74,0x69,0x6E,0x75,0x65,0x00,0x55,0x6E,0x64,0x65,
    0x66,0x69,0x6E,0x65,0x64,0x20,0x66,0x75,0x6E,0x63,0x74,
    0x69,0x6F,0x6E,0x00,0x4C,0x4F,0x4F,0x50,0x20,0x77,0x69,
    0x74,0x68,0x6F,0x75,0x74,0x20,0x44,0x4F,0x00,0x0D,0x0A,
    0x42,0x72,0x65,0x61,0x6B,0x00,0x20,0x45,0x72,0x72,0x6F,
    0x72,0x00,0x20,0x69,0x6E,0x20,0x6C,0x69,0x6E,0x65,0x20,
    0x00,0x0D,0x0A,0x52,0x65,0x61,0x64,0x79,0x0D,0x0A,0x00,
    0x20,0x45,0x78,0x74,0x72,0x61,0x20,0x69,0x67,0x6E,0x6F,
    0x72,0x65,0x64,0x0D,0x0A,0x00,0x20,0x52,0x65,0x64,0x6F,
    0x20,0x66,0x72,0x6F,0x6D,0x20,0x73,0x74,0x61,0x72,0x74,
    0x0D,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00
};

uint8_t BIOStop[256] = {
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0xA2,0xFF,0x9A,
    0xA0,0x1C,0xB9,0xBB,0xFF,0x99,0x04,0x02,0x88,0xD0,0xF7,
    0xB9,0xD8,0xFF,0xF0,0x06,0x20,0xED,0xE0,0xC8,0xD0,0xF5,
    0x20,0xEA,0xE0,0x90,0xFB,0x29,0xDF,0xC9,0x57,0xF0,0x07,
    0xC9,0x43,0xD0,0xD7,0x4C,0x00,0xC0,0x4C,0x00,0x00,0x8D,
    0x01,0xF0,0x60,0xAD,0x04,0xF0,0xF0,0x02,0x38,0x60,0x18,
    0x60,0xB3,0xFF,0xAF,0xFF,0xBB,0xFF,0xBB,0xFF,0x48,0xA5,
    0xDF,0x4A,0x05,0xDF,0x85,0xDF,0x68,0x40,0x48,0xA5,0xDC,
    0x4A,0x05,0xDC,0x85,0xDC,0x68,0x40,0x0D,0x0A,0x36,0x35,
    0x30,0x32,0x20,0x45,0x68,0x42,0x41,0x53,0x49,0x43,0x20,
    0x5B,0x43,0x5D,0x6F,0x6C,0x64,0x2F,0x5B,0x57,0x5D,0x61,
    0x72,0x6D,0x20,0x3F,0x00,0x00,0x00,0x00,0x17,0x02,0x80,
    0xFF,0x0D,0x02
};

uint8_t read6502(uint16_t address)
{
    uint16_t BIOSaddr;
    uint8_t tempval = 0;

    if (address == 0xF004) { //EhBASIC simulated ASIC input
        tempval = getkey();
        clearkey();
        return(tempval);
    }

    if (address >= 0xC000) {
        BIOSaddr = address - 0xC000;
        if (BIOSaddr < 0x2900) return ( BIOS[ BIOSaddr ] );
        if (BIOSaddr >= 0x3F00) return ( BIOStop[ BIOSaddr - 0x3F00 ] );
    }

    if (address < RAM_SIZE) return(RAM[address]);
    return(0);
}

void write6502(uint16_t address, uint8_t value)
{
    if (address < RAM_SIZE) RAM[address] = value;
    if (address == 0xF001) { //EhBASIC simulated ASIC output
        serout(value);
    }
}

//a few general functions used by various other functions
void push16(uint16_t pushval)
{
    write6502(BASE_STACK + sp, (pushval >> 8) & 0xFF);
    write6502(BASE_STACK + ((sp - 1) & 0xFF), pushval & 0xFF);
    sp -= 2;
}

void push8(uint8_t pushval)
{
    write6502(BASE_STACK + sp--, pushval);
}

uint16_t pull16()
{
    uint16_t temp16;
    temp16 = read6502(BASE_STACK + ((sp + 1) & 0xFF)) | ((uint16_t)read6502(BASE_STACK + ((sp + 2) & 0xFF)) << 8);
    sp += 2;
    return(temp16);
}

uint8_t pull8()
{
    return (read6502(BASE_STACK + ++sp));
}

void reset6502()
{
    pc = (uint16_t)read6502(0xFFFC) | ((uint16_t)read6502(0xFFFD) << 8);
    a = 0;
    x = 0;
    y = 0;
    sp = 0xFD;
    cpustatus |= FLAG_CONSTANT;
}

//addressing mode functions, calculates effective addresses
void imp()   //implied
{
}

void acc()   //accumulator
{
    useaccum = 1;
}

void imm()   //immediate
{
    ea = pc++;
}

void zp()   //zero-page
{
    ea = (uint16_t)read6502((uint16_t)pc++);
}

void zpx()   //zero-page,X
{
    ea = ((uint16_t)read6502((uint16_t)pc++) + (uint16_t)x) & 0xFF; //zero-page wraparound
}

void zpy()   //zero-page,Y
{
    ea = ((uint16_t)read6502((uint16_t)pc++) + (uint16_t)y) & 0xFF; //zero-page wraparound
}

void rel()   //relative for branch ops (8-bit immediate value, sign-extended)
{
    reladdr = (uint16_t)read6502(pc++);
    if (reladdr & 0x80) reladdr |= 0xFF00;
}

void abso()   //absolute
{
    ea = (uint16_t)read6502(pc) | ((uint16_t)read6502(pc+1) << 8);
    pc += 2;
}

void absx()   //absolute,X
{
    uint16_t startpage;
    ea = ((uint16_t)read6502(pc) | ((uint16_t)read6502(pc+1) << 8));
    startpage = ea & 0xFF00;
    ea += (uint16_t)x;

    pc += 2;
}

void absy()   //absolute,Y
{
    uint16_t startpage;
    ea = ((uint16_t)read6502(pc) | ((uint16_t)read6502(pc+1) << 8));
    startpage = ea & 0xFF00;
    ea += (uint16_t)y;

    pc += 2;
}

void ind()   //indirect
{
    uint16_t eahelp, eahelp2;
    eahelp = (uint16_t)read6502(pc) | (uint16_t)((uint16_t)read6502(pc+1) << 8);
    eahelp2 = (eahelp & 0xFF00) | ((eahelp + 1) & 0x00FF); //replicate 6502 page-boundary wraparound bug
    ea = (uint16_t)read6502(eahelp) | ((uint16_t)read6502(eahelp2) << 8);
    pc += 2;
}

void indx()   // (indirect,X)
{
    uint16_t eahelp;
    eahelp = (uint16_t)(((uint16_t)read6502(pc++) + (uint16_t)x) & 0xFF); //zero-page wraparound for table pointer
    ea = (uint16_t)read6502(eahelp & 0x00FF) | ((uint16_t)read6502((eahelp+1) & 0x00FF) << 8);
}

void indy()   // (indirect),Y
{
    uint16_t eahelp, eahelp2, startpage;
    eahelp = (uint16_t)read6502(pc++);
    eahelp2 = (eahelp & 0xFF00) | ((eahelp + 1) & 0x00FF); //zero-page wraparound
    ea = (uint16_t)read6502(eahelp) | ((uint16_t)read6502(eahelp2) << 8);
    startpage = ea & 0xFF00;
    ea += (uint16_t)y;

}

static uint16_t getvalue()
{
    if (useaccum) return((uint16_t)a);
    else return((uint16_t)read6502(ea));
}

static uint16_t getvalue16()
{
    return((uint16_t)read6502(ea) | ((uint16_t)read6502(ea+1) << 8));
}

void putvalue(uint16_t saveval)
{
    if (useaccum) a = (uint8_t)(saveval & 0x00FF);
    else write6502(ea, (saveval & 0x00FF));
}


//instruction handler functions
void adc()
{
    value = getvalue();
    result = (uint16_t)a + value + (uint16_t)(cpustatus & FLAG_CARRY);

    carrycalc(result);
    zerocalc(result);
    overflowcalc(result, a, value);
    signcalc(result);

#ifndef NES_CPU
    if (cpustatus & FLAG_DECIMAL) {
        clearcarry();

        if ((a & 0x0F) > 0x09) {
            a += 0x06;
        }
        if ((a & 0xF0) > 0x90) {
            a += 0x60;
            setcarry();
        }

        clockticks6502++;
    }
#endif

    saveaccum(result);
}

void op_and()
{
    value = getvalue();
    result = (uint16_t)a & value;

    zerocalc(result);
    signcalc(result);

    saveaccum(result);
}

void asl()
{
    value = getvalue();
    result = value << 1;

    carrycalc(result);
    zerocalc(result);
    signcalc(result);

    putvalue(result);
}

void bcc()
{
    if ((cpustatus & FLAG_CARRY) == 0) {
        oldpc = pc;
        pc += reladdr;
        if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary
        else clockticks6502++;
    }
}

void bcs()
{
    if ((cpustatus & FLAG_CARRY) == FLAG_CARRY) {
        oldpc = pc;
        pc += reladdr;
        if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary
        else clockticks6502++;
    }
}

void beq()
{
    if ((cpustatus & FLAG_ZERO) == FLAG_ZERO) {
        oldpc = pc;
        pc += reladdr;
        if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary
        else clockticks6502++;
    }
}

void op_bit()
{
    value = getvalue();
    result = (uint16_t)a & value;

    zerocalc(result);
    cpustatus = (cpustatus & 0x3F) | (uint8_t)(value & 0xC0);
}

void bmi()
{
    if ((cpustatus & FLAG_SIGN) == FLAG_SIGN) {
        oldpc = pc;
        pc += reladdr;
        if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary
        else clockticks6502++;
    }
}

void bne()
{
    if ((cpustatus & FLAG_ZERO) == 0) {
        oldpc = pc;
        pc += reladdr;
        if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary
        else clockticks6502++;
    }
}

void bpl()
{
    if ((cpustatus & FLAG_SIGN) == 0) {
        oldpc = pc;
        pc += reladdr;
        if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary
        else clockticks6502++;
    }
}

void brk()
{
    pc++;
    push16(pc); //push next instruction address onto stack
    push8(cpustatus | FLAG_BREAK); //push CPU cpustatus to stack
    setinterrupt(); //set interrupt flag
    pc = (uint16_t)read6502(0xFFFE) | ((uint16_t)read6502(0xFFFF) << 8);
}

void bvc()
{
    if ((cpustatus & FLAG_OVERFLOW) == 0) {
        oldpc = pc;
        pc += reladdr;
        if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary
        else clockticks6502++;
    }
}

void bvs()
{
    if ((cpustatus & FLAG_OVERFLOW) == FLAG_OVERFLOW) {
        oldpc = pc;
        pc += reladdr;
        if ((oldpc & 0xFF00) != (pc & 0xFF00)) clockticks6502 += 2; //check if jump crossed a page boundary
        else clockticks6502++;
    }
}

void clc()
{
    clearcarry();
}

void cld()
{
    cleardecimal();
}

void cli()
{
    clearinterrupt();
}

void clv()
{
    clearoverflow();
}

void cmp()
{
    value = getvalue();
    result = (uint16_t)a - value;

    if (a >= (uint8_t)(value & 0x00FF)) setcarry();
    else clearcarry();
    if (a == (uint8_t)(value & 0x00FF)) setzero();
    else clearzero();
    signcalc(result);
}

void cpx()
{
    value = getvalue();
    result = (uint16_t)x - value;

    if (x >= (uint8_t)(value & 0x00FF)) setcarry();
    else clearcarry();
    if (x == (uint8_t)(value & 0x00FF)) setzero();
    else clearzero();
    signcalc(result);
}

void cpy()
{
    value = getvalue();
    result = (uint16_t)y - value;

    if (y >= (uint8_t)(value & 0x00FF)) setcarry();
    else clearcarry();
    if (y == (uint8_t)(value & 0x00FF)) setzero();
    else clearzero();
    signcalc(result);
}

void dec()
{
    value = getvalue();
    result = value - 1;

    zerocalc(result);
    signcalc(result);

    putvalue(result);
}

void dex()
{
    x--;

    zerocalc(x);
    signcalc(x);
}

void dey()
{
    y--;

    zerocalc(y);
    signcalc(y);
}

void eor()
{
    value = getvalue();
    result = (uint16_t)a ^ value;

    zerocalc(result);
    signcalc(result);

    saveaccum(result);
}

void inc()
{
    value = getvalue();
    result = value + 1;

    zerocalc(result);
    signcalc(result);

    putvalue(result);
}

void inx()
{
    x++;

    zerocalc(x);
    signcalc(x);
}

void iny()
{
    y++;

    zerocalc(y);
    signcalc(y);
}

void jmp()
{
    pc = ea;
}

void jsr()
{
    push16(pc - 1);
    pc = ea;
}

void lda()
{
    value = getvalue();
    a = (uint8_t)(value & 0x00FF);

    zerocalc(a);
    signcalc(a);
}

void ldx()
{
    value = getvalue();
    x = (uint8_t)(value & 0x00FF);

    zerocalc(x);
    signcalc(x);
}

void ldy()
{
    value = getvalue();
    y = (uint8_t)(value & 0x00FF);

    zerocalc(y);
    signcalc(y);
}

void lsr()
{
    value = getvalue();
    result = value >> 1;

    if (value & 1) setcarry();
    else clearcarry();
    zerocalc(result);
    signcalc(result);

    putvalue(result);
}

void nop()
{
}

void ora()
{
    value = getvalue();
    result = (uint16_t)a | value;

    zerocalc(result);
    signcalc(result);

    saveaccum(result);
}

void pha()
{
    push8(a);
}

void php()
{
    push8(cpustatus | FLAG_BREAK);
}

void pla()
{
    a = pull8();

    zerocalc(a);
    signcalc(a);
}

void plp()
{
    cpustatus = pull8() | FLAG_CONSTANT;
}

void rol()
{
    value = getvalue();
    result = (value << 1) | (cpustatus & FLAG_CARRY);

    carrycalc(result);
    zerocalc(result);
    signcalc(result);

    putvalue(result);
}

void ror()
{
    value = getvalue();
    result = (value >> 1) | ((cpustatus & FLAG_CARRY) << 7);

    if (value & 1) setcarry();
    else clearcarry();
    zerocalc(result);
    signcalc(result);

    putvalue(result);
}

void rti()
{
    cpustatus = pull8();
    value = pull16();
    pc = value;
}

void rts()
{
    value = pull16();
    pc = value + 1;
}

void sbc()
{
    value = getvalue() ^ 0x00FF;
    result = (uint16_t)a + value + (uint16_t)(cpustatus & FLAG_CARRY);

    carrycalc(result);
    zerocalc(result);
    overflowcalc(result, a, value);
    signcalc(result);

#ifndef NES_CPU
    if (cpustatus & FLAG_DECIMAL) {
        clearcarry();

        a -= 0x66;
        if ((a & 0x0F) > 0x09) {
            a += 0x06;
        }
        if ((a & 0xF0) > 0x90) {
            a += 0x60;
            setcarry();
        }

        clockticks6502++;
    }
#endif

    saveaccum(result);
}

void sec()
{
    setcarry();
}

void sed()
{
    setdecimal();
}

void sei()
{
    setinterrupt();
}

void sta()
{
    putvalue(a);
}

void stx()
{
    putvalue(x);
}

void sty()
{
    putvalue(y);
}

void tax()
{
    x = a;

    zerocalc(x);
    signcalc(x);
}

void tay()
{
    y = a;

    zerocalc(y);
    signcalc(y);
}

void tsx()
{
    x = sp;

    zerocalc(x);
    signcalc(x);
}

void txa()
{
    a = x;

    zerocalc(a);
    signcalc(a);
}

void txs()
{
    sp = x;
}

void tya()
{
    a = y;

    zerocalc(a);
    signcalc(a);
}

//undocumented instructions
#ifdef UNDOCUMENTED
void lax()
{
    lda();
    ldx();
}

void sax()
{
    sta();
    stx();
    putvalue(a & x);
}

void dcp()
{
    dec();
    cmp();
}

void isb()
{
    inc();
    sbc();
}

void slo()
{
    asl();
    ora();
}

void rla()
{
    rol();
    op_and();
}

void sre()
{
    lsr();
    eor();
}

void rra()
{
    ror();
    adc();
}
#else
#define lax nop
#define sax nop
#define dcp nop
#define isb nop
#define slo nop
#define rla nop
#define sre nop
#define rra nop
#endif


void nmi6502()
{
    push16(pc);
    push8(cpustatus);
    cpustatus |= FLAG_INTERRUPT;
    pc = (uint16_t)read6502(0xFFFA) | ((uint16_t)read6502(0xFFFB) << 8);
}

void irq6502()
{
    push16(pc);
    push8(cpustatus);
    cpustatus |= FLAG_INTERRUPT;
    pc = (uint16_t)read6502(0xFFFE) | ((uint16_t)read6502(0xFFFF) << 8);
}

#ifdef USE_TIMING
prog_char ticktable[256] PROGMEM = {
    /*        |  0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  A  |  B  |  C  |  D  |  E  |  F  |     */
    /* 0 */      7,    6,    2,    8,    3,    3,    5,    5,    3,    2,    2,    2,    4,    4,    6,    6,  /* 0 */
    /* 1 */      2,    5,    2,    8,    4,    4,    6,    6,    2,    4,    2,    7,    4,    4,    7,    7,  /* 1 */
    /* 2 */      6,    6,    2,    8,    3,    3,    5,    5,    4,    2,    2,    2,    4,    4,    6,    6,  /* 2 */
    /* 3 */      2,    5,    2,    8,    4,    4,    6,    6,    2,    4,    2,    7,    4,    4,    7,    7,  /* 3 */
    /* 4 */      6,    6,    2,    8,    3,    3,    5,    5,    3,    2,    2,    2,    3,    4,    6,    6,  /* 4 */
    /* 5 */      2,    5,    2,    8,    4,    4,    6,    6,    2,    4,    2,    7,    4,    4,    7,    7,  /* 5 */
    /* 6 */      6,    6,    2,    8,    3,    3,    5,    5,    4,    2,    2,    2,    5,    4,    6,    6,  /* 6 */
    /* 7 */      2,    5,    2,    8,    4,    4,    6,    6,    2,    4,    2,    7,    4,    4,    7,    7,  /* 7 */
    /* 8 */      2,    6,    2,    6,    3,    3,    3,    3,    2,    2,    2,    2,    4,    4,    4,    4,  /* 8 */
    /* 9 */      2,    6,    2,    6,    4,    4,    4,    4,    2,    5,    2,    5,    5,    5,    5,    5,  /* 9 */
    /* A */      2,    6,    2,    6,    3,    3,    3,    3,    2,    2,    2,    2,    4,    4,    4,    4,  /* A */
    /* B */      2,    5,    2,    5,    4,    4,    4,    4,    2,    4,    2,    4,    4,    4,    4,    4,  /* B */
    /* C */      2,    6,    2,    8,    3,    3,    5,    5,    2,    2,    2,    2,    4,    4,    6,    6,  /* C */
    /* D */      2,    5,    2,    8,    4,    4,    6,    6,    2,    4,    2,    7,    4,    4,    7,    7,  /* D */
    /* E */      2,    6,    2,    8,    3,    3,    5,    5,    2,    2,    2,    2,    4,    4,    6,    6,  /* E */
    /* F */      2,    5,    2,    8,    4,    4,    6,    6,    2,    4,    2,    7,    4,    4,    7,    7   /* F */
};
#endif

void exec6502(int32_t tickcount)
{
#ifdef USE_TIMING
    clockgoal6502 += tickcount;

    while (clockgoal6502 > 0) {
#else
    while (tickcount--) {
#endif
        opcode = read6502(pc++);
        cpustatus |= FLAG_CONSTANT;

        useaccum = 0;

        switch (opcode) {
            case 0x0:
                imp();
                brk();
                break;
            case 0x1:
                indx();
                ora();
                break;
            case 0x5:
                zp();
                ora();
                break;
            case 0x6:
                zp();
                asl();
                break;
            case 0x8:
                imp();
                php();
                break;
            case 0x9:
                imm();
                ora();
                break;
            case 0xA:
                acc();
                asl();
                break;
            case 0xD:
                abso();
                ora();
                break;
            case 0xE:
                abso();
                asl();
                break;
            case 0x10:
                rel();
                bpl();
                break;
            case 0x11:
                indy();
                ora();
                break;
            case 0x15:
                zpx();
                ora();
                break;
            case 0x16:
                zpx();
                asl();
                break;
            case 0x18:
                imp();
                clc();
                break;
            case 0x19:
                absy();
                ora();
                break;
            case 0x1D:
                absx();
                ora();
                break;
            case 0x1E:
                absx();
                asl();
                break;
            case 0x20:
                abso();
                jsr();
                break;
            case 0x21:
                indx();
                op_and();
                break;
            case 0x24:
                zp();
                op_bit();
                break;
            case 0x25:
                zp();
                op_and();
                break;
            case 0x26:
                zp();
                rol();
                break;
            case 0x28:
                imp();
                plp();
                break;
            case 0x29:
                imm();
                op_and();
                break;
            case 0x2A:
                acc();
                rol();
                break;
            case 0x2C:
                abso();
                op_bit();
                break;
            case 0x2D:
                abso();
                op_and();
                break;
            case 0x2E:
                abso();
                rol();
                break;
            case 0x30:
                rel();
                bmi();
                break;
            case 0x31:
                indy();
                op_and();
                break;
            case 0x35:
                zpx();
                op_and();
                break;
            case 0x36:
                zpx();
                rol();
                break;
            case 0x38:
                imp();
                sec();
                break;
            case 0x39:
                absy();
                op_and();
                break;
            case 0x3D:
                absx();
                op_and();
                break;
            case 0x3E:
                absx();
                rol();
                break;
            case 0x40:
                imp();
                rti();
                break;
            case 0x41:
                indx();
                eor();
                break;
            case 0x45:
                zp();
                eor();
                break;
            case 0x46:
                zp();
                lsr();
                break;
            case 0x48:
                imp();
                pha();
                break;
            case 0x49:
                imm();
                eor();
                break;
            case 0x4A:
                acc();
                lsr();
                break;
            case 0x4C:
                abso();
                jmp();
                break;
            case 0x4D:
                abso();
                eor();
                break;
            case 0x4E:
                abso();
                lsr();
                break;
            case 0x50:
                rel();
                bvc();
                break;
            case 0x51:
                indy();
                eor();
                break;
            case 0x55:
                zpx();
                eor();
                break;
            case 0x56:
                zpx();
                lsr();
                break;
            case 0x58:
                imp();
                cli();
                break;
            case 0x59:
                absy();
                eor();
                break;
            case 0x5D:
                absx();
                eor();
                break;
            case 0x5E:
                absx();
                lsr();
                break;
            case 0x60:
                imp();
                rts();
                break;
            case 0x61:
                indx();
                adc();
                break;
            case 0x65:
                zp();
                adc();
                break;
            case 0x66:
                zp();
                ror();
                break;
            case 0x68:
                imp();
                pla();
                break;
            case 0x69:
                imm();
                adc();
                break;
            case 0x6A:
                acc();
                ror();
                break;
            case 0x6C:
                ind();
                jmp();
                break;
            case 0x6D:
                abso();
                adc();
                break;
            case 0x6E:
                abso();
                ror();
                break;
            case 0x70:
                rel();
                bvs();
                break;
            case 0x71:
                indy();
                adc();
                break;
            case 0x75:
                zpx();
                adc();
                break;
            case 0x76:
                zpx();
                ror();
                break;
            case 0x78:
                imp();
                sei();
                break;
            case 0x79:
                absy();
                adc();
                break;
            case 0x7D:
                absx();
                adc();
                break;
            case 0x7E:
                absx();
                ror();
                break;
            case 0x81:
                indx();
                sta();
                break;
            case 0x84:
                zp();
                sty();
                break;
            case 0x85:
                zp();
                sta();
                break;
            case 0x86:
                zp();
                stx();
                break;
            case 0x88:
                imp();
                dey();
                break;
            case 0x8A:
                imp();
                txa();
                break;
            case 0x8C:
                abso();
                sty();
                break;
            case 0x8D:
                abso();
                sta();
                break;
            case 0x8E:
                abso();
                stx();
                break;
            case 0x90:
                rel();
                bcc();
                break;
            case 0x91:
                indy();
                sta();
                break;
            case 0x94:
                zpx();
                sty();
                break;
            case 0x95:
                zpx();
                sta();
                break;
            case 0x96:
                zpy();
                stx();
                break;
            case 0x98:
                imp();
                tya();
                break;
            case 0x99:
                absy();
                sta();
                break;
            case 0x9A:
                imp();
                txs();
                break;
            case 0x9D:
                absx();
                sta();
                break;
            case 0xA0:
                imm();
                ldy();
                break;
            case 0xA1:
                indx();
                lda();
                break;
            case 0xA2:
                imm();
                ldx();
                break;
            case 0xA4:
                zp();
                ldy();
                break;
            case 0xA5:
                zp();
                lda();
                break;
            case 0xA6:
                zp();
                ldx();
                break;
            case 0xA8:
                imp();
                tay();
                break;
            case 0xA9:
                imm();
                lda();
                break;
            case 0xAA:
                imp();
                tax();
                break;
            case 0xAC:
                abso();
                ldy();
                break;
            case 0xAD:
                abso();
                lda();
                break;
            case 0xAE:
                abso();
                ldx();
                break;
            case 0xB0:
                rel();
                bcs();
                break;
            case 0xB1:
                indy();
                lda();
                break;
            case 0xB4:
                zpx();
                ldy();
                break;
            case 0xB5:
                zpx();
                lda();
                break;
            case 0xB6:
                zpy();
                ldx();
                break;
            case 0xB8:
                imp();
                clv();
                break;
            case 0xB9:
                absy();
                lda();
                break;
            case 0xBA:
                imp();
                tsx();
                break;
            case 0xBC:
                absx();
                ldy();
                break;
            case 0xBD:
                absx();
                lda();
                break;
            case 0xBE:
                absy();
                ldx();
                break;
            case 0xC0:
                imm();
                cpy();
                break;
            case 0xC1:
                indx();
                cmp();
                break;
            case 0xC4:
                zp();
                cpy();
                break;
            case 0xC5:
                zp();
                cmp();
                break;
            case 0xC6:
                zp();
                dec();
                break;
            case 0xC8:
                imp();
                iny();
                break;
            case 0xC9:
                imm();
                cmp();
                break;
            case 0xCA:
                imp();
                dex();
                break;
            case 0xCC:
                abso();
                cpy();
                break;
            case 0xCD:
                abso();
                cmp();
                break;
            case 0xCE:
                abso();
                dec();
                break;
            case 0xD0:
                rel();
                bne();
                break;
            case 0xD1:
                indy();
                cmp();
                break;
            case 0xD5:
                zpx();
                cmp();
                break;
            case 0xD6:
                zpx();
                dec();
                break;
            case 0xD8:
                imp();
                cld();
                break;
            case 0xD9:
                absy();
                cmp();
                break;
            case 0xDD:
                absx();
                cmp();
                break;
            case 0xDE:
                absx();
                dec();
                break;
            case 0xE0:
                imm();
                cpx();
                break;
            case 0xE1:
                indx();
                sbc();
                break;
            case 0xE4:
                zp();
                cpx();
                break;
            case 0xE5:
                zp();
                sbc();
                break;
            case 0xE6:
                zp();
                inc();
                break;
            case 0xE8:
                imp();
                inx();
                break;
            case 0xE9:
                imm();
                sbc();
                break;
            case 0xEB:
                imm();
                sbc();
                break;
            case 0xEC:
                abso();
                cpx();
                break;
            case 0xED:
                abso();
                sbc();
                break;
            case 0xEE:
                abso();
                inc();
                break;
            case 0xF0:
                rel();
                beq();
                break;
            case 0xF1:
                indy();
                sbc();
                break;
            case 0xF5:
                zpx();
                sbc();
                break;
            case 0xF6:
                zpx();
                inc();
                break;
            case 0xF8:
                imp();
                sed();
                break;
            case 0xF9:
                absy();
                sbc();
                break;
            case 0xFD:
                absx();
                sbc();
                break;
            case 0xFE:
                absx();
                inc();
                break;
        }
#ifdef USE_TIMING
        clockgoal6502 -= (int32_t)pgm_read_byte_near(ticktable + opcode);
#endif
        instructions++;
    }
}

uint16_t getpc()
{
    return(pc);
}

uint8_t getop()
{
    return(opcode);
}