serial port output, basic, nucleo STM32F401Re board
Diff: cpu.c
- Revision:
- 0:1dac8a6d8994
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cpu.c Fri Sep 04 08:29:15 2015 +0000 @@ -0,0 +1,2462 @@ +#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); +}