]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
New debugger features (executable debugging, invalid memory access checker, segtracke...
authorToni Wilen <twilen@winuae.net>
Sun, 25 Mar 2018 10:05:23 +0000 (13:05 +0300)
committerToni Wilen <twilen@winuae.net>
Sun, 25 Mar 2018 10:05:23 +0000 (13:05 +0300)
17 files changed:
cfgfile.cpp
custom.cpp
debug.cpp
debugmem.cpp [new file with mode: 0644]
enforcer.cpp
filesys.cpp
filesys_bootrom.cpp
gencpu.cpp
include/debug.h
include/debugmem.h [new file with mode: 0644]
include/memory.h
include/newcpu.h
include/options.h
memory.cpp
newcpu.cpp
od-win32/debug_win32.cpp
od-win32/win32.cpp

index 596a476037d172108a27eddfc9221d94807980cb..cecd6082b5da5438d034d6762981740f578aa892 100644 (file)
@@ -1595,6 +1595,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
 
        cfgfile_write_str (f, _T("use_gui"), guimode1[p->start_gui]);
        cfgfile_write_bool (f, _T("use_debugger"), p->start_debugger);
+       cfgfile_dwrite_bool(f, _T("debugging_features"), p->debugging_features);
 
        cfgfile_write_rom (f, &p->path_rom, p->romfile, _T("kickstart_rom_file"));
        cfgfile_write_rom (f, &p->path_rom, p->romextfile, _T("kickstart_ext_rom_file"));
@@ -2212,9 +2213,11 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
                }
                cfgfile_writeramboard(p, f, _T("fastmem"), i, &p->fastmem[i]);
        }
-       cfgfile_write (f, _T("mem25bit_size"), _T("%d"), p->mem25bit_size / 0x100000);
-       cfgfile_write (f, _T("a3000mem_size"), _T("%d"), p->mbresmem_low_size / 0x100000);
-       cfgfile_write (f, _T("mbresmem_size"), _T("%d"), p->mbresmem_high_size / 0x100000);
+       cfgfile_write(f, _T("debugmem_start"), _T("0x%x"), p->debugmem_start);
+       cfgfile_write(f, _T("debugmem_size"), _T("%d"), p->debugmem_size / 0x100000);
+       cfgfile_write(f, _T("mem25bit_size"), _T("%d"), p->mem25bit_size / 0x100000);
+       cfgfile_write(f, _T("a3000mem_size"), _T("%d"), p->mbresmem_low_size / 0x100000);
+       cfgfile_write(f, _T("mbresmem_size"), _T("%d"), p->mbresmem_high_size / 0x100000);
        for (int i = 0; i < MAX_RAM_BOARDS; i++) {
                if (i == 0 || p->z3fastmem[i].size) {
                        if (i > 0)
@@ -2225,7 +2228,7 @@ void cfgfile_save_options (struct zfile *f, struct uae_prefs *p, int type)
                }
                cfgfile_writeramboard(p, f, _T("z3mem"), i, &p->z3fastmem[i]);
        }
-       cfgfile_write (f, _T("z3mem_start"), _T("0x%x"), p->z3autoconfig_start);
+       cfgfile_write(f, _T("z3mem_start"), _T("0x%x"), p->z3autoconfig_start);
        cfgfile_write(f, _T("bogomem_size"), _T("%d"), p->bogomem_size / 0x40000);
        if (p->cpuboard_type) {
                const struct cpuboardtype *cbt = &cpuboards[p->cpuboard_type];
@@ -3040,6 +3043,7 @@ static int cfgfile_parse_host (struct uae_prefs *p, TCHAR *option, TCHAR *value)
                return 1;
 
        if (cfgfile_yesno(option, value, _T("use_debugger"), &p->start_debugger)
+               || cfgfile_yesno(option, value, _T("debugging_features"), &p->debugging_features)
                || cfgfile_yesno(option, value, _T("floppy0wp"), &p->floppyslots[0].forcedwriteprotect)
                || cfgfile_yesno(option, value, _T("floppy1wp"), &p->floppyslots[1].forcedwriteprotect)
                || cfgfile_yesno(option, value, _T("floppy2wp"), &p->floppyslots[2].forcedwriteprotect)
index bcd9e920a80dc7d24613f49d8194938c7ee5ce14..7bef8fc033a4d2a0d503b221ceacc735071199ff 100644 (file)
@@ -4977,7 +4977,9 @@ static void immediate_copper (int num)
                        pos = oldpos;
                if (!dmaen(DMA_COPPER))
                        break;
-               if (cop_state.ip >= currprefs.chipmem_size && (cop_state.ip < currprefs.z3chipmem_start || cop_state.ip >= currprefs.z3chipmem_start + currprefs.z3chipmem_size))
+               if (cop_state.ip >= currprefs.chipmem_size &&
+                       (cop_state.ip < currprefs.z3chipmem_start || cop_state.ip >= currprefs.z3chipmem_start + currprefs.z3chipmem_size) &&
+                       (cop_state.ip < debugmem_bank.start || cop_state.ip >= debugmem_bank.start + debugmem_bank.allocated_size))
                        break;
                pos++;
                oldpos = pos;
index fb85474c96f6a53e0c4e47774f52581973b43e90..07b92d5df64e581d8ea1c6b6da1ab5b0d9a9502c 100644 (file)
--- a/debug.cpp
+++ b/debug.cpp
@@ -21,6 +21,7 @@
 #include "newcpu.h"
 #include "cpu_prefetch.h"
 #include "debug.h"
+#include "debugmem.h"
 #include "cia.h"
 #include "xwin.h"
 #include "identify.h"
 #include "drawing.h"
 #include "devices.h"
 
+#define TRACE_SKIP_INS 1
+#define TRACE_MATCH_PC 2
+#define TRACE_MATCH_INS 3
+#define TRACE_RANGE_PC 4
+#define TRACE_SKIP_LINE 5
+#define TRACE_CHECKONLY 10
+
+static int trace_mode;
+static uae_u32 trace_param1;
+static uae_u32 trace_param2;
+
 int debugger_active;
-static uaecptr skipaddr_start, skipaddr_end;
-static int skipaddr_doskip;
-static uae_u32 skipins;
-static int do_skip;
 static int debug_rewind;
 static int memwatch_triggered;
 int memwatch_enabled;
@@ -64,6 +72,7 @@ int debug_illegal = 0;
 uae_u64 debug_illegal_mask;
 static int debug_mmu_mode;
 static bool break_if_enforcer;
+static uaecptr debug_pc;
 
 static uaecptr processptr;
 static uae_char *processname;
@@ -81,17 +90,29 @@ void deactivate_debugger (void)
        processptr = 0;
        xfree (processname);
        processname = NULL;
+       debugmem_enable();
+       debug_pc = 0xffffffff;
 }
 
 void activate_debugger (void)
 {
-       do_skip = 0;
+       debugger_load_libraries();
+
+       debug_pc = 0xffffffff;
+       trace_mode = 0;
        if (debugger_active)
                return;
        debugger_active = 1;
        set_special (SPCFLAG_BRK);
        debugging = 1;
        mmu_triggered = 0;
+       debugmem_disable();
+}
+
+void activate_debugger_new(void)
+{
+       activate_debugger();
+       debug_pc = M68K_GETPC;
 }
 
 bool debug_enforcer(void)
@@ -650,7 +671,7 @@ static int readregx (TCHAR **c, uae_u32 *valp)
        int i;
        uae_u32 addr;
        TCHAR *p = *c;
-       TCHAR tmp[10];
+       TCHAR tmp[10], *tp;
        int extra = 0;
 
        addr = 0;
@@ -662,30 +683,31 @@ static int readregx (TCHAR **c, uae_u32 *valp)
                i++;
        }
        tmp[i] = 0;
+       tp = tmp;
        if (_totupper (tmp[0]) == 'R') {
-               memmove (tmp, tmp + 1, sizeof (tmp) - sizeof (TCHAR));
+               tp = tmp + 1;
                extra = 1;
        }
-       if (!_tcsncmp (tmp, _T("USP"), 3)) {
+       if (!_tcsncmp (tp, _T("USP"), 3)) {
                addr = regs.usp;
                (*c) += 3;
-       } else if (!_tcsncmp (tmp, _T("VBR"), 3)) {
+       } else if (!_tcsncmp (tp, _T("VBR"), 3)) {
                addr = regs.vbr;
                (*c) += 3;
-       } else if (!_tcsncmp (tmp, _T("MSP"), 3)) {
+       } else if (!_tcsncmp (tp, _T("MSP"), 3)) {
                addr = regs.msp;
                (*c) += 3;
-       } else if (!_tcsncmp (tmp, _T("ISP"), 3)) {
+       } else if (!_tcsncmp (tp, _T("ISP"), 3)) {
                addr = regs.isp;
                (*c) += 3;
-       } else if (!_tcsncmp (tmp, _T("PC"), 2)) {
+       } else if (!_tcsncmp (tp, _T("PC"), 2)) {
                addr = regs.pc;
                (*c) += 2;
-       } else if (tmp[0] == 'A' || tmp[0] == 'D') {
+       } else if (tp[0] == 'A' || tp[0] == 'D') {
                int reg = 0;
-               if (tmp[0] == 'A')
+               if (tp[0] == 'A')
                        reg += 8;
-               reg += tmp[1] - '0';
+               reg += tp[1] - '0';
                if (reg < 0 || reg > 15)
                        return 0;
                addr = regs.regs[reg];
@@ -789,9 +811,21 @@ static int checkvaltype2 (TCHAR **c, uae_u32 *val, TCHAR def)
                if (readregx (c, val))
                        return 1;
        }
+       TCHAR name[256];
+       name[0] = 0;
+       for (int i = 0; i < sizeof name / sizeof(TCHAR) - 1; i++) {
+               nc = (*c)[i];
+               if (nc == 0 || nc == ' ')
+                       break;
+               name[i] = nc;
+               name[i + 1] = 0;
+       }
+       if (name[0] && debugmem_get_symbol_value(name, val)) {
+               (*c) += _tcslen(name);
+               return 1;
+       }
        if (def == '!') {
                return readintx (c, val) ? -1 : 0;
-               return -1;
        } else if (def == '$') {
                return readhexx (c, val) ? -1 : 0;
        } else if (def == '%') {
@@ -2030,11 +2064,11 @@ void record_copper (uaecptr addr, uae_u16 word1, uae_u16 word2, int hpos, int vp
        }
        if (debug_copper & 2) { /* trace */
                debug_copper &= ~2;
-               activate_debugger ();
+               activate_debugger_new();
        }
        if ((debug_copper & 4) && addr >= debug_copper_pc && addr <= debug_copper_pc + 3) {
                debug_copper &= ~4;
-               activate_debugger ();
+               activate_debugger_new();
        }
 }
 
@@ -2583,15 +2617,15 @@ static void illg_debug_do (uaecptr addr, int rwi, int size, uae_u32 val)
                        else if (rwi & 1)
                                console_out_f (_T("R: %08X    PC=%08X\n"), ad, pc);
                        if (illgdebug_break)
-                               activate_debugger ();
+                               activate_debugger_new();
                } else if (!(mask & 1) && (rwi & 1)) {
                        console_out_f (_T("RO: %08X=%02X PC=%08X\n"), ad, v, pc);
                        if (illgdebug_break)
-                               activate_debugger ();
+                               activate_debugger_new();
                } else if (!(mask & 2) && (rwi & 2)) {
                        console_out_f (_T("WO: %08X    PC=%08X\n"), ad, pc);
                        if (illgdebug_break)
-                               activate_debugger ();
+                               activate_debugger_new();
                }
        }
 }
@@ -2701,7 +2735,7 @@ static void smc_detector (uaecptr addr, int rwi, int size, uae_u32 *valp)
                console_out_f (_T("SMC at %08X - %08X (%d) from %08X\n"),
                        hitaddr, hitaddr + hitcnt, hitcnt, hitpc);
                if (smc_mode)
-                       activate_debugger ();
+                       activate_debugger_new();
                if (smc_table[hitaddr].cnt >= SMC_MAXHITS)
                        console_out_f (_T("* hit count >= %d, future hits ignored\n"), SMC_MAXHITS);
        }
@@ -2945,6 +2979,7 @@ static int memwatch_func (uaecptr addr, int rwi, int size, uae_u32 *valp, uae_u3
                        mwhit.val = val;
                memwatch_triggered = i + 1;
                debugging = 1;
+               debug_pc = mwhit.pc;
                set_special (SPCFLAG_BRK);
                return 1;
        }
@@ -4442,11 +4477,10 @@ int instruction_breakpoint (TCHAR **c)
                } else if (nc == 'I') {
                        next_char (c);
                        if (more_params (c))
-                               skipins = readhex (c);
+                               trace_param1 = readhex (c);
                        else
-                               skipins = 0x10000;
-                       do_skip = 1;
-                       skipaddr_doskip = 1;
+                               trace_param1 = 0x10000;
+                       trace_mode = TRACE_MATCH_INS;
                        return 1;
                } else if (nc == 'D' && (*c)[1] == 0) {
                        for (i = 0; i < BREAKPOINT_TOTAL; i++)
@@ -4477,18 +4511,17 @@ int instruction_breakpoint (TCHAR **c)
                                console_out (_T("\n"));
                        return 0;
                }
-               skipaddr_doskip = 1;
-               skipaddr_start = readhex (c);
+               trace_mode = TRACE_RANGE_PC;
+               trace_param1 = readhex (c);
                if (more_params (c)) {
-                       skipaddr_end = readhex (c);
+                       trace_param2 = readhex (c);
                } else {
                        for (i = 0; i < BREAKPOINT_TOTAL; i++) {
                                bpn = &bpnodes[i];
-                               if (bpn->enabled && bpn->value1 == skipaddr_start) {
+                               if (bpn->enabled && bpn->value1 == trace_param1) {
                                        bpn->enabled = 0;
                                        console_out (_T("Breakpoint removed.\n"));
-                                       skipaddr_start = 0xffffffff;
-                                       skipaddr_doskip = 0;
+                                       trace_mode = 0;
                                        return 0;
                                }
                        }
@@ -4496,28 +4529,18 @@ int instruction_breakpoint (TCHAR **c)
                                bpn = &bpnodes[i];
                                if (bpn->enabled)
                                        continue;
-                               bpn->value1 = skipaddr_start;
+                               bpn->value1 = trace_param1;
                                bpn->type = BREAKPOINT_REG_PC;
                                bpn->oper = BREAKPOINT_CMP_EQUAL;
                                bpn->enabled = 1;
                                console_out (_T("Breakpoint added.\n"));
-                               skipaddr_start = 0xffffffff;
-                               skipaddr_doskip = 0;
+                               trace_mode = 0;
                                break;
                        }
                        return 0;
                }
        }
-#if 0
-       if (skipaddr_start == 0xC0DEDBAD) {
-               trace_same_insn_count = 0;
-               logfile = fopen ("uae.trace", "w");
-               memcpy (trace_insn_copy, regs.pc_p, 10);
-               memcpy (&trace_prev_regs, &regs, sizeof regs);
-       }
-#endif
-       do_skip = 1;
-       skipaddr_doskip = -1;
+       trace_mode = TRACE_CHECKONLY;
        return 1;
 }
 
@@ -4535,9 +4558,7 @@ static int process_breakpoint (TCHAR **c)
        } else {
                processptr = readhex (c);
        }
-       do_skip = 1;
-       skipaddr_doskip = 1;
-       skipaddr_start = 0;
+       trace_mode = TRACE_CHECKONLY;
        return 1;
 }
 
@@ -4742,7 +4763,7 @@ void debugtest (enum debugtest_item di, const TCHAR *format, ...)
        va_end (parms);
        write_log (_T("%s PC=%08X: %s\n"), debugtest_names[di], M68K_GETPC, buffer);
        if (debugtest_modes[di] == 2)
-               activate_debugger ();
+               activate_debugger_new();
 }
 
 static void debugtest_set (TCHAR **inptr)
@@ -5034,9 +5055,9 @@ static void find_ea (TCHAR **inptr)
                if ((addr & 1) == 0 && addr + 6 <= end) {
                        sea = 0xffffffff;
                        dea = 0xffffffff;
-                       m68k_disasm_ea (addr, NULL, 1, &sea, &dea);
+                       m68k_disasm_ea (addr, NULL, 1, &sea, &dea, 0xffffffff);
                        if (ea == sea || ea == dea) {
-                               m68k_disasm (addr, NULL, 1);
+                               m68k_disasm (addr, NULL, 1, 0xffffffff);
                                hits++;
                                if (hits > 100) {
                                        console_out_f (_T("Too many hits. End addr = %08X\n"), addr);
@@ -5174,7 +5195,7 @@ static bool debug_line (TCHAR *input)
                                for (int i = 0; i < inss; i++) {
                                        put_word(asmaddr + i * 2, asmout[i]);
                                }
-                               m68k_disasm(asmaddr, &nxdis, 1);
+                               m68k_disasm(asmaddr, &nxdis, 0xffffffff, 1);
                                asmaddr = nxdis;
                        }
                        console_out_f(_T("%08X "), asmaddr);
@@ -5225,17 +5246,22 @@ static bool debug_line (TCHAR *input)
                }
                case 'e': dump_custom_regs (tolower(*inptr) == 'a'); break;
                case 'r':
-                       {
-                               if (*inptr == 'c') {
-                                       next_char(&inptr);
-                                       m68k_dumpcache (*inptr == 'd');
-                               } else if (more_params(&inptr)) {
-                                       m68k_modify (&inptr);
-                               } else {
-                                       m68k_dumpstate (&nextpc);
-                               }
+               {
+                       if (*inptr == 'c') {
+                               next_char(&inptr);
+                               m68k_dumpcache(*inptr == 'd');
+                       } else if (*inptr == 's') {
+                               if (*(inptr + 1) == 's')
+                                       debugmem_list_stackframe(true);
+                               else
+                                       debugmem_list_stackframe(false);
+                       } else if (more_params(&inptr)) {
+                               m68k_modify(&inptr);
+                       } else {
+                               m68k_dumpstate(&nextpc, 0xffffffff);
                        }
-                       break;
+               }
+               break;
                case 'D': deepcheatsearch (&inptr); break;
                case 'C': cheatsearch (&inptr); break;
                case 'W': writeintomem (&inptr); break;
@@ -5243,7 +5269,19 @@ static bool debug_line (TCHAR *input)
                case 'S': saveloadmem (&inptr, true); break;
                case 'L': saveloadmem (&inptr, false); break;
                case 's':
-                       if (*inptr == 'c') {
+                       if (*inptr == 'e' && *(inptr + 1) == 'g') {
+                               next_char(&inptr);
+                               next_char(&inptr);
+                               addr = 0xffffffff;
+                               if (*inptr == 's') {
+                                       debugmem_list_segment(1, addr);
+                               } else {
+                                       if (more_params(&inptr)) {
+                                               addr = readhex(&inptr);
+                                       }
+                                       debugmem_list_segment(0, addr);
+                               }
+                       } else if (*inptr == 'c') {
                                screenshot (1, 1);
                        } else if (*inptr == 'p') {
                                inptr++;
@@ -5272,7 +5310,7 @@ static bool debug_line (TCHAR *input)
                                                for (int i = 0; i < inss; i++) {
                                                        put_word(asmaddr + i * 2, asmout[i]);
                                                }
-                                               m68k_disasm(asmaddr, &nxdis, 1);
+                                               m68k_disasm(asmaddr, &nxdis, 1, 0xffffffff);
                                                asmaddr = nxdis;
                                                return false;
                                        }
@@ -5325,34 +5363,68 @@ static bool debug_line (TCHAR *input)
                                        if (ppcmode) {
                                                ppc_disasm(daddr, &nxdis, count);
                                        } else {
-                                               m68k_disasm (daddr, &nxdis, count);
+                                               m68k_disasm (daddr, &nxdis, 0xffffffff, count);
                                        }
                                }
                        }
                        break;
                case 'T':
-                       if (inptr[0] == 't' || inptr[0] == 0)
+                       if (inptr[0] == 'L')
+                               debugger_scan_libraries();
+                       else if (inptr[0] == 't' || inptr[0] == 0)
                                show_exec_tasks ();
                        else
                                show_exec_lists (&inptr[0]);
                        break;
                case 't':
                        no_trace_exceptions = 0;
-                       if (*inptr != 't') {
-                               if (more_params (&inptr))
-                                       skipaddr_doskip = readint (&inptr);
-                               if (skipaddr_doskip <= 0 || skipaddr_doskip > 10000)
-                                       skipaddr_doskip = 1;
-                       } else {
+                       if (*inptr == 't') {
                                no_trace_exceptions = 1;
+                               inptr++;
                        }
-                       set_special (SPCFLAG_BRK);
-                       exception_debugging = 1;
-                       return true;
+                       if (*inptr == 'r') {
+                               // break when PC in debugmem
+                               if (debugmem_get_range(&trace_param1, &trace_param2)) {
+                                       trace_mode = TRACE_RANGE_PC;
+                                       return true;
+                               }
+                       } else if (*inptr == 's') {
+                               if (*(inptr + 1) == 'e') {
+                                       debugmem_enable_stackframe(true);
+                               } else if (*(inptr + 1) == 'd') {
+                                       debugmem_enable_stackframe(false);
+                               } else if (*(inptr + 1) == 'p') {
+                                       if (debugmem_break_stack_pop()) {
+                                               debugger_active = 0;
+                                               return true;
+                                       }
+                               } else {
+                                       if (debugmem_break_stack_pop()) {
+                                               debugger_active = 0;
+                                               return true;
+                                       }
+                               }
+                       } else if (*inptr == 'l') {
+                               // skip next source line
+                               if (debugmem_isactive()) {
+                                       trace_mode = TRACE_SKIP_LINE;
+                                       trace_param1 = 1;
+                                       trace_param2 = debugmem_get_sourceline(M68K_GETPC, NULL, 0);
+                                       return true;
+                               }
+                       } else {
+                               if (more_params(&inptr))
+                                       trace_param1 = readint(&inptr);
+                               if (trace_param1 <= 0 || trace_param1 > 10000)
+                                       trace_param1 = 1;
+                               trace_mode = TRACE_SKIP_INS;
+                               exception_debugging = 1;
+                               return true;
+                       }
+                       break;
                case 'z':
-                       skipaddr_start = nextpc;
-                       skipaddr_doskip = 1;
-                       do_skip = 1;
+                       trace_mode = TRACE_MATCH_PC;
+                       trace_param1 = nextpc;
                        exception_debugging = 1;
                        return true;
 
@@ -5440,7 +5512,7 @@ static bool debug_line (TCHAR *input)
                                        if (regs.pc == addr || addr == 0) {
                                                m68k_setpc (regs.pc);
                                                if (badly) {
-                                                       m68k_dumpstate (NULL);
+                                                       m68k_dumpstate(NULL, 0xffffffff);
                                                } else {
                                                        if (lastvpos >= 0) {
                                                                dma_disasm(lastframes, lastvpos, lasthpos, history[temp].fp, history[temp].vpos, history[temp].hpos);
@@ -5449,7 +5521,7 @@ static bool debug_line (TCHAR *input)
                                                        lastvpos = history[temp].vpos;
                                                        lasthpos = history[temp].hpos;
                                                        console_out_f(_T("%2d "), regs.intmask ? regs.intmask : (regs.s ? -1 : 0));
-                                                       m68k_disasm (regs.pc, NULL, 1);
+                                                       m68k_disasm (regs.pc, NULL, 0xffffffff, 1);
                                                }
                                                if (addr && regs.pc == addr)
                                                        break;
@@ -5648,6 +5720,25 @@ static bool debug_line (TCHAR *input)
                        if (staterecorder (&inptr))
                                return true;
                        break;
+               case 'u':
+                       {
+                               if (more_params(&inptr)) {
+                                       if (*inptr == 'a') {
+                                               debugmem_inhibit_break(1);
+                                               console_out(_T("All break to debugger methods inhibited.\n"));
+                                       } else if (*inptr == 'c') {
+                                               debugmem_inhibit_break(-1);
+                                               console_out(_T("All break to debugger methods allowed.\n"));
+                                       }
+                               } else {
+                                       if (debugmem_inhibit_break(0)) {
+                                               console_out(_T("Current break to debugger method inhibited.\n"));
+                                       } else {
+                                               console_out(_T("Current break to debugger method allowed.\n"));
+                                       }
+                               }
+                       }
+                       break;
                case 'U':
                        if (currprefs.mmu_model && more_params (&inptr)) {
                                int i;
@@ -5696,7 +5787,8 @@ static void debug_1 (void)
 {
        TCHAR input[MAX_LINEWIDTH];
 
-       m68k_dumpstate (&nextpc);
+       m68k_dumpstate(&nextpc, debug_pc);
+       debug_pc = 0xffffffff;
        nxdis = nextpc; nxmem = 0;
        debugger_active = 1;
 
@@ -5774,7 +5866,7 @@ void debug (void)
 #endif
 
        if (!memwatch_triggered) {
-               if (do_skip) {
+               if (trace_mode) {
                        uae_u32 pc;
                        uae_u16 opcode;
                        int bp = 0;
@@ -5789,7 +5881,6 @@ void debug (void)
                                if (bpn->type == BREAKPOINT_REG_PC) {
                                        if (bpn->value1 == pc) {
                                                bp = 1;
-                                               console_out_f (_T("Breakpoint at %08X\n"), pc);
                                                break;
                                        }
                                } else if (bpn->type >= 0 && bpn->type < BREAKPOINT_REG_END) {
@@ -5826,8 +5917,8 @@ void debug (void)
                                }
                        }
 
-                       if (skipaddr_doskip) {
-                               if (skipaddr_start == pc)
+                       if (trace_mode) {
+                               if (trace_mode == TRACE_MATCH_PC && trace_param1 == pc)
                                        bp = -1;
                                if ((processptr || processname) && notinrom()) {
                                        uaecptr execbase = get_long_debug (4);
@@ -5858,20 +5949,34 @@ void debug (void)
                                                        }
                                                }
                                        }
-                               } else if (skipins != 0xffffffff) {
-                                       if (skipins == 0x10000) {
+                               } else if (trace_mode == TRACE_MATCH_INS) {
+                                       if (trace_param1 == 0x10000) {
                                                if (opcode == 0x4e75 || opcode == 0x4e73 || opcode == 0x4e77)
                                                        bp = -1;
-                                       } else if (opcode == skipins)
+                                       } else if (opcode == trace_param1) {
                                                bp = -1;
-                               } else if (skipaddr_start == 0xffffffff && skipaddr_doskip < 0) {
-                                       if ((pc < 0xe00000 || pc >= 0x1000000) && opcode != 0x4ef9)
+                                       }
+                               } else if (trace_mode == TRACE_SKIP_INS) {
+                                       if (trace_param1 != 0)
+                                               trace_param1--;
+                                       if (trace_param1 == 0) {
                                                bp = -1;
+                                       }
+#if 0
                                } else if (skipaddr_start == 0xffffffff && skipaddr_doskip > 0) {
                                        bp = -1;
-                               } else if (skipaddr_end != 0xffffffff) {
-                                       if (pc >= skipaddr_start && pc < skipaddr_end)
+#endif
+                               } else if (trace_mode == TRACE_RANGE_PC) {
+                                       if (pc >= trace_param1 && pc < trace_param2)
                                                bp = -1;
+                               } else if (trace_mode == TRACE_SKIP_LINE) {
+                                       if (trace_param1 != 0)
+                                               trace_param1--;
+                                       if (trace_param1 == 0) {
+                                               int line = debugmem_get_sourceline(pc, NULL, 0);
+                                               if (line > 0 && line != trace_param2)
+                                                       bp = -1;
+                                       }
                                }
                        }
                        if (!bp) {
@@ -5892,13 +5997,6 @@ void debug (void)
                }
                memwatch_triggered = 0;
        }
-       if (skipaddr_doskip > 0) {
-               skipaddr_doskip--;
-               if (skipaddr_doskip > 0) {
-                       debug_continue();
-                       return;
-               }
-       }
 
        wasactive = ismouseactive ();
 #ifdef WITH_PPC
@@ -5908,11 +6006,7 @@ void debug (void)
        pause_sound ();
        setmouseactive (0);
        activate_console ();
-       do_skip = 0;
-       skipaddr_start = 0xffffffff;
-       skipaddr_end = 0xffffffff;
-       skipins = 0xffffffff;
-       skipaddr_doskip = 0;
+       trace_mode = 0;
        exception_debugging = 0;
        debug_rewind = 0;
        processptr = 0;
@@ -5922,7 +6016,9 @@ void debug (void)
                savestate_init ();
        }
 #endif
+       debugmem_disable();
        debug_1 ();
+       debugmem_enable();
        if (!debug_rewind && !currprefs.cachesize
 #ifdef FILESYS
                && nr_units () == 0
@@ -5930,11 +6026,13 @@ void debug (void)
                ) {
                        savestate_capture (1);
        }
-       for (i = 0; i < BREAKPOINT_TOTAL; i++) {
-               if (bpnodes[i].enabled)
-                       do_skip = 1;
+       if (!trace_mode) {
+               for (i = 0; i < BREAKPOINT_TOTAL; i++) {
+                       if (bpnodes[i].enabled)
+                               trace_mode = TRACE_CHECKONLY;
+               }
        }
-       if (do_skip) {
+       if (trace_mode) {
                set_special (SPCFLAG_BRK);
                debugging = -1;
        }
@@ -5958,8 +6056,8 @@ const TCHAR *debuginfo (int mode)
 void mmu_disasm (uaecptr pc, int lines)
 {
        debug_mmu_mode = regs.s ? 6 : 2;
-       m68k_dumpstate (0xffffffff, NULL);
-       m68k_disasm (pc, NULL, lines);
+       m68k_dumpstate(NULL, 0xffffffff);
+       m68k_disasm (pc, NULL, 0xffffffff, lines);
 }
 
 static int mmu_logging;
diff --git a/debugmem.cpp b/debugmem.cpp
new file mode 100644 (file)
index 0000000..6e5c754
--- /dev/null
@@ -0,0 +1,2607 @@
+
+/*
+ *
+ * Combined Enforcer, MungWall and SegTracker emulation.
+ *
+ */
+
+#include "sysconfig.h"
+#include "sysdeps.h"
+
+#include "options.h"
+#include "memory.h"
+#include "newcpu.h"
+#include "debug.h"
+#include "debugmem.h"
+#include "filesys.h"
+#include "zfile.h"
+#include "uae.h"
+#include "fsdb.h"
+
+#define N_GSYM 0x20
+#define N_FUN 0x24
+#define N_STSYM 0x26
+#define N_LCSYM 0x28
+#define N_MAIN 0x2a
+#define N_ROSYM 0x2c
+#define N_RSYM 0x40
+#define N_SLINE 0x44
+#define N_DSLINE 0x46
+#define N_SSYM 0x60
+#define N_SO 0x64
+#define N_LSYM 0x80
+#define N_SOL 0x84
+#define N_PSYM 0xa0
+#define N_EINCL 0xa2
+#define N_LBRAC 0xc0
+#define N_RBRAC 0xe0
+
+#define MAX_SOURCELINELEN 100
+
+static mem_get_func debugmem_func_lgeti;
+static mem_get_func debugmem_func_wgeti;
+static mem_get_func debugmem_func_lget;
+static mem_get_func debugmem_func_wget;
+static mem_get_func debugmem_func_bget;
+static mem_put_func debugmem_func_lput;
+static mem_put_func debugmem_func_wput;
+static mem_put_func debugmem_func_bput;
+static xlate_func debugmem_func_xlate;
+static bool debugmem_initialized;
+static bool debug_waiting;
+static uaecptr debug_task;
+static uae_u8 *exec_thistask;
+static int executable_last_segment;
+static bool libraries_loaded, fds_loaded;
+static bool debugmem_mapped;
+
+static int debugstack_word_state;
+static uaecptr debugstack_word_addr;
+static uaecptr debugstack_word_val;
+static bool break_stack_pop, break_stack_push, break_stack_s;
+static bool debugmem_active;
+static int stackframemode;
+
+uae_u32 debugmem_chiplimit;
+bool debugmem_trace;
+
+#define MAX_DEBUGMEMALLOCS 10000
+#define MAX_DEBUGSEGS 1000
+#define MAX_DEBUGSYMS 10000
+#define MAX_STACKVARS 10000
+#define MAX_DEBUGCODEFILES 1000
+#define MAX_STACKFRAMES 100
+
+
+struct debugstackframe
+{
+       uaecptr current_pc;
+       uaecptr branch_pc;
+       uaecptr next_pc;
+       uaecptr stack;
+       uae_u32 regs[16];
+       uae_u16 sr;
+};
+static struct debugstackframe *stackframes, *stackframessuper;
+static int stackframecnt, stackframecntsuper;
+
+static uae_u32 debugmemptr;
+
+struct stab
+{
+       TCHAR *string;
+       uae_u8 type;
+       uae_u8 other;
+       uae_u16 desc;
+       uae_u32 val;
+};
+static struct stab *stabs;
+static int stabscount;
+
+struct stabtype
+{
+       TCHAR *name;
+       uae_u32 id;
+};
+
+struct debugcodefile
+{
+       const TCHAR *name;
+       int length;
+       uae_u8 *data;
+       int lines;
+       uae_u8 **lineptr;
+       struct stabtype *stabtypes;
+       int stabtypecount;
+};
+static struct debugcodefile **codefiles;
+static int codefilecnt;
+
+struct linemapping
+{
+       struct debugcodefile *file;
+       int line;
+};
+static struct linemapping *linemap;
+static int linemapsize;
+
+#define SYMBOL_LOCAL 0
+#define SYMBOL_GLOBAL 1
+
+#define SYMBOLTYPE_FUNC 1
+
+struct debugsymbol
+{
+       TCHAR *name;
+       uae_u32 segment;
+       uae_u32 allocid;
+       uae_u32 value;
+       uae_u32 flags;
+       uae_u32 type;
+       struct debugmemallocs *section;
+       void *data;
+};
+static struct debugsymbol **symbols;
+static int symbolcnt;
+
+struct libname
+{
+       TCHAR *name;
+       uae_char *aname;
+       uae_u32 id;
+       uae_u32 base;
+};
+static struct libname *libnames;
+static int libnamecnt;
+struct libsymbol
+{
+       struct libname *lib;
+       TCHAR *name;
+       uae_u32 value;
+};
+static struct libsymbol *libsymbols;
+static int libsymbolcnt;
+
+struct stackvar
+{
+       TCHAR *name;
+       uae_u32 offset;
+       struct debugsymbol *func;
+};
+static struct stackvar **stackvars;
+static int stackvarcnt;
+
+#define DEBUGALLOC_HUNK 1
+#define DEBUGALLOC_ALLOCMEM 2
+#define DEBUGALLOC_ALLOCVEC 3
+#define DEBUGALLOC_SEG 4
+
+struct debugmemallocs
+{
+       uae_u16 type;
+       uae_u32 id;
+       uae_u16 internalid;
+       uae_u32 parentid;
+       uae_u32 idtype;
+       uaecptr start;
+       uae_u32 size;
+       uae_u32 start_page;
+       uae_u32 pages;
+       uaecptr pc;
+       uae_u32 data;
+       uae_u32 relative_start;
+};
+
+static struct debugmemallocs **allocs;
+static int alloccnt;
+
+#define HUNK_GAP 32768
+#define PAGE_SIZE 256
+#define PAGE_SIZE_MASK (PAGE_SIZE - 1)
+
+#define DEBUGMEM_READ 0x01
+#define DEBUGMEM_WRITE 0x02
+#define DEBUGMEM_FETCH 0x04
+#define DEBUGMEM_INITIALIZED 0x08
+#define DEBUGMEM_STARTBLOCK 0x10
+#define DEBUGMEM_ALLOCATED 0x40
+#define DEBUGMEM_INUSE 0x80
+#define DEBUGMEM_PARTIAL 0x100
+#define DEBUGMEM_NOSTACKCHECK 0x200
+#define DEBUGMEM_STACK 0x1000
+
+struct debugmemdata
+{
+       uae_u16 id;
+       uae_u16 flags;
+       uae_u8 unused_start;
+       uae_u8 unused_end;
+       uae_u8 state[PAGE_SIZE];
+};
+
+static struct debugmemdata **dmd;
+static int totalmemdata;
+
+struct debugsegtracker
+{
+       TCHAR *name;
+       uae_u32 allocid;
+       uaecptr resident;
+};
+static struct debugsegtracker **dsegt;
+static int segtrackermax;
+static uae_u32 inhibit_break, last_break;
+
+bool debugmem_break(int type)
+{
+       if (inhibit_break & (1 << type))
+               return false;
+       last_break = type;
+       activate_debugger_new();
+       return true;
+}
+
+bool debugmem_inhibit_break(int mode)
+{
+       if (mode < 0) {
+               inhibit_break = 0;
+               return true;
+       } else if (mode > 0) {
+               inhibit_break = 0xffffffff;
+               return true;
+       } else {
+               inhibit_break ^= 1 << last_break;
+       }
+       return (inhibit_break & (1 << last_break)) != 0;
+}
+
+static void debugreportsegment(struct debugsegtracker *seg, bool verbose)
+{
+       struct debugmemallocs *alloc = allocs[seg->allocid];
+       int parentid = alloc->id;
+       for (int i = 0; i < MAX_DEBUGMEMALLOCS; i++) {
+               struct debugmemallocs *a = allocs[i];
+               if (a->parentid == parentid) {
+                       if (verbose) {
+                               console_out_f(_T("Segment %d (%s): %08x %08x - %08x (%d)\n"),
+                                       a->internalid, seg->name, a->idtype, a->start, a->start + a->size - 1, a->size);
+                       } else {
+                               console_out_f(_T("Segment %d: %08x %08x - %08x (%d)\n"),
+                                       a->internalid, a->idtype, a->start, a->start + a->size - 1, a->size);
+                       }
+               }
+       }
+}
+
+static void debugreportalloc(struct debugmemallocs *a)
+{
+       uae_u32 off = debugmem_bank.start;
+       if (a->type == DEBUGALLOC_HUNK) {
+               console_out_f(_T("Segment %d: %08x %08x - %08x (%d)\n"),
+                       a->id, a->idtype, a->start + off, a->start + off + a->size - 1, a->size);
+       } else if (a->type == DEBUGALLOC_ALLOCMEM) {
+               console_out_f(_T("AllocMem ID=%d: %08x %08x - %08x (%d) AllocFlags: %08x PC: %08x\n"),
+                       a->id, a->idtype, a->start + off, a->start + off + a->size - 1, a->size, a->data, a->pc);
+       } else if (a->type == DEBUGALLOC_ALLOCVEC) {
+               console_out_f(_T("AllocVec allocation ID=%d: %08x %08x - %08x (%d) AllocFlags: %08x PC: %08x\n"),
+                       a->id, a->idtype, a->start + off, a->start + off + a->size - 1, a->size, a->data, a->pc);
+       } else if (a->type == DEBUGALLOC_SEG) {
+               static int lastsegment;
+               struct debugsegtracker *sg = NULL;
+               const TCHAR *name = _T("<unknown>");
+               for (int i = 0; i < MAX_DEBUGSEGS; i++) {
+                       sg = dsegt[(i + lastsegment) % MAX_DEBUGSEGS];
+                       if (sg->allocid == a->parentid) {
+                               name = sg->name;
+                               lastsegment = i;
+                               break;
+                       }
+               }
+               console_out_f(_T("Segment %d (%s): %08x %08x - %08x (%d)\n"),
+                       a->internalid, name, a->idtype, a->start, a->start + a->size - 1, a->size);
+       }
+}
+
+static void debugreport(struct debugmemdata *dm, uaecptr addr, int rwi, int size, const TCHAR *msg)
+{
+       int offset = addr & PAGE_SIZE_MASK;
+       uaecptr addr_start = addr & ~PAGE_SIZE_MASK;
+       uae_u8 state = dm->state[offset];
+
+       console_out_f(_T("Invalid access. Addr=%08x RW=%c Size=%d: %s\n"), addr, (rwi & DEBUGMEM_WRITE) ? 'W' : 'R', size, msg);
+       console_out_f(_T("Page: %08x - %08x. State=%c Modified=%c, Start=%02X, End=%02X\n"),
+               addr_start, addr_start + PAGE_SIZE - 1,
+               !(state & (DEBUGMEM_ALLOCATED | DEBUGMEM_INUSE)) ? 'I' : (state & DEBUGMEM_WRITE) ? 'W' : 'R',
+               (state & DEBUGMEM_WRITE) ? '*' : (state & DEBUGMEM_INITIALIZED) ? '+' : '-',
+               dm->unused_start, PAGE_SIZE - dm->unused_end);
+       debugmem_break(1);
+}
+
+#if 0
+static uae_u32 debug_get_disp_ea(uaecptr pc, uae_u32 base)
+{
+       uae_u16 dp = get_word_debug(pc);
+       pc += 2;
+       int reg = (dp >> 12) & 15;
+       uae_s32 regd = regs.regs[reg];
+       if ((dp & 0x800) == 0)
+               regd = (uae_s32)(uae_s16)regd;
+       regd <<= (dp >> 9) & 3;
+       if (dp & 0x100) {
+               uae_s32 outer = 0;
+               if (dp & 0x80) base = 0;
+               if (dp & 0x40) regd = 0;
+
+               if ((dp & 0x30) == 0x20) {
+                       base += (uae_s32)(uae_s16)get_word_debug(pc);
+                       pc += 2;
+               }
+               if ((dp & 0x30) == 0x30) {
+                       base += get_long_debug(pc);
+                       pc += 4;
+               }
+
+               if ((dp & 0x3) == 0x2) {
+                       outer = (uae_s32)(uae_s16)get_word_debug(pc);
+                       pc += 2;
+               }
+               if ((dp & 0x3) == 0x3) {
+                       outer = get_long_debug(pc);
+                       pc += 4;
+               }
+
+               if ((dp & 0x4) == 0)
+                       base += regd;
+               if (dp & 0x3)
+                       base = get_long_debug(base);
+               if (dp & 0x4)
+                       base += regd;
+
+               return base + outer;
+       } else {
+               return base + (uae_s32)((uae_s8)dp) + regd;
+       }
+}
+
+static uaecptr calc_jsr(void)
+{
+       uae_u16 opcode = regs.opcode;
+       uaecptr pc = regs.instruction_pc;
+       if ((opcode & 0xff00) == 0x6100) {
+               uae_u8 o = opcode & 0xff;
+               if (o == 0) {
+                       return pc + (uae_s16)get_word_debug(pc + 2) + 2;
+               } else if (o == 0xff) {
+                       return pc + (uae_s32)get_long_debug(pc + 2) + 2;
+               } else {
+                       return pc + (uae_s8)o + 2;
+               }
+       } else if ((opcode & 0xffc0) == 0x4e80) {
+               int reg = opcode & 7;
+               int mode = (opcode >> 3) & 7;
+               switch (mode)
+               {
+               case 2:
+                       return m68k_areg(regs, reg);
+               case 5:
+                       return m68k_areg(regs, reg) + (uae_s16)get_word_debug(pc + 2);
+               case 6:
+                       return debug_get_disp_ea(pc + 2, m68k_areg(regs, reg));
+               case 7:
+                       if (reg == 0)
+                               return (uae_u32)(uae_s16)get_word_debug(pc + 2);
+                       if (reg == 1)
+                               return get_long_debug(pc + 2);
+                       if (reg == 2)
+                               return pc + (uae_s16)get_word_debug(pc + 2) + 2;
+                       if (reg == 3)
+                               return debug_get_disp_ea(pc + 2, pc + 2);
+                       break;
+               }
+       }
+       return 0xffffffff;
+}
+#endif
+
+void branch_stack_pop_rte(uaecptr oldpc)
+{
+       if (!stackframes)
+               return;
+       uaecptr newpc = m68k_getpc();
+       bool found = false;
+       for (int i = stackframecntsuper - 1; i >= 0; i--) {
+               struct debugstackframe *sf = &stackframessuper[i];
+               if (sf->next_pc == newpc) {
+                       stackframecntsuper = i;
+                       found = true;
+                       break;
+               }
+       }
+       if (found) {
+               if (break_stack_pop) {
+                       break_stack_pop = false;
+                       debugmem_break(0);
+               }
+       } else {
+               // if no match, it probably was stack switch to other address,
+               // assume it matched..
+               if (stackframecntsuper > 0)
+                       stackframecntsuper--;
+       }
+       if (found && break_stack_pop && break_stack_s) {
+               break_stack_push = false;
+               break_stack_pop = false;
+               debugmem_break(0);
+       }
+}
+
+void branch_stack_pop_rts(uaecptr oldpc)
+{
+       if (!stackframes)
+               return;
+       if (!stackframemode) {
+               if (debug_waiting || (!regs.s && get_long_host(exec_thistask) != debug_task))
+                       return;
+       }
+       int cnt = regs.s ? stackframecntsuper : stackframecnt;
+       uaecptr newpc = m68k_getpc();
+       bool found = false;
+       for (int i = cnt - 1; i >= 0; i--) {
+               struct debugstackframe *sf = regs.s ? &stackframessuper[i] : &stackframes[i];
+               if (sf->next_pc == newpc) {
+                       cnt = i;
+                       found = true;
+                       break;
+               }
+       }
+       if (regs.s) {
+               stackframecntsuper = cnt;
+       } else {
+               stackframecnt = cnt;
+               stackframecntsuper = 0;
+       }
+       if (found && break_stack_pop && ((break_stack_s && regs.s) || (!break_stack_s && !regs.s))) {
+               break_stack_push = false;
+               break_stack_pop = false;
+               debugmem_break(0);
+       }
+}
+
+void branch_stack_push(uaecptr oldpc, uaecptr newpc)
+{
+       if (!stackframes)
+               return;
+       if (!stackframemode) {
+               if (debug_waiting || (!regs.s && get_long_host(exec_thistask) != debug_task))
+                       return;
+       }
+       int cnt = regs.s ? stackframecntsuper : stackframecnt;
+       struct debugstackframe *sf = regs.s ? &stackframessuper[cnt] : &stackframes[cnt];
+       sf->current_pc = regs.instruction_pc;
+       sf->next_pc = newpc;
+       sf->stack = m68k_areg(regs, 7);
+       sf->branch_pc = m68k_getpc();
+       MakeSR();
+       sf->sr = regs.sr;
+       memcpy(sf->regs, regs.regs, sizeof(uae_u32) * 16);
+       if (regs.s) {
+               stackframecntsuper++;
+       } else {
+               stackframecnt++;
+               stackframecntsuper = 0;
+       }
+       if (break_stack_push && ((break_stack_s && regs.s) || (!break_stack_s && !regs.s))) {
+               break_stack_push = false;
+               break_stack_pop = false;
+               debugmem_break(11);
+       }
+}
+
+bool debugmem_break_stack_pop(void)
+{
+       if (!stackframes)
+               return false;
+       break_stack_s = regs.s != 0;
+       break_stack_pop = true;
+       return true;
+}
+
+bool debugmem_break_stack_push(void)
+{
+       if (!stackframes)
+               return false;
+       break_stack_s = regs.s != 0;
+       break_stack_pop = true;
+       break_stack_push = true;
+       return true;
+}
+
+static bool debugmem_func(uaecptr addr, int rwi, int size, uae_u32 val)
+{
+       bool ret = true;
+       uaecptr oaddr = addr;
+       struct debugmemdata *dmfirst = NULL;
+
+       if (debug_waiting && (rwi & DEBUGMEM_FETCH)) {
+               // first instruction?
+               if (addr == debugmem_bank.start + HUNK_GAP + 8) {
+                       debugmem_break(2);
+                       debug_waiting = false;
+               }
+       }
+
+       // in some situations addr may already have start substracted
+       if (addr >= debugmem_bank.start) {
+               addr -= debugmem_bank.start;
+       }
+
+       for (int i = 0; i < size; i++) {
+               int offset = addr & PAGE_SIZE_MASK;
+               int page = addr / PAGE_SIZE;
+               struct debugmemdata *dm = dmd[page];
+               uae_u8 state = dm->state[offset];
+
+               if (!i)
+                       dmfirst = dm;
+
+               if (!(state & DEBUGMEM_INUSE)) {
+                       debugreport(dm, oaddr, rwi, size, _T("Accessing invalid memory"));
+                       return false;
+               }
+
+               if (!(rwi & DEBUGMEM_NOSTACKCHECK) || ((rwi & DEBUGMEM_NOSTACKCHECK) && !(dm->flags & DEBUGMEM_STACK))) {
+                       if ((rwi & DEBUGMEM_FETCH) && !(state & DEBUGMEM_INITIALIZED)) {
+                               debugreport(dm, oaddr, rwi, size, _T("Instruction fetch from uninitialized memory"));
+                               return false;
+                       }
+
+                       if ((rwi & DEBUGMEM_FETCH) && (state & DEBUGMEM_WRITE) && !(state & DEBUGMEM_FETCH)) {
+                               debugreport(dm, oaddr, rwi, size, _T("Instruction fetch from memory that was modified"));
+                               return false;
+                       }
+               }
+
+               if ((rwi & DEBUGMEM_READ) && !(state & DEBUGMEM_INITIALIZED) && !(state & DEBUGMEM_WRITE)) {
+                       debugreport(dm, oaddr, rwi, size, _T("Reading uninitialized memory"));
+                       return false;
+               }
+
+               if (dm->flags & DEBUGMEM_PARTIAL) {
+                       if (offset < dm->unused_start) {
+                               debugreport(dm, oaddr, rwi, size, _T("Reading from partially invalid page (low)"));
+                               return false;
+                       }
+                       if (offset >= PAGE_SIZE - dm->unused_end) {
+                               debugreport(dm, oaddr, rwi, size, _T("Reading from partially invalid page (high)"));
+                               return false;
+                       }
+               }
+               if ((state | rwi) != state) {
+                       //console_out_f(_T("addr %08x %d/%d (%02x -> %02x) PC=%08x\n"), addr, i, size, state, rwi, M68K_GETPC);
+                       dm->state[offset] |= rwi;
+                       
+               }
+               addr++;
+       }
+
+       return ret;
+}
+
+static uae_u32 REGPARAM2 debugmem_lget(uaecptr addr)
+{
+       uae_u32 v = 0xdeadf00d;
+       if (debugmem_func(addr, DEBUGMEM_READ, 4, 0))
+               v = debugmem_func_lget(addr);
+       return v;
+}
+static uae_u32 REGPARAM2 debugmem_wget(uaecptr addr)
+{
+       uae_u32 v = 0xd00d;
+       if (debugmem_func(addr, DEBUGMEM_READ, 2, 0))
+               v = debugmem_func_wget(addr);
+       return v;
+}
+static uae_u32 REGPARAM2 debugmem_bget(uaecptr addr)
+{
+       uae_u32 v = 0xdd;
+       if (debugmem_func(addr, DEBUGMEM_READ, 1, 0))
+               v = debugmem_func_bget(addr);
+       return v;
+}
+static uae_u32 REGPARAM2 debugmem_lgeti(uaecptr addr)
+{
+       uae_u32 v = 0x4afc4afc;
+       if (debugmem_func(addr, DEBUGMEM_READ | DEBUGMEM_FETCH, 4, 0))
+               v = debugmem_func_lgeti(addr);
+       return v;
+}
+static uae_u32 REGPARAM2 debugmem_wgeti(uaecptr addr)
+{
+       uae_u32 v = 0x4afc;
+       if (debugmem_func(addr, DEBUGMEM_READ | DEBUGMEM_FETCH, 2, 0))
+               v = debugmem_func_wgeti(addr);
+       return v;
+}
+static void REGPARAM2 debugmem_lput(uaecptr addr, uae_u32 v)
+{
+       if (debugmem_func(addr, DEBUGMEM_WRITE, 4, v))
+               debugmem_func_lput(addr, v);
+}
+static void REGPARAM2 debugmem_wput(uaecptr addr, uae_u32 v)
+{
+       if (debugmem_func(addr, DEBUGMEM_WRITE, 2, v))
+               debugmem_func_wput(addr, v);
+}
+static void REGPARAM2 debugmem_bput(uaecptr addr, uae_u32 v)
+{
+       if (debugmem_func(addr, DEBUGMEM_WRITE, 1, v))
+               debugmem_func_bput(addr, v);
+}
+static uae_u8 *REGPARAM2 debugmem_xlate(uaecptr addr)
+{
+       if (debug_waiting)
+               debugmem_func(addr, DEBUGMEM_FETCH | DEBUGMEM_READ | DEBUGMEM_NOSTACKCHECK, 2, 0);
+       addr -= debugmem_bank.start & debugmem_bank.mask;
+       addr &= debugmem_bank.mask;
+       return debugmem_bank.baseaddr + addr;
+}
+
+static int debugmem_free(uaecptr addr, uae_u32 size)
+{
+       uaecptr oaddr = addr;
+       addr -= debugmem_bank.start;
+       int page = addr / PAGE_SIZE;
+       struct debugmemdata *dm = dmd[page];
+       bool ok = true;
+
+       if (!(dm->flags & DEBUGMEM_ALLOCATED)) {
+               console_out_f(_T("Invalid memory free (%08x %d) Start address points to unallocated memory\n"), oaddr, size);
+               ok = false;
+       } else if (!(dm->flags & DEBUGMEM_STARTBLOCK)) {
+               console_out_f(_T("Invalid memory free (%08x %d) Start address points to allocated memory but not start of allocated memory\n"), oaddr, size);
+               ok = false;
+       } else {
+               struct debugmemallocs *dma = allocs[dm->id];
+               if (dma->start == addr && dma->size == size) {
+                       // it was valid!
+                       for (int i = 0; i < dma->pages; i++) {
+                               struct debugmemdata *dm2 = dmd[page + i];
+                               memset(dm2, 0, sizeof(struct debugmemdata));
+                       }
+                       memset(debugmem_bank.baseaddr + dma->start_page * PAGE_SIZE, 0x95, dma->pages * PAGE_SIZE);
+                       memset(dma, 0, sizeof(struct debugmemallocs));
+                       return dm->id;
+               }
+               console_out_f(_T("Invalid memory free (%08x %d) ID=%d Start address points to start of allocated memory but size does not match allocation size (%d <> %d)\n"),
+                       oaddr, size, dm->id, size, dma->size);
+       }
+
+       // report free memory error
+       int end = (size + PAGE_SIZE - 1) & ~PAGE_SIZE_MASK;
+       int allocid = -1;
+       for (int i = 0; i < end; i++) {
+               if (page + i >= totalmemdata) {
+                       console_out_f(_T("Free end address is out of range\n"));
+                       ok = false;
+                       break;
+               }
+               struct debugmemdata *dm2 = dmd[page + i];
+               if ((dm2->flags & DEBUGMEM_ALLOCATED) && allocid != page + i) {
+                       struct debugmemallocs *dma = allocs[dm2->id];
+                       console_out_f(_T("Conflicts with existing allocation ID=%d (%08x - %08x %d)\n"),
+                               dm->id, dma->start, dma->start + dma->size - 1, dma->size);
+                       debugreportalloc(dma);
+                       allocid = page + i;
+               }
+       }
+       debugmem_break(3);
+       return 0;
+}
+
+
+static uae_u32 REGPARAM2 debugmem_chipmem_lget(uaecptr addr)
+{
+       uae_u32 *m;
+
+       if (addr < debugmem_chiplimit)
+               return debugmem_chiphit(addr, 0, -4);
+       addr &= chipmem_bank.mask;
+       m = (uae_u32 *)(chipmem_bank.baseaddr + addr);
+       return do_get_mem_long(m);
+}
+
+static uae_u32 REGPARAM2 debugmem_chipmem_wget(uaecptr addr)
+{
+       uae_u16 *m, v;
+
+       if (addr < debugmem_chiplimit)
+               return debugmem_chiphit(addr, 0, -2);
+       addr &= chipmem_bank.mask;
+       m = (uae_u16 *)(chipmem_bank.baseaddr + addr);
+       v = do_get_mem_word(m);
+       return v;
+}
+
+static uae_u32 REGPARAM2 debugmem_chipmem_bget(uaecptr addr)
+{
+       uae_u8 v;
+       if (addr < debugmem_chiplimit)
+               return debugmem_chiphit(addr, 0, -1);
+       addr &= chipmem_bank.mask;
+       v = chipmem_bank.baseaddr[addr];
+       return v;
+}
+
+void REGPARAM2 debugmem_chipmem_lput(uaecptr addr, uae_u32 l)
+{
+       if (addr < debugmem_chiplimit) {
+               debugmem_chiphit(addr, l, 4);
+       } else {
+               uae_u32 *m;
+               addr &= chipmem_bank.mask;
+               m = (uae_u32 *)(chipmem_bank.baseaddr + addr);
+               do_put_mem_long(m, l);
+       }
+}
+
+void REGPARAM2 debugmem_chipmem_wput(uaecptr addr, uae_u32 w)
+{
+       if (addr < debugmem_chiplimit) {
+               debugmem_chiphit(addr, w, 2);
+       } else {
+               uae_u16 *m;
+               addr &= chipmem_bank.mask;
+               m = (uae_u16 *)(chipmem_bank.baseaddr + addr);
+               do_put_mem_word(m, w);
+       }
+}
+
+void REGPARAM2 debugmem_chipmem_bput(uaecptr addr, uae_u32 b)
+{
+       if (addr < debugmem_chiplimit) {
+               debugmem_chiphit(addr, b, 1);
+       } else {
+               addr &= chipmem_bank.mask;
+               chipmem_bank.baseaddr[addr] = b;
+       }
+}
+
+static int REGPARAM2 debugmem_chipmem_check(uaecptr addr, uae_u32 size)
+{
+       addr &= chipmem_bank.mask;
+       return (addr + size) <= chipmem_bank.reserved_size;
+}
+
+static uae_u8 *REGPARAM2 debugmem_chipmem_xlate(uaecptr addr)
+{
+       addr &= chipmem_bank.mask;
+       return chipmem_bank.baseaddr + addr;
+}
+
+static addrbank debugmem_chipmem_bank = {
+       debugmem_chipmem_lget, debugmem_chipmem_wget, debugmem_chipmem_bget,
+       debugmem_chipmem_lput, debugmem_chipmem_wput, debugmem_chipmem_bput,
+       debugmem_chipmem_xlate, debugmem_chipmem_check, NULL, _T("chip"), _T("Debug Chip memory"),
+       debugmem_chipmem_lget, debugmem_chipmem_wget,
+       ABFLAG_RAM | ABFLAG_THREADSAFE | ABFLAG_CHIPRAM | ABFLAG_CACHE_ENABLE_BOTH, 0, 0
+};
+
+static void setchipbank(bool activate)
+{
+       if (activate) {
+               map_banks(&debugmem_chipmem_bank, 0, 1, 0);
+       } else {
+               map_banks(&chipmem_bank, 0, 1, 0);
+       }
+}
+
+static struct debugmemallocs *getallocblock(void)
+{
+       int round = 0;
+       alloccnt++;
+       if (alloccnt >= MAX_DEBUGMEMALLOCS) {
+               alloccnt = 1;
+       }
+       while (allocs[alloccnt]->id != 0) {
+               alloccnt++;
+               if (alloccnt >= MAX_DEBUGMEMALLOCS) {
+                       alloccnt = 1;
+                       if (round) {
+                               console_out_f(_T("debugmem out of alloc blocks!\n"));
+                               return NULL;
+                       }
+                       round++;
+               }
+       }
+       struct debugmemallocs *dm = allocs[alloccnt];
+       dm->id = alloccnt;
+       return dm;
+}
+
+static struct debugmemallocs *debugmem_allocate(uae_u32 size, uae_u32 flags, uae_u32 parentid)
+{
+       struct debugmemallocs *dm = getallocblock();
+       if (!dm)
+               return NULL;
+       int offset = debugmemptr / PAGE_SIZE;
+       bool gotit = true;
+       int totalsize = 0;
+       int extrasize = 0;
+       for (extrasize = HUNK_GAP; extrasize >= PAGE_SIZE; extrasize /= 2) {
+               totalsize = (extrasize + size + PAGE_SIZE - 1) & ~PAGE_SIZE_MASK;
+               for (int i = 0; i < totalmemdata; i++) {
+                       struct debugmemdata *dm = dmd[offset];
+                       if (offset + totalsize / PAGE_SIZE >= totalmemdata) {
+                               offset = 0;
+                               continue;
+                       }
+                       gotit = true;
+                       // extra + size continous space available?
+                       if (!(dm->flags & DEBUGMEM_ALLOCATED)) {
+                               for (int j = 0; j < totalsize / PAGE_SIZE; j++) {
+                                       struct debugmemdata *dm2 = dmd[offset + j];
+                                       if (dm->flags & DEBUGMEM_ALLOCATED) {
+                                               gotit = false;
+                                               break;
+                                       }
+                               }
+                       }
+                       if (gotit)
+                               break;
+                       offset++;
+                       offset = offset % totalmemdata;
+               }
+               if (gotit)
+                       break;
+       }
+       if (!gotit || !totalsize || !extrasize) {
+               console_out_f(_T("debugmem out of free space! Alloc size %d, flags %08x\n"), size, flags);
+               return 0;
+       }
+       dm->parentid = parentid;
+       dm->start_page = offset;
+       dm->pages = totalsize / PAGE_SIZE;
+       for (int j = 0; j < dm->pages; j++) {
+               struct debugmemdata *dm2 = dmd[offset + j];
+               dm2->flags |= DEBUGMEM_ALLOCATED;
+               dm2->id = dm->id;
+       }
+       memset(debugmem_bank.baseaddr + offset * PAGE_SIZE, 0xa3, totalsize);
+       int startoffset = extrasize / PAGE_SIZE;
+       dm->start = (offset + startoffset) * PAGE_SIZE;
+       dm->size = size;
+       dm->pc = M68K_GETPC;
+       for (int j = 0; j < (size + PAGE_SIZE - 1) / PAGE_SIZE; j++) {
+               struct debugmemdata *dm2 = dmd[offset + startoffset + j];
+               dm2->flags |= DEBUGMEM_INUSE | flags;
+               if (j == 0) {
+                       dm2->flags |= DEBUGMEM_STARTBLOCK;
+               }
+               memset(dm2->state, ((flags & DEBUGMEM_INITIALIZED) ? DEBUGMEM_INITIALIZED : 0) | DEBUGMEM_INUSE, PAGE_SIZE);
+               uae_u8 filler = (flags & DEBUGMEM_INITIALIZED) ? 0x00 : 0x99;
+               memset(debugmem_bank.baseaddr + (offset + startoffset + j) * PAGE_SIZE, filler, PAGE_SIZE);
+               if (j == (size + PAGE_SIZE - 1) / PAGE_SIZE - 1) {
+                       if (size & PAGE_SIZE_MASK) {
+                               dm2->unused_end = PAGE_SIZE - (size & PAGE_SIZE_MASK);
+                               dm2->flags |= DEBUGMEM_PARTIAL;
+                               memset(dm2->state + (PAGE_SIZE - dm2->unused_end), 0, dm2->unused_end);
+                               memset(debugmem_bank.baseaddr + (offset + startoffset + j) * PAGE_SIZE + (PAGE_SIZE - dm2->unused_end), 0x97, dm2->unused_end);
+                       }
+               }
+       }
+       debugmemptr = offset * PAGE_SIZE + extrasize + ((size + PAGE_SIZE - 1) & ~PAGE_SIZE_MASK);
+       return dm;
+}
+
+static int debugmem_unreserve(uaecptr addr, uae_u32 size, bool noerror)
+{
+       for (int i = 0; i < MAX_DEBUGMEMALLOCS; i++) {
+               struct debugmemallocs *alloc = allocs[i];
+               if (alloc->type != DEBUGALLOC_SEG)
+                       continue;
+               if (alloc->start == addr && alloc->size == size) {
+                       int id = alloc->parentid;
+                       memset(alloc, 0, sizeof(struct debugmemallocs));
+                       return id;
+               }
+               if (alloc->start == addr) {
+                       console_out_f(_T("Invalid memory unreserve %08x - %08x %d. Start address points to start of reserved memory but size does not match allocation size (%d <> %d)\n"),
+                               addr, addr + size - 1, size, size, alloc->size);
+                       return 0;
+               }
+       }
+       if (!noerror)
+               console_out_f(_T("Invalid memory unreserve %08x - %08x %d\n"), addr, addr + size - 1, size);
+       return 0;
+}
+
+// 0 = allocmem
+// 1 = allocvec
+
+uaecptr debugmem_allocmem(int mode, uae_u32 size, uae_u32 flags, uae_u32 caller)
+{
+       if (!debugmem_bank.baseaddr || !size)
+               return 0;
+       if (flags & 2) // MEMF_CHIP?
+               return 0;
+       uae_u16 aflags = DEBUGMEM_READ | DEBUGMEM_WRITE;
+       if (flags & 0x10000) // MEMF_CLEAR
+               aflags |= DEBUGMEM_INITIALIZED;
+       if (mode)
+               size += 4;
+       struct debugmemallocs *dm = debugmem_allocate(size, aflags, 0);
+       if (!dm)
+               return 0;
+       dm->type = mode ? DEBUGALLOC_ALLOCVEC : DEBUGALLOC_ALLOCMEM;
+       dm->pc = caller;
+       debugreportalloc(dm);
+       uaecptr mem = dm->start + debugmem_bank.start;
+       if (mode) {
+               put_long(mem, size);
+               mem += 4;
+       }
+       return mem;
+}
+
+uae_u32 debugmem_freemem(int mode, uaecptr addr, uae_u32 size, uae_u32 caller)
+{
+       if (!debugmem_bank.baseaddr || addr < debugmem_bank.start)
+               return 0;
+       if (mode > 0) {
+               addr -= 4;
+               size = get_long(addr);
+       }
+       int id = debugmem_free(addr, size);
+       if (id) {
+               console_out_f(_T("ID=%d: %s(%08x,%d) %08x - %08x PC=%08x\n"), id, mode ? _T("FreeVec") : _T("AllocMem"), addr, size, addr, addr + size - 1, caller);
+       }
+       return 1;
+}
+
+static struct debugmemallocs *debugmem_reserve(uaecptr addr, uae_u32 size, uae_u32 parentid)
+{
+       struct debugmemallocs *dm = getallocblock();
+       if (!dm)
+               return NULL;
+       dm->type = DEBUGALLOC_SEG;
+       dm->parentid = parentid;
+       dm->start = addr;
+       dm->size = size;
+       return dm;
+}
+
+uae_u32 debugmem_exit(void)
+{
+       bool err = false;
+       console_out_f(_T("Debugged program exited\n"));
+       for (int i = 0; i < MAX_DEBUGMEMALLOCS; i++) {
+               struct debugmemallocs *dma = allocs[i];
+               if (dma->type == DEBUGALLOC_ALLOCMEM || dma->type == DEBUGALLOC_ALLOCVEC) {
+                       err = true;
+                       console_out_f(_T("Memory allocation (%08x,%d) %08x - %08x was not freed.\n"),
+                               dma->start + debugmem_bank.start, dma->size,
+                               dma->start + debugmem_bank.start, dma->start + (dma->size - 1) + debugmem_bank.start);
+               }
+       }
+       if (err) {
+               debugmem_break(4);
+       }
+
+       debugmem_trace = false;
+       debugmem_active = false;
+       debugmem_chiplimit = 0;
+       chipmem_setindirect();
+       setchipbank(false);
+       return 1;
+}
+
+static uae_u32 gl(uae_u8 *p)
+{
+       return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | (p[3]);
+}
+
+static struct debugcodefile *loadcodefile(const TCHAR *path, const TCHAR *name)
+{
+       TCHAR fpath[MAX_DPATH];
+       fpath[0] = 0;
+       if (path)
+               _tcscat(fpath, path);
+       _tcscat(fpath, name);
+       struct zfile *zf = zfile_fopen(fpath, _T("rb"));
+       if (!zf) {
+               console_out_f(_T("Couldn't open source file '%s'\n"), fpath);
+               return NULL;
+       }
+       int length;
+       uae_u8 *data2 = zfile_getdata(zf, 0, -1, &length);
+       if (!data2) {
+               zfile_fclose(zf);
+               console_out_f(_T("Couldn't read source file '%s'\n"), fpath);
+               return NULL;
+       }
+       uae_u8 *data = xcalloc(uae_u8, length + 1);
+       memcpy(data, data2, length);
+       xfree(data2);
+       zfile_fclose(zf);
+       struct debugcodefile *cf = codefiles[codefilecnt];
+       if (!cf) {
+               cf = codefiles[codefilecnt] = xcalloc(struct debugcodefile, 1);
+       }
+       codefilecnt++;
+       cf->name = my_strdup(name);
+       cf->data = data;
+       cf->length = length;
+       cf->lines = 1;
+       for (int i = 0; i < length; i++) {
+               if (data[i] == 0) {
+                       data[i] = 32;
+               }
+               if (data[i] == 10) {
+                       data[i] = 0;
+                       cf->lines++;
+               }
+       }
+       cf->lineptr = xcalloc(uae_u8*, 1 + cf->lines + 2);
+       int linecnt = 1;
+       int lasti = 0;
+       for (int i = 0; i <= length; i++) {
+               if (data[i] == 0) {
+                       uae_u8 *s = &data[lasti];
+                       lasti = i + 1;
+                       if (strlen((char*)s) >= MAX_SOURCELINELEN) {
+                               s[MAX_SOURCELINELEN] = 0;
+                       }
+                       cf->lineptr[linecnt++] = s;
+                       int len = strlen((char*)s);
+                       if (len > 0 && s[len - 1] == 13)
+                               s[len - 1] = 0;
+               }
+       }
+       console_out_f(_T("Loaded source file '%s', %d bytes, %d lines\n"), fpath, cf->length, cf->lines);
+       return cf;
+}
+
+static uae_u32 maptohunks(uae_u32 offset)
+{
+       for (int i = 1; i <= executable_last_segment; i++) {
+               struct debugmemallocs *alloc = allocs[i];
+               if (offset >= alloc->relative_start && offset < alloc->relative_start + alloc->size) {
+                       uae_u32 address = offset - alloc->relative_start + alloc->start + debugmem_bank.start + 8;
+                       return address;
+               }
+       }
+       return 0xffffffff;
+}
+
+static struct debugsymbol *issymbol(const TCHAR *name)
+{
+       for (int i = 0; i < symbolcnt; i++) {
+               struct debugsymbol *ds = symbols[i];
+               if (!_tcsicmp(ds->name, name)) {
+                       return ds;
+               }
+       }
+       return NULL;
+}
+
+
+static struct stab *findstab(uae_u8 type, int *idxp)
+{
+       int idx = idxp ? *idxp : 0;
+       while (idx < stabscount) {
+               if (stabs[idx].type == type) {
+                       if (idxp)
+                               *idxp = idx + 1;
+                       return &stabs[idx];
+               }
+               idx++;
+       }
+       return NULL;
+}
+
+static void parse_stabs(void)
+{
+       TCHAR *path = NULL;
+       struct stab *s;
+       int idx;
+
+       idx = 0;
+       for (;;) {
+               s = findstab(N_SO, &idx);
+               if (!s)
+                       break;
+               if (s->string && s->string[_tcslen(s->string) - 1] == '/') {
+                       path = s->string;
+                       break;
+               }
+       }
+       idx = 0;
+       while (idx < stabscount) {
+               s = &stabs[idx++];
+               if (!s)
+                       break;
+               if (s->type == N_SO && s->string && s->string[_tcslen(s->string) - 1] != '/') {
+                       struct debugcodefile *cf = loadcodefile(NULL, s->string);
+                       if (!cf) {
+                               cf = loadcodefile(path, s->string);
+                               if (!cf) {
+                                       if (!_tcsnicmp(path, _T("/cygdrive/"), 10)) {
+                                               TCHAR path2[MAX_DPATH];
+                                               _stprintf(path2, _T("%c:/%s"), path[10], path + 12);
+                                               cf = loadcodefile(path2, s->string);
+                                               if (!cf) {
+                                                       console_out_f(_T("Failed to load '%s'\n"), s->string);
+                                                       continue;
+                                               }
+                                       }
+                               }
+                       }
+                       int linecnt = 0;
+                       struct debugsymbol *last_func = NULL;
+                       while (idx < stabscount) {
+                               TCHAR stripname[256];
+                               int type = 0;
+                               TCHAR mode = 0;
+                               s = &stabs[idx++];
+                               if (s->type == N_SO)
+                                       break;
+                               if (s->string) {
+                                       _tcscpy(stripname, s->string);
+                                       const TCHAR *ss = _tcschr(s->string, ':');
+                                       if (ss) {
+                                               mode = ss[1];
+                                               type = _tstol(ss + 2);
+                                               stripname[ss - s->string] = 0;
+                                       }
+                               }
+
+                               switch(s->type)
+                               {
+                                       case N_SLINE:
+                                       case N_DSLINE:
+                                               if (s->val >= linemapsize) {
+                                                       console_out_f(_T("Line address larger than segment size!? %08x >= %08x\n"), s->val, linemapsize);
+                                                       return;
+                                               }
+                                               linemap[s->val].file = cf;
+                                               linemap[s->val].line = s->desc;
+                                               //write_log(_T("%08x %d %s\n"), s->val, s->desc, cf->name);
+                                               linecnt++;
+                                       break;
+                                       case N_FUN:
+                                       case N_STSYM:
+                                       case N_LCSYM:
+                                       {
+                                               if (s->string) {
+                                                       struct debugsymbol *ds = issymbol(s->string);
+                                                       if (!ds) {
+                                                               uae_u32 addr = maptohunks(s->val);
+                                                               if (addr != 0xffffffff) {
+                                                                       ds = symbols[symbolcnt++];
+                                                                       ds->name = my_strdup(stripname);
+                                                                       ds->value = addr;
+                                                                       ds->flags = mode == mode > 'Z' ? SYMBOL_LOCAL : SYMBOL_GLOBAL;
+                                                               }
+                                                       }
+                                                       if (ds) {
+                                                               if (mode == 'F' || mode == 'f')
+                                                                       ds->type = SYMBOLTYPE_FUNC;
+                                                               if (s->type == N_FUN) {
+                                                                       last_func = ds;
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                       break;
+                                       case N_GSYM:
+                                       {
+                                               for (int i = 0; i < symbolcnt; i++) {
+                                                       struct debugsymbol *ds = symbols[i];
+                                                       if (ds->name[0] == '_' && !_tcscmp(ds->name + 1, stripname)) {
+                                                               ds->flags = SYMBOL_GLOBAL;
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                                       break;
+                                       case N_LSYM:
+                                       {
+                                               // type?
+                                               const TCHAR *ts = _tcschr(s->string, '=');
+                                               if (ts) {
+                                                       const TCHAR *tts = _tcschr(s->string, ':');
+                                                       if (tts) {
+                                                               int tid = _tstol(tts + 2);
+                                                               if (tid > 0) {
+                                                                       if (!cf->stabtypes) {
+                                                                               cf->stabtypecount = 1000;
+                                                                               cf->stabtypes = xcalloc(struct stabtype, cf->stabtypecount);
+                                                                       }
+                                                                       if (tid < cf->stabtypecount) {
+                                                                               struct stabtype *st = &cf->stabtypes[tid];
+                                                                               st->name = my_strdup(s->string);
+                                                                               st->name[tts - s->string] = 0;
+                                                                               st->id = tid;
+                                                                       }
+                                                               }
+                                                       }
+                                               } else if (last_func) {
+                                                       // stack variable
+                                                       if (stackvarcnt < MAX_STACKVARS) {
+                                                               struct stackvar *sv = stackvars[stackvarcnt++];
+                                                               sv->func = last_func;
+                                                               sv->name = my_strdup(stripname);
+                                                               sv->offset = s->val;
+                                                               if (!last_func->data)
+                                                                       last_func->data = sv;
+                                                       }
+                                               }
+                                       }
+                                       break;
+                                       case N_LBRAC:
+                                       case N_RBRAC:
+                                       break;
+                                       case N_ROSYM:
+                                       case N_RSYM:
+                                               //console_out_f(_T("%02x %02x %04x %08x %s\n"), s->type, s->other, s->desc, s->val, s->string);
+                                       break;
+                                       default:
+                                               //console_out_f(_T("%02x %02x %04x %08x %s\n"), s->type, s->other, s->desc, s->val, s->string);
+                                       break;
+                               }
+                       }
+               }
+       }
+       /*
+       int prev = -1;
+       for (int i = 0; i < linemapsize; i++) {
+               struct linemapping *lm = &linemap[i];
+               if (lm->line >= 0) {
+                       prev = i;
+               } else if (prev >= 0 && lm->line < 0) {
+                       lm->file = linemap[prev].file;
+                       lm->line = linemap[prev].line;
+               }
+
+       }
+       */
+}
+
+uaecptr debugmem_reloc(uaecptr exeaddress, uae_u32 len, uaecptr task, uae_u32 *stack)
+{
+       uae_u8 *p = get_real_address(exeaddress);
+       uae_u8 *lastptr = NULL;
+       struct debugmemallocs *hunks[1000];
+       uae_u32 lens[1000], memtypes[1000];
+       uae_u32 parentid = 0;
+
+       debugmem_init();
+       if (!debugmem_initialized)
+               return 0;
+
+       console_out_f(_T("Loading executable, exe=%08x\n"), exeaddress);
+
+       if (gl(p) != 0x3f3) {
+               console_out_f(_T("HUNK_HEADER not found!\n"));
+               return 0;
+       }
+       p += 4;
+       if (gl(p) != 0) {
+               console_out_f(_T("Long word after HUNK_HEADER is not zero!\n"));
+               return 0;
+       }
+       p += 4;
+       int hunkcnt = gl(p);
+       int first = gl(p + 4);
+       int last = gl(p + 8);
+       if (hunkcnt > 1000 || (last - first + 1) > 1000) {
+               console_out_f(_T("Too many hunks.\n"));
+               return 0;
+       }
+       if (first > last) {
+               console_out_f(_T("First hunk larger than last hunk (%d > %d).\n"), first, last);
+               return 0;
+       }
+       p += 12;
+       uae_u32 relative_start = 0;
+       for (int i = first; i <= last; i++) {
+               uae_u32 len = gl(p);
+               p += 4;
+               memtypes[i] = 0;
+               if ((len & 0xc0000000) == 0xc0000000) {
+                       memtypes[i] = gl(p);
+                       p += 4;
+               } else if (len & 0x40000000) {
+                       memtypes[i] = 0x40000000;
+               } else {
+                       memtypes[i] = len & 0xc0000000;
+               }
+               len &= ~(0x80000000 | 0x40000000);
+               lens[i] = len * 4;
+               struct debugmemallocs *dma = debugmem_allocate(lens[i] + 8, DEBUGMEM_READ | DEBUGMEM_WRITE | DEBUGMEM_FETCH | DEBUGMEM_INITIALIZED, parentid);
+               hunks[i] = dma;
+               dma->type = DEBUGALLOC_HUNK;
+               dma->relative_start = relative_start;
+               relative_start += lens[i];
+               if (!hunks[i]) {
+                       console_out_f(_T("Hunk #%d memory allocation failed, size %d\n"), i, len + 8);
+                       return 0;
+               }
+               if (!parentid) {
+                       parentid = hunks[i]->id;
+               }
+               linemapsize += lens[i];
+       }
+       for (int i = first; i <= last; i++) {
+               struct debugmemallocs *memdm = hunks[i];
+               uae_u32 len = lens[i];
+               uae_u32 hunktype = gl(p) & ~0xc0000000;
+               uae_u32 hunklen = gl(p + 4);
+               hunklen *= 4;
+               p += 8;
+               uae_u32 memflags = 0;
+               if (hunktype != 0x3e9 && hunktype != 0x3ea && hunktype != 0x3eb) {
+                       console_out_f(_T("Unknown hunk #%d %08x.\n"), i, hunktype);
+                       return 0;
+               }
+               memdm->idtype = hunktype | memtypes[i];
+               if (hunklen > len) {
+                       console_out_f(_T("Hunk #%d contents (%d) larger than allocation (%d)!\n"), i, hunklen, len);
+                       return 0;
+               }
+               uae_u8 *mem = memdm->start + debugmem_bank.baseaddr;
+               uaecptr memaddr = memdm->start + debugmem_bank.start;
+               if (hunktype != 0x3eb) {
+                       for (int c = 0; c < hunklen; c++) {
+                               put_byte_host(mem + 8 + c, *p++);
+                       }
+               }
+               put_long_host(mem, len / 4);
+               if (lastptr) {
+                       put_long_host(lastptr, memaddr / 4 + 1);
+               }
+               lastptr = mem + 4;
+               if (gl(p) == 0x3ec) { // hunk reloc
+                       if (hunktype == 0x3eb) {
+                               console_out_f(_T("HUNK_BSS with HUNK_RELOC32!\n"));
+                               return 0;
+                       }
+                       p += 4;
+                       for (;;) {
+                               int reloccnt = gl(p);
+                               p += 4;
+                               if (!reloccnt)
+                                       break;
+                               int relochunk = gl(p);
+                               p += 4;
+                               if (relochunk > last) {
+                                       console_out_f(_T("HUNK_RELOC hunk #%d is larger than last hunk (%d)!\n"), relochunk, last);
+                                       return 0;
+                               }
+                               uaecptr hunkptr = hunks[relochunk]->start + debugmem_bank.start + 8;
+                               uae_u8 *currenthunk = mem + 8;
+                               for (int j = 0; j < reloccnt; j++) {
+                                       uae_u32 reloc = gl(p);
+                                       p += 4;
+                                       if (reloc >= len - 3) {
+                                               console_out_f(_T("HUNK_RELOC hunk #%d offset %d larger than hunk lenght %d!\n"), i, reloc, len);
+                                               return 0;
+                                       }
+                                       put_long_host(currenthunk + reloc, get_long_host(currenthunk + reloc) + hunkptr);
+                               }
+                       }
+               }
+
+               for (;;) {
+
+                       if (gl(p) == 0x3f0) { // hunk symbol
+
+                               int symcnt = 0;
+                               p += 4;
+                               for (;;) {
+                                       int size = gl(p);
+                                       p += 4;
+                                       if (!size)
+                                               break;
+                                       struct debugsymbol *ds = symbols[symbolcnt++];
+                                       ds->name = au((char*)p);
+                                       p += 4 * size;
+                                       ds->value = gl(p) + hunks[i]->start + 8 + debugmem_bank.start;
+                                       ds->allocid = hunks[i]->id;
+                                       ds->section = hunks[i];
+                                       ds->flags = SYMBOL_GLOBAL;
+                                       p += 4;
+                                       symcnt++;
+                               }
+                               console_out_f(_T("Hunk %d: %d symbols loaded.\n"), i, symcnt);
+
+                       } else if (gl(p) == 0x3f1) { // hunk debug
+
+                               p += 4;
+                               int size = gl(p);
+                               p += 4;
+                               uae_u8 *p2 = p;
+                               if (size >= 12) {
+                                       if (gl(p) == 0x0000010b) { // "ZMAGIC"
+                                               p += 4;
+                                               int symtab_size = gl(p);
+                                               p += 4;
+                                               int stringtab_size = gl(p);
+                                               p += 4;
+                                               uae_u8 *stringtab = p + symtab_size;
+                                               if (!stabs) {
+                                                       stabs = xcalloc(struct stab, symtab_size / 12);
+                                               } else {
+                                                       stabs = xrealloc(struct stab, stabs, stabscount + symtab_size / 12);
+                                               }
+                                               for (int i = 0; i <= symtab_size - 12; i += 12, p += 12) {
+                                                       struct stab *s = &stabs[stabscount++];
+                                                       TCHAR *str = NULL;
+                                                       int string_idx = gl(p);
+                                                       uae_u8 type = p[4];
+                                                       uae_u8 other = p[5];
+                                                       uae_u16 desc = (p[6] << 8) | p[7];
+                                                       uae_u32 value = gl(p + 8);
+                                                       if (string_idx) {
+                                                               uae_char *s = (uae_char*)stringtab + string_idx;
+                                                               str = au(s);
+                                                       }
+                                                       s->type = type;
+                                                       s->other = other;
+                                                       s->desc = desc;
+                                                       s->val = value;
+                                                       s->string = str;
+                                               }
+                                               console_out_f(_T("%d stabs loaded.\n"), symtab_size / 12);
+                                       } else {
+                                               console_out_f(_T("HUNK_DEBUG is not in expected format\n"));
+                                       }
+                               }
+                               p = p2 + 4 * size;
+
+                       } else if (gl(p) == 0x3f2) {
+
+                               p += 4;
+
+                       } else {
+
+                               break;
+
+                       }
+               }
+       }
+       if (gl(p - 4) != 0x3f2) {
+               console_out_f(_T("HUNK_END not found, got %08x\n"), gl(p - 4));
+               return 0;
+       }
+       struct debugmemallocs *stackmem = debugmem_allocate(*stack, DEBUGMEM_READ | DEBUGMEM_WRITE | DEBUGMEM_INITIALIZED | DEBUGMEM_STACK, parentid);
+       if (!stackmem)
+               return 0;
+       stackmem->type = DEBUGALLOC_HUNK;
+       stackmem->idtype = 0xffff;
+       *stack = stackmem->start + debugmem_bank.start;
+       executable_last_segment = alloccnt;
+
+       linemap = xcalloc(struct linemapping, linemapsize + 1);
+       for (int i = 0; i < linemapsize + 1; i++) {
+               linemap[i].line = -1;
+       }
+
+       parse_stabs();
+       for (int i = 1; i <= executable_last_segment; i++) {
+               debugreportalloc(allocs[i]);
+       }
+
+       console_out_f(_T("Executable load complete.\n"));
+
+       uaecptr execbase = get_long_debug(4);
+       exec_thistask = get_real_address(execbase + 276);
+
+       setchipbank(true);
+       chipmem_setindirect();
+       debugger_scan_libraries();
+
+       debug_waiting = true;
+       debug_task = task;
+       debugmem_trace = true;
+       debugmem_active = true;
+       return hunks[first]->start + debugmem_bank.start + 8;
+}
+
+static uae_char *gethunktext(uae_u8 *p, uae_char *namebuf, int len)
+{
+       memcpy(namebuf, p, len);
+       namebuf[len] = 0;
+       return namebuf;
+}
+
+static void scan_library_list(uaecptr v, int *cntp)
+{
+       while ((v = get_long_debug(v))) {
+               uae_u32 v2;
+               uae_u8 *p;
+               addrbank *b = &get_mem_bank(v);
+               if (!b || !b->check(v, 32) || !(b->flags & ABFLAG_RAM))
+                       return;
+               v2 = get_long_debug(v + 10); // name
+               b = &get_mem_bank(v2);
+               if (!b || !b->check(v2, 20))
+                       return;
+               if (!(b->flags & ABFLAG_ROM) && !(b->flags & ABFLAG_ROMIN) && !(b->flags & ABFLAG_RAM))
+                       return;
+               p = b->xlateaddr(v2);
+               struct libname *found = NULL;
+               for (int i = 0; i < libnamecnt; i++) {
+                       struct libname *name = &libnames[i];
+                       char n[256];
+                       sprintf(n, "%s.library", name->aname);
+                       if (!strcmp((char*)p, n)) {
+                               name->base = v;
+                               found = name;
+                               break;
+                       }
+                       sprintf(n, "%s.device", name->aname);
+                       if (!strcmp((char*)p, n)) {
+                               name->base = v;
+                               found = name;
+                               break;
+                       }
+                       sprintf(n, "%s.resource", name->aname);
+                       if (!strcmp((char*)p, n)) {
+                               name->base = v;
+                               found = name;
+                               break;
+                       }
+               }
+               if (found) {
+                       (*cntp)++;
+                       //console_out_f(_T("%08x = '%s'\n"), found->base, found->name);
+               }
+       }
+}
+
+void debugger_scan_libraries(void)
+{
+       if (!libnamecnt)
+               return;
+       uaecptr v = get_long_debug(4);
+       addrbank *b = &get_mem_bank(v);
+       if (!b || !b->check(v, 400) || !(b->flags & ABFLAG_RAM))
+               return;
+       int cnt = 0;
+       scan_library_list(v + 378, &cnt);
+       scan_library_list(v + 350, &cnt);
+       scan_library_list(v + 336, &cnt);
+       console_out_f(_T("%d libraries matched with library symbols.\n"), cnt);
+}
+
+
+bool debugger_get_library_symbol(uaecptr base, uaecptr addr, TCHAR *out)
+{
+       for (int i = 0; i < libnamecnt; i++) {
+               struct libname *name = &libnames[i];
+               if (name->base == base) {
+                       for (int j = 0; j < libsymbolcnt; j++) {
+                               struct libsymbol *lvo = &libsymbols[j];
+                               if (lvo->lib == name) {
+                                       if (lvo->value == addr) {
+                                               _stprintf(out, _T("%s/%s"), name->name, lvo->name);
+                                               return true;
+                                       }
+                               }
+                       }
+               }
+       }
+       return false;
+}
+
+static bool debugger_load_fd(void)
+{
+       TCHAR plugin_path[MAX_DPATH];
+       TCHAR path[MAX_DPATH];
+       uae_char line[256];
+       struct my_opendir_s *h;
+       struct zfile *zf = NULL;
+
+       if (fds_loaded)
+               return true;
+       fds_loaded = true;
+
+       if (!get_plugin_path(plugin_path, sizeof plugin_path / sizeof(TCHAR), _T("debugger\\fd")))
+               return false;
+       h = my_opendir(plugin_path);
+       if (!h)
+               return false;
+
+       for (;;) {
+               TCHAR filename[MAX_DPATH];
+               if (!my_readdir(h, filename))
+                       break;
+               if (_tcslen(filename) < 3 || _tcsicmp(filename + _tcslen(filename) - 3, _T(".fd")))
+                       continue;
+
+               _tcscpy(path, plugin_path);
+               _tcscat(path, filename);
+               zf = zfile_fopen(path, _T("rb"));
+               if (!zf)
+                       continue;
+
+               int cnt = 0;
+               int bias = -1;
+               struct libname *lvo = NULL;
+               uae_u32 lvoid = 1;
+               if (libnamecnt > 0) {
+                       lvoid = libnames[libnamecnt - 1].id;
+               }
+               for (;;) {
+                       if (!zfile_fgetsa(line, sizeof(line), zf))
+                               break;
+                       for (;;) {
+                               int len = strlen(line);
+                               if (len < 1)
+                                       break;
+                               char c = line[len - 1];
+                               if (c != 10 && c != 13 && c != 32 && c != '\t')
+                                       break;
+                               line[len - 1] = 0;
+                       }
+                       if (line[0] == '#' && line[1] == '#') {
+                               char *p1 = &line[2];
+                               char *p2 = strchr(p1, ' ');
+                               if (p2) {
+                                       *p2 = 0;
+                                       p2++;
+                               }
+                               if (!strcmp(p1, "base")) {
+                                       if (p2[0] == '_')
+                                               p2++;
+                                       lvo = &libnames[libnamecnt++];
+                                       TCHAR *name2 = au(p2);
+                                       lvo->name = name2;
+                                       lvo->aname = strdup(p2);
+                                       lvo->id = lvoid++;
+                                       cnt = 0;
+                               } else if (!strcmp(p1, "bias")) {
+                                       bias = atol(p2);
+                               }
+                               continue;
+                       }
+                       if (line[0] == '*' || line[0] == '#')
+                               continue;
+                       if (bias < 0 || !lvo)
+                               continue;
+                       char *p3 = strchr(line, '(');
+                       if (p3)
+                               *p3 = 0;
+                       TCHAR *name2 = au(line);
+                       struct libsymbol *ls = &libsymbols[libsymbolcnt++];
+                       ls->name = name2;
+                       ls->value = -bias;
+                       ls->lib = lvo;
+                       bias += 6;
+                       cnt++;
+               }
+               if (lvo)
+                       console_out_f(_T("Loaded '%s', %d LVOs\n"), lvo->name, cnt);
+               zfile_fclose(zf);
+       }
+       my_closedir(h);
+       return true;
+}
+
+static bool debugger_load_library(const TCHAR *name)
+{
+       TCHAR plugin_path[MAX_DPATH];
+       uae_char namebuf[256];
+       bool ret = false;
+       int filelen;
+       struct zfile *zf = NULL;
+
+       if (libraries_loaded)
+               return true;
+       libraries_loaded = true;
+
+       if (get_plugin_path(plugin_path, sizeof plugin_path / sizeof(TCHAR), _T("debugger"))) {
+               _tcscat(plugin_path, name);
+               zf = zfile_fopen(plugin_path, _T("rb"));
+       }
+       if (!zf) {
+               zf = zfile_fopen(name, _T("rb"));
+               if (!zf) {
+                       console_out_f(_T("Couldn't open '%s'\n"), name);
+                       return false;
+               }
+       }
+       uae_u8 *file = zfile_getdata(zf, 0, -1, &filelen);
+       zfile_fclose(zf);
+
+       uae_u32 len;
+       uae_u8 *p = file;
+       if (gl(p) != 0x03e7) {
+               console_out_f(_T("'%s' is not a library\n"), name);
+               goto end;
+       }
+
+       if (!libnames) {
+               libnames = xcalloc(struct libname, 1000);
+               libsymbols = xcalloc(struct libsymbol, 10000);
+       }
+
+       struct libname *lvo = NULL;
+       int lvoid = 1;
+       for (;;) {
+               if (p == file + filelen) {
+                       ret = true;
+                       goto end;
+               }
+               if (p == file + filelen) {
+                       goto end;
+               }
+               uae_u32 hunk = gl(p);
+               p += 4;
+               switch (hunk)
+               {
+                       case 0x3e7: // HUNK_UNIT
+                       {
+                               lvo = NULL;
+                               len = gl(p) * 4;
+                               p += 4;
+                               uae_char *name = gethunktext(p, namebuf, len);
+                               if (strlen(name) > 4 && !strcmp(&name[strlen(name) - 4], "_LVO")) {
+                                       name[strlen(name) - 4] = 0;
+                                       lvo = &libnames[libnamecnt++];
+                                       TCHAR *name2 = au(name);
+                                       lvo->name = name2;
+                                       lvo->aname = strdup(name);
+                                       lvo->id = lvoid++;
+                               }
+                               p += len;
+                       }
+                       break;
+                       case 0x3e8: // HUNK_NAME
+                       {
+                               len = gl(p) * 4;
+                               p += 4;
+                               uae_char *name = gethunktext(p, namebuf, len);
+                               p += len;
+                       }
+                       break;
+                       case 0x3e9: // HUNK_CODE
+                       case 0x3ea: // HUNK_DATA
+                       {
+                               len = gl(p) * 4;
+                               p += 4 + len;
+                       }
+                       break;
+                       case 0x3eb: // HUNK_BSS
+                       {
+                               p += 4;
+                       }
+                       break;
+                       case 0x3f2: // HUNK_END
+                       break;
+                       case 0x3ef: // HUNK_EXT
+                       {
+                               for (;;) {
+                                       len = gl(p);
+                                       p += 4;
+                                       if (!len)
+                                               break;
+                                       uae_u8 type = len >> 24;
+                                       len &= 0xffffff;
+                                       len *= 4;
+                                       if (type == 2) {
+                                               uae_u8 *p2 = p;
+                                               p += len;
+                                               uae_u32 value = gl(p);
+                                               p += 4;
+                                               if (lvo) {
+                                                       uae_char *name = gethunktext(p2, namebuf, len);
+                                                       if (!strncmp(name, "_LVO", 4)) {
+                                                               TCHAR *name2 = au(name + 4);
+                                                               struct libsymbol *ls = &libsymbols[libsymbolcnt++];
+                                                               ls->name = name2;
+                                                               ls->value = value;
+                                                               ls->lib = lvo;
+                                                       }
+                                               }
+                                       } else if (type & 0x80) {
+                                               p += len;
+                                               len = gl(p) * 4; // number of references
+                                               p += 4;
+                                               p += len;
+                                       } else {
+                                               p += len;
+                                               p += 4;
+                                       }
+                               }
+                       }
+                       break;
+                       case 0x3ec: // HUNK_RELOC
+                       {
+                               for (;;) {
+                                       int reloccnt = gl(p);
+                                       p += 4;
+                                       if (!reloccnt)
+                                               break;
+                                       p += (1 + reloccnt) * 4;
+                               }
+                       }
+                       break;
+                       case 0x3f1: // HUNK_DEBUG
+                       {
+                               len = gl(p) * 4;
+                               p += 4;
+                               p += len;
+                       }
+                       break;
+                       default:
+                       console_out_f(_T("Unknown hunk %08x\n"), hunk);
+                       goto end;
+               }
+       }
+end:
+       if (ret)
+               console_out_f(_T("Loaded '%s', %ld libraries, %ld LVOs.\n"), name, libnamecnt, libsymbolcnt);
+       xfree(file);
+       return ret;
+}
+
+bool debugger_load_libraries(void)
+{
+       debugger_load_library(_T("amiga.lib"));
+       debugger_load_fd();
+       return true;
+}
+
+
+void debugmem_addsegs(TrapContext *ctx, uaecptr seg, uaecptr name, uae_u32 lock)
+{
+       uae_u8 *file = NULL;
+       int filelen;
+       bool hasfile = false;
+       int fileoffset = 0;
+       int segmentid;
+
+       if (!debugmem_initialized)
+               debugmem_init();
+       if (!seg || !debugmem_initialized)
+               return;
+       seg *= 4;
+       uaecptr seg2 = seg;
+       uaecptr resident = 0;
+       while (seg) {
+               uaecptr next = get_long(seg) * 4;
+               uaecptr len = get_long(seg - 4) * 4;
+               for (int i = 0; i < len - 26; i += 2) {
+                       uae_u16 w = get_word(seg + 4 + i);
+                       if (w == 0x4afc) {
+                               uae_u32 l = get_long(seg + 4 + i + 2);
+                               if (l == seg + 4 + i) {
+                                       resident = seg + 4 + i;
+                                       seg = 0;
+                                       break;
+                               }
+                       }
+               }
+               seg = next;
+       }
+       if (!resident)
+               return;
+       console_out_f(_T("Adding segment %08x, Resident %08x.\n"), seg2, resident);
+       struct debugsegtracker *sg = NULL;
+       for (segmentid = 0; segmentid < MAX_DEBUGSEGS; segmentid++) {
+               if (!dsegt[segmentid]->allocid) {
+                       sg = dsegt[segmentid];
+                       if (segmentid >= segtrackermax)
+                               segtrackermax = segmentid + 1;
+                       break;
+               }
+       }
+       if (!sg)
+               return;
+       sg->resident = resident;
+       if (name) {
+               uae_char aname[256];
+               TCHAR nativepath[MAX_DPATH];
+               nativepath[0] = 0;
+               strcpyah_safe(aname, name, sizeof aname);
+               sg->name = au(aname);
+               if (lock && !get_native_path(ctx, lock, nativepath)) {
+                       struct zfile *zf = zfile_fopen(nativepath, _T("rb"));
+                       if (zf) {
+                               file = zfile_getdata(zf, 0, -1, &filelen);
+                               zfile_fclose(zf);
+
+                       }
+                       while (file) {
+                               if (gl(file) != 0x03f3)
+                                       break;
+                               if (gl(file + 4) != 0x0)
+                                       break;
+                               int hunks = gl(file + 8);
+                               hasfile = true;
+                               fileoffset = 5 * 4 + hunks * 4;
+                               break;
+                       }
+               }
+               console_out_f(_T("Name '%s', native path '%s'\n"), sg->name, nativepath[0] ? nativepath : _T("<n/a>"));
+       } else {
+               sg->name = my_strdup(_T("<unknown>"));
+       }
+       int parentid = 0;
+       int cnt = 1;
+       seg = seg2;
+       while (seg) {
+               uaecptr next = get_long(seg) * 4;
+               uaecptr len = get_long(seg - 4) * 4;
+               struct debugmemallocs *dm = debugmem_reserve(seg, len, parentid);
+               if (!parentid) {
+                       sg->allocid = dm->id;
+                       parentid = dm->id;
+                       dm->parentid = dm->id;
+               }
+               if (hasfile) {
+                       dm->idtype = gl(&file[fileoffset]);
+                       fileoffset += 4;
+                       int hunklen = gl(&file[fileoffset]);
+                       fileoffset += 4;
+                       if (dm->idtype == 0x3e9 || dm->idtype == 0x3ea) {
+                               fileoffset += hunklen * 4;
+                       }
+                       for (;;) {
+                               uae_u32 hunktype = gl(&file[fileoffset]);
+                               if (hunktype == 0x3e9 || hunktype == 0x3ea || hunktype == 0x3eb)
+                                       break;
+                               if (hunktype == 0x3ec) {
+                                       fileoffset += 4;
+                                       for (;;) {
+                                               int reloccnt = gl(&file[fileoffset]);
+                                               fileoffset += 4;
+                                               if (!reloccnt)
+                                                       break;
+                                               fileoffset += (1 + reloccnt) * 4;
+                                       }
+                               } else if (hunktype == 0x3f0) {
+                                       int symcnt = 0;
+                                       fileoffset += 4;
+                                       for (;;) {
+                                               int size = gl(&file[fileoffset]);
+                                               fileoffset += 4;
+                                               if (!size)
+                                                       break;
+                                               struct debugsymbol *ds = symbols[symbolcnt++];
+                                               ds->name = au((char*)&file[fileoffset]);
+                                               fileoffset += 4 * size;
+                                               ds->value = gl(&file[fileoffset]) + seg + 4;
+                                               ds->segment = segmentid;
+                                               ds->section = dm;
+                                               fileoffset += 4;
+                                               symcnt++;
+                                       }
+                                       console_out_f(_T("%d symbols loaded.\n"), symcnt);
+                               } else if (hunktype == 0x3f1) {
+                                       fileoffset += 4;
+                                       int debugsize = gl(&file[fileoffset]);
+                                       fileoffset += 4;
+                                       fileoffset += debugsize * 4;
+                               } else if (hunktype == 0x3f2) {
+                                       fileoffset += 4;
+                               } else {
+                                       break;
+                               }
+                               if (fileoffset >= filelen)
+                                       break;
+                       }
+               }
+               dm->internalid = cnt++;
+               debugreportalloc(dm);
+               seg = next;
+       }
+       xfree(file);
+       console_out_f(_T("Segment '%s' %08x added.\n"), sg->name, seg2);
+}
+
+void debugmem_remsegs(uaecptr seg)
+{
+       int parentid = 0;
+       if (!seg || !debugmem_initialized)
+               return;
+       seg *= 4;
+       uaecptr seg2 = seg;
+       while (seg) {
+               uaecptr next = get_long(seg) * 4;
+               uaecptr len = get_long(seg - 4) * 4;
+               parentid = debugmem_unreserve(seg, len, true);
+               if (!parentid) {
+                       if (seg2 == seg)
+                               return;
+                       debugmem_break(5);
+                       return;
+               }
+               seg = next;
+       }
+       console_out_f(_T("Freeing segment %08x...\n"), seg);
+       struct debugmemallocs *nextavail = NULL;
+       for (int i = 0; i < MAX_DEBUGMEMALLOCS; i++) {
+               struct debugmemallocs *alloc = allocs[i];
+               if (alloc->parentid == parentid) {
+                       console_out_f(_T("Segment not freed: "));
+                       debugreportalloc(alloc);
+                       nextavail = alloc;
+               }
+       }
+       struct debugsegtracker *sg = NULL;
+       for (int i = 0; i < MAX_DEBUGSEGS; i++) {
+               if (dsegt[i]->allocid == parentid) {
+                       sg = dsegt[i];
+                       if (nextavail)
+                               sg->allocid = nextavail->id;
+                       break;
+               }
+       }
+       if (!sg) {
+               return;
+       }
+       if (!nextavail) {
+               console_out_f(_T("Segment '%s' %08x freed.\n"), sg->name, seg2);
+               xfree(sg->name);
+               memset(sg, 0, sizeof(struct debugsegtracker));
+       } else {
+               console_out_f(_T("Segment '%s' %08x partially freed.\n"), sg->name, seg2);
+       }
+}
+
+static void allocate_stackframebuffers(void)
+{
+       if (!stackframes) {
+               stackframes = xcalloc(struct debugstackframe, MAX_STACKFRAMES);
+               stackframessuper = xcalloc(struct debugstackframe, MAX_STACKFRAMES);
+       }
+       stackframecnt = 0;
+       stackframecntsuper = 0;
+}
+
+void debugmem_init(void)
+{
+       debug_waiting = false;
+       if (!debugmem_bank.baseaddr) {
+               int size = 0x10000000;
+               for (uae_u32 mem = 0x70000000; mem < 0xf0000000; mem += size) {
+                       if (get_mem_bank_real(mem) == &dummy_bank && get_mem_bank_real(mem + size - 65536) == &dummy_bank) {
+                               debugmem_bank.reserved_size = size;
+                               debugmem_bank.mask = debugmem_bank.reserved_size - 1;
+                               debugmem_bank.start = mem;
+                               if (!mapped_malloc(&debugmem_bank)) {
+                                       console_out_f(_T("Failed to automatically allocate debugmem (mapped_malloc)!\n"));
+                                       return;
+                               }
+                               map_banks(&debugmem_bank, debugmem_bank.start >> 16, debugmem_bank.allocated_size >> 16, 0);
+                               console_out_f(_T("Automatically allocated debugmem location: %08x - %08x %08x\n"),
+                                       debugmem_bank.start, debugmem_bank.start + debugmem_bank.allocated_size - 1, debugmem_bank.allocated_size);
+                               break;
+                       }
+               }
+               if (!debugmem_bank.baseaddr) {
+                       console_out_f(_T("Failed to automatically allocate debugmem (no space)!\n"));
+                       return;
+               }
+       }
+       memset(debugmem_bank.baseaddr, 0xa5, debugmem_bank.allocated_size);
+       if (!debugmem_func_lgeti) {
+
+               debugmem_func_lgeti = debugmem_bank.lgeti;
+               debugmem_func_wgeti = debugmem_bank.wgeti;
+               debugmem_func_lget = debugmem_bank.lget;
+               debugmem_func_wget = debugmem_bank.wget;
+               debugmem_func_bget = debugmem_bank.bget;
+               debugmem_func_lput = debugmem_bank.lput;
+               debugmem_func_wput = debugmem_bank.wput;
+               debugmem_func_bput = debugmem_bank.bput;
+               debugmem_func_xlate = debugmem_bank.xlateaddr;
+
+               debugmem_bank.lgeti = debugmem_lgeti;
+               debugmem_bank.wgeti = debugmem_wgeti;
+               debugmem_bank.lget = debugmem_lget;
+               debugmem_bank.wget = debugmem_wget;
+               debugmem_bank.bget = debugmem_bget;
+               debugmem_bank.lput = debugmem_lput;
+               debugmem_bank.wput = debugmem_wput;
+               debugmem_bank.bput = debugmem_bput;
+               debugmem_bank.xlateaddr = debugmem_xlate;
+       }
+       alloccnt = 0;
+       if (!allocs) {
+               allocs = xcalloc(struct debugmemallocs*, MAX_DEBUGMEMALLOCS);
+               struct debugmemallocs *a = xcalloc(struct debugmemallocs, MAX_DEBUGMEMALLOCS);
+               for (int i = 0; i < MAX_DEBUGMEMALLOCS; i++) {
+                       allocs[i] = a + i;
+               }
+       }
+       if (dmd) {
+               xfree(dmd[0]);
+               xfree(dmd);
+       }
+       totalmemdata = debugmem_bank.allocated_size / PAGE_SIZE;
+       dmd = xcalloc(struct debugmemdata*, totalmemdata);
+       struct debugmemdata *d = xcalloc(struct debugmemdata, totalmemdata);
+       for (int i = 0; i < totalmemdata; i++) {
+               dmd[i] = d + i;
+       }
+       debugmemptr = 0;
+       if (!dsegt) {
+               dsegt = xcalloc(struct debugsegtracker*, MAX_DEBUGSEGS);
+               struct debugsegtracker *sg = xcalloc(struct debugsegtracker, MAX_DEBUGSEGS);
+               for (int i = 0; i < MAX_DEBUGSEGS; i++) {
+                       dsegt[i] = sg + i;
+               }
+       }
+       if (!symbols) {
+               symbols = xcalloc(struct debugsymbol*, MAX_DEBUGSYMS);
+               struct debugsymbol *sg = xcalloc(struct debugsymbol, MAX_DEBUGSYMS);
+               for (int i = 0; i < MAX_DEBUGSYMS; i++) {
+                       symbols[i] = sg + i;
+               }
+       }
+       if (!stackvars) {
+               stackvars = xcalloc(struct stackvar*, MAX_STACKVARS);
+               struct stackvar *sg = xcalloc(struct stackvar, MAX_STACKVARS);
+               for (int i = 0; i < MAX_STACKVARS; i++) {
+                       stackvars[i] = sg + i;
+               }
+       }
+       if (!codefiles) {
+               codefiles = xcalloc(struct debugcodefile*, MAX_DEBUGCODEFILES);
+       }
+       for (int i = 0; i < MAX_DEBUGMEMALLOCS; i++) {
+               memset(allocs[i], 0, sizeof(struct debugmemallocs));
+       }
+       for (int i = 0; i < totalmemdata; i++) {
+               memset(dmd[i], 0, sizeof(struct debugmemdata));
+       }
+       for (int i = 0; i < MAX_DEBUGSEGS; i++) {
+               xfree(dsegt[i]->name);
+               memset(dsegt[i], 0, sizeof(struct debugsegtracker));
+       }
+       for (int i = 0; i < MAX_DEBUGSYMS; i++) {
+               xfree(symbols[i]->name);
+               memset(symbols[i], 0, sizeof(struct debugsymbol));
+       }
+       for (int i = 0; i < MAX_STACKVARS; i++) {
+               xfree(stackvars[i]->name);
+               memset(stackvars[i], 0, sizeof(struct stackvar));
+       }
+       for (int i = 0; i < codefilecnt; i++) {
+               struct debugcodefile *cf = codefiles[i];
+               xfree(cf->lineptr);
+               xfree(cf->data);
+               xfree(cf->stabtypes);
+               memset(cf, 0, sizeof(struct debugcodefile));
+       }
+       xfree(stabs);
+       stabs = NULL;
+       allocate_stackframebuffers();
+
+       debugmem_active = false;
+       stabscount = 0;
+       linemapsize = 0;
+       codefilecnt = 0;
+       symbolcnt = 0;
+       executable_last_segment = 0;
+       segtrackermax = 0;
+       debugmem_initialized = true;
+       debugmem_chiplimit = 0x400;
+       debugstack_word_state = 0;
+
+       debugger_load_libraries();
+}
+
+void debugmem_disable(void)
+{
+       if (!debugmem_initialized)
+               return;
+       debugmem_bank.lgeti = debugmem_func_lgeti;
+       debugmem_bank.wgeti = debugmem_func_wgeti;
+       debugmem_bank.lget = debugmem_func_lget;
+       debugmem_bank.wget = debugmem_func_wget;
+       debugmem_bank.bget = debugmem_func_bget;
+       debugmem_bank.lput = debugmem_func_lput;
+       debugmem_bank.wput = debugmem_func_wput;
+       debugmem_bank.bput = debugmem_func_bput;
+       debugmem_bank.xlateaddr = debugmem_func_xlate;
+       debugmem_mapped = false;
+}
+void debugmem_enable(void)
+{
+       if (!debugmem_initialized)
+               return;
+       debugmem_bank.lgeti = debugmem_lgeti;
+       debugmem_bank.wgeti = debugmem_wgeti;
+       debugmem_bank.lget = debugmem_lget;
+       debugmem_bank.wget = debugmem_wget;
+       debugmem_bank.bget = debugmem_bget;
+       debugmem_bank.lput = debugmem_lput;
+       debugmem_bank.wput = debugmem_wput;
+       debugmem_bank.bput = debugmem_bput;
+       debugmem_bank.xlateaddr = debugmem_xlate;
+       debugmem_mapped = true;
+}
+
+static struct debugsegtracker *findsegment(uaecptr addr, struct debugmemallocs **allocp)
+{
+       for (int i = 0; i < segtrackermax; i++) {
+               struct debugsegtracker *seg = dsegt[i];
+               if (!seg->allocid)
+                       continue;
+               struct debugmemallocs *alloc = allocs[seg->allocid];
+               if (addr >= alloc->start && addr < alloc->start + alloc->size) {
+                       if (allocp)
+                               *allocp = alloc;
+                       return seg;
+               }
+       }
+       return NULL;
+}
+
+static struct debugmemallocs *ismysegment(uaecptr addr)
+{
+       if (addr < debugmem_bank.start)
+               return NULL;
+       addr -= debugmem_bank.start;
+       if (addr >= debugmem_bank.allocated_size)
+               return false;
+       for (int i = 1; i <= executable_last_segment; i++) {
+               struct debugmemallocs *alloc = allocs[i];
+               if (addr >= alloc->start && addr < alloc->start + alloc->size)
+                       return alloc;
+       }
+       return NULL;
+}
+
+bool debugmem_get_symbol_value(const TCHAR *name, uae_u32 *valp)
+{
+       for (int i = 0; i < symbolcnt; i++) {
+               struct debugsymbol *ds = symbols[i];
+               if (!_tcscmp(ds->name, name)) {
+                       *valp = ds->value;
+                       return true;
+               }
+       }
+       for (int i = 0; i < symbolcnt; i++) {
+               struct debugsymbol *ds = symbols[i];
+               if (!_tcsicmp(ds->name, name)) {
+                       *valp = ds->value;
+                       return true;
+               }
+       }
+       return false;
+}
+
+int debugmem_get_symbol(uaecptr addr, TCHAR *out, int maxsize)
+{
+       if (out)
+               out[0] = 0;
+       int found = 0;
+       for (int i = 0; i < symbolcnt; i++) {
+               struct debugsymbol *ds = symbols[i];
+               if (ds->value == addr) {
+                       if (out) {
+                               TCHAR txt[256];
+                               _tcscpy(txt, ds->name);
+
+                               if ((ds->type == SYMBOLTYPE_FUNC) || !(ds->flags & SYMBOL_GLOBAL)) {
+                                       _tcscat(txt, _T(" ("));
+                                       if (!(ds->flags & SYMBOL_GLOBAL))
+                                               _tcscat(txt, _T("L"));
+                                       if (ds->type == SYMBOLTYPE_FUNC)
+                                               _tcscat(txt, _T("F"));
+                                       _tcscat(txt, _T(")"));
+                               }
+
+#if 0
+                               if ((ds->flags & SYMBOL_FUNC) && ds->data) {
+                                       bool first = true;
+                                       struct stackvar *sv = (struct stackvar*)ds->data;
+                                       TCHAR *p = txt + _tcslen(txt);
+                                       *p++ = '\n';
+                                       *p++ = '-';
+                                       *p = 0;
+                                       int size = sizeof(txt) / sizeof(TCHAR) - _tcslen(txt);
+                                       while (sv->func == ds) {
+                                               TCHAR txt2[256];
+                                               TCHAR *p2 = txt2;
+                                               if (!first)
+                                                       *p2++ = ',';
+                                               first = false;
+                                               _stprintf(p2, _T("%s:+%05X"), sv->name, sv->offset);
+                                               if (size <= _tcslen(txt2))
+                                                       break;
+                                               size -= _tcslen(txt2);
+                                               _tcscat(txt, txt2);
+                                               p += _tcslen(txt);
+                                               sv++;
+                                       }
+                                       *p = 0;
+                               }
+#endif
+
+                               if (maxsize > _tcslen(txt)) {
+                                       if (found)
+                                               _tcscat(out, _T("\n"));
+                                       _tcscat(out, txt);
+                                       maxsize -= _tcslen(txt);
+                               }
+                       }
+                       found = i + 1;
+               }
+       }
+       return found;
+}
+
+struct debugcodefile *last_codefile;
+
+int debugmem_get_sourceline(uaecptr addr, TCHAR *out, int maxsize)
+{
+       if (addr < debugmem_bank.start)
+               return -1;
+       addr -= debugmem_bank.start;
+       if (addr >= debugmem_bank.allocated_size)
+               return -1;
+       if (out)
+               out[0] = 0;
+       for (int i = 1; i <= executable_last_segment; i++) {
+               struct debugmemallocs *alloc = allocs[i];
+               if (addr >= alloc->start && addr < alloc->start + alloc->size) {
+                       int offset = addr - alloc->start + alloc->relative_start - 8;
+                       if (offset < 0)
+                               return -1;
+                       struct linemapping *lm = &linemap[offset];
+                       int line = lm->line;
+                       if (line < 0)
+                               return -1;
+                       if (!out)
+                               return line;
+                       int lastline = line;
+                       for (;;) {
+                               offset++;
+                               if (offset >= linemapsize)
+                                       break;
+                               struct linemapping *lm2 = &linemap[offset];
+                               if (!lm2->file)
+                                       continue;
+                               if (lm2->file != lm->file)
+                                       break;
+                               if (lm2->line <= 0)
+                                       continue;
+                               lastline = lm2->line;
+                               break;
+                       }
+                       struct debugcodefile *cf = lm->file;
+                       if (cf->lineptr[line] && cf->lineptr[line][0]) {
+                               if (last_codefile != cf) {
+                                       TCHAR txt[256];
+                                       last_codefile = cf;
+                                       _stprintf(txt, _T("Source file: %s\n"), cf->name);
+                                       if (maxsize > _tcslen(txt)) {
+                                               _tcscat(out, txt);
+                                               maxsize -= _tcslen(txt);
+                                       }
+                               }
+                               if (lastline - line > 10)
+                                       lastline = line + 10;
+                               for (int j = line; j < lastline; j++) {
+                                       TCHAR txt[256];
+                                       TCHAR *s = au((uae_char*)cf->lineptr[j]);
+                                       if (maxsize > 6 + _tcslen(s) + 2) {
+                                               _stprintf(txt, _T("%5d %s\n"), j, s);
+                                               _tcscat(out, txt);
+                                               maxsize -= _tcslen(txt) + 2;
+                                       }
+                                       xfree(s);
+                               }
+                               return line;
+                       }
+                       return -1;
+               }
+       }
+       return -1;
+}
+
+int debugmem_get_segment(uaecptr addr, bool *exact, bool *ext, TCHAR *out, TCHAR *name)
+{
+       if (out)
+               out[0] = 0;
+       if (name)
+               name[0] = 0;
+       if (exact)
+               *exact = false;
+       struct debugmemallocs *alloc = ismysegment(addr);
+       if (alloc) {
+               if (exact && alloc->start + 8 + debugmem_bank.start == addr)
+                       *exact = true;
+               if (out)
+                       _stprintf(out, _T("[%06X]"), ((addr - debugmem_bank.start) - (alloc->start + 8)) & 0xffffff);
+               if (name)
+                       _stprintf(name, _T("Segment %d: %08x %08x-%08x"),
+                               alloc->id, alloc->idtype, alloc->start + debugmem_bank.start, alloc->start + alloc->size - 1 + debugmem_bank.start);
+               if (ext)
+                       *ext = false;
+               return alloc->id;
+       } else {
+               struct debugmemallocs *alloc;
+               struct debugsegtracker *seg = findsegment(addr, &alloc);
+               if (seg) {
+                       if (out)
+                               _stprintf(out, _T("[%06X]"), ((addr - debugmem_bank.start) - (alloc->start + 8)) & 0xffffff);
+                       if (name)
+                               _stprintf(name, _T("Segment %d ('%s') %08x %08x-%08x"),
+                                       alloc->internalid, seg->name, alloc->idtype, alloc->start, alloc->start + alloc->size - 1);
+                       if (ext)
+                               *ext = true;
+                       return alloc->id;
+               }
+       }
+       return 0;
+}
+
+bool debugmem_list_segment(int mode, uaecptr addr)
+{
+       if (mode) {
+               for (int i = 0; i < segtrackermax; i++) {
+                       struct debugsegtracker *seg = dsegt[i];
+                       if (!seg->allocid)
+                               continue;
+                       console_out_f(_T("Load module '%s':\n"), seg->name);
+                       debugreportsegment(seg, true);
+               }
+       } else {
+               if (addr == 0xffffffff) {
+                       if (!executable_last_segment) {
+                               console_out(_T("No executable loaded\n"));
+                               return false;
+                       }
+                       for (int i = 1; i <= executable_last_segment; i++) {
+                               debugreportalloc(allocs[i]);
+                       }
+                       return true;
+               } else {
+                       struct debugsegtracker *seg = findsegment(addr, NULL);
+                       if (seg) {
+                               debugreportsegment(seg, false);
+                               return true;
+                       }
+                       if (ismysegment(addr)) {
+                               for (int i = 1; i <= executable_last_segment; i++) {
+                                       debugreportalloc(allocs[i]);
+                               }
+                               return true;
+                       }
+               }
+       }
+       return false;
+}
+
+bool debugmem_get_range(uaecptr *start, uaecptr *end)
+{
+       if (!executable_last_segment)
+               return false;
+       *start = allocs[1]->start + debugmem_bank.start;
+       *end = allocs[executable_last_segment - 1]->start + allocs[executable_last_segment - 1]->size + debugmem_bank.start;
+       return true;
+}
+
+bool debugmem_isactive(void)
+{
+       return executable_last_segment != 0;
+}
+
+uae_u32 debugmem_chiphit(uaecptr addr, uae_u32 v, int size)
+{
+       static int recursive;
+       if (recursive) {
+               return 0xdeadf00d;
+       }
+       recursive++;
+       bool dbg = false;
+       if (size > 0) {
+               if (debugmem_active) {
+                       console_out_f(_T("%s write to %08x, value = %08x\n"), size == 4 ? _T("Long") : (size == 2 ? _T("Word") : _T("Byte")), addr, v);
+                       dbg = debugmem_break(6);
+               }
+       } else {
+               size = -size;
+               // execbase?
+               if (size == 4 && addr == 4) {
+                       recursive--;
+                       return do_get_mem_long((uae_u32*)(chipmem_bank.baseaddr + 4));
+               }
+               // exception vectors
+               if (regs.vbr < 0x100) {
+                       // vbr == 0 so skip aligned long reads
+                       if (size == 4 && addr >= regs.vbr + 8 && addr < regs.vbr + 0x100) {
+                               recursive--;
+                               return do_get_mem_long((uae_u32*)(chipmem_bank.baseaddr + addr));
+                       }
+               }
+               if (debugmem_active) {
+                       console_out_f(_T("%s read from %08x\n"), size == 4 ? _T("Long") : (size == 2 ? _T("Word") : _T("Byte")), addr);
+                       dbg = debugmem_break(7);
+               }
+       }
+       if (debugmem_active) {
+               if (!dbg)
+                       m68k_dumpstate(0, 0xffffffff);
+       }
+       recursive--;
+       return 0xdeadf00d;
+}
+
+bool debugmem_extinvalidmem(uaecptr addr, uae_u32 v, int size)
+{
+       static int recursive;
+       bool dbg = false;
+       if (!debugmem_bank.baseaddr || !debugmem_active)
+               return false;
+       if (recursive) {
+               return true;
+       }
+       recursive++;
+       if (size > 0) {
+               console_out_f(_T("%s write to %08x, value = %08x\n"), size == 4 ? _T("Long") : (size == 2 ? _T("Word") : _T("Byte")), addr, v);
+               dbg = debugmem_break(8);
+       } else {
+               size = -size;
+               console_out_f(_T("%s read from %08x\n"), size == 4 ? _T("Long") : (size == 2 ? _T("Word") : _T("Byte")), addr, v);
+               dbg = debugmem_break(9);
+       }
+       if (!dbg)
+               m68k_dumpstate(0, 0xffffffff);
+       recursive--;
+       return true;
+}
+
+bool debugmem_enable_stackframe(bool enable)
+{
+       if (enable && !stackframemode) {
+               stackframemode = 1;
+               console_out(_T("Full stack frame tracking enabled.\n"));
+               allocate_stackframebuffers();
+               return true;
+       } else if (!enable && stackframemode) {
+               stackframemode = 0;
+               console_out(_T("Full stack frame tracking disabled.\n"));
+               return true;
+       }
+       return false;
+}
+
+bool debugmem_list_stackframe(bool super)
+{
+       if (!debugmem_bank.baseaddr && !stackframemode) {
+               return false;
+       }
+       int cnt = super ? stackframecntsuper : stackframecnt;
+       if (!cnt)
+               return false;
+       for (int i = 0; i < cnt; i++) {
+               struct debugstackframe *sf = super ? &stackframessuper[i] : &stackframes[i];
+               console_out_f(_T("%08x -> %08x SP=%08x"), sf->current_pc, sf->branch_pc, sf->stack);
+               if (sf->sr & 0x2000)
+                       console_out_f(_T(" SR=%04x"), sf->sr);
+               TCHAR txt1[256], txt2[256];
+               if (debugmem_get_segment(sf->branch_pc, NULL, NULL, txt1, txt2)) {
+                       console_out_f(_T(" %s %s"), txt1, txt2);
+               }
+               if (debugmem_get_symbol(sf->branch_pc, txt1, sizeof(txt1) / sizeof(TCHAR))) {
+                       console_out_f(_T(" %s"), txt1);
+               }
+               console_out_f(_T("\n"));
+               uae_u32 sregs[16];
+               memcpy(sregs, regs.regs, sizeof(uae_u32) * 16);
+               memcpy(regs.regs, sf->regs, sizeof(uae_u32) * 16);
+               m68k_disasm(sf->current_pc, NULL, 0xffffffff, 2);
+               memcpy(regs.regs, sregs, sizeof(uae_u32) * 16);
+               console_out_f(_T("\n"));
+       }
+       return true;
+}
\ No newline at end of file
index eea844239a59e1a74e53b46c6c14070a44ac7180..6ed5d0bc05d26d3e93dc0dd3827da8d77eb1afa7 100644 (file)
@@ -336,7 +336,7 @@ static void enforcer_display_hit (const TCHAR *addressmode, uae_u32 pc, uaecptr
                if (bestpc_idxs[i] == -1) {
                        for (j = 0; j < 5; j++) {
                                pospc -= 2;
-                               sm68k_disasm (buf, NULL, pospc, &nextpc);
+                               sm68k_disasm (buf, NULL, pospc, &nextpc, 0xffffffff);
                                if (nextpc == temppc) {
                                        bestpc_idxs[i] = j;
                                        bestpc_array[i][j] = bestpc = pospc;
@@ -383,7 +383,7 @@ static void enforcer_display_hit (const TCHAR *addressmode, uae_u32 pc, uaecptr
                        continue;
                }
 
-               sm68k_disasm (buf, instrcode, bestpc, NULL);
+               sm68k_disasm (buf, instrcode, bestpc, NULL, 0xffffffff);
                _stprintf (lines[i], _T("%08x :   %-20s %s\n"), bestpc, instrcode, buf);
                temppc = bestpc;
        }
@@ -397,7 +397,7 @@ static void enforcer_display_hit (const TCHAR *addressmode, uae_u32 pc, uaecptr
        /* Now the instruction after the pc including the pc */
        temppc = pc;
        for (i = 0; i < (INSTRUCTIONLINES + 1) / 2; i++) {
-               sm68k_disasm (buf, instrcode, temppc, &nextpc);
+               sm68k_disasm (buf, instrcode, temppc, &nextpc, 0xffffffff);
                _stprintf (enforcer_buf_ptr, _T("%08x : %s %-20s %s\n"), temppc,
                        (i == 0 ? _T("*") : _T(" ")), instrcode, buf);
                enforcer_buf_ptr += _tcslen (enforcer_buf_ptr);
index 6e63263188fef884aac1b504f28e1c584f60cb50..7898bdb08624a8fdd860cb46690e22e4a861adab 100644 (file)
@@ -65,6 +65,7 @@
 #include "cpuboard.h"
 #include "rommgr.h"
 #include "debug.h"
+#include "debugmem.h"
 #ifdef RETROPLATFORM
 #include "rp.h"
 #endif
@@ -8914,6 +8915,43 @@ static uae_u32 REGPARAM2 mousehack_done (TrapContext *ctx)
        } else if (mode == 102) {
                uaecptr ret = consolehook_beginio(ctx, trap_get_areg(ctx, 1));
                trap_put_long(ctx, trap_get_areg(ctx, 7) + 4 * 4, ret);
+       } else if (mode == 200) {
+               uae_u32 v;
+               // a0 = data, d0 = length, a1 = task, d2 = stack size (in), stack ptr (out)
+               uae_u32 stack = trap_get_dreg(ctx, 2);
+               v = debugmem_reloc(trap_get_areg(ctx, 0), trap_get_dreg(ctx, 0), trap_get_areg(ctx, 1), &stack);
+               trap_set_dreg(ctx, 2, stack);
+               return v;
+       } else if (mode == 201) {
+               debugmem_break(8);
+               return 1;
+       } else if (mode == 202) {
+               // a0 = segment, a1 = name, d2 = lock
+               debugmem_addsegs(ctx, trap_get_areg(ctx, 0), trap_get_areg(ctx, 1), trap_get_dreg(ctx, 2));
+               return 1;
+       } else if (mode == 203) {
+               debugmem_remsegs(trap_get_areg(ctx, 0));
+               return 1;
+       } else if (mode == 204 || mode == 206) {
+               // d0 = size, a1 = flags
+               uae_u32 v = debugmem_allocmem(mode == 206, trap_get_dreg(ctx, 0), trap_get_areg(ctx, 1), trap_get_areg(ctx, 0));
+               if (v) {
+                       trap_set_areg(ctx, 0, v);
+                       return v;
+               } else {
+                       trap_set_areg(ctx, 0, 0);
+                       return trap_get_dreg(ctx, 0);
+               }
+       } else if (mode == 205 || mode == 207) {
+               return debugmem_freemem(mode == 207, trap_get_areg(ctx, 1), trap_get_dreg(ctx, 0), trap_get_areg(ctx, 0));
+       } else if (mode == 208) {
+               // enable segtrack: bit 0 set
+               return currprefs.debugging_features ? 1 : 0;
+       } else if (mode == 209) {
+               // called if segtrack was enabled
+               return 0;
+       } else if (mode == 299) {
+               return debugmem_exit();
        } else {
                write_log (_T("Unknown mousehack hook %d\n"), mode);
        }
@@ -9075,7 +9113,7 @@ void filesys_install (void)
        dw (RTS);
 
        org (rtarea_base + 0xFF38);
-       calltrap (deftrap2 (mousehack_done, 0, _T("mousehack_done")));
+       calltrap (deftrapres(mousehack_done, 0, _T("misc_funcs")));
        dw (RTS);
 
        org (rtarea_base + 0xFF40);
index f0e56dba12903d4247b28178ab6086c928ddc4b4..b7ef6cc1bcb19c49663249836c85fa717bdd4306 100644 (file)
- db(0x00); db(0x00); db(0x0a); db(0x89); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x60); db(0x02); db(0x00); db(0x0c); db(0x60); db(0x00); db(0x0d); db(0xf8);
- db(0x00); db(0x00); db(0x0b); db(0x5e); db(0x00); db(0x00); db(0x00); db(0xc6);
- db(0x00); db(0x00); db(0x21); db(0x16); db(0x00); db(0x00); db(0x00); db(0x30);
- db(0x00); db(0x00); db(0x05); db(0x96); db(0x00); db(0x00); db(0x1c); db(0xc0);
- db(0x00); db(0x00); db(0x00); db(0x82); db(0x00); db(0x00); db(0x1d); db(0x1c);
- db(0x00); db(0x00); db(0x1d); db(0xca); db(0x00); db(0x00); db(0x21); db(0xe0);
- db(0x43); db(0xfa); db(0x29); db(0x62); db(0x4e); db(0xae); db(0xff); db(0xa0);
+ db(0x00); db(0x00); db(0x0a); db(0xd7); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x60); db(0x02); db(0x00); db(0x0c); db(0x60); db(0x00); db(0x0d); db(0xfc);
+ db(0x00); db(0x00); db(0x0b); db(0x62); db(0x00); db(0x00); db(0x00); db(0xca);
+ db(0x00); db(0x00); db(0x21); db(0x1a); db(0x00); db(0x00); db(0x00); db(0x30);
+ db(0x00); db(0x00); db(0x05); db(0x9a); db(0x00); db(0x00); db(0x1c); db(0xc4);
+ db(0x00); db(0x00); db(0x00); db(0x82); db(0x00); db(0x00); db(0x1d); db(0x20);
+ db(0x00); db(0x00); db(0x1d); db(0xce); db(0x00); db(0x00); db(0x21); db(0xe4);
+ db(0x43); db(0xfa); db(0x2a); db(0x82); db(0x4e); db(0xae); db(0xff); db(0xa0);
  db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x16); db(0x20); db(0x40);
  db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x07);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x07);
- db(0xe5); db(0x89); db(0x2e); db(0x01); db(0x60); db(0x00); db(0x0d); db(0xaa);
+ db(0xe5); db(0x89); db(0x2e); db(0x01); db(0x60); db(0x00); db(0x0d); db(0xae);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x01);
  db(0x00); db(0x00); db(0x00); db(0x04); db(0x00); db(0x00); db(0x00); db(0x02);
  db(0x4a); db(0xfc); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x29); db(0xbc); db(0x00); db(0x01); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x28); db(0xce); db(0x00); db(0x00); db(0x00); db(0x00); db(0xff); db(0xff);
+ db(0x2a); db(0xf4); db(0x00); db(0x01); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x29); db(0xee); db(0x00); db(0x00); db(0x00); db(0x00); db(0xff); db(0xff);
  db(0xff); db(0x98); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x43); db(0xfa); db(0x29); db(0x26); db(0x70); db(0x00);
+ db(0x00); db(0x04); db(0x43); db(0xfa); db(0x2a); db(0x46); db(0x70); db(0x00);
  db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x22); db(0x00); db(0x30); db(0x3c);
- db(0x3f); db(0xf8); db(0x61); db(0x00); db(0x27); db(0xc4); db(0x20); db(0x81);
- db(0x43); db(0xfa); db(0x28); db(0xfe); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0x3f); db(0xf8); db(0x61); db(0x00); db(0x28); db(0xe4); db(0x20); db(0x81);
+ db(0x43); db(0xfa); db(0x2a); db(0x1e); db(0x70); db(0x00); db(0x4e); db(0xae);
  db(0xfd); db(0xd8); db(0x22); db(0x00); db(0x30); db(0x3c); db(0x3f); db(0xf4);
- db(0x61); db(0x00); db(0x27); db(0xae); db(0x20); db(0x81); db(0x61); db(0x00);
- db(0x16); db(0x6c); db(0x61); db(0x00); db(0x1a); db(0x32); db(0x4c); db(0xdf);
- db(0x7c); db(0xfc); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0xff); db(0xfe); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c);
- db(0xff); db(0xec); db(0x61); db(0x00); db(0x27); db(0x8c); db(0x2a); db(0x50);
- db(0x7a); db(0x00); db(0x70); db(0x00); db(0x0c); db(0x6e); db(0x00); db(0x21);
- db(0x00); db(0x14); db(0x65); db(0x1c); db(0x43); db(0xfa); db(0x28); db(0xdd);
- db(0x70); db(0x24); db(0x7a); db(0x01); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x4a); db(0x80); db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x28); db(0xcd);
- db(0x70); db(0x00); db(0x7a); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x28); db(0x40); db(0x4a); db(0xad); db(0x01); db(0x0c); db(0x67); db(0x00);
- db(0x00); db(0x62); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x26); db(0x40); db(0x27); db(0x4c); db(0x01); db(0xa8);
- db(0x7c); db(0x00); db(0xbc); db(0x6d); db(0x01); db(0x0e); db(0x64); db(0x32);
- db(0x2f); db(0x06); db(0x2e); db(0x2d); db(0x01); db(0x10); db(0x4a); db(0x45);
- db(0x67); db(0x04); db(0x08); db(0xc7); db(0x00); db(0x02); db(0x2f); db(0x0b);
- db(0x20); db(0x4b); db(0x61); db(0x00); db(0x0a); db(0x22); db(0x26); db(0x5f);
- db(0x27); db(0x41); db(0x01); db(0xa4); db(0x0c); db(0x80); db(0xff); db(0xff);
- db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46);
- db(0x48); db(0x46); db(0x60); db(0xd6); db(0x2c); db(0x1f); db(0x52); db(0x46);
- db(0x60); db(0xc8); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x22); db(0x4b);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x0c);
- db(0x67); db(0x06); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62);
- db(0x0c); db(0x6e); db(0x00); db(0x22); db(0x00); db(0x14); db(0x65); db(0x00);
- db(0x00); db(0x9e); db(0x78); db(0x03); db(0x0c); db(0x6e); db(0x00); db(0x24);
- db(0x00); db(0x14); db(0x65); db(0x04); db(0x00); db(0x44); db(0x01); db(0x00);
- db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x26); db(0xca);
- db(0x4e); db(0x90); db(0x2a); db(0x00); db(0x20); db(0x49); db(0x20); db(0x01);
- db(0x67); db(0x0c); db(0x22); db(0x04); db(0x74); db(0xfb); db(0x43); db(0xfa);
- db(0x28); db(0x41); db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x0c); db(0x85);
- db(0x00); db(0x40); db(0x00); db(0x00); db(0x65); db(0x26); db(0xba); db(0xae);
- db(0x00); db(0x3e); db(0x67); db(0x20); db(0x4e); db(0xae); db(0xff); db(0x88);
- db(0x2d); db(0x45); db(0x00); db(0x3e); db(0x70); db(0x00); db(0x72); db(0x17);
- db(0x41); db(0xee); db(0x00); db(0x22); db(0xd0); db(0x58); db(0x51); db(0xc9);
- db(0xff); db(0xfc); db(0x46); db(0x40); db(0x3d); db(0x40); db(0x00); db(0x52);
- db(0x4e); db(0xae); db(0xff); db(0x82); db(0x43); db(0xf9); db(0x00); db(0x21);
- db(0x00); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xea); db(0x4a); db(0x80);
- db(0x66); db(0x18); db(0x22); db(0x04); db(0x74); db(0xf6); db(0x20); db(0x7c);
- db(0x00); db(0x20); db(0x00); db(0x00); db(0x20); db(0x05); db(0x90); db(0x88);
- db(0x65); db(0x08); db(0x67); db(0x06); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x27); db(0x39); db(0x43); db(0xfa);
- db(0x00); db(0x5a); db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0f); db(0x64);
- db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x48);
- db(0x61); db(0x00); db(0x26); db(0x46); db(0x4e); db(0x90); db(0x4c); db(0xdf);
- db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3c); db(0x22);
- db(0x7a); db(0x00); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x00);
- db(0x28); db(0x01); db(0x26); db(0x09); db(0x24); db(0x48); db(0x43); db(0xfa);
- db(0x27); db(0x5c); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x4a); db(0x80); db(0x67); db(0x16); db(0x2c); db(0x40); db(0x22); db(0x0a);
- db(0xe4); db(0x8b); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x2a); db(0x00);
- db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xfe); db(0x62); db(0x20); db(0x05); db(0x4c); db(0xdf); db(0x44); db(0x3c);
- db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00);
- db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
- db(0x41); db(0xfa); db(0x26); db(0xfc); db(0x43); db(0xfa); db(0x00); db(0x16);
- db(0x70); db(0x0f); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40);
- db(0x61); db(0x00); db(0xff); db(0xa2); db(0x60); db(0xdc); db(0x00); db(0x00);
+ db(0x61); db(0x00); db(0x28); db(0xce); db(0x20); db(0x81); db(0x61); db(0x00);
+ db(0x16); db(0x70); db(0x61); db(0x00); db(0x1a); db(0x36); db(0x61); db(0x00);
+ db(0x22); db(0x1a); db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x70); db(0x00);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0xec); db(0x61); db(0x00);
+ db(0x28); db(0xa8); db(0x2a); db(0x50); db(0x7a); db(0x00); db(0x70); db(0x00);
+ db(0x0c); db(0x6e); db(0x00); db(0x21); db(0x00); db(0x14); db(0x65); db(0x1c);
+ db(0x43); db(0xfa); db(0x29); db(0xf9); db(0x70); db(0x24); db(0x7a); db(0x01);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0c);
+ db(0x43); db(0xfa); db(0x29); db(0xe9); db(0x70); db(0x00); db(0x7a); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x4a); db(0xad);
+ db(0x01); db(0x0c); db(0x67); db(0x00); db(0x00); db(0x62); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x02); db(0x38); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40);
+ db(0x27); db(0x4c); db(0x01); db(0xa8); db(0x7c); db(0x00); db(0xbc); db(0x6d);
+ db(0x01); db(0x0e); db(0x64); db(0x32); db(0x2f); db(0x06); db(0x2e); db(0x2d);
+ db(0x01); db(0x10); db(0x4a); db(0x45); db(0x67); db(0x04); db(0x08); db(0xc7);
+ db(0x00); db(0x02); db(0x2f); db(0x0b); db(0x20); db(0x4b); db(0x61); db(0x00);
+ db(0x0a); db(0x22); db(0x26); db(0x5f); db(0x27); db(0x41); db(0x01); db(0xa4);
+ db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08);
+ db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xd6);
+ db(0x2c); db(0x1f); db(0x52); db(0x46); db(0x60); db(0xc8); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x22); db(0x4b); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x02); db(0x38); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x20); db(0x0c); db(0x67); db(0x06); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x0c); db(0x6e); db(0x00); db(0x22);
+ db(0x00); db(0x14); db(0x65); db(0x00); db(0x00); db(0x9e); db(0x78); db(0x03);
+ db(0x0c); db(0x6e); db(0x00); db(0x24); db(0x00); db(0x14); db(0x65); db(0x04);
+ db(0x00); db(0x44); db(0x01); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x80);
+ db(0x61); db(0x00); db(0x27); db(0xe6); db(0x4e); db(0x90); db(0x2a); db(0x00);
+ db(0x20); db(0x49); db(0x20); db(0x01); db(0x67); db(0x0c); db(0x22); db(0x04);
+ db(0x74); db(0xfb); db(0x43); db(0xfa); db(0x29); db(0x5d); db(0x4e); db(0xae);
+ db(0xfd); db(0x96); db(0x0c); db(0x85); db(0x00); db(0x40); db(0x00); db(0x00);
+ db(0x65); db(0x26); db(0xba); db(0xae); db(0x00); db(0x3e); db(0x67); db(0x20);
+ db(0x4e); db(0xae); db(0xff); db(0x88); db(0x2d); db(0x45); db(0x00); db(0x3e);
+ db(0x70); db(0x00); db(0x72); db(0x17); db(0x41); db(0xee); db(0x00); db(0x22);
+ db(0xd0); db(0x58); db(0x51); db(0xc9); db(0xff); db(0xfc); db(0x46); db(0x40);
+ db(0x3d); db(0x40); db(0x00); db(0x52); db(0x4e); db(0xae); db(0xff); db(0x82);
+ db(0x43); db(0xf9); db(0x00); db(0x21); db(0x00); db(0x00); db(0x4e); db(0xae);
+ db(0xfd); db(0xea); db(0x4a); db(0x80); db(0x66); db(0x18); db(0x22); db(0x04);
+ db(0x74); db(0xf6); db(0x20); db(0x7c); db(0x00); db(0x20); db(0x00); db(0x00);
+ db(0x20); db(0x05); db(0x90); db(0x88); db(0x65); db(0x08); db(0x67); db(0x06);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa);
+ db(0x28); db(0x55); db(0x43); db(0xfa); db(0x00); db(0x5a); db(0x70); db(0x0a);
+ db(0x61); db(0x00); db(0x0f); db(0x64); db(0x22); db(0x40); db(0x72); db(0x01);
+ db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00); db(0x27); db(0x62);
+ db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x3c); db(0x22); db(0x7a); db(0x00); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x24); db(0x00); db(0x28); db(0x01); db(0x26); db(0x09);
+ db(0x24); db(0x48); db(0x43); db(0xfa); db(0x28); db(0x78); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0x16);
+ db(0x2c); db(0x40); db(0x22); db(0x0a); db(0xe4); db(0x8b); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x2a); db(0x00); db(0x22); db(0x4e); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x20); db(0x05);
+ db(0x4c); db(0xdf); db(0x44); db(0x3c); db(0x4e); db(0x75); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x28); db(0x18);
+ db(0x43); db(0xfa); db(0x00); db(0x16); db(0x70); db(0x0f); db(0x22); db(0x3c);
+ db(0x00); db(0x00); db(0x1f); db(0x40); db(0x61); db(0x00); db(0xff); db(0xa2);
+ db(0x60); db(0xdc); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10);
+ db(0x00); db(0x00); db(0x00); db(0x00); db(0x72); db(0x02); db(0x30); db(0x3c);
+ db(0xff); db(0x48); db(0x61); db(0x00); db(0x26); db(0xd4); db(0x4e); db(0x90);
+ db(0x22); db(0x00); db(0x6b); db(0x04); db(0x61); db(0x00); db(0x0a); db(0xb6);
+ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x7e); db(0x00); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0xf0); db(0x00); db(0x61); db(0x00); db(0x26); db(0xbc); db(0x22); db(0x48);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0x40); db(0x00); db(0x61); db(0x00);
+ db(0x26); db(0xb0); db(0x7c); db(0x03); db(0x4a); db(0x29); db(0x00); db(0x03);
+ db(0x67); db(0x42); db(0x0c); db(0x29); db(0x00); db(0xfd); db(0x00); db(0x07);
+ db(0x66); db(0x3a); db(0x52); db(0x87); db(0x49); db(0xe8); db(0x00); db(0x54);
+ db(0x4b); db(0xe9); db(0x00); db(0x04); db(0x48); db(0xe7); db(0x03); db(0xce);
+ db(0x38); db(0x15); db(0x4c); db(0xd4); db(0x07); db(0x00); db(0x4c); db(0xd4);
+ db(0x00); db(0x07); db(0x0c); db(0x44); db(0x00); db(0x12); db(0x66); db(0x06);
+ db(0x61); db(0x00); db(0x1d); db(0x9a); db(0x60); db(0x0a); db(0x0c); db(0x44);
+ db(0x00); db(0x13); db(0x66); db(0x04); db(0x61); db(0x00); db(0x1d); db(0xa8);
+ db(0x4c); db(0xdf); db(0x73); db(0xc0); db(0x28); db(0x80); db(0x1b); db(0x7c);
+ db(0x00); db(0x02); db(0x00); db(0x03); db(0xd0); db(0xfc); db(0x20); db(0x00);
+ db(0xd2); db(0xfc); db(0x00); db(0x08); db(0x51); db(0xce); db(0xff); db(0xae);
+ db(0x4a); db(0x87); db(0x67); db(0x00); db(0xff); db(0x84); db(0x60); db(0x00);
+ db(0xff); db(0x8a); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x01); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0x61); db(0x04); db(0x60); db(0xf2); db(0x4e); db(0x75); db(0x7e); db(0x0a);
+ db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x26); db(0x22);
+ db(0x20); db(0x07); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0xec);
+ db(0x7e); db(0x0b); db(0x0c); db(0x40); db(0x00); db(0x01); db(0x6d); db(0x00);
+ db(0xff); db(0xe8); db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x92);
+ db(0x60); db(0xde); db(0x0c); db(0x40); db(0x00); db(0x02); db(0x6e); db(0x08);
+ db(0x20); db(0x01); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x60); db(0xd0);
+ db(0x0c); db(0x40); db(0x00); db(0x03); db(0x6e); db(0x06); db(0x4e); db(0xae);
+ db(0xfe); db(0x86); db(0x60); db(0xc4); db(0x0c); db(0x40); db(0x00); db(0x04);
+ db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xff); db(0x4c); db(0x60); db(0xb8);
+ db(0x0c); db(0x40); db(0x00); db(0x05); db(0x6e); db(0x46); db(0x48); db(0xe7);
+ db(0x00); db(0xc0); db(0x70); db(0x26); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4c); db(0xdf);
+ db(0x03); db(0x00); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
+ db(0x00); db(0x08); db(0x25); db(0x48); db(0x00); db(0x0e); db(0x35); db(0x7c);
+ db(0x00); db(0x26); db(0x00); db(0x12); db(0x25); db(0x7c); db(0x40); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x14); db(0x35); db(0x7c); db(0x12); db(0x34);
+ db(0x00); db(0x18); db(0x25); db(0x49); db(0x00); db(0x1a); db(0x20); db(0x69);
+ db(0x00); db(0x10); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0x92);
+ db(0x60); db(0x00); db(0xff); db(0x6e); db(0x0c); db(0x40); db(0x00); db(0x06);
+ db(0x6e); db(0x00); db(0xff); db(0x66); db(0x41); db(0xfa); db(0x27); db(0x3f);
+ db(0x43); db(0xfa); db(0x00); db(0x42); db(0x70); db(0x01); db(0x22); db(0x3c);
+ db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00); db(0xfe); db(0x32);
+ db(0x22); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
+ db(0x25); db(0x70); db(0x70); db(0x14); db(0x4e); db(0x90); db(0x60); db(0x00);
+ db(0xff); db(0x40); db(0x70); db(0x00); db(0x20); db(0x59); db(0x4a); db(0x10);
+ db(0x67); db(0x10); db(0x2c); db(0x59); db(0x22); db(0x51); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x01); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xbc);
+ db(0x70); db(0x01); db(0x4a); db(0x40); db(0x4e); db(0x75); db(0x00); db(0x00);
  db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x72); db(0x02); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
- db(0x25); db(0xb8); db(0x4e); db(0x90); db(0x22); db(0x00); db(0x6b); db(0x04);
- db(0x61); db(0x00); db(0x0a); db(0xb6); db(0x70); db(0x00); db(0x4e); db(0x75);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x01); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x7e); db(0x00);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0xf0); db(0x00); db(0x61); db(0x00);
- db(0x25); db(0xa0); db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x40); db(0x00); db(0x61); db(0x00); db(0x25); db(0x94); db(0x7c); db(0x03);
- db(0x4a); db(0x29); db(0x00); db(0x03); db(0x67); db(0x42); db(0x0c); db(0x29);
- db(0x00); db(0xfd); db(0x00); db(0x07); db(0x66); db(0x3a); db(0x52); db(0x87);
- db(0x49); db(0xe8); db(0x00); db(0x54); db(0x4b); db(0xe9); db(0x00); db(0x04);
- db(0x48); db(0xe7); db(0x03); db(0xce); db(0x38); db(0x15); db(0x4c); db(0xd4);
- db(0x07); db(0x00); db(0x4c); db(0xd4); db(0x00); db(0x07); db(0x0c); db(0x44);
- db(0x00); db(0x12); db(0x66); db(0x06); db(0x61); db(0x00); db(0x1d); db(0x9a);
- db(0x60); db(0x0a); db(0x0c); db(0x44); db(0x00); db(0x13); db(0x66); db(0x04);
- db(0x61); db(0x00); db(0x1d); db(0xa8); db(0x4c); db(0xdf); db(0x73); db(0xc0);
- db(0x28); db(0x80); db(0x1b); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x03);
- db(0xd0); db(0xfc); db(0x20); db(0x00); db(0xd2); db(0xfc); db(0x00); db(0x08);
- db(0x51); db(0xce); db(0xff); db(0xae); db(0x4a); db(0x87); db(0x67); db(0x00);
- db(0xff); db(0x84); db(0x60); db(0x00); db(0xff); db(0x8a); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x61); db(0x04); db(0x60); db(0xf2);
- db(0x4e); db(0x75); db(0x7e); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x50);
- db(0x61); db(0x00); db(0x25); db(0x06); db(0x20); db(0x07); db(0x4e); db(0x90);
- db(0x4a); db(0x80); db(0x67); db(0xec); db(0x7e); db(0x0b); db(0x0c); db(0x40);
- db(0x00); db(0x01); db(0x6d); db(0x00); db(0xff); db(0xe8); db(0x6e); db(0x06);
- db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0xde); db(0x0c); db(0x40);
- db(0x00); db(0x02); db(0x6e); db(0x08); db(0x20); db(0x01); db(0x4e); db(0xae);
- db(0xfe); db(0xbc); db(0x60); db(0xd0); db(0x0c); db(0x40); db(0x00); db(0x03);
- db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x86); db(0x60); db(0xc4);
- db(0x0c); db(0x40); db(0x00); db(0x04); db(0x6e); db(0x06); db(0x4e); db(0xae);
- db(0xff); db(0x4c); db(0x60); db(0xb8); db(0x0c); db(0x40); db(0x00); db(0x05);
- db(0x6e); db(0x46); db(0x48); db(0xe7); db(0x00); db(0xc0); db(0x70); db(0x26);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x40);
- db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08); db(0x25); db(0x48);
- db(0x00); db(0x0e); db(0x35); db(0x7c); db(0x00); db(0x26); db(0x00); db(0x12);
- db(0x25); db(0x7c); db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14);
- db(0x35); db(0x7c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x25); db(0x49);
- db(0x00); db(0x1a); db(0x20); db(0x69); db(0x00); db(0x10); db(0x22); db(0x4a);
- db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x6e);
- db(0x0c); db(0x40); db(0x00); db(0x06); db(0x6e); db(0x00); db(0xff); db(0x66);
- db(0x41); db(0xfa); db(0x26); db(0x23); db(0x43); db(0xfa); db(0x00); db(0x42);
- db(0x70); db(0x01); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x27); db(0x10);
- db(0x61); db(0x00); db(0xfe); db(0x32); db(0x22); db(0x00); db(0x30); db(0x3c);
- db(0xff); db(0x50); db(0x61); db(0x00); db(0x24); db(0x54); db(0x70); db(0x14);
- db(0x4e); db(0x90); db(0x60); db(0x00); db(0xff); db(0x40); db(0x70); db(0x00);
- db(0x20); db(0x59); db(0x4a); db(0x10); db(0x67); db(0x10); db(0x2c); db(0x59);
- db(0x22); db(0x51); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00);
- db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x70); db(0x01); db(0x4a); db(0x40);
- db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x43); db(0xfa); db(0x25); db(0x62); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x2a); db(0x40); db(0xcb); db(0x4e); db(0x60); db(0x0e);
- db(0xcb); db(0x4e); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0xcb); db(0x4e); db(0x30); db(0x3c);
- db(0xff); db(0x50); db(0x61); db(0x00); db(0x23); db(0xfc); db(0x70); db(0x15);
- db(0x4e); db(0x90); db(0x2e); db(0x08); db(0x67); db(0xe2); db(0x28); db(0x4f);
- db(0x4f); db(0xef); db(0xfd); db(0xd8); db(0x2c); db(0x0f); db(0x24); db(0x46);
- db(0x47); db(0xea); db(0x00); db(0x28); db(0x22); db(0x4b); db(0x20); db(0x47);
- db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x20); db(0x47); db(0x42); db(0x10);
- db(0x24); db(0xfc); db(0x80); db(0x00); db(0x00); db(0x21); db(0x41); db(0xfa);
- db(0x24); db(0x50); db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00);
- db(0x03); db(0xed); db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x24); db(0xc0);
- db(0x24); db(0xfc); db(0x80); db(0x00); db(0x00); db(0x22); db(0x41); db(0xfa);
- db(0x24); db(0x38); db(0x22); db(0x08); db(0x4e); db(0xae); db(0xff); db(0xe2);
- db(0x24); db(0xc0); db(0x24); db(0xfc); db(0x80); db(0x00); db(0x00); db(0x23);
- db(0x70); db(0xff); db(0x24); db(0xc0); db(0x42); db(0x9a); db(0x42); db(0x92);
- db(0x0c); db(0x6e); db(0x00); db(0x24); db(0x00); db(0x14); db(0x64); db(0x20);
- db(0x24); db(0x46); db(0x22); db(0x0b); db(0x74); db(0x00); db(0x26); db(0x2a);
- db(0x00); db(0x0c); db(0x4e); db(0xae); db(0xff); db(0x22); db(0x22); db(0x2a);
- db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x22); db(0x2a);
- db(0x00); db(0x0c); db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x60); db(0x08);
- db(0x22); db(0x0b); db(0x24); db(0x06); db(0x4e); db(0xae); db(0xfd); db(0xa2);
- db(0x2e); db(0x4c); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
- db(0x23); db(0x68); db(0x70); db(0x16); db(0x4e); db(0x90); db(0x60); db(0x00);
- db(0xff); db(0x50); db(0x48); db(0xe7); db(0xf0); db(0xf8); db(0x24); db(0x00);
- db(0x26); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x12);
- db(0x61); db(0x00); db(0x23); db(0x4e); db(0x20); db(0x02); db(0x24); db(0x03);
- db(0x4e); db(0x90); db(0x24); db(0x40); db(0x70); db(0x2a); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x28); db(0x40); db(0x47); db(0xec); db(0x00); db(0x16); db(0x22); db(0x4b);
- db(0x22); db(0xca); db(0x22); db(0xc2); db(0x22); db(0xc3); db(0x30); db(0x3c);
- db(0x3f); db(0xf4); db(0x61); db(0x00); db(0x23); db(0x34); db(0x22); db(0xc8);
- db(0x30); db(0x3c); db(0x3f); db(0xf0); db(0x61); db(0x00); db(0x23); db(0x2a);
- db(0x22); db(0xc8); db(0x29); db(0x4b); db(0x00); db(0x0e); db(0x19); db(0x7c);
- db(0x00); db(0x02); db(0x00); db(0x08); db(0x19); db(0x7c); db(0x00); db(0xf6);
- db(0x00); db(0x09); db(0x41); db(0xfa); db(0x23); db(0xdb); db(0x29); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x00); db(0x14); db(0x29); db(0x48);
- db(0x00); db(0x12); db(0x22); db(0x4c); db(0x70); db(0x05); db(0x4e); db(0xae);
- db(0xff); db(0x58); db(0x4c); db(0xdf); db(0x1f); db(0x0f); db(0x4e); db(0x75);
- db(0x20); db(0x51); db(0x52); db(0x90); db(0x20); db(0x69); db(0x00); db(0x0c);
- db(0x20); db(0x10); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x0c); db(0x68);
- db(0x00); db(0x1f); db(0x00); db(0x14); db(0x65); db(0x14); db(0x4a); db(0xa8);
- db(0x00); db(0x22); db(0x67); db(0x0e); db(0x4a); db(0xa8); db(0x00); db(0x3c);
- db(0x67); db(0x08); db(0x22); db(0x69); db(0x00); db(0x10); db(0x22); db(0xa8);
- db(0x00); db(0x44); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0xf1); db(0xe0); db(0x2e); db(0x00); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0xff); db(0xfc); db(0x61); db(0x00); db(0x22); db(0xbc); db(0x24); db(0x48);
- db(0x74); db(0x00); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x10);
- db(0x41); db(0xfa); db(0x23); db(0x9e); db(0x43); db(0xfa); db(0xfd); db(0x78);
- db(0x70); db(0x14); db(0x61); db(0x00); db(0x0b); db(0xb6); db(0x24); db(0x00);
- db(0x76); db(0x00); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x10);
- db(0x41); db(0xfa); db(0x23); db(0x94); db(0x43); db(0xfa); db(0xfc); db(0xda);
- db(0x70); db(0x19); db(0x61); db(0x00); db(0x0b); db(0x9e); db(0x26); db(0x00);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x26); db(0x7e);
+ db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2a); db(0x40);
+ db(0xcb); db(0x4e); db(0x60); db(0x0e); db(0xcb); db(0x4e); db(0x70); db(0x00);
+ db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0xcb); db(0x4e); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
+ db(0x25); db(0x18); db(0x70); db(0x15); db(0x4e); db(0x90); db(0x2e); db(0x08);
+ db(0x67); db(0xe2); db(0x28); db(0x4f); db(0x4f); db(0xef); db(0xfd); db(0xd8);
+ db(0x2c); db(0x0f); db(0x24); db(0x46); db(0x47); db(0xea); db(0x00); db(0x28);
+ db(0x22); db(0x4b); db(0x20); db(0x47); db(0x12); db(0xd8); db(0x66); db(0xfc);
+ db(0x20); db(0x47); db(0x42); db(0x10); db(0x24); db(0xfc); db(0x80); db(0x00);
+ db(0x00); db(0x21); db(0x41); db(0xfa); db(0x25); db(0x6c); db(0x22); db(0x08);
+ db(0x24); db(0x3c); db(0x00); db(0x00); db(0x03); db(0xed); db(0x4e); db(0xae);
+ db(0xff); db(0xe2); db(0x24); db(0xc0); db(0x24); db(0xfc); db(0x80); db(0x00);
+ db(0x00); db(0x22); db(0x41); db(0xfa); db(0x25); db(0x54); db(0x22); db(0x08);
+ db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x24); db(0xc0); db(0x24); db(0xfc);
+ db(0x80); db(0x00); db(0x00); db(0x23); db(0x70); db(0xff); db(0x24); db(0xc0);
+ db(0x42); db(0x9a); db(0x42); db(0x92); db(0x0c); db(0x6e); db(0x00); db(0x24);
+ db(0x00); db(0x14); db(0x64); db(0x20); db(0x24); db(0x46); db(0x22); db(0x0b);
+ db(0x74); db(0x00); db(0x26); db(0x2a); db(0x00); db(0x0c); db(0x4e); db(0xae);
+ db(0xff); db(0x22); db(0x22); db(0x2a); db(0x00); db(0x04); db(0x4e); db(0xae);
+ db(0xff); db(0xdc); db(0x22); db(0x2a); db(0x00); db(0x0c); db(0x4e); db(0xae);
+ db(0xff); db(0xdc); db(0x60); db(0x08); db(0x22); db(0x0b); db(0x24); db(0x06);
+ db(0x4e); db(0xae); db(0xfd); db(0xa2); db(0x2e); db(0x4c); db(0x30); db(0x3c);
+ db(0xff); db(0x50); db(0x61); db(0x00); db(0x24); db(0x84); db(0x70); db(0x16);
+ db(0x4e); db(0x90); db(0x60); db(0x00); db(0xff); db(0x50); db(0x48); db(0xe7);
+ db(0xf0); db(0xf8); db(0x24); db(0x00); db(0x26); db(0x01); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x12); db(0x61); db(0x00); db(0x24); db(0x6a);
+ db(0x20); db(0x02); db(0x24); db(0x03); db(0x4e); db(0x90); db(0x24); db(0x40);
  db(0x70); db(0x2a); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40); db(0x41); db(0xe9);
- db(0x00); db(0x1a); db(0x20); db(0xca); db(0x20); db(0xce); db(0x20); db(0xc2);
- db(0x20); db(0x83); db(0x41); db(0xfa); db(0x23); db(0x42); db(0x23); db(0x48);
- db(0x00); db(0x0a); db(0x45); db(0xe9); db(0x00); db(0x1a); db(0x23); db(0x4a);
- db(0x00); db(0x0e); db(0x41); db(0xfa); db(0xfe); db(0x02); db(0x23); db(0x48);
- db(0x00); db(0x12); db(0x33); db(0x7c); db(0x02); db(0x14); db(0x00); db(0x08);
- db(0x70); db(0x03); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x20); db(0x02);
- db(0x22); db(0x03); db(0x61); db(0x00); db(0xfe); db(0xd6); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x04); db(0x61); db(0x00); db(0x22); db(0x2a);
- db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00);
- db(0x0b); db(0x9e); db(0x4c); db(0xdf); db(0x07); db(0x8f); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0xc0); db(0xf2); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x24); db(0x48); db(0x26); db(0x49); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x00); db(0xbe); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x70); db(0x00);
- db(0x43); db(0xeb); db(0x01); db(0xac); db(0x11); db(0xb1); db(0x00); db(0x00);
- db(0x00); db(0x0e); db(0x52); db(0x40); db(0x0c); db(0x40); db(0x00); db(0x8c);
- db(0x66); db(0xf2); db(0x20); db(0x0a); db(0xe4); db(0x88); db(0x21); db(0x40);
- db(0x00); db(0x36); db(0x22); db(0x48); db(0x41); db(0xfa); db(0x22); db(0xc0);
- db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b); db(0x01); db(0x9c);
- db(0x41); db(0xe8); db(0x00); db(0x12); db(0x4e); db(0xae); db(0xff); db(0x10);
- db(0x4c); db(0xdf); db(0x4f); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x7f); db(0x7e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x48);
- db(0x0c); db(0x9a); db(0x00); db(0x00); db(0x03); db(0xf3); db(0x66); db(0x00);
- db(0x01); db(0x06); db(0x50); db(0x8a); db(0x2e); db(0x2a); db(0x00); db(0x04);
- db(0x9e); db(0x92); db(0x50); db(0x8a); db(0x52); db(0x87); db(0x26); db(0x4a);
- db(0x20); db(0x07); db(0xe5); db(0x88); db(0xd7); db(0xc0); db(0x28); db(0x4a);
- db(0x9b); db(0xcd); db(0x7c); db(0x00); db(0x24); db(0x12); db(0x72); db(0x01);
- db(0x08); db(0x02); db(0x00); db(0x1e); db(0x67); db(0x04); db(0x08); db(0xc1);
- db(0x00); db(0x01); db(0x08); db(0xc1); db(0x00); db(0x10); db(0xe5); db(0x8a);
- db(0x66); db(0x04); db(0x42); db(0x9a); db(0x60); db(0x20); db(0x50); db(0x82);
- db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
- db(0x67); db(0x00); db(0x00); db(0xc4); db(0x20); db(0x40); db(0x20); db(0xc2);
- db(0x24); db(0xc8); db(0x22); db(0x0d); db(0x67); db(0x06); db(0x20); db(0x08);
- db(0xe4); db(0x88); db(0x2a); db(0x80); db(0x2a); db(0x48); db(0x52); db(0x86);
- db(0xbe); db(0x86); db(0x66); db(0xc0); db(0x7c); db(0x00); db(0x22); db(0x06);
- db(0xe5); db(0x89); db(0x20); db(0x74); db(0x18); db(0x00); db(0x58); db(0x88);
- db(0x26); db(0x1b); db(0x28); db(0x1b); db(0xe5); db(0x8c); db(0x0c); db(0x83);
- db(0x00); db(0x00); db(0x03); db(0xe9); db(0x67); db(0x08); db(0x0c); db(0x83);
- db(0x00); db(0x00); db(0x03); db(0xea); db(0x66); db(0x0c); db(0x20); db(0x04);
- db(0x4a); db(0x80); db(0x67); db(0x0e); db(0x10); db(0xdb); db(0x53); db(0x80);
- db(0x60); db(0xf6); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xeb);
- db(0x66); db(0x74); db(0x26); db(0x1b); db(0x0c); db(0x83); db(0x00); db(0x00);
- db(0x03); db(0xec); db(0x66); db(0x24); db(0x22); db(0x06); db(0xe5); db(0x89);
- db(0x20); db(0x74); db(0x18); db(0x00); db(0x58); db(0x88); db(0x20); db(0x1b);
- db(0x67); db(0xe8); db(0x22); db(0x1b); db(0xe5); db(0x89); db(0x26); db(0x34);
- db(0x18); db(0x00); db(0x58); db(0x83); db(0x24); db(0x1b); db(0xd7); db(0xb0);
- db(0x28); db(0x00); db(0x53); db(0x80); db(0x66); db(0xf6); db(0x60); db(0xe6);
- db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xf0); db(0x66); db(0x12);
- db(0x20); db(0x1b); db(0x67); db(0xc6); db(0x02); db(0x80); db(0x00); db(0xff);
- db(0xff); db(0xff); db(0x52); db(0x80); db(0xe5); db(0x88); db(0xd7); db(0xc0);
- db(0x60); db(0xee); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xf1);
- db(0x66); db(0x08); db(0x20); db(0x1b); db(0xe5); db(0x88); db(0xd7); db(0xc0);
- db(0x60); db(0xa8); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xf2);
- db(0x66); db(0x14); db(0x52); db(0x86); db(0xbe); db(0x86); db(0x66); db(0x00);
- db(0xff); db(0x66); db(0x7e); db(0x01); db(0x20); db(0x54); db(0x20); db(0x07);
- db(0x4c); db(0xdf); db(0x7e); db(0xfe); db(0x4e); db(0x75); db(0x91); db(0xc8);
- db(0x7e); db(0x00); db(0x60); db(0xf2); db(0x48); db(0xe7); db(0x40); db(0xf2);
- db(0x26); db(0x48); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x41); db(0xee);
- db(0x01); db(0x50); db(0x20); db(0x50); db(0x4a); db(0x90); db(0x67); db(0x1a);
- db(0x22); db(0x68); db(0x00); db(0x0a); db(0x45); db(0xfa); db(0x22); db(0x0f);
- db(0x10); db(0x19); db(0x12); db(0x1a); db(0xb0); db(0x01); db(0x66); db(0x06);
- db(0x4a); db(0x00); db(0x67); db(0x46); db(0x60); db(0xf2); db(0x20); db(0x50);
- db(0x60); db(0xe2); db(0x70); db(0x20); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x24); db(0x40);
- db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08); db(0x41); db(0xfa);
- db(0x21); db(0xe5); db(0x25); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
- db(0x21); db(0x3e); db(0x25); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xea);
- db(0x00); db(0x12); db(0x20); db(0x88); db(0x58); db(0x90); db(0x21); db(0x48);
- db(0x00); db(0x08); db(0x41); db(0xee); db(0x01); db(0x50); db(0x22); db(0x4a);
- db(0x4e); db(0xae); db(0xff); db(0x0a); db(0x20); db(0x4a); db(0x27); db(0x48);
- db(0x01); db(0xa0); db(0x20); db(0x08); db(0x4c); db(0xdf); db(0x4f); db(0x02);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x02); db(0x2e); db(0x00);
- db(0x4a); db(0x2b); db(0x00); db(0x60); db(0x67); db(0x7c); db(0x2c); db(0x6b);
- db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14);
- db(0x65); db(0x3e); db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x66);
- db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x62);
- db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x0a); db(0x41); db(0xeb);
- db(0x00); db(0x20); db(0x22); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x5a);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b);
- db(0x00); db(0x9e); db(0x66); db(0x0c); db(0x50); db(0xeb); db(0x00); db(0x9e);
- db(0x22); db(0x2b); db(0x00); db(0xb4); db(0x4e); db(0xae); db(0xfd); db(0x5a);
- db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x6c); db(0x60); db(0x32);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c);
- db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x08); db(0x41); db(0xeb);
- db(0x00); db(0x20); db(0x61); db(0x00); db(0x00); db(0xac); db(0x08); db(0x07);
- db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e);
- db(0x66); db(0x0c); db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x20); db(0x6b);
- db(0x00); db(0xb4); db(0x61); db(0x00); db(0x00); db(0x94); db(0x4e); db(0xae);
- db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x40); db(0x80); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x01); db(0x22); db(0x2e); db(0x00); db(0x2c); db(0x6b);
- db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14);
- db(0x65); db(0x3e); db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x66);
- db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x62);
- db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x0a); db(0x41); db(0xeb);
- db(0x00); db(0x20); db(0x22); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x60);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b);
- db(0x00); db(0x9e); db(0x67); db(0x0c); db(0x42); db(0x2b); db(0x00); db(0x9e);
- db(0x22); db(0x2b); db(0x00); db(0xb4); db(0x4e); db(0xae); db(0xfd); db(0x60);
- db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x6c); db(0x60); db(0x32);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c);
- db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x08); db(0x41); db(0xeb);
- db(0x00); db(0x20); db(0x61); db(0x00); db(0x00); db(0x44); db(0x08); db(0x07);
- db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e);
- db(0x67); db(0x0c); db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x20); db(0x6b);
- db(0x00); db(0xb4); db(0x61); db(0x00); db(0x00); db(0x2c); db(0x4e); db(0xae);
- db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x44); db(0x80); db(0x4e); db(0x75);
- db(0x22); db(0x48); db(0x20); db(0x6b); db(0x00); db(0xa0); db(0x20); db(0x68);
- db(0x00); db(0x22); db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8);
- db(0xd1); db(0xc8); db(0x22); db(0xa8); db(0x00); db(0x04); db(0x20); db(0x09);
- db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x04); db(0x4e); db(0x75);
- db(0x24); db(0x48); db(0x20); db(0x6b); db(0x00); db(0xa0); db(0x20); db(0x68);
- db(0x00); db(0x22); db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8);
- db(0xd1); db(0xc8); db(0x22); db(0x68); db(0x00); db(0x04); db(0xd3); db(0xc9);
- db(0xd3); db(0xc9); db(0xb3); db(0xca); db(0x66); db(0x06); db(0x21); db(0x52);
- db(0x00); db(0x04); db(0x60); db(0x18); db(0x20); db(0x09); db(0x67); db(0x0e);
- db(0x20); db(0x11); db(0xd0); db(0x80); db(0xd0); db(0x80); db(0xb5); db(0xc0);
- db(0x67); db(0x04); db(0x22); db(0x40); db(0x60); db(0xee); db(0x20); db(0x09);
- db(0x67); db(0x02); db(0x22); db(0x92); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x20); db(0x22); db(0x74); db(0x16); db(0x9f); db(0xc2); db(0x24); db(0x4f);
- db(0x32); db(0x02); db(0x42); db(0x32); db(0x10); db(0xff); db(0x53); db(0x41);
- db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x72); db(0x0f);
- db(0x4a); db(0x80); db(0x67); db(0x02); db(0x72); db(0x10); db(0x15); db(0x41);
- db(0x00); db(0x04); db(0x35); db(0x7c); db(0x08); db(0x00); db(0x00); db(0x08);
- db(0x22); db(0x6b); db(0x00); db(0xa4); db(0x33); db(0x7c); db(0x00); db(0x0b);
- db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16);
- db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28); db(0x13); db(0x7c);
- db(0x00); db(0x01); db(0x00); db(0x1e); db(0x22); db(0x6b); db(0x00); db(0xa8);
- db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c);
- db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x25); db(0x69); db(0x00); db(0x20);
- db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12);
- db(0x22); db(0x6b); db(0x00); db(0xa4); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0xdf); db(0xc2); db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75);
- db(0x4a); db(0x00); db(0x67); db(0x26); db(0x4a); db(0x2b); db(0x00); db(0x60);
- db(0x66); db(0x36); db(0x70); db(0x00); db(0x4a); db(0x33); db(0x00); db(0x61);
- db(0x67); db(0x04); db(0x52); db(0x00); db(0x60); db(0xf6); db(0x17); db(0x40);
- db(0x00); db(0x60); db(0x67); db(0x24); db(0x20); db(0x01); db(0x61); db(0x00);
- db(0xfd); db(0xf2); db(0x70); db(0x01); db(0x61); db(0x00); db(0xff); db(0x60);
- db(0x60); db(0x16); db(0x4a); db(0x2b); db(0x00); db(0x60); db(0x67); db(0x10);
- db(0x42); db(0x2b); db(0x00); db(0x60); db(0x20); db(0x01); db(0x61); db(0x00);
- db(0xfe); db(0x68); db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x48);
- db(0x4e); db(0x75); db(0x4a); db(0xac); db(0x00); db(0x14); db(0x67); db(0x0a);
- db(0x70); db(0x00); db(0x72); db(0x01); db(0x61); db(0x00); db(0xff); db(0xb2);
- db(0x4e); db(0x75); db(0x70); db(0x01); db(0x72); db(0x03); db(0x61); db(0x00);
- db(0xff); db(0xa8); db(0x4e); db(0x75); db(0x20); db(0x2b); db(0x00); db(0xb8);
- db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xff); db(0x67); db(0x18);
- db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x20); db(0x68); db(0x00); db(0x1c);
- db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x20); db(0x68); db(0x00); db(0x08);
- db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x21); db(0x40); db(0x00); db(0x28);
- db(0x4e); db(0x75); db(0x61); db(0x00); db(0xff); db(0xd8); db(0x10); db(0x2b);
- db(0x00); db(0xac); db(0x6b); db(0x0a); db(0x70); db(0x01); db(0x72); db(0x03);
- db(0x61); db(0x00); db(0xff); db(0x6e); db(0x4e); db(0x75); db(0x72); db(0x01);
- db(0x0c); db(0x00); db(0x00); db(0xfe); db(0x66); db(0x02); db(0x72); db(0x03);
- db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x5c); db(0x4e); db(0x75);
- db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90); db(0x67); db(0x0c);
- db(0x4a); db(0xa8); db(0x00); db(0x08); db(0x66); db(0x0a); db(0x4a); db(0xa8);
- db(0x00); db(0x0c); db(0x66); db(0x04); db(0x70); db(0x01); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2a); db(0x48); db(0x24); db(0x6c);
- db(0x00); db(0x18); db(0x2e); db(0x15); db(0x7a); db(0x00); db(0x4a); db(0x87);
- db(0x67); db(0x70); db(0x20); db(0x0a); db(0x67); db(0x6c); db(0x7c); db(0x00);
- db(0x22); db(0x2d); db(0x00); db(0x08); db(0x67); db(0x12); db(0x24); db(0x2a);
- db(0x00); db(0x04); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x4e); db(0xae);
- db(0xfc); db(0x34); db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6);
- db(0x22); db(0x2d); db(0x00); db(0x0c); db(0x67); db(0x1c); db(0x20); db(0x41);
- db(0x22); db(0x4a); db(0x2f); db(0x0a); db(0x45); db(0xec); db(0x00); db(0x20);
- db(0x48); db(0x7a); db(0x00); db(0x08); db(0x2f); db(0x28); db(0x00); db(0x08);
- db(0x4e); db(0x75); db(0x24); db(0x5f); db(0x4a); db(0x80); db(0x66); db(0x02);
- db(0x50); db(0xc6); db(0x4a); db(0x06); db(0x67); db(0x24); db(0x20); db(0x2a);
- db(0x00); db(0x04); db(0x90); db(0x8a); db(0x4a); db(0x92); db(0x66); db(0x0a);
- db(0x20); db(0x05); db(0x67); db(0x10); db(0x20); db(0x40); db(0x42); db(0x90);
- db(0x60); db(0x0a); db(0x20); db(0x52); db(0x22); db(0x4a); db(0x22); db(0xd8);
- db(0x59); db(0x80); db(0x6a); db(0xfa); db(0x53); db(0x95); db(0x53); db(0x87);
- db(0x60); db(0x94); db(0x2a); db(0x0a); db(0x24); db(0x52); db(0x53); db(0x87);
- db(0x60); db(0x8c); db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x20); db(0x6c);
- db(0x00); db(0x24); db(0x4a); db(0x90); db(0x4e); db(0x75); db(0x61); db(0x00);
- db(0xfc); db(0x4c); db(0x21); db(0x40); db(0x01); db(0x9c); db(0x2f); db(0x08);
- db(0x30); db(0x3c); db(0xff); db(0xec); db(0x61); db(0x00); db(0x1c); db(0xf2);
- db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00);
- db(0x1c); db(0xd8); db(0x22); db(0x48); db(0x20); db(0x5f); db(0x42); db(0xa8);
- db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94); db(0x4e); db(0x91);
- db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe); db(0x67); db(0x00);
- db(0xf6); db(0x92); db(0x20); db(0x28); db(0x01); db(0x90); db(0x67); db(0x14);
- db(0x6b); db(0x12); db(0x2f); db(0x08); db(0x72); db(0x01); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x5f);
- db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83); db(0x6a); db(0x0e);
- db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00);
- db(0x1c); db(0x98); db(0x4e); db(0x90); db(0x60); db(0x26); db(0x2c); db(0x4c);
- db(0x2f); db(0x08); db(0x61); db(0x00); db(0x0f); db(0xf6); db(0x20); db(0x5f);
- db(0x22); db(0x48); db(0x26); db(0x40); db(0x30); db(0x3c); db(0xff); db(0x20);
- db(0x61); db(0x00); db(0x1c); db(0x7e); db(0x4e); db(0x90); db(0x70); db(0x00);
- db(0x27); db(0x40); db(0x00); db(0x08); db(0x27); db(0x40); db(0x00); db(0x10);
- db(0x27); db(0x40); db(0x00); db(0x20); db(0x20); db(0x69); db(0x01); db(0x94);
- db(0x4a); db(0xa9); db(0x01); db(0x90); db(0x67); db(0x2c); db(0x20); db(0x08);
- db(0x67); db(0x32); db(0x61); db(0x00); db(0xfa); db(0x9a); db(0x48); db(0xe7);
- db(0x80); db(0xc0); db(0x20); db(0x29); db(0x01); db(0x90); db(0x22); db(0x69);
- db(0x01); db(0x94); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x4c); db(0xdf); db(0x03); db(0x01); db(0x42); db(0xa9);
- db(0x01); db(0x90); db(0x23); db(0x48); db(0x01); db(0x94); db(0x4a); db(0x80);
- db(0x67); db(0x0a); db(0x4a); db(0xa9); db(0x01); db(0x98); db(0x67); db(0x04);
- db(0x61); db(0x00); db(0xfa); db(0x16); db(0x4a); db(0x83); db(0x6b); db(0x00);
- db(0xf5); db(0xfa); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x2f); db(0x09);
- db(0x43); db(0xfa); db(0x1d); db(0xc7); db(0x4e); db(0xae); db(0xfe); db(0xda);
- db(0x22); db(0x5f); db(0x22); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x18);
- db(0x61); db(0x00); db(0x1c); db(0x0e); db(0x4e); db(0x90); db(0x20); db(0x03);
- db(0x16); db(0x29); db(0x00); db(0x4f); db(0x4a); db(0x80); db(0x66); db(0x24);
- db(0x27); db(0x7c); db(0x00); db(0x00); db(0x17); db(0x70); db(0x00); db(0x14);
- db(0x41); db(0xfa); db(0xf3); db(0xa2); db(0x70); db(0xff); db(0x22); db(0x0c);
- db(0x66); db(0x06); db(0x41); db(0xfa); db(0xf3); db(0xe4); db(0x70); db(0x00);
- db(0x27); db(0x40); db(0x00); db(0x24); db(0x20); db(0x08); db(0xe4); db(0x88);
- db(0x27); db(0x40); db(0x00); db(0x20); db(0x08); db(0x07); db(0x00); db(0x03);
- db(0x66); db(0x48); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x42);
- db(0x0c); db(0x03); db(0x00); db(0x80); db(0x67); db(0x3c); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x70); db(0x14); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40);
- db(0x30); db(0x3c); db(0x10); db(0x00); db(0x80); db(0x03); db(0x33); db(0x40);
- db(0x00); db(0x08); db(0x23); db(0x6d); db(0x01); db(0x04); db(0x00); db(0x0a);
- db(0x23); db(0x4b); db(0x00); db(0x10); db(0x41); db(0xec); db(0x00); db(0x4a);
- db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x4e); db(0xae); db(0xfe); db(0xf2);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x72); db(0x00); db(0x70); db(0x00);
- db(0x4e); db(0x75); db(0x76); db(0x00); db(0x24); db(0x49); db(0x20); db(0x4b);
- db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07); db(0x00); db(0x01);
- db(0x67); db(0x08); db(0x08); db(0x07); db(0x00); db(0x02); db(0x67); db(0x02);
- db(0x72); db(0x01); db(0x70); db(0x80); db(0x2c); db(0x4c); db(0x61); db(0x00);
- db(0x0f); db(0x92); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x6a);
- db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x64); db(0x20); db(0x52);
- db(0x74); db(0x02); db(0x52); db(0x82); db(0x4a); db(0x30); db(0x28); db(0xfd);
- db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x06); db(0x82);
- db(0x00); db(0x00); db(0x10); db(0x04); db(0x20); db(0x02); db(0x72); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x42);
- db(0x20); db(0x52); db(0x24); db(0x40); db(0x22); db(0x4a); db(0x12); db(0xd8);
- db(0x66); db(0xfc); db(0x13); db(0x7c); db(0x00); db(0x3a); db(0xff); db(0xff);
- db(0x42); db(0x11); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa);
- db(0x1c); db(0x6c); db(0x4e); db(0xae); db(0xfe); db(0x68); db(0x2c); db(0x40);
- db(0x22); db(0x0a); db(0x26); db(0x0f); db(0x4f); db(0xea); db(0x10); db(0x04);
- db(0x4e); db(0xae); db(0xff); db(0x52); db(0x2e); db(0x43); db(0x26); db(0x01);
- db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xfe); db(0x62); db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x22); db(0x03); db(0x70); db(0x00); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01); db(0x7e); db(0x06);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x1c); db(0x5d);
- db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80);
- db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02); db(0x43); db(0xfa);
- db(0x1c); db(0x4b); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x28); db(0x40); db(0x47); db(0xec);
+ db(0x00); db(0x16); db(0x22); db(0x4b); db(0x22); db(0xca); db(0x22); db(0xc2);
+ db(0x22); db(0xc3); db(0x30); db(0x3c); db(0x3f); db(0xf4); db(0x61); db(0x00);
+ db(0x24); db(0x50); db(0x22); db(0xc8); db(0x30); db(0x3c); db(0x3f); db(0xf0);
+ db(0x61); db(0x00); db(0x24); db(0x46); db(0x22); db(0xc8); db(0x29); db(0x4b);
+ db(0x00); db(0x0e); db(0x19); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08);
+ db(0x19); db(0x7c); db(0x00); db(0xf6); db(0x00); db(0x09); db(0x41); db(0xfa);
+ db(0x24); db(0xf7); db(0x29); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
+ db(0x00); db(0x14); db(0x29); db(0x48); db(0x00); db(0x12); db(0x22); db(0x4c);
+ db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x4c); db(0xdf);
+ db(0x1f); db(0x0f); db(0x4e); db(0x75); db(0x20); db(0x51); db(0x52); db(0x90);
+ db(0x20); db(0x69); db(0x00); db(0x0c); db(0x20); db(0x10); db(0x67); db(0x1e);
+ db(0x20); db(0x40); db(0x0c); db(0x68); db(0x00); db(0x1f); db(0x00); db(0x14);
+ db(0x65); db(0x14); db(0x4a); db(0xa8); db(0x00); db(0x22); db(0x67); db(0x0e);
+ db(0x4a); db(0xa8); db(0x00); db(0x3c); db(0x67); db(0x08); db(0x22); db(0x69);
+ db(0x00); db(0x10); db(0x22); db(0xa8); db(0x00); db(0x44); db(0x70); db(0x00);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xf1); db(0xe0); db(0x2e); db(0x00);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0xff); db(0xfc); db(0x61); db(0x00);
+ db(0x23); db(0xd8); db(0x24); db(0x48); db(0x74); db(0x00); db(0x08); db(0x07);
+ db(0x00); db(0x00); db(0x67); db(0x10); db(0x41); db(0xfa); db(0x24); db(0xba);
+ db(0x43); db(0xfa); db(0xfd); db(0x78); db(0x70); db(0x14); db(0x61); db(0x00);
+ db(0x0b); db(0xb6); db(0x24); db(0x00); db(0x76); db(0x00); db(0x08); db(0x07);
+ db(0x00); db(0x01); db(0x67); db(0x10); db(0x41); db(0xfa); db(0x24); db(0xb0);
+ db(0x43); db(0xfa); db(0xfc); db(0xda); db(0x70); db(0x19); db(0x61); db(0x00);
+ db(0x0b); db(0x9e); db(0x26); db(0x00); db(0x70); db(0x2a); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x22); db(0x40); db(0x41); db(0xe9); db(0x00); db(0x1a); db(0x20); db(0xca);
+ db(0x20); db(0xce); db(0x20); db(0xc2); db(0x20); db(0x83); db(0x41); db(0xfa);
+ db(0x24); db(0x5e); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x45); db(0xe9);
+ db(0x00); db(0x1a); db(0x23); db(0x4a); db(0x00); db(0x0e); db(0x41); db(0xfa);
+ db(0xfe); db(0x02); db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c);
+ db(0x02); db(0x14); db(0x00); db(0x08); db(0x70); db(0x03); db(0x4e); db(0xae);
+ db(0xff); db(0x58); db(0x20); db(0x02); db(0x22); db(0x03); db(0x61); db(0x00);
+ db(0xfe); db(0xd6); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x04);
+ db(0x61); db(0x00); db(0x23); db(0x46); db(0x4e); db(0x90); db(0x4a); db(0x80);
+ db(0x67); db(0x04); db(0x61); db(0x00); db(0x0b); db(0x9e); db(0x4c); db(0xdf);
+ db(0x07); db(0x8f); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xf2);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x48); db(0x26); db(0x49);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xbe); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x20); db(0x40); db(0x70); db(0x00); db(0x43); db(0xeb); db(0x01); db(0xac);
+ db(0x11); db(0xb1); db(0x00); db(0x00); db(0x00); db(0x0e); db(0x52); db(0x40);
+ db(0x0c); db(0x40); db(0x00); db(0x8c); db(0x66); db(0xf2); db(0x20); db(0x0a);
+ db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x36); db(0x22); db(0x48);
+ db(0x41); db(0xfa); db(0x23); db(0xdc); db(0x23); db(0x48); db(0x00); db(0x0a);
+ db(0x20); db(0x6b); db(0x01); db(0x9c); db(0x41); db(0xe8); db(0x00); db(0x12);
+ db(0x4e); db(0xae); db(0xff); db(0x10); db(0x4c); db(0xdf); db(0x4f); db(0x03);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x7f); db(0x7e); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x24); db(0x48); db(0x0c); db(0x9a); db(0x00); db(0x00);
+ db(0x03); db(0xf3); db(0x66); db(0x00); db(0x01); db(0x06); db(0x50); db(0x8a);
+ db(0x2e); db(0x2a); db(0x00); db(0x04); db(0x9e); db(0x92); db(0x50); db(0x8a);
+ db(0x52); db(0x87); db(0x26); db(0x4a); db(0x20); db(0x07); db(0xe5); db(0x88);
+ db(0xd7); db(0xc0); db(0x28); db(0x4a); db(0x9b); db(0xcd); db(0x7c); db(0x00);
+ db(0x24); db(0x12); db(0x72); db(0x01); db(0x08); db(0x02); db(0x00); db(0x1e);
+ db(0x67); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x01); db(0x08); db(0xc1);
+ db(0x00); db(0x10); db(0xe5); db(0x8a); db(0x66); db(0x04); db(0x42); db(0x9a);
+ db(0x60); db(0x20); db(0x50); db(0x82); db(0x20); db(0x02); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0xc4);
+ db(0x20); db(0x40); db(0x20); db(0xc2); db(0x24); db(0xc8); db(0x22); db(0x0d);
+ db(0x67); db(0x06); db(0x20); db(0x08); db(0xe4); db(0x88); db(0x2a); db(0x80);
+ db(0x2a); db(0x48); db(0x52); db(0x86); db(0xbe); db(0x86); db(0x66); db(0xc0);
+ db(0x7c); db(0x00); db(0x22); db(0x06); db(0xe5); db(0x89); db(0x20); db(0x74);
+ db(0x18); db(0x00); db(0x58); db(0x88); db(0x26); db(0x1b); db(0x28); db(0x1b);
+ db(0xe5); db(0x8c); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xe9);
+ db(0x67); db(0x08); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xea);
+ db(0x66); db(0x0c); db(0x20); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x0e);
+ db(0x10); db(0xdb); db(0x53); db(0x80); db(0x60); db(0xf6); db(0x0c); db(0x83);
+ db(0x00); db(0x00); db(0x03); db(0xeb); db(0x66); db(0x74); db(0x26); db(0x1b);
+ db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xec); db(0x66); db(0x24);
+ db(0x22); db(0x06); db(0xe5); db(0x89); db(0x20); db(0x74); db(0x18); db(0x00);
+ db(0x58); db(0x88); db(0x20); db(0x1b); db(0x67); db(0xe8); db(0x22); db(0x1b);
+ db(0xe5); db(0x89); db(0x26); db(0x34); db(0x18); db(0x00); db(0x58); db(0x83);
+ db(0x24); db(0x1b); db(0xd7); db(0xb0); db(0x28); db(0x00); db(0x53); db(0x80);
+ db(0x66); db(0xf6); db(0x60); db(0xe6); db(0x0c); db(0x83); db(0x00); db(0x00);
+ db(0x03); db(0xf0); db(0x66); db(0x12); db(0x20); db(0x1b); db(0x67); db(0xc6);
+ db(0x02); db(0x80); db(0x00); db(0xff); db(0xff); db(0xff); db(0x52); db(0x80);
+ db(0xe5); db(0x88); db(0xd7); db(0xc0); db(0x60); db(0xee); db(0x0c); db(0x83);
+ db(0x00); db(0x00); db(0x03); db(0xf1); db(0x66); db(0x08); db(0x20); db(0x1b);
+ db(0xe5); db(0x88); db(0xd7); db(0xc0); db(0x60); db(0xa8); db(0x0c); db(0x83);
+ db(0x00); db(0x00); db(0x03); db(0xf2); db(0x66); db(0x14); db(0x52); db(0x86);
+ db(0xbe); db(0x86); db(0x66); db(0x00); db(0xff); db(0x66); db(0x7e); db(0x01);
+ db(0x20); db(0x54); db(0x20); db(0x07); db(0x4c); db(0xdf); db(0x7e); db(0xfe);
+ db(0x4e); db(0x75); db(0x91); db(0xc8); db(0x7e); db(0x00); db(0x60); db(0xf2);
+ db(0x48); db(0xe7); db(0x40); db(0xf2); db(0x26); db(0x48); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x41); db(0xee); db(0x01); db(0x50); db(0x20); db(0x50);
+ db(0x4a); db(0x90); db(0x67); db(0x1a); db(0x22); db(0x68); db(0x00); db(0x0a);
+ db(0x45); db(0xfa); db(0x23); db(0x2b); db(0x10); db(0x19); db(0x12); db(0x1a);
+ db(0xb0); db(0x01); db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x46);
+ db(0x60); db(0xf2); db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20);
  db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x20); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x2c);
- db(0x21); db(0x4c); db(0x01); db(0xa8); db(0x48); db(0xe7); db(0x00); db(0x8a);
- db(0x61); db(0x00); db(0xfd); db(0xbc); db(0x4c); db(0xdf); db(0x51); db(0x00);
- db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08);
- db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xe4);
- db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x4c); db(0x4e); db(0xae);
- db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75);
- db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00); db(0x1a); db(0x7a);
- db(0x70); db(0x03); db(0x4e); db(0x90); db(0x22); db(0x6b); db(0x00); db(0xa8);
- db(0x23); db(0x40); db(0x00); db(0x20); db(0x67); db(0x16); db(0x70); db(0x00);
- db(0x23); db(0x40); db(0x00); db(0x24); db(0x33); db(0x7c); db(0x00); db(0x0b);
+ db(0xff); db(0x3a); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
+ db(0x00); db(0x08); db(0x41); db(0xfa); db(0x23); db(0x01); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x22); db(0x5a); db(0x25); db(0x48);
+ db(0x00); db(0x0e); db(0x41); db(0xea); db(0x00); db(0x12); db(0x20); db(0x88);
+ db(0x58); db(0x90); db(0x21); db(0x48); db(0x00); db(0x08); db(0x41); db(0xee);
+ db(0x01); db(0x50); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x0a);
+ db(0x20); db(0x4a); db(0x27); db(0x48); db(0x01); db(0xa0); db(0x20); db(0x08);
+ db(0x4c); db(0xdf); db(0x4f); db(0x02); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x01); db(0x02); db(0x2e); db(0x00); db(0x4a); db(0x2b); db(0x00); db(0x60);
+ db(0x67); db(0x7c); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e);
+ db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e);
+ db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08);
+ db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c);
+ db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4);
+ db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x72); db(0x0e); db(0x4e); db(0xae);
+ db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00);
+ db(0x00); db(0xac); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
+ db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c); db(0x50); db(0xeb);
+ db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00);
+ db(0x00); db(0x94); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf);
+ db(0x40); db(0x80); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x22);
+ db(0x2e); db(0x00); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e);
+ db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e);
+ db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08);
+ db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c);
+ db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4);
+ db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x72); db(0x0e); db(0x4e); db(0xae);
+ db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00);
+ db(0x00); db(0x44); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
+ db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c); db(0x42); db(0x2b);
+ db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00);
+ db(0x00); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf);
+ db(0x44); db(0x80); db(0x4e); db(0x75); db(0x22); db(0x48); db(0x20); db(0x6b);
+ db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68);
+ db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0xa8);
+ db(0x00); db(0x04); db(0x20); db(0x09); db(0xe4); db(0x88); db(0x21); db(0x40);
+ db(0x00); db(0x04); db(0x4e); db(0x75); db(0x24); db(0x48); db(0x20); db(0x6b);
+ db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68);
+ db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0x68);
+ db(0x00); db(0x04); db(0xd3); db(0xc9); db(0xd3); db(0xc9); db(0xb3); db(0xca);
+ db(0x66); db(0x06); db(0x21); db(0x52); db(0x00); db(0x04); db(0x60); db(0x18);
+ db(0x20); db(0x09); db(0x67); db(0x0e); db(0x20); db(0x11); db(0xd0); db(0x80);
+ db(0xd0); db(0x80); db(0xb5); db(0xc0); db(0x67); db(0x04); db(0x22); db(0x40);
+ db(0x60); db(0xee); db(0x20); db(0x09); db(0x67); db(0x02); db(0x22); db(0x92);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x74); db(0x16);
+ db(0x9f); db(0xc2); db(0x24); db(0x4f); db(0x32); db(0x02); db(0x42); db(0x32);
+ db(0x10); db(0xff); db(0x53); db(0x41); db(0x66); db(0xf8); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x72); db(0x0f); db(0x4a); db(0x80); db(0x67); db(0x02);
+ db(0x72); db(0x10); db(0x15); db(0x41); db(0x00); db(0x04); db(0x35); db(0x7c);
+ db(0x08); db(0x00); db(0x00); db(0x08); db(0x22); db(0x6b); db(0x00); db(0xa4);
+ db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c);
+ db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a);
+ db(0x00); db(0x28); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
+ db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x33); db(0x7c); db(0x00); db(0x0a);
  db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x7e); db(0x00);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8); db(0x00); db(0x5c);
- db(0x43); db(0xfa); db(0x1b); db(0x82); db(0x4e); db(0xae); db(0xfe); db(0x68);
- db(0x24); db(0x40); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xbc);
- db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00); db(0x1a); db(0x2a);
- db(0x70); db(0x01); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x66); db(0x0c);
- db(0x20); db(0x01); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40); db(0x7c); db(0x00);
- db(0x26); db(0x86); db(0x27); db(0x46); db(0x00); db(0x04); db(0x27); db(0x46);
- db(0x00); db(0x08); db(0x27); db(0x4a); db(0x00); db(0xa0); db(0x50); db(0xeb);
- db(0x00); db(0x9e); db(0x70); db(0xff); db(0x27); db(0x40); db(0x00); db(0xb8);
- db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x27); db(0x40);
- db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x1a); db(0x0e); db(0x70); db(0x00);
- db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0xcc); db(0x27); db(0x40);
- db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x1a); db(0x0b); db(0x70); db(0x00);
- db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0xbc); db(0x27); db(0x40);
- db(0x00); db(0xa8); db(0x7a); db(0x00); db(0x26); db(0x07); db(0x66); db(0x12);
- db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x80); db(0x20); db(0x4d);
- db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x26); db(0x2c);
- db(0x00); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00);
- db(0x19); db(0xb0); db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00);
- db(0x61); db(0x00); db(0xfb); db(0xc2); db(0x70); db(0x01); db(0x61); db(0x00);
- db(0xf9); db(0x72); db(0x08); db(0x02); db(0x00); db(0x01); db(0x67); db(0x06);
- db(0x70); db(0x01); db(0x61); db(0x00); db(0xfa); db(0xda); db(0x60); db(0x00);
- db(0x01); db(0x44); db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c);
- db(0x28); db(0x40); db(0x4a); db(0x80); db(0x66); db(0x10); db(0x70); db(0x00);
- db(0x12); db(0x2d); db(0x00); db(0x0f); db(0x03); db(0xc0); db(0x08); db(0xc0);
- db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x08); db(0x2b);
- db(0x00); db(0x00); db(0x00); db(0xad); db(0x67); db(0x0a); db(0x61); db(0x00);
- db(0xfe); db(0xe8); db(0x08); db(0xab); db(0x00); db(0x00); db(0x00); db(0xad);
- db(0x08); db(0x2b); db(0x00); db(0x01); db(0x00); db(0xad); db(0x67); db(0x0a);
- db(0x61); db(0x00); db(0x0c); db(0x60); db(0x08); db(0xab); db(0x00); db(0x01);
- db(0x00); db(0xad); db(0x4a); db(0x2b); db(0x00); db(0xac); db(0x67); db(0x24);
- db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00); db(0x19); db(0x42);
- db(0x70); db(0x01); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x04);
- db(0x61); db(0x00); db(0xfb); db(0x78); db(0x42); db(0x2b); db(0x00); db(0xac);
- db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00); db(0x19); db(0x2a);
- db(0x70); db(0x02); db(0x4e); db(0x90); db(0x20); db(0x0c); db(0x67); db(0x56);
- db(0x0c); db(0x6c); db(0x00); db(0x26); db(0x00); db(0x12); db(0x66); db(0x4e);
- db(0x0c); db(0xac); db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14);
- db(0x66); db(0x44); db(0x0c); db(0x6c); db(0x12); db(0x34); db(0x00); db(0x18);
- db(0x66); db(0x3c); db(0x20); db(0x6c); db(0x00); db(0x1a); db(0x20); db(0x28);
- db(0x00); db(0x0c); db(0x02); db(0x80); db(0x80); db(0x00); db(0x00); db(0x08);
- db(0x0c); db(0x80); db(0x80); db(0x00); db(0x00); db(0x08); db(0x66); db(0x1a);
- db(0x02); db(0xa8); db(0x7f); db(0xff); db(0xff); db(0xff); db(0x00); db(0x0c);
- db(0x20); db(0x68); db(0x00); db(0x10); db(0x22); db(0x4c); db(0x12); db(0xbc);
- db(0x00); db(0x08); db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00);
- db(0xff); db(0x4a); db(0x22); db(0x4c); db(0x70); db(0x26); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x3e); db(0x74); db(0xfe);
- db(0x20); db(0x0c); db(0x67); db(0x14); db(0x26); db(0x2c); db(0x00); db(0x0a);
- db(0x66); db(0x42); db(0x74); db(0xff); db(0x30); db(0x3c); db(0xff); db(0x50);
- db(0x61); db(0x00); db(0x18); db(0xb6); db(0x70); db(0x01); db(0x4e); db(0x90);
- db(0x45); db(0xeb); db(0x00); db(0x04); db(0x20); db(0x52); db(0x20); db(0x08);
- db(0x67); db(0x00); db(0xff); db(0x18); db(0x22); db(0x50); db(0x20); db(0x40);
- db(0x20); db(0x28); db(0x00); db(0x04); db(0xb4); db(0x80); db(0x66); db(0x16);
- db(0x48); db(0xe7); db(0x00); db(0xc0); db(0x28); db(0x68); db(0x00); db(0x0a);
- db(0x61); db(0x4a); db(0x53); db(0x85); db(0x4c); db(0xdf); db(0x03); db(0x00);
- db(0x24); db(0x89); db(0x20); db(0x49); db(0x60); db(0xd8); db(0x24); db(0x48);
- db(0x20); db(0x49); db(0x60); db(0xd2); db(0x0c); db(0x85); db(0x00); db(0x00);
- db(0x00); db(0x14); db(0x65); db(0x00); db(0x00); db(0x0a); db(0x70); db(0x01);
- db(0x29); db(0x40); db(0x00); db(0x04); db(0x60); db(0x12); db(0x61); db(0x5e);
- db(0x30); db(0x3c); db(0xff); db(0x30); db(0x61); db(0x00); db(0x18); db(0x62);
- db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x0e); db(0x52); db(0x85);
- db(0x28); db(0xab); db(0x00); db(0x04); db(0x27); db(0x4c); db(0x00); db(0x04);
- db(0x60); db(0x00); db(0xfe); db(0xc0); db(0x28); db(0x43); db(0x61); db(0x04);
- db(0x60); db(0x00); db(0xfe); db(0xb8); db(0x0c); db(0xac); db(0x00); db(0x00);
- db(0x00); db(0x1f); db(0x00); db(0x08); db(0x66); db(0x04); db(0x61); db(0x00);
- db(0xfa); db(0x3a); db(0x0c); db(0xac); db(0x00); db(0x00); db(0x04); db(0x09);
- db(0x00); db(0x08); db(0x66); db(0x14); db(0x61); db(0x00); db(0xfa); db(0x92);
- db(0x66); db(0x0e); db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00);
- db(0x18); db(0x20); db(0x70); db(0x00); db(0x4e); db(0x90); db(0x60); db(0xec);
- db(0x22); db(0x54); db(0x20); db(0x6c); db(0x00); db(0x04); db(0x29); db(0x4d);
- db(0x00); db(0x04); db(0x4e); db(0xee); db(0xfe); db(0x92); db(0x2f); db(0x05);
- db(0x7a); db(0xfc); db(0x24); db(0x53); db(0x2e); db(0x0a); db(0x22); db(0x0a);
- db(0x67); db(0x00); db(0x00); db(0x0c); db(0x52); db(0x85); db(0x67); db(0x1e);
- db(0x22); db(0x4a); db(0x24); db(0x52); db(0x60); db(0xf0); db(0x52); db(0x85);
- db(0x67); db(0x3c); db(0x24); db(0x47); db(0x70); db(0x18); db(0x72); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x52); db(0x46); db(0x24); db(0x40);
- db(0x24); db(0x87); db(0x2e); db(0x0a); db(0x60); db(0xe8); db(0x20); db(0x12);
- db(0x67); db(0x24); db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x1e);
- db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x18); db(0x70); db(0x00);
- db(0x22); db(0x80); db(0x22); db(0x4a); db(0x24); db(0x51); db(0x70); db(0x18);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x06); db(0x86); db(0x00); db(0x01);
- db(0x00); db(0x00); db(0x20); db(0x0a); db(0x66); db(0xec); db(0x26); db(0x87);
- db(0x2a); db(0x1f); db(0x4e); db(0x75); db(0x20); db(0x88); db(0x58); db(0x90);
- db(0x42); db(0xa8); db(0x00); db(0x04); db(0x21); db(0x48); db(0x00); db(0x08);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6);
- db(0x91); db(0xc8); db(0x24); db(0x00); db(0x6b); db(0x32); db(0x70); db(0x22);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6b); db(0x00); db(0xa8);
+ db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e); db(0x25); db(0x69);
+ db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6b); db(0x00); db(0xa4);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0xdf); db(0xc2); db(0x4c); db(0xdf);
+ db(0x44); db(0x04); db(0x4e); db(0x75); db(0x4a); db(0x00); db(0x67); db(0x26);
+ db(0x4a); db(0x2b); db(0x00); db(0x60); db(0x66); db(0x36); db(0x70); db(0x00);
+ db(0x4a); db(0x33); db(0x00); db(0x61); db(0x67); db(0x04); db(0x52); db(0x00);
+ db(0x60); db(0xf6); db(0x17); db(0x40); db(0x00); db(0x60); db(0x67); db(0x24);
+ db(0x20); db(0x01); db(0x61); db(0x00); db(0xfd); db(0xf2); db(0x70); db(0x01);
+ db(0x61); db(0x00); db(0xff); db(0x60); db(0x60); db(0x16); db(0x4a); db(0x2b);
+ db(0x00); db(0x60); db(0x67); db(0x10); db(0x42); db(0x2b); db(0x00); db(0x60);
+ db(0x20); db(0x01); db(0x61); db(0x00); db(0xfe); db(0x68); db(0x70); db(0x00);
+ db(0x61); db(0x00); db(0xff); db(0x48); db(0x4e); db(0x75); db(0x4a); db(0xac);
+ db(0x00); db(0x14); db(0x67); db(0x0a); db(0x70); db(0x00); db(0x72); db(0x01);
+ db(0x61); db(0x00); db(0xff); db(0xb2); db(0x4e); db(0x75); db(0x70); db(0x01);
+ db(0x72); db(0x03); db(0x61); db(0x00); db(0xff); db(0xa8); db(0x4e); db(0x75);
+ db(0x20); db(0x2b); db(0x00); db(0xb8); db(0x0c); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xff); db(0x67); db(0x18); db(0x20); db(0x6b); db(0x00); db(0xb4);
+ db(0x20); db(0x68); db(0x00); db(0x1c); db(0xd1); db(0xc8); db(0xd1); db(0xc8);
+ db(0x20); db(0x68); db(0x00); db(0x08); db(0xd1); db(0xc8); db(0xd1); db(0xc8);
+ db(0x21); db(0x40); db(0x00); db(0x28); db(0x4e); db(0x75); db(0x61); db(0x00);
+ db(0xff); db(0xd8); db(0x10); db(0x2b); db(0x00); db(0xac); db(0x6b); db(0x0a);
+ db(0x70); db(0x01); db(0x72); db(0x03); db(0x61); db(0x00); db(0xff); db(0x6e);
+ db(0x4e); db(0x75); db(0x72); db(0x01); db(0x0c); db(0x00); db(0x00); db(0xfe);
+ db(0x66); db(0x02); db(0x72); db(0x03); db(0x70); db(0x00); db(0x61); db(0x00);
+ db(0xff); db(0x5c); db(0x4e); db(0x75); db(0x20); db(0x6c); db(0x00); db(0x24);
+ db(0x4a); db(0x90); db(0x67); db(0x0c); db(0x4a); db(0xa8); db(0x00); db(0x08);
+ db(0x66); db(0x0a); db(0x4a); db(0xa8); db(0x00); db(0x0c); db(0x66); db(0x04);
+ db(0x70); db(0x01); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e);
+ db(0x2a); db(0x48); db(0x24); db(0x6c); db(0x00); db(0x18); db(0x2e); db(0x15);
+ db(0x7a); db(0x00); db(0x4a); db(0x87); db(0x67); db(0x70); db(0x20); db(0x0a);
+ db(0x67); db(0x6c); db(0x7c); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x08);
+ db(0x67); db(0x12); db(0x24); db(0x2a); db(0x00); db(0x04); db(0x2c); db(0x6b);
+ db(0x00); db(0xa0); db(0x4e); db(0xae); db(0xfc); db(0x34); db(0x4a); db(0x80);
+ db(0x66); db(0x02); db(0x50); db(0xc6); db(0x22); db(0x2d); db(0x00); db(0x0c);
+ db(0x67); db(0x1c); db(0x20); db(0x41); db(0x22); db(0x4a); db(0x2f); db(0x0a);
+ db(0x45); db(0xec); db(0x00); db(0x20); db(0x48); db(0x7a); db(0x00); db(0x08);
+ db(0x2f); db(0x28); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x24); db(0x5f);
+ db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6); db(0x4a); db(0x06);
+ db(0x67); db(0x24); db(0x20); db(0x2a); db(0x00); db(0x04); db(0x90); db(0x8a);
+ db(0x4a); db(0x92); db(0x66); db(0x0a); db(0x20); db(0x05); db(0x67); db(0x10);
+ db(0x20); db(0x40); db(0x42); db(0x90); db(0x60); db(0x0a); db(0x20); db(0x52);
+ db(0x22); db(0x4a); db(0x22); db(0xd8); db(0x59); db(0x80); db(0x6a); db(0xfa);
+ db(0x53); db(0x95); db(0x53); db(0x87); db(0x60); db(0x94); db(0x2a); db(0x0a);
+ db(0x24); db(0x52); db(0x53); db(0x87); db(0x60); db(0x8c); db(0x4c); db(0xdf);
+ db(0x7c); db(0xfc); db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90);
+ db(0x4e); db(0x75); db(0x61); db(0x00); db(0xfc); db(0x4c); db(0x21); db(0x40);
+ db(0x01); db(0x9c); db(0x2f); db(0x08); db(0x30); db(0x3c); db(0xff); db(0xec);
+ db(0x61); db(0x00); db(0x1e); db(0x0e); db(0x2a); db(0x50); db(0x30); db(0x3c);
+ db(0xff); db(0x28); db(0x61); db(0x00); db(0x1d); db(0xf4); db(0x22); db(0x48);
+ db(0x20); db(0x5f); db(0x42); db(0xa8); db(0x01); db(0x90); db(0x42); db(0xa8);
+ db(0x01); db(0x94); db(0x4e); db(0x91); db(0x26); db(0x00); db(0x0c); db(0x43);
+ db(0xff); db(0xfe); db(0x67); db(0x00); db(0xf6); db(0x92); db(0x20); db(0x28);
+ db(0x01); db(0x90); db(0x67); db(0x14); db(0x6b); db(0x12); db(0x2f); db(0x08);
+ db(0x72); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x20); db(0x5f); db(0x21); db(0x40); db(0x01); db(0x94);
+ db(0x4a); db(0x83); db(0x6a); db(0x0e); db(0x22); db(0x48); db(0x30); db(0x3c);
+ db(0xff); db(0x20); db(0x61); db(0x00); db(0x1d); db(0xb4); db(0x4e); db(0x90);
+ db(0x60); db(0x26); db(0x2c); db(0x4c); db(0x2f); db(0x08); db(0x61); db(0x00);
+ db(0x0f); db(0xf6); db(0x20); db(0x5f); db(0x22); db(0x48); db(0x26); db(0x40);
+ db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00); db(0x1d); db(0x9a);
+ db(0x4e); db(0x90); db(0x70); db(0x00); db(0x27); db(0x40); db(0x00); db(0x08);
+ db(0x27); db(0x40); db(0x00); db(0x10); db(0x27); db(0x40); db(0x00); db(0x20);
+ db(0x20); db(0x69); db(0x01); db(0x94); db(0x4a); db(0xa9); db(0x01); db(0x90);
+ db(0x67); db(0x2c); db(0x20); db(0x08); db(0x67); db(0x32); db(0x61); db(0x00);
+ db(0xfa); db(0x9a); db(0x48); db(0xe7); db(0x80); db(0xc0); db(0x20); db(0x29);
+ db(0x01); db(0x90); db(0x22); db(0x69); db(0x01); db(0x94); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4c); db(0xdf);
+ db(0x03); db(0x01); db(0x42); db(0xa9); db(0x01); db(0x90); db(0x23); db(0x48);
+ db(0x01); db(0x94); db(0x4a); db(0x80); db(0x67); db(0x0a); db(0x4a); db(0xa9);
+ db(0x01); db(0x98); db(0x67); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x16);
+ db(0x4a); db(0x83); db(0x6b); db(0x00); db(0xf5); db(0xfa); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x2f); db(0x09); db(0x43); db(0xfa); db(0x1e); db(0xe3);
+ db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x22); db(0x5f); db(0x22); db(0x00);
+ db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00); db(0x1d); db(0x2a);
+ db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29); db(0x00); db(0x4f);
+ db(0x4a); db(0x80); db(0x66); db(0x24); db(0x27); db(0x7c); db(0x00); db(0x00);
+ db(0x17); db(0x70); db(0x00); db(0x14); db(0x41); db(0xfa); db(0xf3); db(0x9e);
+ db(0x70); db(0xff); db(0x22); db(0x0c); db(0x66); db(0x06); db(0x41); db(0xfa);
+ db(0xf3); db(0xe0); db(0x70); db(0x00); db(0x27); db(0x40); db(0x00); db(0x24);
+ db(0x20); db(0x08); db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x20);
+ db(0x08); db(0x07); db(0x00); db(0x03); db(0x66); db(0x48); db(0x08); db(0x07);
+ db(0x00); db(0x00); db(0x67); db(0x42); db(0x0c); db(0x03); db(0x00); db(0x80);
+ db(0x67); db(0x3c); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x14);
  db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x91); db(0xc8); db(0x24); db(0x40); db(0x4a); db(0x80);
- db(0x67); db(0x1e); db(0x15); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x08);
- db(0x15); db(0x42); db(0x00); db(0x0f); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x25); db(0x40); db(0x00); db(0x10); db(0x41); db(0xea);
- db(0x00); db(0x14); db(0x61); db(0x00); db(0xff); db(0xb0); db(0x20); db(0x4a);
- db(0x20); db(0x08); db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x4a); db(0x80); db(0x67); db(0x24); db(0x24); db(0x40); db(0x24); db(0x01);
- db(0x66); db(0x02); db(0x74); db(0x30); db(0x20); db(0x02); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x20); db(0x40); db(0x11); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x08);
- db(0x31); db(0x42); db(0x00); db(0x12); db(0x21); db(0x4a); db(0x00); db(0x0e);
- db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x30); db(0x22); db(0x24); db(0x48); db(0x24); db(0x00);
- db(0x26); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00);
- db(0xff); db(0x6a); db(0x22); db(0x03); db(0x61); db(0x00); db(0xff); db(0xb2);
- db(0x67); db(0x18); db(0x20); db(0x4a); db(0x22); db(0x40); db(0x24); db(0x40);
- db(0x20); db(0x02); db(0x72); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0x44);
- db(0x22); db(0x00); db(0x70); db(0x00); db(0x4a); db(0x81); db(0x66); db(0x02);
- db(0x20); db(0x0a); db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x0c);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x32); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x28); db(0x00); db(0x24); db(0x08); db(0x26); db(0x09);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x08); db(0x5c); db(0x22); db(0x3c);
+ db(0xff); db(0x3a); db(0x22); db(0x40); db(0x30); db(0x3c); db(0x10); db(0x00);
+ db(0x80); db(0x03); db(0x33); db(0x40); db(0x00); db(0x08); db(0x23); db(0x6d);
+ db(0x01); db(0x04); db(0x00); db(0x0a); db(0x23); db(0x4b); db(0x00); db(0x10);
+ db(0x41); db(0xec); db(0x00); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x4e); db(0xae); db(0xfe); db(0xf2); db(0x4e); db(0xae); db(0xff); db(0x76);
+ db(0x72); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x76); db(0x00);
+ db(0x24); db(0x49); db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41);
+ db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07);
+ db(0x00); db(0x02); db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0x80);
+ db(0x2c); db(0x4c); db(0x61); db(0x00); db(0x0f); db(0x92); db(0x08); db(0x07);
+ db(0x00); db(0x01); db(0x67); db(0x6a); db(0x08); db(0x07); db(0x00); db(0x02);
+ db(0x66); db(0x64); db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82);
+ db(0x4a); db(0x30); db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x06); db(0x82); db(0x00); db(0x00); db(0x10); db(0x04);
+ db(0x20); db(0x02); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x4a); db(0x80); db(0x67); db(0x42); db(0x20); db(0x52); db(0x24); db(0x40);
+ db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x13); db(0x7c);
+ db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x43); db(0xfa); db(0x1d); db(0x88); db(0x4e); db(0xae);
+ db(0xfe); db(0x68); db(0x2c); db(0x40); db(0x22); db(0x0a); db(0x26); db(0x0f);
+ db(0x4f); db(0xea); db(0x10); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x52);
+ db(0x2e); db(0x43); db(0x26); db(0x01); db(0x22); db(0x4e); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a);
+ db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x03);
+ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e);
+ db(0x2c); db(0x01); db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x43); db(0xfa); db(0x1d); db(0x79); db(0x70); db(0x24); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87);
+ db(0x00); db(0x02); db(0x43); db(0xfa); db(0x1d); db(0x67); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x02); db(0x38); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40);
+ db(0x4a); db(0x80); db(0x67); db(0x2c); db(0x21); db(0x4c); db(0x01); db(0xa8);
+ db(0x48); db(0xe7); db(0x00); db(0x8a); db(0x61); db(0x00); db(0xfd); db(0xbc);
+ db(0x4c); db(0xdf); db(0x51); db(0x00); db(0x0c); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46);
+ db(0x48); db(0x46); db(0x60); db(0xe4); db(0x22); db(0x48); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x02); db(0x38); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf);
+ db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x58);
+ db(0x61); db(0x00); db(0x1b); db(0x96); db(0x70); db(0x03); db(0x4e); db(0x90);
+ db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x23); db(0x40); db(0x00); db(0x20);
+ db(0x67); db(0x16); db(0x70); db(0x00); db(0x23); db(0x40); db(0x00); db(0x24);
+ db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x13); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x4e); db(0x75); db(0x7e); db(0x00); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40);
+ db(0x4b); db(0xe8); db(0x00); db(0x5c); db(0x43); db(0xfa); db(0x1c); db(0x9e);
+ db(0x4e); db(0xae); db(0xfe); db(0x68); db(0x24); db(0x40); db(0x22); db(0x3c);
+ db(0x00); db(0x00); db(0x00); db(0xbc); db(0x30); db(0x3c); db(0xff); db(0x40);
+ db(0x61); db(0x00); db(0x1b); db(0x46); db(0x70); db(0x01); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x66); db(0x0c); db(0x20); db(0x01); db(0x22); db(0x3c);
  db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x34); db(0x24); db(0x40);
- db(0x15); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x08); db(0x15); db(0x44);
- db(0x00); db(0x09); db(0x25); db(0x42); db(0x00); db(0x0a); db(0x47); db(0xea);
- db(0x00); db(0x5c); db(0x25); db(0x4b); db(0x00); db(0x3a); db(0x47); db(0xeb);
- db(0x08); db(0x00); db(0x25); db(0x4b); db(0x00); db(0x3e); db(0x25); db(0x4b);
- db(0x00); db(0x36); db(0x22); db(0x4a); db(0x24); db(0x43); db(0x97); db(0xcb);
- db(0x24); db(0x09); db(0x4e); db(0xae); db(0xfe); db(0xe6); db(0x20); db(0x02);
- db(0x4c); db(0xdf); db(0x4c); db(0x1c); db(0x4e); db(0x75); db(0x41); db(0xfa);
- db(0x17); db(0x46); db(0x43); db(0xfa); db(0x01); db(0x50); db(0x70); db(0x13);
- db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75); db(0x9e); db(0xfc);
- db(0x00); db(0x18); db(0x42); db(0x92); db(0x42); db(0xaa); db(0x00); db(0x0e);
- db(0x42); db(0xaa); db(0x00); db(0x12); db(0x20); db(0x4a); db(0x22); db(0x4f);
- db(0x70); db(0x05); db(0x22); db(0xd8); db(0x51); db(0xc8); db(0xff); db(0xfc);
- db(0x0c); db(0x6e); db(0x00); db(0x24); db(0x00); db(0x14); db(0x64); db(0x24);
- db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x33); db(0x7c); db(0x00); db(0x0a);
- db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6d); db(0x02); db(0x0c);
- db(0x2f); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e); db(0x2f); db(0x69);
- db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6d); db(0x02); db(0x08);
- db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c);
- db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); db(0x13); db(0x7c);
- db(0x00); db(0x01); db(0x00); db(0x1e); db(0x23); db(0x4f); db(0x00); db(0x28);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0xde); db(0xfc); db(0x00); db(0x18);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xf8); db(0xfe); db(0x2a); db(0x48);
- db(0x95); db(0xca); db(0x97); db(0xcb); db(0x99); db(0xcc); db(0x78); db(0x00);
- db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x20); db(0x6d); db(0x00); db(0x14);
- db(0x20); db(0x28); db(0x00); db(0x3c); db(0x67); db(0x5c); db(0x20); db(0x40);
- db(0x41); db(0xe8); db(0x00); db(0x2c); db(0x28); db(0x48); db(0x4e); db(0xae);
- db(0xfc); db(0xe8); db(0x72); db(0xff); db(0x74); db(0xff); db(0xb2); db(0x80);
- db(0x67); db(0x48); db(0x26); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x14);
- db(0x41); db(0xed); db(0x00); db(0xc0); db(0x70); db(0x66); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x41); db(0xed); db(0x00); db(0xc0); db(0x38); db(0x28);
- db(0x00); db(0x64); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x91); db(0xc8);
- db(0x43); db(0xed); db(0x00); db(0x38); db(0x70); db(0x00); db(0x30); db(0x3c);
- db(0x00); db(0x58); db(0x22); db(0x3c); db(0x80); db(0x00); db(0x10); db(0x00);
- db(0x24); db(0x03); db(0x4e); db(0xae); db(0xfd); db(0x0c); db(0x72); db(0xff);
- db(0x74); db(0xff); db(0x4a); db(0x80); db(0x6b); db(0x0c); db(0x45); db(0xed);
- db(0x00); db(0x38); db(0x22); db(0x2a); db(0x00); db(0x32); db(0x24); db(0x2a);
- db(0x00); db(0x36); db(0x20); db(0x2c); db(0x00); db(0x1c); db(0xb8); db(0x6d);
- db(0x00); db(0x2c); db(0x66); db(0x12); db(0xb0); db(0xad); db(0x00); db(0x28);
- db(0x66); db(0x0c); db(0xb2); db(0xad); db(0x00); db(0x20); db(0x66); db(0x06);
- db(0xb4); db(0xad); db(0x00); db(0x24); db(0x67); db(0x40); db(0x2b); db(0x40);
- db(0x00); db(0x28); db(0x2b); db(0x41); db(0x00); db(0x20); db(0x2b); db(0x42);
- db(0x00); db(0x24); db(0x3b); db(0x44); db(0x00); db(0x2c); db(0x91); db(0xc8);
- db(0x43); db(0xed); db(0x00); db(0x90); db(0x70); db(0x00); db(0x30); db(0x3c);
- db(0x00); db(0x58); db(0x22); db(0x3c); db(0x80); db(0x00); db(0x00); db(0x00);
- db(0x24); db(0x03); db(0x4e); db(0xae); db(0xfd); db(0x0c); db(0x4a); db(0x80);
- db(0x6b); db(0x04); db(0x47); db(0xed); db(0x00); db(0x90); db(0x34); db(0x2d);
- db(0x00); db(0x2c); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x01);
- db(0x61); db(0x00); db(0x15); db(0x36); db(0x4e); db(0x90); db(0x4c); db(0xdf);
- db(0x7f); db(0x1f); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x3e); db(0x2e); db(0x00); db(0x14); db(0x70); db(0xff); db(0x4e); db(0xae);
- db(0xfe); db(0xb6); db(0x7c); db(0x00); db(0x01); db(0xc6); db(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x24); db(0x40); db(0x70); db(0x14);
- db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x70); db(0x00);
- db(0x30); db(0x3c); db(0x02); db(0x14); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2a); db(0x40);
- db(0x30); db(0x3c); db(0x3e); db(0x00); db(0x61); db(0x00); db(0x15); db(0x02);
- db(0x2b); db(0x48); db(0x02); db(0x10); db(0x28); db(0x48); db(0x47); db(0xed);
- db(0x00); db(0x16); db(0x27); db(0x4e); db(0x00); db(0x10); db(0x27); db(0x4a);
- db(0x00); db(0x08); db(0x27); db(0x46); db(0x00); db(0x0c); db(0x70); db(0xff);
- db(0x37); db(0x40); db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x05); db(0x61); db(0x00); db(0x14); db(0xcc); db(0x20); db(0x0c);
- db(0x4e); db(0x90); db(0x43); db(0xed); db(0x00); db(0x00); db(0x13); db(0x7c);
- db(0x00); db(0x02); db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x05);
- db(0x00); db(0x09); db(0x41); db(0xfa); db(0x15); db(0x7a); db(0x23); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x03); db(0x2e); db(0x23); db(0x48);
- db(0x00); db(0x12); db(0x23); db(0x4d); db(0x00); db(0x0e); db(0x70); db(0x05);
- db(0x4e); db(0xae); db(0xff); db(0x58); db(0x20); db(0x06); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x70); db(0x00); db(0x53); db(0xab); db(0x00); db(0x1c);
- db(0x6a); db(0x06); db(0x70); db(0x0a); db(0x27); db(0x40); db(0x00); db(0x1c);
- db(0x4a); db(0xab); db(0x00); db(0x14); db(0x66); db(0x22); db(0x4a); db(0xab);
- db(0x00); db(0x1c); db(0x66); db(0xe0); db(0x43); db(0xfa); db(0x15); db(0xca);
- db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40);
- db(0x00); db(0x14); db(0x67); db(0xd0); db(0x22); db(0x00); db(0x30); db(0x3c);
- db(0x3f); db(0xf4); db(0x61); db(0x00); db(0x14); db(0x74); db(0x20); db(0x81);
- db(0x4a); db(0xab); db(0x00); db(0x18); db(0x66); db(0x24); db(0x4a); db(0xab);
- db(0x00); db(0x1c); db(0x66); db(0xb8); db(0x43); db(0xfa); db(0x15); db(0xb4);
- db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40);
- db(0x00); db(0x18); db(0x67); db(0x00); db(0xff); db(0xa8); db(0x22); db(0x00);
- db(0x30); db(0x3c); db(0x3f); db(0xf8); db(0x61); db(0x00); db(0x14); db(0x4a);
- db(0x20); db(0x81); db(0x4a); db(0xad); db(0x02); db(0x08); db(0x66); db(0x3a);
- db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0x8e); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa);
- db(0x14); db(0x42); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x00);
- db(0xff); db(0x74); db(0x41); db(0xfa); db(0x14); db(0x2e); db(0x70); db(0x00);
- db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0xec); db(0x2b); db(0x40);
- db(0x02); db(0x08); db(0x67); db(0x00); db(0x02); db(0x52); db(0x60); db(0x00);
- db(0xff); db(0x5c); db(0x4a); db(0xad); db(0x02); db(0x0c); db(0x66); db(0x48);
- db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0x00); db(0xff); db(0x4e);
- db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e);
- db(0x43); db(0xfa); db(0x14); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xec);
- db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82);
- db(0x67); db(0x00); db(0xff); db(0x32); db(0x41); db(0xfa); db(0x13); db(0xf9);
- db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0xaa);
- db(0x2b); db(0x40); db(0x02); db(0x0c); db(0x67); db(0x00); db(0x02); db(0x10);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x00); db(0x61); db(0x00);
- db(0x13); db(0xb0); db(0x4e); db(0x90); db(0x60); db(0x00); db(0xff); db(0x0e);
- db(0x0c); db(0x47); db(0x00); db(0x24); db(0x65); db(0x18); db(0x0c); db(0x47);
- db(0x00); db(0x32); db(0x64); db(0x12); db(0x53); db(0xab); db(0x00); db(0x34);
- db(0x6a); db(0x0c); db(0x20); db(0x4b); db(0x61); db(0x00); db(0xfd); db(0x8c);
- db(0x70); db(0x32); db(0x27); db(0x40); db(0x00); db(0x34); db(0x45); db(0xed);
- db(0x01); db(0x3c); db(0x10); db(0x2c); db(0x00); db(0x00); db(0x0c); db(0x47);
- db(0x00); db(0x27); db(0x65); db(0x00); db(0x01); db(0x0a); db(0x08); db(0x00);
- db(0x00); db(0x01); db(0x67); db(0x00); db(0x01); db(0x02); db(0x41); db(0xed);
- db(0x01); db(0x68); db(0x25); db(0x48); db(0x00); db(0x0a); db(0x15); db(0x7c);
- db(0x00); db(0x13); db(0x00); db(0x04); db(0x15); db(0x7c); db(0x00); db(0x03);
- db(0x00); db(0x05); db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04);
- db(0x42); db(0xa8); db(0x00); db(0x08); db(0x42); db(0x68); db(0x00); db(0x0c);
- db(0x42); db(0x6a); db(0x00); db(0x06); db(0x61); db(0x00); db(0x01); db(0xa2);
- db(0x31); db(0x6c); db(0x00); db(0x0a); db(0x00); db(0x0e); db(0x42); db(0x68);
- db(0x00); db(0x10); db(0x31); db(0x6c); db(0x00); db(0x0c); db(0x00); db(0x12);
- db(0x42); db(0x68); db(0x00); db(0x14); db(0x31); db(0x6c); db(0x00); db(0x04);
- db(0x00); db(0x16); db(0x42); db(0x68); db(0x00); db(0x18); db(0x31); db(0x6c);
- db(0x00); db(0x06); db(0x00); db(0x1a); db(0x43); db(0xed); db(0x01); db(0x88);
- db(0x21); db(0x49); db(0x00); db(0x1c); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x06); db(0x30); db(0x2c); db(0x00); db(0x20); db(0x48); db(0xc0);
- db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x07); db(0x22); db(0xec); db(0x00); db(0x22); db(0x70); db(0x00);
- db(0x30); db(0x2c); db(0x00); db(0x10); db(0x6b); db(0x08); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x09); db(0x22); db(0xc0); db(0x30); db(0x2c);
- db(0x00); db(0x12); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x0a); db(0x22); db(0xc0); db(0x30); db(0x2c); db(0x00); db(0x08);
- db(0x6b); db(0x14); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x02);
- db(0x22); db(0xc0); db(0x30); db(0x2c); db(0x00); db(0x0e); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x01); db(0x22); db(0xc0); db(0x30); db(0x2c);
- db(0x00); db(0x14); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x03); db(0x30); db(0x2c); db(0x00); db(0x1a); db(0x48); db(0xc0);
- db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x2c); db(0x00); db(0x16);
- db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x04);
- db(0x30); db(0x2c); db(0x00); db(0x1c); db(0x48); db(0xc0); db(0xe1); db(0x80);
- db(0x22); db(0xc0); db(0x30); db(0x2c); db(0x00); db(0x18); db(0x6b); db(0x10);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x05); db(0x30); db(0x2c);
- db(0x00); db(0x1e); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
- db(0x70); db(0x00); db(0x30); db(0x2c); db(0x00); db(0x26); db(0x6b); db(0x08);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x08); db(0x22); db(0xc0);
- db(0x42); db(0x91); db(0x61); db(0x00); db(0xfc); db(0x02); db(0x10); db(0x2c);
- db(0x00); db(0x00); db(0x08); db(0x00); db(0x00); db(0x01); db(0x66); db(0x08);
- db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x00); db(0xfd); db(0xc6);
- db(0x20); db(0x6b); db(0x00); db(0x14); db(0x30); db(0x2c); db(0x00); db(0x28);
- db(0x32); db(0x28); db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41);
- db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0a);
- db(0x30); db(0x2c); db(0x00); db(0x2a); db(0x32); db(0x28); db(0x00); db(0x2e);
+ db(0x26); db(0x40); db(0x7c); db(0x00); db(0x26); db(0x86); db(0x27); db(0x46);
+ db(0x00); db(0x04); db(0x27); db(0x46); db(0x00); db(0x08); db(0x27); db(0x4a);
+ db(0x00); db(0xa0); db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x70); db(0xff);
+ db(0x27); db(0x40); db(0x00); db(0xb8); db(0x93); db(0xc9); db(0x4e); db(0xae);
+ db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa);
+ db(0x1b); db(0x2a); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
+ db(0x02); db(0xcc); db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa);
+ db(0x1b); db(0x27); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
+ db(0x02); db(0xbc); db(0x27); db(0x40); db(0x00); db(0xa8); db(0x7a); db(0x00);
+ db(0x26); db(0x07); db(0x66); db(0x12); db(0x20); db(0x4d); db(0x4e); db(0xae);
+ db(0xfe); db(0x80); db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c);
+ db(0x28); db(0x40); db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x30); db(0x3c);
+ db(0xff); db(0x40); db(0x61); db(0x00); db(0x1a); db(0xcc); db(0x70); db(0x00);
+ db(0x4e); db(0x90); db(0x24); db(0x00); db(0x61); db(0x00); db(0xfb); db(0xc2);
+ db(0x70); db(0x01); db(0x61); db(0x00); db(0xf9); db(0x72); db(0x08); db(0x02);
+ db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00);
+ db(0xfa); db(0xda); db(0x60); db(0x00); db(0x01); db(0x44); db(0x20); db(0x4d);
+ db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80);
+ db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f);
+ db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x08); db(0x2b); db(0x00); db(0x00); db(0x00); db(0xad);
+ db(0x67); db(0x0a); db(0x61); db(0x00); db(0xfe); db(0xe8); db(0x08); db(0xab);
+ db(0x00); db(0x00); db(0x00); db(0xad); db(0x08); db(0x2b); db(0x00); db(0x01);
+ db(0x00); db(0xad); db(0x67); db(0x0a); db(0x61); db(0x00); db(0x0c); db(0x60);
+ db(0x08); db(0xab); db(0x00); db(0x01); db(0x00); db(0xad); db(0x4a); db(0x2b);
+ db(0x00); db(0xac); db(0x67); db(0x24); db(0x30); db(0x3c); db(0xff); db(0x58);
+ db(0x61); db(0x00); db(0x1a); db(0x5e); db(0x70); db(0x01); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00); db(0xfb); db(0x78);
+ db(0x42); db(0x2b); db(0x00); db(0xac); db(0x30); db(0x3c); db(0xff); db(0x58);
+ db(0x61); db(0x00); db(0x1a); db(0x46); db(0x70); db(0x02); db(0x4e); db(0x90);
+ db(0x20); db(0x0c); db(0x67); db(0x56); db(0x0c); db(0xac); db(0x40); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x4c); db(0x0c); db(0x6c);
+ db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x44); db(0x0c); db(0x6c);
+ db(0x00); db(0x26); db(0x00); db(0x12); db(0x66); db(0x3c); db(0x20); db(0x6c);
+ db(0x00); db(0x1a); db(0x20); db(0x28); db(0x00); db(0x0c); db(0x02); db(0x80);
+ db(0x80); db(0x00); db(0x00); db(0x08); db(0x0c); db(0x80); db(0x80); db(0x00);
+ db(0x00); db(0x08); db(0x66); db(0x1a); db(0x02); db(0xa8); db(0x7f); db(0xff);
+ db(0xff); db(0xff); db(0x00); db(0x0c); db(0x20); db(0x68); db(0x00); db(0x10);
+ db(0x22); db(0x4c); db(0x12); db(0xbc); db(0x00); db(0x08); db(0x4e); db(0xae);
+ db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x4a); db(0x22); db(0x4c);
+ db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00);
+ db(0xff); db(0x3e); db(0x74); db(0xfe); db(0x20); db(0x0c); db(0x67); db(0x14);
+ db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x42); db(0x74); db(0xff);
+ db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x19); db(0xd2);
+ db(0x70); db(0x01); db(0x4e); db(0x90); db(0x45); db(0xeb); db(0x00); db(0x04);
+ db(0x20); db(0x52); db(0x20); db(0x08); db(0x67); db(0x00); db(0xff); db(0x18);
+ db(0x22); db(0x50); db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04);
+ db(0xb4); db(0x80); db(0x66); db(0x16); db(0x48); db(0xe7); db(0x00); db(0xc0);
+ db(0x28); db(0x68); db(0x00); db(0x0a); db(0x61); db(0x4a); db(0x53); db(0x85);
+ db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x89); db(0x20); db(0x49);
+ db(0x60); db(0xd8); db(0x24); db(0x48); db(0x20); db(0x49); db(0x60); db(0xd2);
+ db(0x0c); db(0x85); db(0x00); db(0x00); db(0x00); db(0x14); db(0x65); db(0x00);
+ db(0x00); db(0x0a); db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x04);
+ db(0x60); db(0x12); db(0x61); db(0x5e); db(0x30); db(0x3c); db(0xff); db(0x30);
+ db(0x61); db(0x00); db(0x19); db(0x7e); db(0x4e); db(0x90); db(0x4a); db(0x80);
+ db(0x67); db(0x0e); db(0x52); db(0x85); db(0x28); db(0xab); db(0x00); db(0x04);
+ db(0x27); db(0x4c); db(0x00); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xc0);
+ db(0x28); db(0x43); db(0x61); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xb8);
+ db(0x0c); db(0xac); db(0x00); db(0x00); db(0x00); db(0x1f); db(0x00); db(0x08);
+ db(0x66); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x3a); db(0x0c); db(0xac);
+ db(0x00); db(0x00); db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x14);
+ db(0x61); db(0x00); db(0xfa); db(0x92); db(0x66); db(0x0e); db(0x30); db(0x3c);
+ db(0xff); db(0x58); db(0x61); db(0x00); db(0x19); db(0x3c); db(0x70); db(0x00);
+ db(0x4e); db(0x90); db(0x60); db(0xec); db(0x22); db(0x54); db(0x20); db(0x6c);
+ db(0x00); db(0x04); db(0x29); db(0x4d); db(0x00); db(0x04); db(0x4e); db(0xee);
+ db(0xfe); db(0x92); db(0x2f); db(0x05); db(0x7a); db(0xfc); db(0x24); db(0x53);
+ db(0x2e); db(0x0a); db(0x22); db(0x0a); db(0x67); db(0x00); db(0x00); db(0x0c);
+ db(0x52); db(0x85); db(0x67); db(0x1e); db(0x22); db(0x4a); db(0x24); db(0x52);
+ db(0x60); db(0xf0); db(0x52); db(0x85); db(0x67); db(0x3c); db(0x24); db(0x47);
+ db(0x70); db(0x18); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x52); db(0x46); db(0x24); db(0x40); db(0x24); db(0x87); db(0x2e); db(0x0a);
+ db(0x60); db(0xe8); db(0x20); db(0x12); db(0x67); db(0x24); db(0x20); db(0x40);
+ db(0x20); db(0x10); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x20); db(0x10);
+ db(0x67); db(0x18); db(0x70); db(0x00); db(0x22); db(0x80); db(0x22); db(0x4a);
+ db(0x24); db(0x51); db(0x70); db(0x18); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x06); db(0x86); db(0x00); db(0x01); db(0x00); db(0x00); db(0x20); db(0x0a);
+ db(0x66); db(0xec); db(0x26); db(0x87); db(0x2a); db(0x1f); db(0x4e); db(0x75);
+ db(0x20); db(0x88); db(0x58); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04);
+ db(0x21); db(0x48); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0xff);
+ db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x91); db(0xc8); db(0x24); db(0x00);
+ db(0x6b); db(0x32); db(0x70); db(0x22); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x91); db(0xc8);
+ db(0x24); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x15); db(0x7c);
+ db(0x00); db(0x04); db(0x00); db(0x08); db(0x15); db(0x42); db(0x00); db(0x0f);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x25); db(0x40);
+ db(0x00); db(0x10); db(0x41); db(0xea); db(0x00); db(0x14); db(0x61); db(0x00);
+ db(0xff); db(0xb0); db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf);
+ db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x24);
+ db(0x24); db(0x40); db(0x24); db(0x01); db(0x66); db(0x02); db(0x74); db(0x30);
+ db(0x20); db(0x02); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x11); db(0x7c);
+ db(0x00); db(0x0a); db(0x00); db(0x08); db(0x31); db(0x42); db(0x00); db(0x12);
+ db(0x21); db(0x4a); db(0x00); db(0x0e); db(0x4a); db(0x80); db(0x4c); db(0xdf);
+ db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x30); db(0x22);
+ db(0x24); db(0x48); db(0x24); db(0x00); db(0x26); db(0x01); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x6a); db(0x22); db(0x03);
+ db(0x61); db(0x00); db(0xff); db(0xb2); db(0x67); db(0x18); db(0x20); db(0x4a);
+ db(0x22); db(0x40); db(0x24); db(0x40); db(0x20); db(0x02); db(0x72); db(0x00);
+ db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00); db(0x70); db(0x00);
+ db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a); db(0x4a); db(0x80);
+ db(0x4c); db(0xdf); db(0x44); db(0x0c); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x38); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x28); db(0x00);
+ db(0x24); db(0x08); db(0x26); db(0x09); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0x00); db(0x34); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x08); db(0x15); db(0x44); db(0x00); db(0x09); db(0x25); db(0x42);
+ db(0x00); db(0x0a); db(0x47); db(0xea); db(0x00); db(0x5c); db(0x25); db(0x4b);
+ db(0x00); db(0x3a); db(0x47); db(0xeb); db(0x08); db(0x00); db(0x25); db(0x4b);
+ db(0x00); db(0x3e); db(0x25); db(0x4b); db(0x00); db(0x36); db(0x22); db(0x4a);
+ db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09); db(0x4e); db(0xae);
+ db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf); db(0x4c); db(0x1c);
+ db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x18); db(0x62); db(0x43); db(0xfa);
+ db(0x01); db(0x50); db(0x70); db(0x13); db(0x61); db(0x00); db(0xff); db(0x98);
+ db(0x4e); db(0x75); db(0x9e); db(0xfc); db(0x00); db(0x18); db(0x42); db(0x92);
+ db(0x42); db(0xaa); db(0x00); db(0x0e); db(0x42); db(0xaa); db(0x00); db(0x12);
+ db(0x20); db(0x4a); db(0x22); db(0x4f); db(0x70); db(0x05); db(0x22); db(0xd8);
+ db(0x51); db(0xc8); db(0xff); db(0xfc); db(0x0c); db(0x6e); db(0x00); db(0x24);
+ db(0x00); db(0x14); db(0x64); db(0x24); db(0x22); db(0x6d); db(0x02); db(0x0c);
+ db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x2f); db(0x69); db(0x00); db(0x20);
+ db(0x00); db(0x0e); db(0x2f); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12);
+ db(0x22); db(0x6d); db(0x02); db(0x08); db(0x33); db(0x7c); db(0x00); db(0x0b);
+ db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16);
+ db(0x00); db(0x24); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
+ db(0x23); db(0x4f); db(0x00); db(0x28); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0xde); db(0xfc); db(0x00); db(0x18); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0xf8); db(0xfe); db(0x2a); db(0x48); db(0x95); db(0xca); db(0x97); db(0xcb);
+ db(0x99); db(0xcc); db(0x78); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x18);
+ db(0x20); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x28); db(0x00); db(0x3c);
+ db(0x67); db(0x5c); db(0x20); db(0x40); db(0x41); db(0xe8); db(0x00); db(0x2c);
+ db(0x28); db(0x48); db(0x4e); db(0xae); db(0xfc); db(0xe8); db(0x72); db(0xff);
+ db(0x74); db(0xff); db(0xb2); db(0x80); db(0x67); db(0x48); db(0x26); db(0x00);
+ db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x41); db(0xed); db(0x00); db(0xc0);
+ db(0x70); db(0x66); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xed);
+ db(0x00); db(0xc0); db(0x38); db(0x28); db(0x00); db(0x64); db(0x2c); db(0x6d);
+ db(0x00); db(0x18); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x38);
+ db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c);
+ db(0x80); db(0x00); db(0x10); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae);
+ db(0xfd); db(0x0c); db(0x72); db(0xff); db(0x74); db(0xff); db(0x4a); db(0x80);
+ db(0x6b); db(0x0c); db(0x45); db(0xed); db(0x00); db(0x38); db(0x22); db(0x2a);
+ db(0x00); db(0x32); db(0x24); db(0x2a); db(0x00); db(0x36); db(0x20); db(0x2c);
+ db(0x00); db(0x1c); db(0xb8); db(0x6d); db(0x00); db(0x2c); db(0x66); db(0x12);
+ db(0xb0); db(0xad); db(0x00); db(0x28); db(0x66); db(0x0c); db(0xb2); db(0xad);
+ db(0x00); db(0x20); db(0x66); db(0x06); db(0xb4); db(0xad); db(0x00); db(0x24);
+ db(0x67); db(0x40); db(0x2b); db(0x40); db(0x00); db(0x28); db(0x2b); db(0x41);
+ db(0x00); db(0x20); db(0x2b); db(0x42); db(0x00); db(0x24); db(0x3b); db(0x44);
+ db(0x00); db(0x2c); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x90);
+ db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c);
+ db(0x80); db(0x00); db(0x00); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae);
+ db(0xfd); db(0x0c); db(0x4a); db(0x80); db(0x6b); db(0x04); db(0x47); db(0xed);
+ db(0x00); db(0x90); db(0x34); db(0x2d); db(0x00); db(0x2c); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x01); db(0x61); db(0x00); db(0x16); db(0x52);
+ db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0x1f); db(0x4e); db(0x75);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x3e); db(0x2e); db(0x00); db(0x14);
+ db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x7c); db(0x00);
+ db(0x01); db(0xc6); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
+ db(0x24); db(0x40); db(0x70); db(0x14); db(0x22); db(0x4a); db(0x4e); db(0xae);
+ db(0xfe); db(0xd4); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x02); db(0x14);
+ db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x30); db(0x3c); db(0x3e); db(0x00);
+ db(0x61); db(0x00); db(0x16); db(0x1e); db(0x2b); db(0x48); db(0x02); db(0x10);
+ db(0x28); db(0x48); db(0x47); db(0xed); db(0x00); db(0x16); db(0x27); db(0x4e);
+ db(0x00); db(0x10); db(0x27); db(0x4a); db(0x00); db(0x08); db(0x27); db(0x46);
+ db(0x00); db(0x0c); db(0x70); db(0xff); db(0x37); db(0x40); db(0x00); db(0x00);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x05); db(0x61); db(0x00);
+ db(0x15); db(0xe8); db(0x20); db(0x0c); db(0x4e); db(0x90); db(0x43); db(0xed);
+ db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08);
+ db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09); db(0x41); db(0xfa);
+ db(0x16); db(0x96); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
+ db(0x03); db(0x2e); db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4d);
+ db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58);
+ db(0x20); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x70); db(0x00);
+ db(0x53); db(0xab); db(0x00); db(0x1c); db(0x6a); db(0x06); db(0x70); db(0x0a);
+ db(0x27); db(0x40); db(0x00); db(0x1c); db(0x4a); db(0xab); db(0x00); db(0x14);
+ db(0x66); db(0x22); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xe0);
+ db(0x43); db(0xfa); db(0x16); db(0xe6); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14); db(0x67); db(0xd0);
+ db(0x22); db(0x00); db(0x30); db(0x3c); db(0x3f); db(0xf4); db(0x61); db(0x00);
+ db(0x15); db(0x90); db(0x20); db(0x81); db(0x4a); db(0xab); db(0x00); db(0x18);
+ db(0x66); db(0x24); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xb8);
+ db(0x43); db(0xfa); db(0x16); db(0xd0); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00);
+ db(0xff); db(0xa8); db(0x22); db(0x00); db(0x30); db(0x3c); db(0x3f); db(0xf8);
+ db(0x61); db(0x00); db(0x15); db(0x66); db(0x20); db(0x81); db(0x4a); db(0xad);
+ db(0x02); db(0x08); db(0x66); db(0x3a); db(0x4a); db(0xab); db(0x00); db(0x1c);
+ db(0x66); db(0x8e); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee);
+ db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x15); db(0x5e); db(0x4e); db(0xae);
+ db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76);
+ db(0x4a); db(0x82); db(0x67); db(0x00); db(0xff); db(0x74); db(0x41); db(0xfa);
+ db(0x15); db(0x4a); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
+ db(0xfc); db(0xec); db(0x2b); db(0x40); db(0x02); db(0x08); db(0x67); db(0x00);
+ db(0x02); db(0x52); db(0x60); db(0x00); db(0xff); db(0x5c); db(0x4a); db(0xad);
+ db(0x02); db(0x0c); db(0x66); db(0x48); db(0x4a); db(0xab); db(0x00); db(0x1c);
+ db(0x66); db(0x00); db(0xff); db(0x4e); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x15); db(0x29);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x00); db(0xff); db(0x32);
+ db(0x41); db(0xfa); db(0x15); db(0x15); db(0x70); db(0x00); db(0x72); db(0x00);
+ db(0x61); db(0x00); db(0xfc); db(0xaa); db(0x2b); db(0x40); db(0x02); db(0x0c);
+ db(0x67); db(0x00); db(0x02); db(0x10); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x00); db(0x61); db(0x00); db(0x14); db(0xcc); db(0x4e); db(0x90);
+ db(0x60); db(0x00); db(0xff); db(0x0e); db(0x0c); db(0x47); db(0x00); db(0x24);
+ db(0x65); db(0x18); db(0x0c); db(0x47); db(0x00); db(0x32); db(0x64); db(0x12);
+ db(0x53); db(0xab); db(0x00); db(0x34); db(0x6a); db(0x0c); db(0x20); db(0x4b);
+ db(0x61); db(0x00); db(0xfd); db(0x8c); db(0x70); db(0x32); db(0x27); db(0x40);
+ db(0x00); db(0x34); db(0x45); db(0xed); db(0x01); db(0x3c); db(0x10); db(0x2c);
+ db(0x00); db(0x00); db(0x0c); db(0x47); db(0x00); db(0x27); db(0x65); db(0x00);
+ db(0x01); db(0x0a); db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x00);
+ db(0x01); db(0x02); db(0x41); db(0xed); db(0x01); db(0x68); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x15); db(0x7c); db(0x00); db(0x13); db(0x00); db(0x04);
+ db(0x15); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x05); db(0x42); db(0x90);
+ db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0xa8); db(0x00); db(0x08);
+ db(0x42); db(0x68); db(0x00); db(0x0c); db(0x42); db(0x6a); db(0x00); db(0x06);
+ db(0x61); db(0x00); db(0x01); db(0xa2); db(0x31); db(0x6c); db(0x00); db(0x0a);
+ db(0x00); db(0x0e); db(0x42); db(0x68); db(0x00); db(0x10); db(0x31); db(0x6c);
+ db(0x00); db(0x0c); db(0x00); db(0x12); db(0x42); db(0x68); db(0x00); db(0x14);
+ db(0x31); db(0x6c); db(0x00); db(0x04); db(0x00); db(0x16); db(0x42); db(0x68);
+ db(0x00); db(0x18); db(0x31); db(0x6c); db(0x00); db(0x06); db(0x00); db(0x1a);
+ db(0x43); db(0xed); db(0x01); db(0x88); db(0x21); db(0x49); db(0x00); db(0x1c);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x06); db(0x30); db(0x2c);
+ db(0x00); db(0x20); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x07); db(0x22); db(0xec);
+ db(0x00); db(0x22); db(0x70); db(0x00); db(0x30); db(0x2c); db(0x00); db(0x10);
+ db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x09);
+ db(0x22); db(0xc0); db(0x30); db(0x2c); db(0x00); db(0x12); db(0x6b); db(0x08);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x0a); db(0x22); db(0xc0);
+ db(0x30); db(0x2c); db(0x00); db(0x08); db(0x6b); db(0x14); db(0x22); db(0xfc);
+ db(0x80); db(0x03); db(0xa0); db(0x02); db(0x22); db(0xc0); db(0x30); db(0x2c);
+ db(0x00); db(0x0e); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x01);
+ db(0x22); db(0xc0); db(0x30); db(0x2c); db(0x00); db(0x14); db(0x6b); db(0x10);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x03); db(0x30); db(0x2c);
+ db(0x00); db(0x1a); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
+ db(0x30); db(0x2c); db(0x00); db(0x16); db(0x6b); db(0x10); db(0x22); db(0xfc);
+ db(0x80); db(0x03); db(0xa0); db(0x04); db(0x30); db(0x2c); db(0x00); db(0x1c);
+ db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x2c);
+ db(0x00); db(0x18); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03);
+ db(0xa0); db(0x05); db(0x30); db(0x2c); db(0x00); db(0x1e); db(0x48); db(0xc0);
+ db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x70); db(0x00); db(0x30); db(0x2c);
+ db(0x00); db(0x26); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03);
+ db(0xa0); db(0x08); db(0x22); db(0xc0); db(0x42); db(0x91); db(0x61); db(0x00);
+ db(0xfc); db(0x02); db(0x10); db(0x2c); db(0x00); db(0x00); db(0x08); db(0x00);
+ db(0x00); db(0x01); db(0x66); db(0x08); db(0x08); db(0x00); db(0x00); db(0x00);
+ db(0x67); db(0x00); db(0xfd); db(0xc6); db(0x20); db(0x6b); db(0x00); db(0x14);
+ db(0x30); db(0x2c); db(0x00); db(0x28); db(0x32); db(0x28); db(0x00); db(0x30);
  db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00);
- db(0x35); db(0x40); db(0x00); db(0x0c); db(0x08); db(0x2c); db(0x00); db(0x01);
- db(0x00); db(0x00); db(0x67); db(0x42); db(0x36); db(0x3c); db(0x00); db(0x68);
- db(0x74); db(0x01); db(0x28); db(0x2c); db(0x00); db(0x22); db(0x20); db(0x04);
- db(0xc0); db(0x82); db(0x22); db(0x2b); db(0x00); db(0x04); db(0xc2); db(0x82);
- db(0xb2); db(0x80); db(0x67); db(0x1c); db(0x35); db(0x7c); db(0x02); db(0x00);
- db(0x00); db(0x04); db(0x32); db(0x03); db(0x4a); db(0x00); db(0x66); db(0x04);
- db(0x08); db(0xc1); db(0x00); db(0x07); db(0x35); db(0x41); db(0x00); db(0x06);
- db(0x61); db(0x00); db(0x00); db(0x56); db(0x61); db(0x00); db(0xfb); db(0x88);
- db(0x52); db(0x43); db(0xd4); db(0x42); db(0x0c); db(0x42); db(0x00); db(0x08);
- db(0x66); db(0xcc); db(0x27); db(0x44); db(0x00); db(0x04); db(0x08); db(0x2c);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x67); db(0x00); db(0xfd); db(0x46);
- db(0x35); db(0x7c); db(0x04); db(0x00); db(0x00); db(0x04); db(0x42); db(0x6a);
- db(0x00); db(0x06); db(0x61); db(0x00); db(0x00); db(0x2c); db(0x0c); db(0x6e);
- db(0x00); db(0x24); db(0x00); db(0x14); db(0x65); db(0x18); db(0x2f); db(0x0e);
- db(0x2c); db(0x6d); db(0x02); db(0x08); db(0x2c); db(0x6e); db(0x00); db(0x14);
- db(0x4e); db(0xae); db(0xff); db(0xd6); db(0x2c); db(0x5f); db(0x02); db(0x40);
- db(0x7f); db(0xff); db(0x81); db(0x6a); db(0x00); db(0x08); db(0x61); db(0x00);
- db(0xfb); db(0x3e); db(0x60); db(0x00); db(0xfd); db(0x10); db(0x4e); db(0x75);
- db(0x22); db(0x2c); db(0x00); db(0x22); db(0x70); db(0x00); db(0x08); db(0x01);
- db(0x00); db(0x00); db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0e);
- db(0x08); db(0x01); db(0x00); db(0x01); db(0x67); db(0x04); db(0x08); db(0xc0);
- db(0x00); db(0x0d); db(0x08); db(0x01); db(0x00); db(0x02); db(0x67); db(0x04);
- db(0x08); db(0xc0); db(0x00); db(0x0c); db(0x35); db(0x40); db(0x00); db(0x08);
- db(0x4e); db(0x75); db(0x4a); db(0xa9); db(0x02); db(0x08); db(0x67); db(0x18);
- db(0x4a); db(0xa9); db(0x02); db(0x0c); db(0x67); db(0x12); db(0x20); db(0x69);
- db(0x02); db(0x10); db(0x30); db(0x28); db(0x00); db(0x02); db(0xb0); db(0x69);
- db(0x00); db(0x16); db(0x67); db(0x18); db(0x33); db(0x40); db(0x00); db(0x16);
- db(0x2f); db(0x09); db(0x2c); db(0x69); db(0x00); db(0x26); db(0x20); db(0x29);
- db(0x00); db(0x22); db(0x22); db(0x69); db(0x00); db(0x1e); db(0x4e); db(0xae);
- db(0xfe); db(0xbc); db(0x22); db(0x5f); db(0x53); db(0x69); db(0x00); db(0x46);
- db(0x6a); db(0x10); db(0x33); db(0x7c); db(0x00); db(0x32); db(0x00); db(0x46);
- db(0x30); db(0x3c); db(0xff); db(0xff); db(0x61); db(0x00); db(0x11); db(0x4a);
- db(0x50); db(0xd0); db(0x41); db(0xf9); db(0x00); db(0xdf); db(0xf0); db(0x00);
- db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x06);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x11); db(0x61); db(0x00);
- db(0x11); db(0x20); db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x00);
- db(0x67); db(0x42); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c);
- db(0x00); db(0x00); db(0x00); db(0x88); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
- db(0x67); db(0x00); db(0x00); db(0x40); db(0x2a); db(0x40); db(0x2b); db(0x4e);
- db(0x00); db(0x14); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0e);
- db(0x61); db(0x00); db(0x10); db(0xee); db(0x20); db(0x0d); db(0x4e); db(0x90);
- db(0x41); db(0xfa); db(0x11); db(0x96); db(0x43); db(0xfa); db(0x01); db(0x12);
- db(0x70); db(0xf6); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x27); db(0x10);
- db(0x61); db(0x00); db(0xea); db(0xaa); db(0x70); db(0x00); db(0x4c); db(0xdf);
- db(0x60); db(0x00); db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x0a); db(0x61); db(0x00); db(0x10); db(0xc4); db(0x4e); db(0x90);
- db(0x4e); db(0x75); db(0x61); db(0xf0); db(0x20); db(0x0d); db(0x67); db(0x1c);
- db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x2d); db(0x00); db(0x18);
- db(0x67); db(0x06); db(0x22); db(0x40); db(0x4e); db(0xae); db(0xfe); db(0x62);
- db(0x22); db(0x4d); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x38); db(0x3e); db(0x2c); db(0x6d); db(0x00); db(0x18);
- db(0x41); db(0xfa); db(0x11); db(0x24); db(0x22); db(0x08); db(0x24); db(0x3c);
- db(0x00); db(0x00); db(0x03); db(0xed); db(0x4e); db(0xae); db(0xff); db(0xe2);
- db(0x28); db(0x00); db(0x67); db(0x4c); db(0x45); db(0xed); db(0x00); db(0x68);
- db(0x42); db(0x92); db(0x34); db(0xaa); db(0x00); db(0x02); db(0x24); db(0x0a);
- db(0x54); db(0x82); db(0x76); db(0x02); db(0x22); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0xd6); db(0xb6); db(0x80); db(0x66); db(0x32); db(0x0c); db(0x92);
- db(0x50); db(0x4e); db(0x54); db(0x52); db(0x66); db(0xe4); db(0x24); db(0x0a);
- db(0x76); db(0x04); db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6);
- db(0x24); db(0x0a); db(0x76); db(0x20); db(0x22); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0xd6); db(0xb6); db(0x80); db(0x66); db(0x12); db(0x4a); db(0x6a);
- db(0x00); db(0x10); db(0x66); db(0xc4); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x10); db(0x61); db(0x00); db(0x10); db(0x34); db(0x4e); db(0x90);
- db(0x22); db(0x04); db(0x67); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xdc);
- db(0x4c); db(0xdf); db(0x7c); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x6d);
- db(0x00); db(0x18); db(0x41); db(0xfa); db(0x10); db(0x97); db(0x22); db(0x08);
- db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac); db(0x22); db(0x00);
- db(0x67); db(0x34); db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x2c); db(0x6d);
- db(0x00); db(0x14); db(0x45); db(0xed); db(0x00); db(0x38); db(0x70); db(0xff);
- db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x15); db(0x40); db(0x00); db(0x14);
- db(0x41); db(0xfa); db(0x10); db(0x8c); db(0x24); db(0x88); db(0x25); db(0x7c);
- db(0x00); db(0x00); db(0x00); db(0x12); db(0x00); db(0x0c); db(0x25); db(0x6d);
- db(0x00); db(0x08); db(0x00); db(0x10); db(0x2c); db(0x6d); db(0x00); db(0x18);
- db(0x22); db(0x0a); db(0x4e); db(0xae); db(0xfc); db(0x88); db(0x2c); db(0x6d);
- db(0x00); db(0x14); db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x10);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x0d); db(0x61); db(0x00); db(0x0f); db(0xc4); db(0x4e); db(0x90);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xfe); db(0x2a); db(0x40);
- db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x2b); db(0x40); db(0x00); db(0x08); db(0x43); db(0xfa);
- db(0x10); db(0xec); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x2b); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00); db(0xfe); db(0xdc);
- db(0x2c); db(0x40); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x41); db(0xfa); db(0x0f); db(0xed); db(0x22); db(0x08); db(0x74); db(0xfe);
- db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0xea);
- db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x72); db(0x32);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x0f); db(0xd7);
+ db(0x35); db(0x40); db(0x00); db(0x0a); db(0x30); db(0x2c); db(0x00); db(0x2a);
+ db(0x32); db(0x28); db(0x00); db(0x2e); db(0xd2); db(0x41); db(0x90); db(0x41);
+ db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0c);
+ db(0x08); db(0x2c); db(0x00); db(0x01); db(0x00); db(0x00); db(0x67); db(0x42);
+ db(0x36); db(0x3c); db(0x00); db(0x68); db(0x74); db(0x01); db(0x28); db(0x2c);
+ db(0x00); db(0x22); db(0x20); db(0x04); db(0xc0); db(0x82); db(0x22); db(0x2b);
+ db(0x00); db(0x04); db(0xc2); db(0x82); db(0xb2); db(0x80); db(0x67); db(0x1c);
+ db(0x35); db(0x7c); db(0x02); db(0x00); db(0x00); db(0x04); db(0x32); db(0x03);
+ db(0x4a); db(0x00); db(0x66); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x07);
+ db(0x35); db(0x41); db(0x00); db(0x06); db(0x61); db(0x00); db(0x00); db(0x56);
+ db(0x61); db(0x00); db(0xfb); db(0x88); db(0x52); db(0x43); db(0xd4); db(0x42);
+ db(0x0c); db(0x42); db(0x00); db(0x08); db(0x66); db(0xcc); db(0x27); db(0x44);
+ db(0x00); db(0x04); db(0x08); db(0x2c); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x67); db(0x00); db(0xfd); db(0x46); db(0x35); db(0x7c); db(0x04); db(0x00);
+ db(0x00); db(0x04); db(0x42); db(0x6a); db(0x00); db(0x06); db(0x61); db(0x00);
+ db(0x00); db(0x2c); db(0x0c); db(0x6e); db(0x00); db(0x24); db(0x00); db(0x14);
+ db(0x65); db(0x18); db(0x2f); db(0x0e); db(0x2c); db(0x6d); db(0x02); db(0x08);
+ db(0x2c); db(0x6e); db(0x00); db(0x14); db(0x4e); db(0xae); db(0xff); db(0xd6);
+ db(0x2c); db(0x5f); db(0x02); db(0x40); db(0x7f); db(0xff); db(0x81); db(0x6a);
+ db(0x00); db(0x08); db(0x61); db(0x00); db(0xfb); db(0x3e); db(0x60); db(0x00);
+ db(0xfd); db(0x10); db(0x4e); db(0x75); db(0x22); db(0x2c); db(0x00); db(0x22);
+ db(0x70); db(0x00); db(0x08); db(0x01); db(0x00); db(0x00); db(0x67); db(0x04);
+ db(0x08); db(0xc0); db(0x00); db(0x0e); db(0x08); db(0x01); db(0x00); db(0x01);
+ db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x08); db(0x01);
+ db(0x00); db(0x02); db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0c);
+ db(0x35); db(0x40); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x4a); db(0xa9);
+ db(0x02); db(0x08); db(0x67); db(0x18); db(0x4a); db(0xa9); db(0x02); db(0x0c);
+ db(0x67); db(0x12); db(0x20); db(0x69); db(0x02); db(0x10); db(0x30); db(0x28);
+ db(0x00); db(0x02); db(0xb0); db(0x69); db(0x00); db(0x16); db(0x67); db(0x18);
+ db(0x33); db(0x40); db(0x00); db(0x16); db(0x2f); db(0x09); db(0x2c); db(0x69);
+ db(0x00); db(0x26); db(0x20); db(0x29); db(0x00); db(0x22); db(0x22); db(0x69);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x22); db(0x5f);
+ db(0x53); db(0x69); db(0x00); db(0x46); db(0x6a); db(0x10); db(0x33); db(0x7c);
+ db(0x00); db(0x32); db(0x00); db(0x46); db(0x30); db(0x3c); db(0xff); db(0xff);
+ db(0x61); db(0x00); db(0x12); db(0x66); db(0x50); db(0xd0); db(0x41); db(0xf9);
+ db(0x00); db(0xdf); db(0xf0); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x00); db(0x06); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x11); db(0x61); db(0x00); db(0x12); db(0x3c); db(0x4e); db(0x90);
+ db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x42); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88);
+ db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x40);
+ db(0x2a); db(0x40); db(0x2b); db(0x4e); db(0x00); db(0x14); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00); db(0x12); db(0x0a);
+ db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa); db(0x12); db(0xb2);
+ db(0x43); db(0xfa); db(0x01); db(0x12); db(0x70); db(0xf6); db(0x22); db(0x3c);
+ db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00); db(0xea); db(0xaa);
+ db(0x70); db(0x00); db(0x4c); db(0xdf); db(0x60); db(0x00); db(0x4e); db(0x75);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a); db(0x61); db(0x00);
+ db(0x11); db(0xe0); db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x61); db(0xf0);
+ db(0x20); db(0x0d); db(0x67); db(0x1c); db(0x2c); db(0x6d); db(0x00); db(0x14);
+ db(0x20); db(0x2d); db(0x00); db(0x18); db(0x67); db(0x06); db(0x22); db(0x40);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4d); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x00); db(0x88); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x3e);
+ db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa); db(0x12); db(0x40);
+ db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00); db(0x03); db(0xed);
+ db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x28); db(0x00); db(0x67); db(0x4c);
+ db(0x45); db(0xed); db(0x00); db(0x68); db(0x42); db(0x92); db(0x34); db(0xaa);
+ db(0x00); db(0x02); db(0x24); db(0x0a); db(0x54); db(0x82); db(0x76); db(0x02);
+ db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80);
+ db(0x66); db(0x32); db(0x0c); db(0x92); db(0x50); db(0x4e); db(0x54); db(0x52);
+ db(0x66); db(0xe4); db(0x24); db(0x0a); db(0x76); db(0x04); db(0x22); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0xd6); db(0x24); db(0x0a); db(0x76); db(0x20);
+ db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80);
+ db(0x66); db(0x12); db(0x4a); db(0x6a); db(0x00); db(0x10); db(0x66); db(0xc4);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x10); db(0x61); db(0x00);
+ db(0x11); db(0x50); db(0x4e); db(0x90); db(0x22); db(0x04); db(0x67); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x4c); db(0xdf); db(0x7c); db(0x1c);
+ db(0x4e); db(0x75); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa);
+ db(0x11); db(0xb3); db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae);
+ db(0xff); db(0xac); db(0x22); db(0x00); db(0x67); db(0x34); db(0x4e); db(0xae);
+ db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x45); db(0xed);
+ db(0x00); db(0x38); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6);
+ db(0x15); db(0x40); db(0x00); db(0x14); db(0x41); db(0xfa); db(0x11); db(0xa8);
+ db(0x24); db(0x88); db(0x25); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x12);
+ db(0x00); db(0x0c); db(0x25); db(0x6d); db(0x00); db(0x08); db(0x00); db(0x10);
+ db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x22); db(0x0a); db(0x4e); db(0xae);
+ db(0xfc); db(0x88); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x4e); db(0x75);
+ db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0d); db(0x61); db(0x00);
+ db(0x10); db(0xe0); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xfe); db(0xfe); db(0x2a); db(0x40); db(0x2c); db(0x6d); db(0x00); db(0x14);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x2b); db(0x40);
+ db(0x00); db(0x08); db(0x43); db(0xfa); db(0x12); db(0x08); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2b); db(0x40); db(0x00); db(0x18);
+ db(0x67); db(0x00); db(0xfe); db(0xdc); db(0x2c); db(0x40); db(0x72); db(0x32);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x11); db(0x09);
  db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0xa6); db(0x22); db(0x00);
- db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14);
- db(0x61); db(0x00); db(0xf7); db(0xb8); db(0x72); db(0x00); db(0x32); db(0x3c);
- db(0x00); db(0x34); db(0x61); db(0x00); db(0xf7); db(0xfc); db(0x28); db(0x40);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0xfe); db(0x86); db(0x70); db(0x00);
- db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
- db(0x72); db(0x00); db(0x20); db(0x2d); db(0x00); db(0x0c); db(0x41); db(0xfa);
- db(0x0f); db(0xb5); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44);
- db(0x4a); db(0x80); db(0x66); db(0xe2); db(0x20); db(0x6c); db(0x00); db(0x14);
- db(0x0c); db(0x68); db(0x00); db(0x25); db(0x00); db(0x14); db(0x64); db(0x0c);
- db(0x61); db(0x00); db(0xfe); db(0x4a); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x60); db(0xf8); db(0x61); db(0x00); db(0xfe); db(0xe8);
- db(0x41); db(0xed); db(0x00); db(0x1c); db(0x29); db(0x48); db(0x00); db(0x28);
- db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x39); db(0x7c);
- db(0x00); db(0x0c); db(0x00); db(0x1c); db(0x2b); db(0x4d); db(0x00); db(0x2c);
- db(0x41); db(0xfa); db(0x01); db(0x60); db(0x2b); db(0x48); db(0x00); db(0x24);
- db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x0f); db(0x61); db(0x00); db(0x0e); db(0xda);
- db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x00); db(0x66); db(0x1c);
- db(0x70); db(0x00); db(0x74); db(0x00); db(0x14); db(0x2d); db(0x00); db(0x4c);
- db(0x05); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x05); db(0x00); db(0x67); db(0x06); db(0x61); db(0x00);
- db(0xfe); db(0x20); db(0x60); db(0xe4); db(0x20); db(0x2d); db(0x00); db(0x00);
- db(0x67); db(0x00); db(0x00); db(0x76); db(0x72); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x2b); db(0x40); db(0x00); db(0x04); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x0c); db(0x61); db(0x00); db(0x0e); db(0x9a);
- db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x40); db(0x4a); db(0xad);
- db(0x00); db(0x04); db(0x67); db(0x3a); db(0x39); db(0x7c); db(0x00); db(0x03);
- db(0x00); db(0x1c); db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac);
- db(0x00); db(0x20); db(0x29); db(0x6d); db(0x00); db(0x00); db(0x00); db(0x24);
- db(0x29); db(0x6d); db(0x00); db(0x04); db(0x00); db(0x28); db(0x42); db(0xac);
- db(0x00); db(0x2c); db(0x42); db(0xac); db(0x00); db(0x30); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x2b); db(0x6c); db(0x00); db(0x30);
- db(0x00); db(0x10); db(0x39); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x1c);
- db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x20); db(0x2d);
- db(0x00); db(0x00); db(0x42); db(0xad); db(0x00); db(0x00); db(0x22); db(0x2d);
- db(0x00); db(0x04); db(0x67); db(0x00); db(0xff); db(0x74); db(0x22); db(0x41);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x6a);
- db(0x39); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x1c); db(0x41); db(0xed);
- db(0x00); db(0x30); db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04);
- db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x2c);
- db(0x42); db(0xac); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28);
- db(0x70); db(0x08); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x0c); db(0xad); db(0x46); db(0x4f);
- db(0x52); db(0x4d); db(0x00); db(0x30); db(0x66); db(0x52); db(0x20); db(0x2d);
- db(0x00); db(0x34); db(0x67); db(0x4c); db(0x6b); db(0x4a); db(0x2b); db(0x6c);
- db(0x00); db(0x30); db(0x00); db(0x10); db(0x50); db(0x80); db(0x24); db(0x00);
- db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
- db(0x67); db(0x36); db(0x24); db(0x40); db(0x20); db(0x4a); db(0x20); db(0xed);
- db(0x00); db(0x30); db(0x20); db(0xed); db(0x00); db(0x34); db(0x29); db(0x48);
- db(0x00); db(0x28); db(0x20); db(0x02); db(0x51); db(0x80); db(0x29); db(0x40);
+ db(0x4a); db(0x80); db(0x67); db(0xea); db(0x22); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0xa6); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x41); db(0xfa); db(0x10); db(0xf3); db(0x22); db(0x08); db(0x74); db(0xfe);
+ db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xfe); db(0xa6); db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6);
+ db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x61); db(0x00); db(0xf7); db(0xb8);
+ db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34); db(0x61); db(0x00);
+ db(0xf7); db(0xfc); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xfe); db(0x86); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x72); db(0x00); db(0x20); db(0x2d);
+ db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x10); db(0xd1); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x4a); db(0x80); db(0x66); db(0xe2);
+ db(0x20); db(0x6c); db(0x00); db(0x14); db(0x0c); db(0x68); db(0x00); db(0x25);
+ db(0x00); db(0x14); db(0x64); db(0x0c); db(0x61); db(0x00); db(0xfe); db(0x4a);
+ db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x60); db(0xf8);
+ db(0x61); db(0x00); db(0xfe); db(0xe8); db(0x41); db(0xed); db(0x00); db(0x1c);
+ db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40);
+ db(0x00); db(0x24); db(0x39); db(0x7c); db(0x00); db(0x0c); db(0x00); db(0x1c);
+ db(0x2b); db(0x4d); db(0x00); db(0x2c); db(0x41); db(0xfa); db(0x01); db(0x60);
+ db(0x2b); db(0x48); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae);
+ db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0f);
+ db(0x61); db(0x00); db(0x0f); db(0xf6); db(0x4e); db(0x90); db(0x4a); db(0xad);
+ db(0x00); db(0x00); db(0x66); db(0x1c); db(0x70); db(0x00); db(0x74); db(0x00);
+ db(0x14); db(0x2d); db(0x00); db(0x4c); db(0x05); db(0xc0); db(0x08); db(0xc0);
+ db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x05); db(0x00);
+ db(0x67); db(0x06); db(0x61); db(0x00); db(0xfe); db(0x20); db(0x60); db(0xe4);
+ db(0x20); db(0x2d); db(0x00); db(0x00); db(0x67); db(0x00); db(0x00); db(0x76);
+ db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2b); db(0x40);
+ db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0c);
+ db(0x61); db(0x00); db(0x0f); db(0xb6); db(0x4e); db(0x90); db(0x4a); db(0x80);
+ db(0x67); db(0x40); db(0x4a); db(0xad); db(0x00); db(0x04); db(0x67); db(0x3a);
+ db(0x39); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x1c); db(0x42); db(0x2c);
+ db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x20); db(0x29); db(0x6d);
+ db(0x00); db(0x00); db(0x00); db(0x24); db(0x29); db(0x6d); db(0x00); db(0x04);
+ db(0x00); db(0x28); db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac);
+ db(0x00); db(0x30); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10); db(0x39); db(0x7c);
+ db(0x00); db(0x04); db(0x00); db(0x1c); db(0x22); db(0x4c); db(0x4e); db(0xae);
+ db(0xfe); db(0x38); db(0x20); db(0x2d); db(0x00); db(0x00); db(0x42); db(0xad);
+ db(0x00); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x04); db(0x67); db(0x00);
+ db(0xff); db(0x74); db(0x22); db(0x41); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x60); db(0x00); db(0xff); db(0x6a); db(0x39); db(0x7c); db(0x00); db(0x02);
+ db(0x00); db(0x1c); db(0x41); db(0xed); db(0x00); db(0x30); db(0x42); db(0x90);
+ db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0x2c); db(0x00); db(0x1f);
+ db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac); db(0x00); db(0x30);
+ db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x08); db(0x29); db(0x40);
  db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0b); db(0x61); db(0x00);
- db(0x0d); db(0xc0); db(0x20); db(0x2c); db(0x00); db(0x20); db(0x4e); db(0x90);
- db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x4a); db(0xac); db(0x00); db(0x20); db(0x67); db(0x00); db(0xfe); db(0xda);
- db(0x41); db(0xed); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28);
- db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); db(0x42); db(0xac);
- db(0x00); db(0x20); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x60); db(0xde); db(0x41); db(0xe8); db(0xff); db(0xe4); db(0x20); db(0x29);
- db(0x00); db(0x08); db(0xb0); db(0xa8); db(0x00); db(0x10); db(0x67); db(0x1a);
- db(0x21); db(0x40); db(0x00); db(0x10); db(0x2f); db(0x0e); db(0x2c); db(0x68);
- db(0x00); db(0x14); db(0x22); db(0x68); db(0x00); db(0x08); db(0x70); db(0x00);
- db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xbc);
- db(0x2c); db(0x5f); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x74); db(0xff); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x11); db(0x61); db(0x00); db(0x0d); db(0x54); db(0x4e); db(0x90);
- db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x38); db(0x74); db(0x00);
- db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e);
- db(0x43); db(0xfa); db(0x0d); db(0x7a); db(0x4e); db(0xae); db(0xfe); db(0xec);
- db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x43); db(0xfa);
- db(0x00); db(0x22); db(0x24); db(0x68); db(0xff); db(0xe4); db(0x21); db(0x49);
- db(0xff); db(0xe4); db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x65); db(0x61); db(0x00); db(0x0d); db(0x1c); db(0x4e); db(0x90);
- db(0x74); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x20); db(0x02);
- db(0x4e); db(0x75); db(0x59); db(0x8f); db(0x48); db(0xe7); db(0xc0); db(0x80);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x66); db(0x61); db(0x00);
- db(0x0d); db(0x00); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x01); db(0x03);
- db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x41); db(0xfa);
- db(0x0e); db(0x27); db(0x43); db(0xfa); db(0x00); db(0x14); db(0x70); db(0x0f);
- db(0x22); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40); db(0x61); db(0x00);
- db(0xe6); db(0xb4); db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x10);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x70); db(0x00); db(0x43); db(0xfa); db(0x0e); db(0x10); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x2c); db(0x40); db(0x72); db(0x02); db(0x30); db(0x3c);
- db(0xff); db(0x78); db(0x61); db(0x00); db(0x0c); db(0xbc); db(0x24); db(0x48);
- db(0x72); db(0x01); db(0x4e); db(0x90); db(0x4a); db(0x81); db(0x67); db(0x0c);
- db(0x26); db(0x41); db(0x4e); db(0xae); db(0xfe); db(0x08); db(0x72); db(0x02);
- db(0x20); db(0x4b); db(0x4e); db(0x92); db(0x22); db(0x4e); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4e); db(0x75);
- db(0x4e); db(0x75); db(0xbc); db(0xfc); db(0x00); db(0x00); db(0x67); db(0x06);
- db(0x4e); db(0xae); db(0xff); db(0x70); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x3f); db(0x3e); db(0x24); db(0x48); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x26); db(0x40); db(0x49); db(0xeb); db(0x00); db(0x2c); db(0x4b); db(0xec);
- db(0x00); db(0x10); db(0x4d); db(0xed); db(0x00); db(0x44); db(0x22); db(0x4d);
- db(0x41); db(0xea); db(0x00); db(0x10); db(0x70); db(0x10); db(0x22); db(0xd8);
- db(0x51); db(0xc8); db(0xff); db(0xfc); db(0x20); db(0x4e); db(0x22); db(0x52);
- db(0x52); db(0x88); db(0x10); db(0xd9); db(0x66); db(0xfc); db(0x20); db(0x08);
- db(0x56); db(0x80); db(0x02); db(0x00); db(0x00); db(0xfc); db(0x2c); db(0x00);
- db(0x20); db(0x08); db(0x55); db(0x80); db(0x90); db(0x8e); db(0x1c); db(0x80);
- db(0x20); db(0x46); db(0x22); db(0x6a); db(0x00); db(0x04); db(0x52); db(0x88);
- db(0x10); db(0xd9); db(0x66); db(0xfc); db(0x20); db(0x08); db(0x55); db(0x80);
- db(0x90); db(0x86); db(0x20); db(0x46); db(0x10); db(0x80); db(0x28); db(0xaa);
- db(0x00); db(0x08); db(0x20); db(0x06); db(0xe4); db(0x88); db(0x29); db(0x40);
- db(0x00); db(0x04); db(0x41); db(0xea); db(0x00); db(0x10); db(0x20); db(0x0d);
- db(0xe4); db(0x88); db(0x29); db(0x40); db(0x00); db(0x08); db(0x29); db(0x6a);
- db(0x00); db(0x0c); db(0x00); db(0x0c); db(0x20); db(0x0c); db(0xe4); db(0x88);
- db(0x27); db(0x40); db(0x00); db(0x1c); db(0x20); db(0x0e); db(0xe4); db(0x88);
- db(0x27); db(0x40); db(0x00); db(0x28); db(0x70); db(0x0a); db(0x27); db(0x40);
- db(0x00); db(0x18); db(0x27); db(0x7c); db(0x00); db(0x00); db(0x0f); db(0xa0);
- db(0x00); db(0x14); db(0x20); db(0x0b); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
- db(0x4e); db(0x75); db(0xbc); db(0xfc); db(0x00); db(0x00); db(0x67); db(0x06);
- db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x38); db(0x3e); db(0x24); db(0x48); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x43); db(0xfa); db(0x0d); db(0x0a); db(0x4e); db(0xae); db(0xfe); db(0x68);
- db(0x2a); db(0x40); db(0x20); db(0x6d); db(0x00); db(0x22); db(0x20); db(0x28);
- db(0x00); db(0x18); db(0xe5); db(0x88); db(0x26); db(0x40); db(0x24); db(0xab);
- db(0x00); db(0x04); db(0x20); db(0x0a); db(0xe4); db(0x88); db(0x27); db(0x40);
- db(0x00); db(0x04); db(0x22); db(0x4d); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0x1c);
- db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x16);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x16);
- db(0x24); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40); db(0x41); db(0xe8);
- db(0x00); db(0x5c); db(0xe5); db(0x8a); db(0x22); db(0x42); db(0x22); db(0x51);
- db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x22); db(0x02); db(0x43); db(0xfa);
- db(0x00); db(0x0e); db(0x30); db(0x3c); db(0xff); db(0x68); db(0x61); db(0x00);
- db(0x0b); db(0x60); db(0x4e); db(0x90); db(0x4e); db(0xd0); db(0x70); db(0x30);
- db(0x60); db(0x0a); db(0x70); db(0x28); db(0x60); db(0x06); db(0x20); db(0x06);
- db(0x60); db(0x02); db(0x20); db(0x06); db(0x12); db(0xd8); db(0x53); db(0x80);
- db(0x6e); db(0xfa); db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x01); db(0x00); db(0x00); db(0x00); db(0x04);
- db(0x00); db(0x00); db(0x00); db(0x02); db(0x48); db(0xe7); db(0x20); db(0x22);
- db(0x24); db(0x00); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x08); db(0x02);
- db(0x00); db(0x01); db(0x67); db(0x4e); db(0x43); db(0xfa); db(0x0c); db(0x95);
- db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80);
- db(0x67); db(0x40); db(0x24); db(0x4e); db(0x2c); db(0x40); db(0x4e); db(0xae);
- db(0xff); db(0xd0); db(0x4a); db(0x80); db(0x67); db(0x2c); db(0x20); db(0x40);
- db(0x43); db(0xfa); db(0xe2); db(0xb6); db(0x20); db(0x09); db(0x42); db(0x40);
- db(0x21); db(0x40); db(0x00); db(0x20); db(0x21); db(0x7c); db(0x00); db(0x01);
- db(0x00); db(0x00); db(0x00); db(0x24); db(0x31); db(0x7c); db(0x01); db(0x04);
- db(0x00); db(0x10); db(0x31); db(0x7c); db(0x07); db(0xdb); db(0x00); db(0x14);
- db(0x70); db(0x01); db(0x21); db(0x40); db(0x00); db(0x16); db(0x4e); db(0xae);
- db(0xff); db(0xe2); db(0x22); db(0x4e); db(0x2c); db(0x4a); db(0x4e); db(0xae);
- db(0xfe); db(0x62); db(0x08); db(0x02); db(0x00); db(0x00); db(0x67); db(0x44);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0xff); db(0xfc); db(0x61); db(0x00);
- db(0x0a); db(0xd8); db(0x24); db(0x48); db(0x20); db(0x08); db(0x42); db(0x40);
- db(0x20); db(0x40); db(0x21); db(0x4e); db(0x3f); db(0xfc); db(0x70); db(0x1a);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x22); db(0x40); db(0x41); db(0xfa); db(0x0c); db(0x71);
- db(0x23); db(0x48); db(0x00); db(0x0a); db(0x23); db(0x4a); db(0x00); db(0x0e);
- db(0x41); db(0xfa); db(0x01); db(0x30); db(0x23); db(0x48); db(0x00); db(0x12);
- db(0x33); db(0x7c); db(0x02); db(0x7a); db(0x00); db(0x08); db(0x70); db(0x0d);
- db(0x4e); db(0xae); db(0xff); db(0x58); db(0x4c); db(0xdf); db(0x44); db(0x04);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xc0); db(0x20); db(0x3c);
- db(0x00); db(0x00); db(0xf0); db(0x00); db(0x61); db(0x00); db(0x0a); db(0x8a);
- db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x40); db(0x00);
- db(0x61); db(0x00); db(0x0a); db(0x7e); db(0x70); db(0x03); db(0x4a); db(0x69);
- db(0x00); db(0x02); db(0x67); db(0x0e); db(0xd0); db(0xfc); db(0x20); db(0x00);
- db(0xd2); db(0xfc); db(0x00); db(0x08); db(0x51); db(0xc8); db(0xff); db(0xf0);
- db(0x60); db(0xd4); db(0x48); db(0xe8); db(0x00); db(0xfc); db(0x00); db(0x0c);
- db(0x48); db(0xe8); db(0x7c); db(0x00); db(0x00); db(0x2c); db(0x21); db(0x6f);
- db(0x00); db(0x00); db(0x00); db(0x04); db(0x21); db(0x6f); db(0x00); db(0x04);
- db(0x00); db(0x08); db(0x21); db(0x6f); db(0x00); db(0x08); db(0x00); db(0x24);
- db(0x21); db(0x6f); db(0x00); db(0x0c); db(0x00); db(0x28); db(0x24); db(0x48);
- db(0x26); db(0x49); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x42); db(0xaa);
- db(0x00); db(0x4c); db(0x4a); db(0x13); db(0x67); db(0x0a); db(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x25); db(0x40); db(0x00); db(0x4c);
- db(0x36); db(0xaf); db(0x00); db(0x10); db(0x2a); db(0x3c); db(0x80); db(0x00);
- db(0x00); db(0x00); db(0x38); db(0x3c); db(0x27); db(0x10); db(0x4a); db(0x2b);
- db(0x00); db(0x02); db(0x66); db(0x50); db(0x0c); db(0x2b); db(0x00); db(0xfe);
- db(0x00); db(0x07); db(0x66); db(0x18); db(0x17); db(0x7c); db(0x00); db(0x04);
- db(0x00); db(0x07); db(0x20); db(0x4a); db(0x22); db(0x4b); db(0x70); db(0x01);
- db(0x61); db(0x00); db(0x01); db(0x32); db(0x17); db(0x7c); db(0x00); db(0x03);
- db(0x00); db(0x07); db(0x60); db(0xda); db(0x4a); db(0xaa); db(0x00); db(0x4c);
- db(0x66); db(0x1e); db(0x0c); db(0x85); db(0x80); db(0x00); db(0x00); db(0x00);
- db(0x66); db(0xcc); db(0x53); db(0x44); db(0x6a); db(0xc8); db(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x22); db(0x40); db(0x70); db(0x88);
- db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x2a); db(0x00); db(0x60); db(0xb6);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x60); db(0xaa); db(0x0c); db(0x85); db(0x80); db(0x00);
- db(0x00); db(0x00); db(0x67); db(0x0e); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x22); db(0x40); db(0x20); db(0x05); db(0x4e); db(0xae);
- db(0xfe); db(0xd4); db(0x17); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x02);
- db(0x20); db(0x4a); db(0x22); db(0x4b); db(0x4c); db(0xe8); db(0x00); db(0xff);
- db(0x00); db(0x04); db(0x4c); db(0xe8); db(0x7c); db(0x00); db(0x00); db(0x2c);
- db(0x2f); db(0x28); db(0x00); db(0x24); db(0x2f); db(0x28); db(0x00); db(0x28);
- db(0x42); db(0xa8); db(0x00); db(0x4c); db(0x42); db(0x69); db(0x00); db(0x02);
- db(0x22); db(0x5f); db(0x20); db(0x5f); db(0x4f); db(0xef); db(0x00); db(0x12);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x30); db(0x30); db(0x76); db(0x00);
- db(0x24); db(0x49); db(0x4a); db(0x2a); db(0x00); db(0x01); db(0x67); db(0x4c);
- db(0x76); db(0x01); db(0x20); db(0x0a); db(0x42); db(0x40); db(0x20); db(0x40);
- db(0x72); db(0x04); db(0x22); db(0x48); db(0x2c); db(0x68); db(0x3f); db(0xfc);
- db(0xd1); db(0xfc); db(0x00); db(0x00); db(0x40); db(0x00); db(0xd3); db(0xfc);
- db(0x00); db(0x00); db(0xf0); db(0x00); db(0x4a); db(0x29); db(0x00); db(0x03);
- db(0x67); db(0x1e); db(0x0c); db(0x29); db(0x00); db(0xff); db(0x00); db(0x07);
- db(0x66); db(0x16); db(0x70); db(0x00); db(0x61); db(0x76); db(0x67); db(0x08);
- db(0x13); db(0x7c); db(0x00); db(0xfd); db(0x00); db(0x07); db(0x60); db(0xca);
- db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x07); db(0x60); db(0xc2);
+ db(0x0c); db(0xad); db(0x46); db(0x4f); db(0x52); db(0x4d); db(0x00); db(0x30);
+ db(0x66); db(0x52); db(0x20); db(0x2d); db(0x00); db(0x34); db(0x67); db(0x4c);
+ db(0x6b); db(0x4a); db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10);
+ db(0x50); db(0x80); db(0x24); db(0x00); db(0x72); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x36); db(0x24); db(0x40);
+ db(0x20); db(0x4a); db(0x20); db(0xed); db(0x00); db(0x30); db(0x20); db(0xed);
+ db(0x00); db(0x34); db(0x29); db(0x48); db(0x00); db(0x28); db(0x20); db(0x02);
+ db(0x51); db(0x80); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x0b); db(0x61); db(0x00); db(0x0e); db(0xdc); db(0x20); db(0x2c);
+ db(0x00); db(0x20); db(0x4e); db(0x90); db(0x22); db(0x4a); db(0x20); db(0x02);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4a); db(0xac); db(0x00); db(0x20);
+ db(0x67); db(0x00); db(0xfe); db(0xda); db(0x41); db(0xed); db(0x00); db(0x30);
+ db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40);
+ db(0x00); db(0x24); db(0x42); db(0xac); db(0x00); db(0x20); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x60); db(0xde); db(0x41); db(0xe8);
+ db(0xff); db(0xe4); db(0x20); db(0x29); db(0x00); db(0x08); db(0xb0); db(0xa8);
+ db(0x00); db(0x10); db(0x67); db(0x1a); db(0x21); db(0x40); db(0x00); db(0x10);
+ db(0x2f); db(0x0e); db(0x2c); db(0x68); db(0x00); db(0x14); db(0x22); db(0x68);
+ db(0x00); db(0x08); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
+ db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x2c); db(0x5f); db(0x70); db(0x00);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x74); db(0xff);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x11); db(0x61); db(0x00);
+ db(0x0e); db(0x70); db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x01);
+ db(0x67); db(0x38); db(0x74); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x0e); db(0x96);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x4a); db(0x80); db(0x67); db(0x1e);
+ db(0x20); db(0x40); db(0x43); db(0xfa); db(0x00); db(0x22); db(0x24); db(0x68);
+ db(0xff); db(0xe4); db(0x21); db(0x49); db(0xff); db(0xe4); db(0x22); db(0x48);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x65); db(0x61); db(0x00);
+ db(0x0e); db(0x38); db(0x4e); db(0x90); db(0x74); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x20); db(0x02); db(0x4e); db(0x75); db(0x59); db(0x8f);
+ db(0x48); db(0xe7); db(0xc0); db(0x80); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x66); db(0x61); db(0x00); db(0x0e); db(0x1c); db(0x4e); db(0x90);
+ db(0x4c); db(0xdf); db(0x01); db(0x03); db(0x4e); db(0x75); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x41); db(0xfa); db(0x0f); db(0x43); db(0x43); db(0xfa);
+ db(0x00); db(0x14); db(0x70); db(0x0f); db(0x22); db(0x3c); db(0x00); db(0x00);
+ db(0x1f); db(0x40); db(0x61); db(0x00); db(0xe6); db(0xb4); db(0x4e); db(0x75);
+ db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00); db(0x43); db(0xfa);
+ db(0x0f); db(0x2c); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2c); db(0x40);
+ db(0x72); db(0x02); db(0x30); db(0x3c); db(0xff); db(0x78); db(0x61); db(0x00);
+ db(0x0d); db(0xd8); db(0x24); db(0x48); db(0x72); db(0x01); db(0x4e); db(0x90);
+ db(0x4a); db(0x81); db(0x67); db(0x0c); db(0x26); db(0x41); db(0x4e); db(0xae);
+ db(0xfe); db(0x08); db(0x72); db(0x02); db(0x20); db(0x4b); db(0x4e); db(0x92);
+ db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
+ db(0xfe); db(0x62); db(0x4e); db(0x75); db(0x4e); db(0x75); db(0xbc); db(0xfc);
+ db(0x00); db(0x00); db(0x67); db(0x06); db(0x4e); db(0xae); db(0xff); db(0x70);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x24); db(0x48);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x01); db(0x00); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40); db(0x49); db(0xeb);
+ db(0x00); db(0x2c); db(0x4b); db(0xec); db(0x00); db(0x10); db(0x4d); db(0xed);
+ db(0x00); db(0x44); db(0x22); db(0x4d); db(0x41); db(0xea); db(0x00); db(0x10);
+ db(0x70); db(0x10); db(0x22); db(0xd8); db(0x51); db(0xc8); db(0xff); db(0xfc);
+ db(0x20); db(0x4e); db(0x22); db(0x52); db(0x52); db(0x88); db(0x10); db(0xd9);
+ db(0x66); db(0xfc); db(0x20); db(0x08); db(0x56); db(0x80); db(0x02); db(0x00);
+ db(0x00); db(0xfc); db(0x2c); db(0x00); db(0x20); db(0x08); db(0x55); db(0x80);
+ db(0x90); db(0x8e); db(0x1c); db(0x80); db(0x20); db(0x46); db(0x22); db(0x6a);
+ db(0x00); db(0x04); db(0x52); db(0x88); db(0x10); db(0xd9); db(0x66); db(0xfc);
+ db(0x20); db(0x08); db(0x55); db(0x80); db(0x90); db(0x86); db(0x20); db(0x46);
+ db(0x10); db(0x80); db(0x28); db(0xaa); db(0x00); db(0x08); db(0x20); db(0x06);
+ db(0xe4); db(0x88); db(0x29); db(0x40); db(0x00); db(0x04); db(0x41); db(0xea);
+ db(0x00); db(0x10); db(0x20); db(0x0d); db(0xe4); db(0x88); db(0x29); db(0x40);
+ db(0x00); db(0x08); db(0x29); db(0x6a); db(0x00); db(0x0c); db(0x00); db(0x0c);
+ db(0x20); db(0x0c); db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x1c);
+ db(0x20); db(0x0e); db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x28);
+ db(0x70); db(0x0a); db(0x27); db(0x40); db(0x00); db(0x18); db(0x27); db(0x7c);
+ db(0x00); db(0x00); db(0x0f); db(0xa0); db(0x00); db(0x14); db(0x20); db(0x0b);
+ db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0xbc); db(0xfc);
+ db(0x00); db(0x00); db(0x67); db(0x06); db(0x4e); db(0xae); db(0xff); db(0x6a);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x3e); db(0x24); db(0x48);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0e); db(0x26);
+ db(0x4e); db(0xae); db(0xfe); db(0x68); db(0x2a); db(0x40); db(0x20); db(0x6d);
+ db(0x00); db(0x22); db(0x20); db(0x28); db(0x00); db(0x18); db(0xe5); db(0x88);
+ db(0x26); db(0x40); db(0x24); db(0xab); db(0x00); db(0x04); db(0x20); db(0x0a);
+ db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x04); db(0x22); db(0x4d);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62);
+ db(0x4c); db(0xdf); db(0x7c); db(0x1c); db(0x4e); db(0x75); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x16); db(0x24); db(0x01); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
+ db(0x20); db(0x40); db(0x41); db(0xe8); db(0x00); db(0x5c); db(0xe5); db(0x8a);
+ db(0x22); db(0x42); db(0x22); db(0x51); db(0x4e); db(0xae); db(0xfe); db(0x92);
+ db(0x22); db(0x02); db(0x43); db(0xfa); db(0x00); db(0x0e); db(0x30); db(0x3c);
+ db(0xff); db(0x68); db(0x61); db(0x00); db(0x0c); db(0x7c); db(0x4e); db(0x90);
+ db(0x4e); db(0xd0); db(0x70); db(0x30); db(0x60); db(0x0a); db(0x70); db(0x28);
+ db(0x60); db(0x06); db(0x20); db(0x06); db(0x60); db(0x02); db(0x20); db(0x06);
+ db(0x12); db(0xd8); db(0x53); db(0x80); db(0x6e); db(0xfa); db(0x4e); db(0x75);
+ db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x01);
+ db(0x00); db(0x00); db(0x00); db(0x04); db(0x00); db(0x00); db(0x00); db(0x02);
+ db(0x48); db(0xe7); db(0x20); db(0x22); db(0x24); db(0x00); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x08); db(0x02); db(0x00); db(0x01); db(0x67); db(0x4e);
+ db(0x43); db(0xfa); db(0x0d); db(0xb1); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0x40); db(0x24); db(0x4e);
+ db(0x2c); db(0x40); db(0x4e); db(0xae); db(0xff); db(0xd0); db(0x4a); db(0x80);
+ db(0x67); db(0x2c); db(0x20); db(0x40); db(0x43); db(0xfa); db(0xe2); db(0xb2);
+ db(0x20); db(0x09); db(0x42); db(0x40); db(0x21); db(0x40); db(0x00); db(0x20);
+ db(0x21); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x00); db(0x00); db(0x24);
+ db(0x31); db(0x7c); db(0x01); db(0x04); db(0x00); db(0x10); db(0x31); db(0x7c);
+ db(0x07); db(0xdb); db(0x00); db(0x14); db(0x70); db(0x01); db(0x21); db(0x40);
+ db(0x00); db(0x16); db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x22); db(0x4e);
+ db(0x2c); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x08); db(0x02);
+ db(0x00); db(0x00); db(0x67); db(0x44); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0xff); db(0xfc); db(0x61); db(0x00); db(0x0b); db(0xf4); db(0x24); db(0x48);
+ db(0x20); db(0x08); db(0x42); db(0x40); db(0x20); db(0x40); db(0x21); db(0x4e);
+ db(0x3f); db(0xfc); db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40);
+ db(0x41); db(0xfa); db(0x0d); db(0x8d); db(0x23); db(0x48); db(0x00); db(0x0a);
+ db(0x23); db(0x4a); db(0x00); db(0x0e); db(0x41); db(0xfa); db(0x01); db(0x30);
+ db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c); db(0x02); db(0x7a);
+ db(0x00); db(0x08); db(0x70); db(0x0d); db(0x4e); db(0xae); db(0xff); db(0x58);
+ db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0xc0); db(0xc0); db(0x20); db(0x3c); db(0x00); db(0x00); db(0xf0); db(0x00);
+ db(0x61); db(0x00); db(0x0b); db(0xa6); db(0x22); db(0x48); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x40); db(0x00); db(0x61); db(0x00); db(0x0b); db(0x9a);
+ db(0x70); db(0x03); db(0x4a); db(0x69); db(0x00); db(0x02); db(0x67); db(0x0e);
  db(0xd0); db(0xfc); db(0x20); db(0x00); db(0xd2); db(0xfc); db(0x00); db(0x08);
- db(0x51); db(0xc9); db(0xff); db(0xd2); db(0x4a); db(0x2a); db(0x00); db(0x02);
- db(0x67); db(0x4a); db(0x76); db(0x01); db(0x20); db(0x0a); db(0x42); db(0x40);
- db(0x24); db(0x40); db(0x26); db(0x40); db(0x2c); db(0x6a); db(0x3f); db(0xfc);
- db(0xd5); db(0xfc); db(0x00); db(0x00); db(0x40); db(0x00); db(0xd7); db(0xfc);
- db(0x00); db(0x00); db(0xf0); db(0x00); db(0x74); db(0x03); db(0x20); db(0x2a);
- db(0x00); db(0x4c); db(0x67); db(0x1c); db(0x4a); db(0x2b); db(0x00); db(0x03);
- db(0x67); db(0x16); db(0x4a); db(0x2b); db(0x00); db(0x02); db(0x6a); db(0x10);
- db(0x42); db(0xaa); db(0x00); db(0x4c); db(0x22); db(0x40); db(0x20); db(0x3c);
- db(0x00); db(0x00); db(0x01); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xbc);
- db(0xd4); db(0xfc); db(0x20); db(0x00); db(0xd6); db(0xfc); db(0x00); db(0x08);
- db(0x51); db(0xca); db(0xff); db(0xd4); db(0x20); db(0x03); db(0x4c); db(0xdf);
- db(0x0c); db(0x0c); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x7c); db(0x7c);
- db(0x3a); db(0x00); db(0x49); db(0xe8); db(0x00); db(0x54); db(0x4b); db(0xe9);
- db(0x00); db(0x04); db(0x38); db(0x15); db(0xd8); db(0x44); db(0x47); db(0xfa);
- db(0x00); db(0x54); db(0x32); db(0x33); db(0x40); db(0x00); db(0x66); db(0x36);
- db(0x4a); db(0x45); db(0x67); db(0x14); db(0x32); db(0x3c); db(0x00); db(0x9c);
- db(0x0c); db(0x44); db(0x00); db(0x24); db(0x67); db(0x28); db(0x32); db(0x3c);
- db(0x00); db(0xb6); db(0x0c); db(0x44); db(0x00); db(0x26); db(0x67); db(0x1e);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0xff); db(0xf4); db(0x61); db(0x00);
- db(0x08); db(0x90); db(0x20); db(0x10); db(0x67); db(0x10); db(0x22); db(0x40);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00); db(0x4e); db(0xae);
- db(0xfe); db(0xbc); db(0x70); db(0x01); db(0x60); db(0x10); db(0xd6); db(0xc1);
- db(0x4c); db(0xd4); db(0x07); db(0x00); db(0x4c); db(0xd4); db(0x00); db(0x07);
- db(0x4e); db(0x93); db(0x28); db(0x80); db(0x70); db(0x00); db(0x4c); db(0xdf);
- db(0x3e); db(0x3e); db(0x4e); db(0x75); db(0x00); db(0xca); db(0x00); db(0x2c);
- db(0x00); db(0x30); db(0x00); db(0x34); db(0x00); db(0x38); db(0x00); db(0x3c);
- db(0x00); db(0x42); db(0x00); db(0x48); db(0x00); db(0x4e); db(0x00); db(0x56);
- db(0x00); db(0x48); db(0x00); db(0x4e); db(0x00); db(0x56); db(0x00); db(0x5e);
- db(0x00); db(0x5e); db(0x00); db(0x70); db(0x00); db(0x78); db(0x00); db(0x80);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0xc6); db(0x00); db(0x88);
- db(0x20); db(0x81); db(0x4e); db(0x75); db(0x30); db(0x81); db(0x4e); db(0x75);
- db(0x10); db(0x81); db(0x4e); db(0x75); db(0x20); db(0x10); db(0x4e); db(0x75);
- db(0x70); db(0x00); db(0x30); db(0x10); db(0x4e); db(0x75); db(0x70); db(0x00);
- db(0x10); db(0x10); db(0x4e); db(0x75); db(0x20); db(0x02); db(0x4e); db(0xee);
- db(0xfd); db(0x90); db(0x20); db(0x02); db(0xd0); db(0x80); db(0x4e); db(0xee);
- db(0xfd); db(0x90); db(0x20); db(0x02); db(0xe5); db(0x88); db(0x4e); db(0xee);
- db(0xfd); db(0x90); db(0x70); db(0x00); db(0x53); db(0x42); db(0x67); db(0x06);
- db(0x52); db(0x40); db(0x12); db(0xd8); db(0x66); db(0xf4); db(0x42); db(0x29);
- db(0xff); db(0xff); db(0x4e); db(0x75); db(0x20); db(0xc1); db(0x53); db(0x82);
- db(0x66); db(0xfa); db(0x4e); db(0x75); db(0x30); db(0xc1); db(0x53); db(0x82);
- db(0x66); db(0xfa); db(0x4e); db(0x75); db(0x10); db(0xc1); db(0x53); db(0x82);
- db(0x66); db(0xfa); db(0x4e); db(0x75); db(0x70); db(0x00); db(0x10); db(0x18);
- db(0x53); db(0x40); db(0x6b); db(0x08); db(0x53); db(0x42); db(0x6b); db(0x04);
- db(0x12); db(0xd8); db(0x60); db(0xf4); db(0x42); db(0x11); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x48); db(0xd0); db(0xc1);
- db(0x48); db(0x7a); db(0x00); db(0x0a); db(0x2f); db(0x08); db(0x4c); db(0xd2);
- db(0x3f); db(0xff); db(0x4e); db(0x75); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x48); db(0x7a);
- db(0xff); db(0xf4); db(0x2f); db(0x08); db(0x4c); db(0xd1); db(0x7f); db(0xff);
- db(0x4e); db(0x75); db(0x20); db(0x05); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0xff); db(0xfe); db(0x28); db(0x48); db(0x2a); db(0x4c); db(0x2e); db(0x01);
- db(0x7a); db(0x00); db(0x38); db(0x1c); db(0x7c); db(0x00); db(0x3c); db(0x1c);
- db(0xd8); db(0x44); db(0x47); db(0xfa); db(0xff); db(0x20); db(0xd6); db(0xf3);
- db(0x40); db(0x00); db(0x4c); db(0xd4); db(0x07); db(0x00); db(0x4c); db(0xd4);
- db(0x00); db(0x07); db(0x4e); db(0x93); db(0x28); db(0x80); db(0x2a); db(0x00);
- db(0x4a); db(0x46); db(0x67); db(0x14); db(0x36); db(0x06); db(0x02); db(0x46);
- db(0x00); db(0x0f); db(0xe0); db(0x4b); db(0xc6); db(0xfc); db(0x00); db(0x14);
- db(0xe5); db(0x4e); db(0xd6); db(0x46); db(0x2b); db(0x80); db(0x30); db(0x04);
- db(0xd8); db(0xfc); db(0x00); db(0x10); db(0x53); db(0x87); db(0x66); db(0xc2);
- db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x2a); db(0x48);
- db(0x7e); db(0x14); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x61); db(0x00);
- db(0x07); db(0x38); db(0x24); db(0x0d); db(0x72); db(0x13); db(0x4e); db(0x90);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x98); db(0x26); db(0x40);
- db(0x28); db(0x5b); db(0x20); db(0x4c); db(0x22); db(0x4d); db(0x30); db(0x3c);
- db(0x3f); db(0xff); db(0x22); db(0xd8); db(0x51); db(0xc8); db(0xff); db(0xfc);
- db(0x22); db(0x0d); db(0x92); db(0x8c); db(0x20); db(0x4b); db(0x70); db(0x00);
- db(0x30); db(0x18); db(0x67); db(0x0e); db(0x43); db(0xf4); db(0x08); db(0x00);
- db(0xd3); db(0x91); db(0x43); db(0xf5); db(0x08); db(0x00); db(0xd3); db(0x91);
- db(0x60); db(0xec); db(0x70); db(0x00); db(0x20); db(0x18); db(0x67); db(0x06);
- db(0x22); db(0x40); db(0xd3); db(0x91); db(0x60); db(0xf4); db(0x70); db(0x00);
- db(0x61); db(0x00); db(0x06); db(0xee); db(0x43); db(0xfa); db(0x06); db(0xea);
- db(0x93); db(0xc8); db(0xd3); db(0xcd); db(0x32); db(0xfc); db(0x41); db(0xf9);
- db(0x22); db(0xcc); db(0x32); db(0xfc); db(0x02); db(0x80); db(0x22); db(0xfc);
- db(0x00); db(0x00); db(0xff); db(0xff); db(0x22); db(0xbc); db(0xd1); db(0xc0);
- db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x00); db(0x40); db(0x70); db(0x00);
- db(0x30); db(0x18); db(0x67); db(0x14); db(0x06); db(0x40); db(0x00); db(0x0c);
- db(0x43); db(0xf4); db(0x08); db(0x00); db(0x32); db(0xfc); db(0x4e); db(0xf9);
- db(0x45); db(0xf5); db(0x08); db(0x00); db(0x22); db(0x8a); db(0x60); db(0xe6);
- db(0x0c); db(0x6e); db(0x00); db(0x24); db(0x00); db(0x14); db(0x65); db(0x04);
- db(0x4e); db(0xae); db(0xfd); db(0x84); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x61); db(0x00); db(0x06); db(0x9e); db(0x24); db(0x0d); db(0x72); db(0x14);
- db(0x4e); db(0x90); db(0x7e); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76);
- db(0x20); db(0x07); db(0x4e); db(0x75); db(0x0e); db(0xc2); db(0x13); db(0xb4);
- db(0x05); db(0x68); db(0x02); db(0xac); db(0x03); db(0x32); db(0x00); db(0x00);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x30); db(0x72); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x6c);
- db(0x26); db(0x40); db(0x41); db(0xfa); db(0x00); db(0x6a); db(0x22); db(0x4b);
- db(0x70); db(0x2f); db(0x12); db(0xd8); db(0x51); db(0xc8); db(0xff); db(0xfc);
- db(0x41); db(0xfa); db(0x00); db(0x94); db(0x27); db(0x48); db(0x00); db(0x12);
- db(0x41); db(0xfa); db(0x00); db(0x84); db(0x27); db(0x48); db(0x00); db(0x1e);
- db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e);
- db(0x43); db(0xfa); db(0x06); db(0x72); db(0x4e); db(0xae); db(0xfe); db(0xec);
- db(0x4a); db(0x80); db(0x67); db(0x10); db(0x22); db(0x40); db(0x20); db(0x0b);
+ db(0x51); db(0xc8); db(0xff); db(0xf0); db(0x60); db(0xd4); db(0x48); db(0xe8);
+ db(0x00); db(0xfc); db(0x00); db(0x0c); db(0x48); db(0xe8); db(0x7c); db(0x00);
+ db(0x00); db(0x2c); db(0x21); db(0x6f); db(0x00); db(0x00); db(0x00); db(0x04);
+ db(0x21); db(0x6f); db(0x00); db(0x04); db(0x00); db(0x08); db(0x21); db(0x6f);
+ db(0x00); db(0x08); db(0x00); db(0x24); db(0x21); db(0x6f); db(0x00); db(0x0c);
+ db(0x00); db(0x28); db(0x24); db(0x48); db(0x26); db(0x49); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x42); db(0xaa); db(0x00); db(0x4c); db(0x4a); db(0x13);
+ db(0x67); db(0x0a); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
+ db(0x25); db(0x40); db(0x00); db(0x4c); db(0x36); db(0xaf); db(0x00); db(0x10);
+ db(0x2a); db(0x3c); db(0x80); db(0x00); db(0x00); db(0x00); db(0x38); db(0x3c);
+ db(0x27); db(0x10); db(0x4a); db(0x2b); db(0x00); db(0x02); db(0x66); db(0x50);
+ db(0x0c); db(0x2b); db(0x00); db(0xfe); db(0x00); db(0x07); db(0x66); db(0x18);
+ db(0x17); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x07); db(0x20); db(0x4a);
+ db(0x22); db(0x4b); db(0x70); db(0x01); db(0x61); db(0x00); db(0x01); db(0x32);
+ db(0x17); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x07); db(0x60); db(0xda);
+ db(0x4a); db(0xaa); db(0x00); db(0x4c); db(0x66); db(0x1e); db(0x0c); db(0x85);
+ db(0x80); db(0x00); db(0x00); db(0x00); db(0x66); db(0xcc); db(0x53); db(0x44);
+ db(0x6a); db(0xc8); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
+ db(0x22); db(0x40); db(0x70); db(0x88); db(0x4e); db(0xae); db(0xfe); db(0xd4);
+ db(0x2a); db(0x00); db(0x60); db(0xb6); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x01); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x60); db(0xaa);
+ db(0x0c); db(0x85); db(0x80); db(0x00); db(0x00); db(0x00); db(0x67); db(0x0e);
+ db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x22); db(0x40);
+ db(0x20); db(0x05); db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x17); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x02); db(0x20); db(0x4a); db(0x22); db(0x4b);
+ db(0x4c); db(0xe8); db(0x00); db(0xff); db(0x00); db(0x04); db(0x4c); db(0xe8);
+ db(0x7c); db(0x00); db(0x00); db(0x2c); db(0x2f); db(0x28); db(0x00); db(0x24);
+ db(0x2f); db(0x28); db(0x00); db(0x28); db(0x42); db(0xa8); db(0x00); db(0x4c);
+ db(0x42); db(0x69); db(0x00); db(0x02); db(0x22); db(0x5f); db(0x20); db(0x5f);
+ db(0x4f); db(0xef); db(0x00); db(0x12); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x30); db(0x30); db(0x76); db(0x00); db(0x24); db(0x49); db(0x4a); db(0x2a);
+ db(0x00); db(0x01); db(0x67); db(0x4c); db(0x76); db(0x01); db(0x20); db(0x0a);
+ db(0x42); db(0x40); db(0x20); db(0x40); db(0x72); db(0x04); db(0x22); db(0x48);
+ db(0x2c); db(0x68); db(0x3f); db(0xfc); db(0xd1); db(0xfc); db(0x00); db(0x00);
+ db(0x40); db(0x00); db(0xd3); db(0xfc); db(0x00); db(0x00); db(0xf0); db(0x00);
+ db(0x4a); db(0x29); db(0x00); db(0x03); db(0x67); db(0x1e); db(0x0c); db(0x29);
+ db(0x00); db(0xff); db(0x00); db(0x07); db(0x66); db(0x16); db(0x70); db(0x00);
+ db(0x61); db(0x76); db(0x67); db(0x08); db(0x13); db(0x7c); db(0x00); db(0xfd);
+ db(0x00); db(0x07); db(0x60); db(0xca); db(0x13); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x07); db(0x60); db(0xc2); db(0xd0); db(0xfc); db(0x20); db(0x00);
+ db(0xd2); db(0xfc); db(0x00); db(0x08); db(0x51); db(0xc9); db(0xff); db(0xd2);
+ db(0x4a); db(0x2a); db(0x00); db(0x02); db(0x67); db(0x4a); db(0x76); db(0x01);
+ db(0x20); db(0x0a); db(0x42); db(0x40); db(0x24); db(0x40); db(0x26); db(0x40);
+ db(0x2c); db(0x6a); db(0x3f); db(0xfc); db(0xd5); db(0xfc); db(0x00); db(0x00);
+ db(0x40); db(0x00); db(0xd7); db(0xfc); db(0x00); db(0x00); db(0xf0); db(0x00);
+ db(0x74); db(0x03); db(0x20); db(0x2a); db(0x00); db(0x4c); db(0x67); db(0x1c);
+ db(0x4a); db(0x2b); db(0x00); db(0x03); db(0x67); db(0x16); db(0x4a); db(0x2b);
+ db(0x00); db(0x02); db(0x6a); db(0x10); db(0x42); db(0xaa); db(0x00); db(0x4c);
+ db(0x22); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00);
+ db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0xd4); db(0xfc); db(0x20); db(0x00);
+ db(0xd6); db(0xfc); db(0x00); db(0x08); db(0x51); db(0xca); db(0xff); db(0xd4);
+ db(0x20); db(0x03); db(0x4c); db(0xdf); db(0x0c); db(0x0c); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x7c); db(0x7c); db(0x3a); db(0x00); db(0x49); db(0xe8);
+ db(0x00); db(0x54); db(0x4b); db(0xe9); db(0x00); db(0x04); db(0x38); db(0x15);
+ db(0xd8); db(0x44); db(0x47); db(0xfa); db(0x00); db(0x54); db(0x32); db(0x33);
+ db(0x40); db(0x00); db(0x66); db(0x36); db(0x4a); db(0x45); db(0x67); db(0x14);
+ db(0x32); db(0x3c); db(0x00); db(0x9c); db(0x0c); db(0x44); db(0x00); db(0x24);
+ db(0x67); db(0x28); db(0x32); db(0x3c); db(0x00); db(0xb6); db(0x0c); db(0x44);
+ db(0x00); db(0x26); db(0x67); db(0x1e); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0xff); db(0xf4); db(0x61); db(0x00); db(0x09); db(0xac); db(0x20); db(0x10);
+ db(0x67); db(0x10); db(0x22); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x01); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x70); db(0x01);
+ db(0x60); db(0x10); db(0xd6); db(0xc1); db(0x4c); db(0xd4); db(0x07); db(0x00);
+ db(0x4c); db(0xd4); db(0x00); db(0x07); db(0x4e); db(0x93); db(0x28); db(0x80);
+ db(0x70); db(0x00); db(0x4c); db(0xdf); db(0x3e); db(0x3e); db(0x4e); db(0x75);
+ db(0x00); db(0xca); db(0x00); db(0x2c); db(0x00); db(0x30); db(0x00); db(0x34);
+ db(0x00); db(0x38); db(0x00); db(0x3c); db(0x00); db(0x42); db(0x00); db(0x48);
+ db(0x00); db(0x4e); db(0x00); db(0x56); db(0x00); db(0x48); db(0x00); db(0x4e);
+ db(0x00); db(0x56); db(0x00); db(0x5e); db(0x00); db(0x5e); db(0x00); db(0x70);
+ db(0x00); db(0x78); db(0x00); db(0x80); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x00); db(0xc6); db(0x00); db(0x88); db(0x20); db(0x81); db(0x4e); db(0x75);
+ db(0x30); db(0x81); db(0x4e); db(0x75); db(0x10); db(0x81); db(0x4e); db(0x75);
+ db(0x20); db(0x10); db(0x4e); db(0x75); db(0x70); db(0x00); db(0x30); db(0x10);
+ db(0x4e); db(0x75); db(0x70); db(0x00); db(0x10); db(0x10); db(0x4e); db(0x75);
+ db(0x20); db(0x02); db(0x4e); db(0xee); db(0xfd); db(0x90); db(0x20); db(0x02);
+ db(0xd0); db(0x80); db(0x4e); db(0xee); db(0xfd); db(0x90); db(0x20); db(0x02);
+ db(0xe5); db(0x88); db(0x4e); db(0xee); db(0xfd); db(0x90); db(0x70); db(0x00);
+ db(0x53); db(0x42); db(0x67); db(0x06); db(0x52); db(0x40); db(0x12); db(0xd8);
+ db(0x66); db(0xf4); db(0x42); db(0x29); db(0xff); db(0xff); db(0x4e); db(0x75);
+ db(0x20); db(0xc1); db(0x53); db(0x82); db(0x66); db(0xfa); db(0x4e); db(0x75);
+ db(0x30); db(0xc1); db(0x53); db(0x82); db(0x66); db(0xfa); db(0x4e); db(0x75);
+ db(0x10); db(0xc1); db(0x53); db(0x82); db(0x66); db(0xfa); db(0x4e); db(0x75);
+ db(0x70); db(0x00); db(0x10); db(0x18); db(0x53); db(0x40); db(0x6b); db(0x08);
+ db(0x53); db(0x42); db(0x6b); db(0x04); db(0x12); db(0xd8); db(0x60); db(0xf4);
+ db(0x42); db(0x11); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e);
+ db(0x2c); db(0x48); db(0xd0); db(0xc1); db(0x48); db(0x7a); db(0x00); db(0x0a);
+ db(0x2f); db(0x08); db(0x4c); db(0xd2); db(0x3f); db(0xff); db(0x4e); db(0x75);
+ db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x3f); db(0x3e); db(0x48); db(0x7a); db(0xff); db(0xf4); db(0x2f); db(0x08);
+ db(0x4c); db(0xd1); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x20); db(0x05);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x28); db(0x48);
+ db(0x2a); db(0x4c); db(0x2e); db(0x01); db(0x7a); db(0x00); db(0x38); db(0x1c);
+ db(0x7c); db(0x00); db(0x3c); db(0x1c); db(0xd8); db(0x44); db(0x47); db(0xfa);
+ db(0xff); db(0x20); db(0xd6); db(0xf3); db(0x40); db(0x00); db(0x4c); db(0xd4);
+ db(0x07); db(0x00); db(0x4c); db(0xd4); db(0x00); db(0x07); db(0x4e); db(0x93);
+ db(0x28); db(0x80); db(0x2a); db(0x00); db(0x4a); db(0x46); db(0x67); db(0x14);
+ db(0x36); db(0x06); db(0x02); db(0x46); db(0x00); db(0x0f); db(0xe0); db(0x4b);
+ db(0xc6); db(0xfc); db(0x00); db(0x14); db(0xe5); db(0x4e); db(0xd6); db(0x46);
+ db(0x2b); db(0x80); db(0x30); db(0x04); db(0xd8); db(0xfc); db(0x00); db(0x10);
+ db(0x53); db(0x87); db(0x66); db(0xc2); db(0x4c); db(0xdf); db(0x7f); db(0xff);
+ db(0x4e); db(0x75); db(0x2a); db(0x48); db(0x7e); db(0x14); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x61); db(0x00); db(0x08); db(0x54); db(0x24); db(0x0d);
+ db(0x72); db(0x13); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0x00); db(0x98); db(0x26); db(0x40); db(0x28); db(0x5b); db(0x20); db(0x4c);
+ db(0x22); db(0x4d); db(0x30); db(0x3c); db(0x3f); db(0xff); db(0x22); db(0xd8);
+ db(0x51); db(0xc8); db(0xff); db(0xfc); db(0x22); db(0x0d); db(0x92); db(0x8c);
+ db(0x20); db(0x4b); db(0x70); db(0x00); db(0x30); db(0x18); db(0x67); db(0x0e);
+ db(0x43); db(0xf4); db(0x08); db(0x00); db(0xd3); db(0x91); db(0x43); db(0xf5);
+ db(0x08); db(0x00); db(0xd3); db(0x91); db(0x60); db(0xec); db(0x70); db(0x00);
+ db(0x20); db(0x18); db(0x67); db(0x06); db(0x22); db(0x40); db(0xd3); db(0x91);
+ db(0x60); db(0xf4); db(0x70); db(0x00); db(0x61); db(0x00); db(0x08); db(0x0a);
+ db(0x43); db(0xfa); db(0x08); db(0x06); db(0x93); db(0xc8); db(0xd3); db(0xcd);
+ db(0x32); db(0xfc); db(0x41); db(0xf9); db(0x22); db(0xcc); db(0x32); db(0xfc);
+ db(0x02); db(0x80); db(0x22); db(0xfc); db(0x00); db(0x00); db(0xff); db(0xff);
+ db(0x22); db(0xbc); db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x41); db(0xfa);
+ db(0x00); db(0x40); db(0x70); db(0x00); db(0x30); db(0x18); db(0x67); db(0x14);
+ db(0x06); db(0x40); db(0x00); db(0x0c); db(0x43); db(0xf4); db(0x08); db(0x00);
+ db(0x32); db(0xfc); db(0x4e); db(0xf9); db(0x45); db(0xf5); db(0x08); db(0x00);
+ db(0x22); db(0x8a); db(0x60); db(0xe6); db(0x0c); db(0x6e); db(0x00); db(0x24);
+ db(0x00); db(0x14); db(0x65); db(0x04); db(0x4e); db(0xae); db(0xfd); db(0x84);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x61); db(0x00); db(0x07); db(0xba);
+ db(0x24); db(0x0d); db(0x72); db(0x14); db(0x4e); db(0x90); db(0x7e); db(0x00);
+ db(0x4e); db(0xae); db(0xff); db(0x76); db(0x20); db(0x07); db(0x4e); db(0x75);
+ db(0x0e); db(0xc6); db(0x13); db(0xb8); db(0x05); db(0x6c); db(0x02); db(0xb0);
+ db(0x03); db(0x36); db(0x00); db(0x00); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x70); db(0x30); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x4a); db(0x80); db(0x67); db(0x6c); db(0x26); db(0x40); db(0x41); db(0xfa);
+ db(0x00); db(0x6a); db(0x22); db(0x4b); db(0x70); db(0x2f); db(0x12); db(0xd8);
+ db(0x51); db(0xc8); db(0xff); db(0xfc); db(0x41); db(0xfa); db(0x00); db(0x94);
+ db(0x27); db(0x48); db(0x00); db(0x12); db(0x41); db(0xfa); db(0x00); db(0x84);
+ db(0x27); db(0x48); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x07); db(0x8e);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x4a); db(0x80); db(0x67); db(0x10);
+ db(0x22); db(0x40); db(0x20); db(0x0b); db(0x30); db(0x7c); db(0xff); db(0xe2);
+ db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x27); db(0x40); db(0x00); db(0x28);
+ db(0x41); db(0xee); db(0x01); db(0x7a); db(0x43); db(0xfa); db(0x07); db(0x7d);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x4a); db(0x80); db(0x67); db(0x14);
+ db(0x22); db(0x40); db(0x41); db(0xeb); db(0x00); db(0x1c); db(0x20); db(0x08);
  db(0x30); db(0x7c); db(0xff); db(0xe2); db(0x4e); db(0xae); db(0xfe); db(0x5c);
- db(0x27); db(0x40); db(0x00); db(0x28); db(0x41); db(0xee); db(0x01); db(0x7a);
- db(0x43); db(0xfa); db(0x06); db(0x61); db(0x4e); db(0xae); db(0xfe); db(0xec);
- db(0x4a); db(0x80); db(0x67); db(0x14); db(0x22); db(0x40); db(0x41); db(0xeb);
- db(0x00); db(0x1c); db(0x20); db(0x08); db(0x30); db(0x7c); db(0xff); db(0xe2);
- db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x27); db(0x40); db(0x00); db(0x2c);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4e); db(0x75); db(0x0c); db(0x69);
- db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x67); db(0x08); db(0x0c); db(0x69);
- db(0x00); db(0x0c); db(0x00); db(0x1c); db(0x66); db(0x06); db(0x4e); db(0xb9);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x2f); db(0x3a); db(0x00); db(0x10);
- db(0x4e); db(0x75); db(0x4e); db(0xb9); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x2f); db(0x3a); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x00); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x48); db(0xe7);
- db(0xff); db(0xfe); db(0x24); db(0x48); db(0x60); db(0x08); db(0x48); db(0xe7);
- db(0xff); db(0xfe); db(0x24); db(0x69); db(0x00); db(0x28); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x51); db(0x8f); db(0x28); db(0x4f); db(0x2f); db(0x0c);
- db(0x2f); db(0x0a); db(0x61); db(0x00); db(0x03); db(0xdc); db(0x50); db(0x8f);
- db(0x4a); db(0x80); db(0x67); db(0x1a); db(0x24); db(0x00); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x61); db(0x00); db(0x05); db(0xa4); db(0x72); db(0x15);
- db(0x22); db(0x42); db(0x20); db(0x14); db(0x4e); db(0x90); db(0x22); db(0x42);
- db(0x20); db(0x14); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x50); db(0x8f);
- db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x22); db(0x2f);
- db(0x00); db(0x08); db(0x20); db(0x2f); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x03); db(0x00);
- db(0x1e); db(0x2f); db(0x00); db(0x0f); db(0x7c); db(0x00); db(0x08); db(0x07);
- db(0x00); db(0x00); db(0x67); db(0x02); db(0x52); db(0x86); db(0x08); db(0x07);
- db(0x00); db(0x01); db(0x67); db(0x02); db(0x52); db(0x86); db(0x08); db(0x07);
- db(0x00); db(0x02); db(0x67); db(0x02); db(0x52); db(0x86); db(0x20); db(0x06);
- db(0x4c); db(0xdf); db(0x00); db(0xc0); db(0x4e); db(0x75); db(0x2f); db(0x07);
- db(0x2e); db(0x2f); db(0x00); db(0x08); db(0x70); db(0x40); db(0xbe); db(0x80);
- db(0x6f); db(0x28); db(0x70); db(0x4a); db(0xbe); db(0x80); db(0x67); db(0x22);
- db(0x70); db(0x5a); db(0xbe); db(0x80); db(0x67); db(0x1c); db(0x70); db(0x5b);
- db(0xbe); db(0x80); db(0x67); db(0x16); db(0x70); db(0x5c); db(0xbe); db(0x80);
- db(0x67); db(0x10); db(0x70); db(0x5d); db(0xbe); db(0x80); db(0x67); db(0x0a);
- db(0x70); db(0x5e); db(0xbe); db(0x80); db(0x67); db(0x04); db(0x70); db(0x01);
- db(0x60); db(0x02); db(0x70); db(0x00); db(0x2e); db(0x1f); db(0x4e); db(0x75);
- db(0x9e); db(0xfc); db(0x00); db(0x14); db(0x48); db(0xe7); db(0x37); db(0x34);
- db(0x2e); db(0x2f); db(0x00); db(0x44); db(0x24); db(0x6f); db(0x00); db(0x40);
- db(0x26); db(0x6f); db(0x00); db(0x3c); db(0x2a); db(0x6f); db(0x00); db(0x38);
- db(0x2c); db(0x07); db(0x70); db(0x3f); db(0xdc); db(0x80); db(0x2f); db(0x47);
- db(0x00); db(0x28); db(0x20); db(0x2f); db(0x00); db(0x28); db(0xb0); db(0x86);
- db(0x6e); db(0x00); db(0x00); db(0xfe); db(0x2f); db(0x00); db(0x61); db(0x96);
- db(0x58); db(0x4f); db(0x4a); db(0x80); db(0x66); db(0x00); db(0x00); db(0xe6);
- db(0x70); db(0x00); db(0x10); db(0x13); db(0x02); db(0x40); db(0xff); db(0xf8);
- db(0x72); db(0x20); db(0x90); db(0x81); db(0x67); db(0x4a); db(0x72); db(0x20);
- db(0x90); db(0x81); db(0x66); db(0x00); db(0x00); db(0xd0); db(0x70); db(0x00);
- db(0x10); db(0x13); db(0x2f); db(0x00); db(0x61); db(0x00); db(0xff); db(0x46);
+ db(0x27); db(0x40); db(0x00); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x76);
+ db(0x4e); db(0x75); db(0x0c); db(0x69); db(0x00); db(0x0a); db(0x00); db(0x1c);
+ db(0x67); db(0x08); db(0x0c); db(0x69); db(0x00); db(0x0c); db(0x00); db(0x1c);
+ db(0x66); db(0x06); db(0x4e); db(0xb9); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x2f); db(0x3a); db(0x00); db(0x10); db(0x4e); db(0x75); db(0x4e); db(0xb9);
+ db(0x00); db(0x00); db(0x00); db(0x00); db(0x2f); db(0x3a); db(0x00); db(0x08);
+ db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x24); db(0x48);
+ db(0x60); db(0x08); db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x24); db(0x69);
+ db(0x00); db(0x28); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x51); db(0x8f);
+ db(0x28); db(0x4f); db(0x2f); db(0x0c); db(0x2f); db(0x0a); db(0x61); db(0x00);
+ db(0x04); db(0xf6); db(0x50); db(0x8f); db(0x4a); db(0x80); db(0x67); db(0x1a);
+ db(0x24); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x61); db(0x00);
+ db(0x06); db(0xc0); db(0x72); db(0x15); db(0x22); db(0x42); db(0x20); db(0x14);
+ db(0x4e); db(0x90); db(0x22); db(0x42); db(0x20); db(0x14); db(0x4e); db(0xae);
+ db(0xff); db(0x2e); db(0x50); db(0x8f); db(0x4c); db(0xdf); db(0x7f); db(0xff);
+ db(0x4e); db(0x75); db(0x20); db(0x78); db(0x00); db(0x04); db(0x0c); db(0x68);
+ db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x00); db(0x00); db(0xa6);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x22); db(0x3c); db(0x00); db(0x00);
+ db(0x00); db(0xd0); db(0x61); db(0x00); db(0x06); db(0x7c); db(0x28); db(0x08);
+ db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x00);
+ db(0x00); db(0x8c); db(0x43); db(0xfa); db(0x07); db(0xb0); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0x7c);
+ db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x64);
+ db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x6a); db(0x24); db(0x40); db(0x22); db(0x4a); db(0x70); db(0x18);
+ db(0x41); db(0xfa); db(0x00); db(0x66); db(0x22); db(0xd8); db(0x51); db(0xc8);
+ db(0xff); db(0xfc); db(0x41); db(0xea); db(0x00); db(0x30); db(0x20); db(0x84);
+ db(0x41); db(0xea); db(0x00); db(0x52); db(0x20); db(0x84); db(0x41); db(0xea);
+ db(0x00); db(0x0a); db(0x20); db(0x08); db(0x22); db(0x4c); db(0x30); db(0x7c);
+ db(0xff); db(0x6a); db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x41); db(0xea);
+ db(0x00); db(0x0e); db(0x20); db(0x80); db(0x41); db(0xea); db(0x00); db(0x00);
+ db(0x20); db(0x08); db(0x22); db(0x4c); db(0x30); db(0x7c); db(0xfd); db(0x00);
+ db(0x4e); db(0xae); db(0xfe); db(0x5c); db(0x41); db(0xea); db(0x00); db(0x04);
+ db(0x20); db(0x80); db(0x41); db(0xea); db(0x00); db(0x44); db(0x20); db(0x08);
+ db(0x22); db(0x4c); db(0x30); db(0x7c); db(0xff); db(0x64); db(0x4e); db(0xae);
+ db(0xfe); db(0x5c); db(0x41); db(0xea); db(0x00); db(0x5c); db(0x20); db(0x80);
+ db(0x20); db(0x44); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xd1);
+ db(0x22); db(0x4a); db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x00); db(0x00);
+ db(0x2f); db(0x01); db(0x4e); db(0xb9); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x60); db(0x08); db(0x2f); db(0x01); db(0x4e); db(0xb9); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x48); db(0xe7); db(0xf0); db(0xc0); db(0x26); db(0x00);
+ db(0x22); db(0x2f); db(0x00); db(0x18); db(0x4e); db(0xae); db(0xff); db(0xac);
+ db(0x24); db(0x00); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xca);
+ db(0x20); db(0x43); db(0x22); db(0x6f); db(0x00); db(0x18); db(0x4e); db(0xb9);
+ db(0x00); db(0x00); db(0x00); db(0x00); db(0x22); db(0x02); db(0x67); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0xa6); db(0x4c); db(0xdf); db(0x03); db(0x0f);
+ db(0x58); db(0x8f); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xc0);
+ db(0x20); db(0x41); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xcb);
+ db(0x4e); db(0xb9); db(0x00); db(0x00); db(0x00); db(0x00); db(0x4c); db(0xdf);
+ db(0x03); db(0x03); db(0x4e); db(0xb9); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x4e); db(0x75); db(0x00); db(0x00); db(0x22); db(0x2f); db(0x00); db(0x08);
+ db(0x20); db(0x2f); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x03); db(0x00); db(0x1e); db(0x2f);
+ db(0x00); db(0x0f); db(0x7c); db(0x00); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x02); db(0x52); db(0x86); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x02); db(0x52); db(0x86); db(0x08); db(0x07); db(0x00); db(0x02);
+ db(0x67); db(0x02); db(0x52); db(0x86); db(0x20); db(0x06); db(0x4c); db(0xdf);
+ db(0x00); db(0xc0); db(0x4e); db(0x75); db(0x2f); db(0x07); db(0x2e); db(0x2f);
+ db(0x00); db(0x08); db(0x70); db(0x40); db(0xbe); db(0x80); db(0x6f); db(0x28);
+ db(0x70); db(0x4a); db(0xbe); db(0x80); db(0x67); db(0x22); db(0x70); db(0x5a);
+ db(0xbe); db(0x80); db(0x67); db(0x1c); db(0x70); db(0x5b); db(0xbe); db(0x80);
+ db(0x67); db(0x16); db(0x70); db(0x5c); db(0xbe); db(0x80); db(0x67); db(0x10);
+ db(0x70); db(0x5d); db(0xbe); db(0x80); db(0x67); db(0x0a); db(0x70); db(0x5e);
+ db(0xbe); db(0x80); db(0x67); db(0x04); db(0x70); db(0x01); db(0x60); db(0x02);
+ db(0x70); db(0x00); db(0x2e); db(0x1f); db(0x4e); db(0x75); db(0x9e); db(0xfc);
+ db(0x00); db(0x14); db(0x48); db(0xe7); db(0x37); db(0x34); db(0x2e); db(0x2f);
+ db(0x00); db(0x44); db(0x24); db(0x6f); db(0x00); db(0x40); db(0x26); db(0x6f);
+ db(0x00); db(0x3c); db(0x2a); db(0x6f); db(0x00); db(0x38); db(0x2c); db(0x07);
+ db(0x70); db(0x3f); db(0xdc); db(0x80); db(0x2f); db(0x47); db(0x00); db(0x28);
+ db(0x20); db(0x2f); db(0x00); db(0x28); db(0xb0); db(0x86); db(0x6e); db(0x00);
+ db(0x00); db(0xfe); db(0x2f); db(0x00); db(0x61); db(0x96); db(0x58); db(0x4f);
+ db(0x4a); db(0x80); db(0x66); db(0x00); db(0x00); db(0xe6); db(0x70); db(0x00);
+ db(0x10); db(0x13); db(0x02); db(0x40); db(0xff); db(0xf8); db(0x72); db(0x20);
+ db(0x90); db(0x81); db(0x67); db(0x4a); db(0x72); db(0x20); db(0x90); db(0x81);
+ db(0x66); db(0x00); db(0x00); db(0xd0); db(0x70); db(0x00); db(0x10); db(0x13);
+ db(0x2f); db(0x00); db(0x61); db(0x00); db(0xff); db(0x46); db(0x58); db(0x4f);
+ db(0x72); db(0x00); db(0x01); db(0xc1); db(0x2a); db(0x01); db(0x20); db(0x05);
+ db(0xd0); db(0x80); db(0xd1); db(0xad); db(0x00); db(0x0c); db(0x2f); db(0x52);
+ db(0x00); db(0x30); db(0x42); db(0xaf); db(0x00); db(0x24); db(0x20); db(0x2f);
+ db(0x00); db(0x24); db(0xb0); db(0x85); db(0x6c); db(0x00); db(0x00); db(0xa4);
+ db(0x70); db(0x00); db(0x20); db(0x6f); db(0x00); db(0x30); db(0x10); db(0x10);
+ db(0xd1); db(0xad); db(0x00); db(0x0c); db(0x52); db(0xaf); db(0x00); db(0x24);
+ db(0x54); db(0xaf); db(0x00); db(0x30); db(0x60); db(0xe0); db(0x70); db(0x00);
+ db(0x10); db(0x13); db(0x2f); db(0x00); db(0x61); db(0x00); db(0xff); db(0x04);
  db(0x58); db(0x4f); db(0x72); db(0x00); db(0x01); db(0xc1); db(0x2a); db(0x01);
  db(0x20); db(0x05); db(0xd0); db(0x80); db(0xd1); db(0xad); db(0x00); db(0x0c);
- db(0x2f); db(0x52); db(0x00); db(0x30); db(0x42); db(0xaf); db(0x00); db(0x24);
- db(0x20); db(0x2f); db(0x00); db(0x24); db(0xb0); db(0x85); db(0x6c); db(0x00);
- db(0x00); db(0xa4); db(0x70); db(0x00); db(0x20); db(0x6f); db(0x00); db(0x30);
- db(0x10); db(0x10); db(0xd1); db(0xad); db(0x00); db(0x0c); db(0x52); db(0xaf);
- db(0x00); db(0x24); db(0x54); db(0xaf); db(0x00); db(0x30); db(0x60); db(0xe0);
+ db(0x2f); db(0x52); db(0x00); db(0x2c); db(0x42); db(0xaf); db(0x00); db(0x24);
+ db(0x20); db(0x2f); db(0x00); db(0x24); db(0xb0); db(0x85); db(0x6c); db(0x62);
+ db(0x20); db(0x6f); db(0x00); db(0x2c); db(0x10); db(0x10); db(0x72); db(0x08);
+ db(0xb0); db(0x01); db(0x66); db(0x44); db(0x72); db(0x00); db(0x12); db(0x28);
+ db(0x00); db(0x01); db(0x24); db(0x01); db(0xe8); db(0x82); db(0x76); db(0x0f);
+ db(0xc4); db(0x83); db(0x3f); db(0x42); db(0x00); db(0x22); db(0x67); db(0x1e);
+ db(0x3b); db(0x42); db(0x00); db(0x04); db(0x70); db(0x00); db(0x10); db(0x28);
+ db(0x00); db(0x01); db(0x22); db(0x00); db(0xc2); db(0x83); db(0x3f); db(0x41);
+ db(0x00); db(0x22); db(0xb2); db(0x6d); db(0x00); db(0x02); db(0x6f); db(0x20);
+ db(0x3b); db(0x41); db(0x00); db(0x02); db(0x60); db(0x1a); db(0x74); db(0x00);
+ db(0x14); db(0x01); db(0xc4); db(0x83); db(0x3f); db(0x42); db(0x00); db(0x22);
+ db(0xb4); db(0x55); db(0x6f); db(0x0c); db(0x3a); db(0x82); db(0x60); db(0x08);
+ db(0x53); db(0x00); db(0x66); db(0x04); db(0x52); db(0x6d); db(0x00); db(0x06);
+ db(0x52); db(0xaf); db(0x00); db(0x24); db(0x54); db(0xaf); db(0x00); db(0x2c);
+ db(0x60); db(0x96); db(0x52); db(0xaf); db(0x00); db(0x28); db(0x52); db(0x8b);
+ db(0x58); db(0x8a); db(0x60); db(0x00); db(0xfe); db(0xfc); db(0x4c); db(0xdf);
+ db(0x2c); db(0xec); db(0xde); db(0xfc); db(0x00); db(0x14); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x01); db(0x34); db(0x2e); db(0x2f); db(0x00); db(0x1c);
+ db(0x26); db(0x6f); db(0x00); db(0x18); db(0x2a); db(0x6f); db(0x00); db(0x14);
+ db(0x24); db(0x6d); db(0x00); db(0x10); db(0x20); db(0x4b); db(0x22); db(0x6d);
+ db(0x00); db(0x10); db(0x20); db(0x07); db(0x60); db(0x02); db(0x12); db(0xd8);
+ db(0x53); db(0x80); db(0x64); db(0xfa); db(0x20); db(0x6d); db(0x00); db(0x10);
+ db(0xd1); db(0xc7); db(0x2b); db(0x48); db(0x00); db(0x10); db(0xdf); db(0xad);
+ db(0x00); db(0x14); db(0x20); db(0x0a); db(0x4c); db(0xdf); db(0x2c); db(0x80);
+ db(0x4e); db(0x75); db(0x9e); db(0xfc); db(0x00); db(0x1c); db(0x48); db(0xe7);
+ db(0x07); db(0x34); db(0x2e); db(0x2f); db(0x00); db(0x4c); db(0x24); db(0x6f);
+ db(0x00); db(0x40); db(0x26); db(0x6f); db(0x00); db(0x3c); db(0x2a); db(0x6f);
+ db(0x00); db(0x38); db(0x2c); db(0x07); db(0x70); db(0x3f); db(0xdc); db(0x80);
+ db(0x2f); db(0x47); db(0x00); db(0x20); db(0x20); db(0x2f); db(0x00); db(0x20);
+ db(0xb0); db(0x86); db(0x6e); db(0x00); db(0x01); db(0xa0); db(0x2f); db(0x00);
+ db(0x61); db(0x00); db(0xfe); db(0x2a); db(0x58); db(0x4f); db(0x4a); db(0x80);
+ db(0x67); db(0x06); db(0x70); db(0x40); db(0xd0); db(0x80); db(0x60); db(0x04);
+ db(0x70); db(0x00); db(0x10); db(0x13); db(0x72); db(0x00); db(0x12); db(0x00);
+ db(0x02); db(0x41); db(0xff); db(0xf8); db(0x1f); db(0x40); db(0x00); db(0x1a);
+ db(0x4a); db(0x81); db(0x67); db(0x00); db(0x01); db(0x64); db(0x70); db(0x20);
+ db(0x92); db(0x80); db(0x67); db(0x00); db(0x00); db(0xa8); db(0x70); db(0x20);
+ db(0x92); db(0x80); db(0x67); db(0x04); db(0x60); db(0x00); db(0x01); db(0x4e);
  db(0x70); db(0x00); db(0x10); db(0x13); db(0x2f); db(0x00); db(0x61); db(0x00);
- db(0xff); db(0x04); db(0x58); db(0x4f); db(0x72); db(0x00); db(0x01); db(0xc1);
- db(0x2a); db(0x01); db(0x20); db(0x05); db(0xd0); db(0x80); db(0xd1); db(0xad);
- db(0x00); db(0x0c); db(0x2f); db(0x52); db(0x00); db(0x2c); db(0x42); db(0xaf);
- db(0x00); db(0x24); db(0x20); db(0x2f); db(0x00); db(0x24); db(0xb0); db(0x85);
- db(0x6c); db(0x62); db(0x20); db(0x6f); db(0x00); db(0x2c); db(0x10); db(0x10);
- db(0x72); db(0x08); db(0xb0); db(0x01); db(0x66); db(0x44); db(0x72); db(0x00);
- db(0x12); db(0x28); db(0x00); db(0x01); db(0x24); db(0x01); db(0xe8); db(0x82);
- db(0x76); db(0x0f); db(0xc4); db(0x83); db(0x3f); db(0x42); db(0x00); db(0x22);
- db(0x67); db(0x1e); db(0x3b); db(0x42); db(0x00); db(0x04); db(0x70); db(0x00);
- db(0x10); db(0x28); db(0x00); db(0x01); db(0x22); db(0x00); db(0xc2); db(0x83);
- db(0x3f); db(0x41); db(0x00); db(0x22); db(0xb2); db(0x6d); db(0x00); db(0x02);
- db(0x6f); db(0x20); db(0x3b); db(0x41); db(0x00); db(0x02); db(0x60); db(0x1a);
- db(0x74); db(0x00); db(0x14); db(0x01); db(0xc4); db(0x83); db(0x3f); db(0x42);
- db(0x00); db(0x22); db(0xb4); db(0x55); db(0x6f); db(0x0c); db(0x3a); db(0x82);
- db(0x60); db(0x08); db(0x53); db(0x00); db(0x66); db(0x04); db(0x52); db(0x6d);
- db(0x00); db(0x06); db(0x52); db(0xaf); db(0x00); db(0x24); db(0x54); db(0xaf);
- db(0x00); db(0x2c); db(0x60); db(0x96); db(0x52); db(0xaf); db(0x00); db(0x28);
- db(0x52); db(0x8b); db(0x58); db(0x8a); db(0x60); db(0x00); db(0xfe); db(0xfc);
- db(0x4c); db(0xdf); db(0x2c); db(0xec); db(0xde); db(0xfc); db(0x00); db(0x14);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x34); db(0x2e); db(0x2f);
- db(0x00); db(0x1c); db(0x26); db(0x6f); db(0x00); db(0x18); db(0x2a); db(0x6f);
- db(0x00); db(0x14); db(0x24); db(0x6d); db(0x00); db(0x10); db(0x20); db(0x4b);
- db(0x22); db(0x6d); db(0x00); db(0x10); db(0x20); db(0x07); db(0x60); db(0x02);
- db(0x12); db(0xd8); db(0x53); db(0x80); db(0x64); db(0xfa); db(0x20); db(0x6d);
- db(0x00); db(0x10); db(0xd1); db(0xc7); db(0x2b); db(0x48); db(0x00); db(0x10);
- db(0xdf); db(0xad); db(0x00); db(0x14); db(0x20); db(0x0a); db(0x4c); db(0xdf);
- db(0x2c); db(0x80); db(0x4e); db(0x75); db(0x9e); db(0xfc); db(0x00); db(0x1c);
- db(0x48); db(0xe7); db(0x07); db(0x34); db(0x2e); db(0x2f); db(0x00); db(0x4c);
- db(0x24); db(0x6f); db(0x00); db(0x40); db(0x26); db(0x6f); db(0x00); db(0x3c);
- db(0x2a); db(0x6f); db(0x00); db(0x38); db(0x2c); db(0x07); db(0x70); db(0x3f);
- db(0xdc); db(0x80); db(0x2f); db(0x47); db(0x00); db(0x20); db(0x20); db(0x2f);
- db(0x00); db(0x20); db(0xb0); db(0x86); db(0x6e); db(0x00); db(0x01); db(0xa0);
- db(0x2f); db(0x00); db(0x61); db(0x00); db(0xfe); db(0x2a); db(0x58); db(0x4f);
- db(0x4a); db(0x80); db(0x67); db(0x06); db(0x70); db(0x40); db(0xd0); db(0x80);
- db(0x60); db(0x04); db(0x70); db(0x00); db(0x10); db(0x13); db(0x72); db(0x00);
- db(0x12); db(0x00); db(0x02); db(0x41); db(0xff); db(0xf8); db(0x1f); db(0x40);
- db(0x00); db(0x1a); db(0x4a); db(0x81); db(0x67); db(0x00); db(0x01); db(0x64);
- db(0x70); db(0x20); db(0x92); db(0x80); db(0x67); db(0x00); db(0x00); db(0xa8);
- db(0x70); db(0x20); db(0x92); db(0x80); db(0x67); db(0x04); db(0x60); db(0x00);
- db(0x01); db(0x4e); db(0x70); db(0x00); db(0x10); db(0x13); db(0x2f); db(0x00);
- db(0x61); db(0x00); db(0xfd); db(0xc2); db(0x72); db(0x00); db(0x01); db(0xc1);
- db(0x2a); db(0x01); db(0x22); db(0x6f); db(0x00); db(0x48); db(0x20); db(0x51);
- db(0x22); db(0x6f); db(0x00); db(0x4c); db(0x22); db(0xad); db(0x00); db(0x14);
- db(0x20); db(0x05); db(0xd0); db(0x80); db(0x2e); db(0x80); db(0x2f); db(0x08);
- db(0x2f); db(0x0d); db(0x2f); db(0x48); db(0x00); db(0x3c); db(0x61); db(0x00);
- db(0xff); db(0x32); db(0x4f); db(0xef); db(0x00); db(0x0c); db(0x22); db(0x05);
- db(0xd2); db(0x81); db(0x42); db(0xaf); db(0x00); db(0x1c); db(0x2f); db(0x40);
- db(0x00); db(0x28); db(0x1f); db(0x41); db(0x00); db(0x1b); db(0x20); db(0x2f);
- db(0x00); db(0x1c); db(0xb0); db(0x85); db(0x6c); db(0x00); db(0x01); db(0x04);
- db(0x20); db(0x6f); db(0x00); db(0x30); db(0x10); db(0x10); db(0x20); db(0x6f);
- db(0x00); db(0x28); db(0x10); db(0x80); db(0x11); db(0x6f); db(0x00); db(0x1b);
- db(0x00); db(0x01); db(0x22); db(0x6f); db(0x00); db(0x44); db(0x20); db(0x51);
- db(0x70); db(0x00); db(0x22); db(0x6f); db(0x00); db(0x30); db(0x10); db(0x29);
- db(0x00); db(0x01); db(0xd0); db(0xc0); db(0x70); db(0x00); db(0x10); db(0x11);
- db(0x2f); db(0x00); db(0x2f); db(0x08); db(0x2f); db(0x0d); db(0x61); db(0x00);
- db(0xfe); db(0xe2); db(0x4f); db(0xef); db(0x00); db(0x0c); db(0x20); db(0x6f);
- db(0x00); db(0x30); db(0x10); db(0x10); db(0xd1); db(0x2f); db(0x00); db(0x1b);
- db(0x52); db(0xaf); db(0x00); db(0x1c); db(0x54); db(0xaf); db(0x00); db(0x30);
- db(0x54); db(0xaf); db(0x00); db(0x28); db(0x60); db(0xa8); db(0x70); db(0x00);
- db(0x10); db(0x13); db(0x2f); db(0x00); db(0x61); db(0x00); db(0xfd); db(0x26);
- db(0x72); db(0x00); db(0x01); db(0xc1); db(0x2a); db(0x01); db(0x22); db(0x6f);
- db(0x00); db(0x48); db(0x20); db(0x51); db(0x22); db(0x6f); db(0x00); db(0x4c);
- db(0x22); db(0xad); db(0x00); db(0x14); db(0x20); db(0x05); db(0xd0); db(0x80);
- db(0x2e); db(0x80); db(0x2f); db(0x08); db(0x2f); db(0x0d); db(0x2f); db(0x48);
- db(0x00); db(0x38); db(0x61); db(0x00); db(0xfe); db(0x96); db(0x4f); db(0xef);
- db(0x00); db(0x0c); db(0x22); db(0x05); db(0xd2); db(0x81); db(0x42); db(0xaf);
- db(0x00); db(0x1c); db(0x2f); db(0x40); db(0x00); db(0x24); db(0x1f); db(0x41);
- db(0x00); db(0x1b); db(0x20); db(0x2f); db(0x00); db(0x1c); db(0xb0); db(0x85);
- db(0x6c); db(0x68); db(0x20); db(0x6f); db(0x00); db(0x2c); db(0x10); db(0x10);
- db(0x20); db(0x6f); db(0x00); db(0x24); db(0x10); db(0x80); db(0x70); db(0x01);
- db(0x20); db(0x6f); db(0x00); db(0x2c); db(0xb0); db(0x10); db(0x66); db(0x36);
- db(0x20); db(0x6f); db(0x00); db(0x24); db(0x11); db(0x6f); db(0x00); db(0x1b);
- db(0x00); db(0x01); db(0x22); db(0x6f); db(0x00); db(0x44); db(0x20); db(0x51);
- db(0x70); db(0x00); db(0x22); db(0x6f); db(0x00); db(0x2c); db(0x10); db(0x29);
- db(0x00); db(0x01); db(0xd0); db(0xc0); db(0x2f); db(0x2d); db(0x00); db(0x08);
- db(0x2f); db(0x08); db(0x2f); db(0x0d); db(0x61); db(0x00); db(0xfe); db(0x3c);
- db(0x4f); db(0xef); db(0x00); db(0x0c); db(0x20); db(0x2d); db(0x00); db(0x08);
- db(0xd1); db(0x2f); db(0x00); db(0x1b); db(0x60); db(0x0a); db(0x22); db(0x6f);
- db(0x00); db(0x24); db(0x13); db(0x68); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x52); db(0xaf); db(0x00); db(0x1c); db(0x54); db(0xaf); db(0x00); db(0x2c);
- db(0x54); db(0xaf); db(0x00); db(0x24); db(0x60); db(0x94); db(0x14); db(0xbc);
- db(0x00); db(0x80); db(0x52); db(0xaf); db(0x00); db(0x20); db(0x52); db(0x8b);
- db(0x52); db(0x8a); db(0x58); db(0xaf); db(0x00); db(0x44); db(0x58); db(0xaf);
- db(0x00); db(0x48); db(0x60); db(0x00); db(0xfe); db(0x5a); db(0x4c); db(0xdf);
- db(0x2c); db(0xe0); db(0xde); db(0xfc); db(0x00); db(0x1c); db(0x4e); db(0x75);
- db(0x9e); db(0xfc); db(0x00); db(0x2c); db(0x48); db(0xe7); db(0x20); db(0x34);
- db(0x26); db(0x6f); db(0x00); db(0x44); db(0x2a); db(0x6f); db(0x00); db(0x40);
- db(0x20); db(0x0d); db(0x67); db(0x04); db(0x20); db(0x0b); db(0x66); db(0x06);
- db(0x70); db(0x00); db(0x60); db(0x00); db(0x01); db(0xa2); db(0x4a); db(0x95);
- db(0x67); db(0x2a); db(0x4a); db(0xad); db(0x00); db(0x10); db(0x67); db(0x24);
- db(0x4a); db(0xad); db(0x00); db(0x04); db(0x67); db(0x1e); db(0x4a); db(0xad);
- db(0x00); db(0x14); db(0x67); db(0x18); db(0x4a); db(0xad); db(0x00); db(0x08);
- db(0x67); db(0x12); db(0x4a); db(0xad); db(0x00); db(0x18); db(0x67); db(0x0c);
- db(0x4a); db(0xad); db(0x00); db(0x0c); db(0x67); db(0x06); db(0x4a); db(0xad);
- db(0x00); db(0x1c); db(0x66); db(0x06); db(0x70); db(0x00); db(0x60); db(0x00);
- db(0x01); db(0x6e); db(0x70); db(0x00); db(0x41); db(0xef); db(0x00); db(0x24);
- db(0x72); db(0x17); db(0x10); db(0xc0); db(0x51); db(0xc9); db(0xff); db(0xfc);
- db(0x2f); db(0x7c); db(0x00); db(0x00); db(0x02); db(0xa2); db(0x00); db(0x30);
- db(0x2f); db(0x00); db(0x2f); db(0x2d); db(0x00); db(0x04); db(0x2f); db(0x15);
- db(0x48); db(0x6f); db(0x00); db(0x30); db(0x61); db(0x00); db(0xfc); db(0x4a);
- db(0x48); db(0x78); db(0x00); db(0x40); db(0x2f); db(0x2d); db(0x00); db(0x14);
- db(0x2f); db(0x2d); db(0x00); db(0x10); db(0x48); db(0x6f); db(0x00); db(0x40);
- db(0x61); db(0x00); db(0xfc); db(0x36); db(0x4f); db(0xef); db(0x00); db(0x20);
- db(0x30); db(0x2f); db(0x00); db(0x2a); db(0x67); db(0x24); db(0x32); db(0x2f);
- db(0x00); db(0x28); db(0x67); db(0x0a); db(0x34); db(0x2f); db(0x00); db(0x26);
- db(0x52); db(0x42); db(0xc5); db(0xc1); db(0x60); db(0x0a); db(0x32); db(0x2f);
- db(0x00); db(0x24); db(0x48); db(0xc1); db(0x52); db(0x81); db(0x24); db(0x01);
- db(0x2f); db(0x42); db(0x00); db(0x2c); db(0xc1); db(0xc2); db(0xd1); db(0xaf);
- db(0x00); db(0x30); db(0x42); db(0xa7); db(0x2f); db(0x2f); db(0x00); db(0x34);
- db(0x61); db(0x00); db(0xfb); db(0x8c); db(0x50); db(0x4f); db(0x2f); db(0x40);
- db(0x00); db(0x14); db(0x67); db(0x00); db(0x00); db(0xee); db(0x2f); db(0x40);
- db(0x00); db(0x34); db(0x1f); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x12);
- db(0x20); db(0x2f); db(0x00); db(0x2c); db(0x1f); db(0x40); db(0x00); db(0x13);
- db(0x48); db(0x78); db(0x00); db(0x02); db(0x48); db(0x6f); db(0x00); db(0x16);
- db(0x48); db(0x6f); db(0x00); db(0x2c); db(0x61); db(0x00); db(0xfd); db(0x04);
- db(0x48); db(0x78); db(0x00); db(0x40); db(0x2f); db(0x15); db(0x48); db(0x6f);
- db(0x00); db(0x38); db(0x61); db(0x00); db(0xfc); db(0xf6); db(0x48); db(0x78);
- db(0x00); db(0x40); db(0x2f); db(0x2d); db(0x00); db(0x10); db(0x48); db(0x6f);
- db(0x00); db(0x44); db(0x2f); db(0x40); db(0x00); db(0x40); db(0x61); db(0x00);
- db(0xfc); db(0xe2); db(0x48); db(0x78); db(0x01); db(0x00); db(0x2f); db(0x2d);
- db(0x00); db(0x04); db(0x48); db(0x6f); db(0x00); db(0x50); db(0x2f); db(0x40);
- db(0x00); db(0x48); db(0x61); db(0x00); db(0xfc); db(0xce); db(0x24); db(0x40);
- db(0x48); db(0x78); db(0x01); db(0x00); db(0x2f); db(0x2d); db(0x00); db(0x14);
- db(0x48); db(0x6f); db(0x00); db(0x5c); db(0x61); db(0x00); db(0xfc); db(0xbc);
- db(0x48); db(0x78); db(0x00); db(0x08); db(0x2f); db(0x2d); db(0x00); db(0x08);
- db(0x48); db(0x6f); db(0x00); db(0x68); db(0x2f); db(0x40); db(0x00); db(0x68);
- db(0x61); db(0x00); db(0xfc); db(0xa8); db(0x4f); db(0xef); db(0x00); db(0x48);
- db(0x48); db(0x78); db(0x00); db(0x08); db(0x2f); db(0x2d); db(0x00); db(0x18);
- db(0x48); db(0x6f); db(0x00); db(0x2c); db(0x61); db(0x00); db(0xfc); db(0x94);
- db(0x48); db(0x78); db(0x00); db(0x08); db(0x2f); db(0x2d); db(0x00); db(0x0c);
- db(0x48); db(0x6f); db(0x00); db(0x38); db(0x61); db(0x00); db(0xfc); db(0x84);
- db(0x48); db(0x78); db(0x00); db(0x08); db(0x2f); db(0x2d); db(0x00); db(0x1c);
- db(0x48); db(0x6f); db(0x00); db(0x44); db(0x61); db(0x00); db(0xfc); db(0x74);
- db(0x42); db(0x97); db(0x2f); db(0x0a); db(0x2f); db(0x2d); db(0x00); db(0x04);
- db(0x2f); db(0x2f); db(0x00); db(0x48); db(0x2f); db(0x15); db(0x48); db(0x6f);
- db(0x00); db(0x58); db(0x61); db(0x00); db(0xfc); db(0x98); db(0x48); db(0x78);
- db(0x00); db(0x40); db(0x2f); db(0x2f); db(0x00); db(0x5c); db(0x2f); db(0x2d);
- db(0x00); db(0x14); db(0x2f); db(0x2f); db(0x00); db(0x5c); db(0x2f); db(0x2d);
- db(0x00); db(0x10); db(0x48); db(0x6f); db(0x00); db(0x70); db(0x61); db(0x00);
- db(0xfc); db(0x7c); db(0x4f); db(0xef); db(0x00); db(0x50); db(0x26); db(0xaf);
- db(0x00); db(0x30); db(0x20); db(0x2f); db(0x00); db(0x14); db(0x4c); db(0xdf);
- db(0x2c); db(0x04); db(0xde); db(0xfc); db(0x00); db(0x2c); db(0x4e); db(0x75);
- db(0x41); db(0xfa); db(0xd7); db(0xa2); db(0x02); db(0x80); db(0x00); db(0x00);
+ db(0xfd); db(0xc2); db(0x72); db(0x00); db(0x01); db(0xc1); db(0x2a); db(0x01);
+ db(0x22); db(0x6f); db(0x00); db(0x48); db(0x20); db(0x51); db(0x22); db(0x6f);
+ db(0x00); db(0x4c); db(0x22); db(0xad); db(0x00); db(0x14); db(0x20); db(0x05);
+ db(0xd0); db(0x80); db(0x2e); db(0x80); db(0x2f); db(0x08); db(0x2f); db(0x0d);
+ db(0x2f); db(0x48); db(0x00); db(0x3c); db(0x61); db(0x00); db(0xff); db(0x32);
+ db(0x4f); db(0xef); db(0x00); db(0x0c); db(0x22); db(0x05); db(0xd2); db(0x81);
+ db(0x42); db(0xaf); db(0x00); db(0x1c); db(0x2f); db(0x40); db(0x00); db(0x28);
+ db(0x1f); db(0x41); db(0x00); db(0x1b); db(0x20); db(0x2f); db(0x00); db(0x1c);
+ db(0xb0); db(0x85); db(0x6c); db(0x00); db(0x01); db(0x04); db(0x20); db(0x6f);
+ db(0x00); db(0x30); db(0x10); db(0x10); db(0x20); db(0x6f); db(0x00); db(0x28);
+ db(0x10); db(0x80); db(0x11); db(0x6f); db(0x00); db(0x1b); db(0x00); db(0x01);
+ db(0x22); db(0x6f); db(0x00); db(0x44); db(0x20); db(0x51); db(0x70); db(0x00);
+ db(0x22); db(0x6f); db(0x00); db(0x30); db(0x10); db(0x29); db(0x00); db(0x01);
+ db(0xd0); db(0xc0); db(0x70); db(0x00); db(0x10); db(0x11); db(0x2f); db(0x00);
+ db(0x2f); db(0x08); db(0x2f); db(0x0d); db(0x61); db(0x00); db(0xfe); db(0xe2);
+ db(0x4f); db(0xef); db(0x00); db(0x0c); db(0x20); db(0x6f); db(0x00); db(0x30);
+ db(0x10); db(0x10); db(0xd1); db(0x2f); db(0x00); db(0x1b); db(0x52); db(0xaf);
+ db(0x00); db(0x1c); db(0x54); db(0xaf); db(0x00); db(0x30); db(0x54); db(0xaf);
+ db(0x00); db(0x28); db(0x60); db(0xa8); db(0x70); db(0x00); db(0x10); db(0x13);
+ db(0x2f); db(0x00); db(0x61); db(0x00); db(0xfd); db(0x26); db(0x72); db(0x00);
+ db(0x01); db(0xc1); db(0x2a); db(0x01); db(0x22); db(0x6f); db(0x00); db(0x48);
+ db(0x20); db(0x51); db(0x22); db(0x6f); db(0x00); db(0x4c); db(0x22); db(0xad);
+ db(0x00); db(0x14); db(0x20); db(0x05); db(0xd0); db(0x80); db(0x2e); db(0x80);
+ db(0x2f); db(0x08); db(0x2f); db(0x0d); db(0x2f); db(0x48); db(0x00); db(0x38);
+ db(0x61); db(0x00); db(0xfe); db(0x96); db(0x4f); db(0xef); db(0x00); db(0x0c);
+ db(0x22); db(0x05); db(0xd2); db(0x81); db(0x42); db(0xaf); db(0x00); db(0x1c);
+ db(0x2f); db(0x40); db(0x00); db(0x24); db(0x1f); db(0x41); db(0x00); db(0x1b);
+ db(0x20); db(0x2f); db(0x00); db(0x1c); db(0xb0); db(0x85); db(0x6c); db(0x68);
+ db(0x20); db(0x6f); db(0x00); db(0x2c); db(0x10); db(0x10); db(0x20); db(0x6f);
+ db(0x00); db(0x24); db(0x10); db(0x80); db(0x70); db(0x01); db(0x20); db(0x6f);
+ db(0x00); db(0x2c); db(0xb0); db(0x10); db(0x66); db(0x36); db(0x20); db(0x6f);
+ db(0x00); db(0x24); db(0x11); db(0x6f); db(0x00); db(0x1b); db(0x00); db(0x01);
+ db(0x22); db(0x6f); db(0x00); db(0x44); db(0x20); db(0x51); db(0x70); db(0x00);
+ db(0x22); db(0x6f); db(0x00); db(0x2c); db(0x10); db(0x29); db(0x00); db(0x01);
+ db(0xd0); db(0xc0); db(0x2f); db(0x2d); db(0x00); db(0x08); db(0x2f); db(0x08);
+ db(0x2f); db(0x0d); db(0x61); db(0x00); db(0xfe); db(0x3c); db(0x4f); db(0xef);
+ db(0x00); db(0x0c); db(0x20); db(0x2d); db(0x00); db(0x08); db(0xd1); db(0x2f);
+ db(0x00); db(0x1b); db(0x60); db(0x0a); db(0x22); db(0x6f); db(0x00); db(0x24);
+ db(0x13); db(0x68); db(0x00); db(0x01); db(0x00); db(0x01); db(0x52); db(0xaf);
+ db(0x00); db(0x1c); db(0x54); db(0xaf); db(0x00); db(0x2c); db(0x54); db(0xaf);
+ db(0x00); db(0x24); db(0x60); db(0x94); db(0x14); db(0xbc); db(0x00); db(0x80);
+ db(0x52); db(0xaf); db(0x00); db(0x20); db(0x52); db(0x8b); db(0x52); db(0x8a);
+ db(0x58); db(0xaf); db(0x00); db(0x44); db(0x58); db(0xaf); db(0x00); db(0x48);
+ db(0x60); db(0x00); db(0xfe); db(0x5a); db(0x4c); db(0xdf); db(0x2c); db(0xe0);
+ db(0xde); db(0xfc); db(0x00); db(0x1c); db(0x4e); db(0x75); db(0x9e); db(0xfc);
+ db(0x00); db(0x2c); db(0x48); db(0xe7); db(0x20); db(0x34); db(0x26); db(0x6f);
+ db(0x00); db(0x44); db(0x2a); db(0x6f); db(0x00); db(0x40); db(0x20); db(0x0d);
+ db(0x67); db(0x04); db(0x20); db(0x0b); db(0x66); db(0x06); db(0x70); db(0x00);
+ db(0x60); db(0x00); db(0x01); db(0xa2); db(0x4a); db(0x95); db(0x67); db(0x2a);
+ db(0x4a); db(0xad); db(0x00); db(0x10); db(0x67); db(0x24); db(0x4a); db(0xad);
+ db(0x00); db(0x04); db(0x67); db(0x1e); db(0x4a); db(0xad); db(0x00); db(0x14);
+ db(0x67); db(0x18); db(0x4a); db(0xad); db(0x00); db(0x08); db(0x67); db(0x12);
+ db(0x4a); db(0xad); db(0x00); db(0x18); db(0x67); db(0x0c); db(0x4a); db(0xad);
+ db(0x00); db(0x0c); db(0x67); db(0x06); db(0x4a); db(0xad); db(0x00); db(0x1c);
+ db(0x66); db(0x06); db(0x70); db(0x00); db(0x60); db(0x00); db(0x01); db(0x6e);
+ db(0x70); db(0x00); db(0x41); db(0xef); db(0x00); db(0x24); db(0x72); db(0x17);
+ db(0x10); db(0xc0); db(0x51); db(0xc9); db(0xff); db(0xfc); db(0x2f); db(0x7c);
+ db(0x00); db(0x00); db(0x02); db(0xa2); db(0x00); db(0x30); db(0x2f); db(0x00);
+ db(0x2f); db(0x2d); db(0x00); db(0x04); db(0x2f); db(0x15); db(0x48); db(0x6f);
+ db(0x00); db(0x30); db(0x61); db(0x00); db(0xfc); db(0x4a); db(0x48); db(0x78);
+ db(0x00); db(0x40); db(0x2f); db(0x2d); db(0x00); db(0x14); db(0x2f); db(0x2d);
+ db(0x00); db(0x10); db(0x48); db(0x6f); db(0x00); db(0x40); db(0x61); db(0x00);
+ db(0xfc); db(0x36); db(0x4f); db(0xef); db(0x00); db(0x20); db(0x30); db(0x2f);
+ db(0x00); db(0x2a); db(0x67); db(0x24); db(0x32); db(0x2f); db(0x00); db(0x28);
+ db(0x67); db(0x0a); db(0x34); db(0x2f); db(0x00); db(0x26); db(0x52); db(0x42);
+ db(0xc5); db(0xc1); db(0x60); db(0x0a); db(0x32); db(0x2f); db(0x00); db(0x24);
+ db(0x48); db(0xc1); db(0x52); db(0x81); db(0x24); db(0x01); db(0x2f); db(0x42);
+ db(0x00); db(0x2c); db(0xc1); db(0xc2); db(0xd1); db(0xaf); db(0x00); db(0x30);
+ db(0x42); db(0xa7); db(0x2f); db(0x2f); db(0x00); db(0x34); db(0x61); db(0x00);
+ db(0xfb); db(0x8c); db(0x50); db(0x4f); db(0x2f); db(0x40); db(0x00); db(0x14);
+ db(0x67); db(0x00); db(0x00); db(0xee); db(0x2f); db(0x40); db(0x00); db(0x34);
+ db(0x1f); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x12); db(0x20); db(0x2f);
+ db(0x00); db(0x2c); db(0x1f); db(0x40); db(0x00); db(0x13); db(0x48); db(0x78);
+ db(0x00); db(0x02); db(0x48); db(0x6f); db(0x00); db(0x16); db(0x48); db(0x6f);
+ db(0x00); db(0x2c); db(0x61); db(0x00); db(0xfd); db(0x04); db(0x48); db(0x78);
+ db(0x00); db(0x40); db(0x2f); db(0x15); db(0x48); db(0x6f); db(0x00); db(0x38);
+ db(0x61); db(0x00); db(0xfc); db(0xf6); db(0x48); db(0x78); db(0x00); db(0x40);
+ db(0x2f); db(0x2d); db(0x00); db(0x10); db(0x48); db(0x6f); db(0x00); db(0x44);
+ db(0x2f); db(0x40); db(0x00); db(0x40); db(0x61); db(0x00); db(0xfc); db(0xe2);
+ db(0x48); db(0x78); db(0x01); db(0x00); db(0x2f); db(0x2d); db(0x00); db(0x04);
+ db(0x48); db(0x6f); db(0x00); db(0x50); db(0x2f); db(0x40); db(0x00); db(0x48);
+ db(0x61); db(0x00); db(0xfc); db(0xce); db(0x24); db(0x40); db(0x48); db(0x78);
+ db(0x01); db(0x00); db(0x2f); db(0x2d); db(0x00); db(0x14); db(0x48); db(0x6f);
+ db(0x00); db(0x5c); db(0x61); db(0x00); db(0xfc); db(0xbc); db(0x48); db(0x78);
+ db(0x00); db(0x08); db(0x2f); db(0x2d); db(0x00); db(0x08); db(0x48); db(0x6f);
+ db(0x00); db(0x68); db(0x2f); db(0x40); db(0x00); db(0x68); db(0x61); db(0x00);
+ db(0xfc); db(0xa8); db(0x4f); db(0xef); db(0x00); db(0x48); db(0x48); db(0x78);
+ db(0x00); db(0x08); db(0x2f); db(0x2d); db(0x00); db(0x18); db(0x48); db(0x6f);
+ db(0x00); db(0x2c); db(0x61); db(0x00); db(0xfc); db(0x94); db(0x48); db(0x78);
+ db(0x00); db(0x08); db(0x2f); db(0x2d); db(0x00); db(0x0c); db(0x48); db(0x6f);
+ db(0x00); db(0x38); db(0x61); db(0x00); db(0xfc); db(0x84); db(0x48); db(0x78);
+ db(0x00); db(0x08); db(0x2f); db(0x2d); db(0x00); db(0x1c); db(0x48); db(0x6f);
+ db(0x00); db(0x44); db(0x61); db(0x00); db(0xfc); db(0x74); db(0x42); db(0x97);
+ db(0x2f); db(0x0a); db(0x2f); db(0x2d); db(0x00); db(0x04); db(0x2f); db(0x2f);
+ db(0x00); db(0x48); db(0x2f); db(0x15); db(0x48); db(0x6f); db(0x00); db(0x58);
+ db(0x61); db(0x00); db(0xfc); db(0x98); db(0x48); db(0x78); db(0x00); db(0x40);
+ db(0x2f); db(0x2f); db(0x00); db(0x5c); db(0x2f); db(0x2d); db(0x00); db(0x14);
+ db(0x2f); db(0x2f); db(0x00); db(0x5c); db(0x2f); db(0x2d); db(0x00); db(0x10);
+ db(0x48); db(0x6f); db(0x00); db(0x70); db(0x61); db(0x00); db(0xfc); db(0x7c);
+ db(0x4f); db(0xef); db(0x00); db(0x50); db(0x26); db(0xaf); db(0x00); db(0x30);
+ db(0x20); db(0x2f); db(0x00); db(0x14); db(0x4c); db(0xdf); db(0x2c); db(0x04);
+ db(0xde); db(0xfc); db(0x00); db(0x2c); db(0x4e); db(0x75); db(0x00); db(0x00);
+ db(0x41); db(0xfa); db(0xd6); db(0x82); db(0x02); db(0x80); db(0x00); db(0x00);
  db(0xff); db(0xff); db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x00); db(0x00);
- db(0x41); db(0xfa); db(0xd7); db(0x92); db(0x02); db(0x80); db(0x00); db(0x00);
+ db(0x41); db(0xfa); db(0xd6); db(0x72); db(0x02); db(0x80); db(0x00); db(0x00);
  db(0xff); db(0xff); db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x4e); db(0x71);
  db(0x4e); db(0x71); db(0x69); db(0x6e); db(0x70); db(0x75); db(0x74); db(0x2e);
  db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x74);
  db(0x20); db(0x73); db(0x68); db(0x65); db(0x6c); db(0x6c); db(0x20); db(0x65);
  db(0x78); db(0x65); db(0x63); db(0x75); db(0x74); db(0x65); db(0x00); db(0x55);
  db(0x41); db(0x45); db(0x20); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64);
+ db(0x00); db(0x75); db(0x61); db(0x65); db(0x2e); db(0x72); db(0x65); db(0x73);
+ db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65); db(0x00); db(0x6d); db(0x69);
+ db(0x73); db(0x63); db(0x5f); db(0x66); db(0x75); db(0x6e); db(0x63); db(0x73);
  db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2);
 
index 10eff2f6fbe3a15025310d382f709056e7e7cfee..07b0c000a904cf9c8e0a3062e65daa6782bb5fb3 100644 (file)
@@ -808,9 +808,9 @@ static void setpc (const char *format, ...)
        va_end (parms);
 
        if (using_mmu || using_prefetch || using_prefetch_020)
-               printf ("\tm68k_setpci (%s);\n", buffer);
+               printf ("\tm68k_setpci_j(%s);\n", buffer);
        else
-               printf ("\tm68k_setpc (%s);\n", buffer);
+               printf ("\tm68k_setpc_j(%s);\n", buffer);
 }
 
 static void incpc (const char *format, ...)
@@ -3894,15 +3894,18 @@ static void gen_opcode (unsigned int opcode)
                if (cpu_level == 0) {
                        genamode (NULL, Aipi, "7", sz_word, "sr", 1, 0, GF_NOREFILL);
                        genamode (NULL, Aipi, "7", sz_long, "pc", 1, 0, GF_NOREFILL);
+                       printf("\tuaecptr oldpc = %s;\n", getpc);
                        printf ("\tregs.sr = sr;\n");
                        printf ("\tif (pc & 1) {\n");
                        printf ("\t\texception3i (0x%04X, pc);\n", opcode);
                        printf ("\t\tgoto %s;\n", endlabelstr);
                        printf ("\t}\n");
                        setpc ("pc");
+                       printf("\tbranch_stack_pop_rte(oldpc);\n");
                        makefromsr();
                } else if (cpu_level == 1 && using_prefetch) {
                    int old_brace_level = n_braces;
+                       printf("\tuaecptr oldpc = %s;\n", getpc);
                        printf ("\tuae_u16 newsr; uae_u32 newpc;\n");
                        printf ("\tfor (;;) {\n");
                        printf ("\t\tuaecptr a = m68k_areg (regs, 7);\n");
@@ -3927,11 +3930,13 @@ static void gen_opcode (unsigned int opcode)
                        printf ("\t\tgoto %s;\n", endlabelstr);
                        printf ("\t}\n");
                    setpc ("newpc");
+                       printf("\tbranch_stack_pop_rte(oldpc);\n");
                        check_ipl ();
                    need_endlabel = 1;
                } else {
                    int old_brace_level = n_braces;
-                   printf ("\tuae_u16 newsr; uae_u32 newpc;\n");
+                       printf("\tuaecptr oldpc = %s;\n", getpc);
+                       printf ("\tuae_u16 newsr; uae_u32 newpc;\n");
                        printf ("\tfor (;;) {\n");
                        printf ("\t\tuaecptr a = m68k_areg (regs, 7);\n");
                        printf ("\t\tuae_u16 sr = %s (a);\n", srcw);
@@ -3990,6 +3995,7 @@ static void gen_opcode (unsigned int opcode)
                        printf ("\t\tgoto %s;\n", endlabelstr);
                        printf ("\t}\n");
                    setpc ("newpc");
+                       printf("\tbranch_stack_pop_rte(oldpc);\n");
                        check_ipl ();
                    need_endlabel = 1;
                }
@@ -4079,6 +4085,8 @@ static void gen_opcode (unsigned int opcode)
                } else {
                        printf ("\tm68k_do_rts ();\n");
                }
+               printf("\tif (debugmem_trace)\n");
+               printf("\t\tbranch_stack_pop_rts(pc);\n");
            printf ("\tif (%s & 1) {\n", getpc);
                printf ("\t\tuaecptr faultpc = %s;\n", getpc);
                setpc ("pc");
@@ -4126,7 +4134,8 @@ static void gen_opcode (unsigned int opcode)
                no_prefetch_ce020 = true;
                genamode (curi, curi->smode, "srcreg", curi->size, "src", 0, 0, GF_AA|GF_NOREFILL);
                start_brace ();
-               printf ("\tuaecptr oldpc = %s + %d;\n", getpc, m68k_pc_offset);
+               printf("\tuaecptr oldpc = %s;\n", getpc);
+               printf("\tuaecptr nextpc = oldpc + %d;\n", m68k_pc_offset);
                if (using_exception_3) {
                        printf ("\tif (srca & 1) {\n");
                        printf ("\t\texception3i (opcode, srca);\n");
@@ -4135,7 +4144,7 @@ static void gen_opcode (unsigned int opcode)
                        need_endlabel = 1;
                }
                if (using_mmu) {
-                       printf ("\t%s (m68k_areg (regs, 7) - 4, oldpc);\n", dstl);
+                       printf ("\t%s (m68k_areg (regs, 7) - 4, nextpc);\n", dstl);
                        printf ("\tm68k_areg (regs, 7) -= 4;\n");
                        setpc ("srca");
                        clear_m68k_offset();
@@ -4145,18 +4154,20 @@ static void gen_opcode (unsigned int opcode)
                        if (curi->smode == Ad8r || curi->smode == PC8r) {
                                addcycles000 (6);
                                if (cpu_level <= 1 && using_prefetch)
-                                       printf ("\toldpc += 2;\n");
+                                       printf ("\tnextpc += 2;\n");
                        }
                        setpc ("srca");
                        clear_m68k_offset();
                        fill_prefetch_1 (0);
                        printf ("\tm68k_areg (regs, 7) -= 4;\n");
                        if (using_ce || using_prefetch) {
-                               printf ("\t%s (m68k_areg (regs, 7), oldpc >> 16);\n", dstw);
-                               printf ("\t%s (m68k_areg (regs, 7) + 2, oldpc);\n", dstw);
+                               printf ("\t%s (m68k_areg (regs, 7), nextpc >> 16);\n", dstw);
+                               printf ("\t%s (m68k_areg (regs, 7) + 2, nextpc);\n", dstw);
                        } else {
-                               printf ("\t%s (m68k_areg (regs, 7), oldpc);\n", dstl);
+                               printf ("\t%s (m68k_areg (regs, 7), nextpc);\n", dstl);
                        }
+                       printf("\tif (debugmem_trace)\n");
+                       printf("\t\tbranch_stack_push(oldpc, nextpc);\n");
                }
                count_write += 2;
                fill_prefetch_full_020 ();
@@ -4205,21 +4216,25 @@ static void gen_opcode (unsigned int opcode)
                        need_endlabel = 1;
                }
                addcycles000 (2);
+               printf("\tuaecptr oldpc = %s;\n", getpc);
+               printf("\tuaecptr nextpc = oldpc + %d;\n", m68k_pc_offset);
                if (using_indirect > 0 && !using_ce020 && !using_prefetch_020 && !using_ce) {
-                       printf("\tm68k_do_bsri_jit (%s + %d, s);\n", getpc, m68k_pc_offset);
+                       printf("\tm68k_do_bsri_jit (nextpc, s);\n");
                } else if (using_mmu) {
-                       printf ("\tm68k_do_bsr_mmu%s (%s + %d, s);\n", mmu_postfix, getpc, m68k_pc_offset);
+                       printf ("\tm68k_do_bsr_mmu%s (nextpc, s);\n", mmu_postfix);
                } else if (using_ce020 == 1) {
-                       printf ("\tm68k_do_bsr_ce020 (%s + %d, s);\n", getpc, m68k_pc_offset);
+                       printf ("\tm68k_do_bsr_ce020 (nextpc, s);\n");
                } else if (using_ce020 == 2) {
-                       printf ("\tm68k_do_bsr_ce030 (%s + %d, s);\n", getpc, m68k_pc_offset);
+                       printf ("\tm68k_do_bsr_ce030 (nextpc, s);\n");
                } else if (using_ce) {
-                       printf ("\tm68k_do_bsr_ce (%s + %d, s);\n", getpc, m68k_pc_offset);
+                       printf ("\tm68k_do_bsr_ce (nextpc, s);\n");
                } else if (using_prefetch || using_prefetch_020) {
-                       printf ("\tm68k_do_bsri (%s + %d, s);\n", getpc, m68k_pc_offset);
+                       printf ("\tm68k_do_bsri (nextpc, s);\n");
                } else {
-                       printf ("\tm68k_do_bsr (%s + %d, s);\n", getpc, m68k_pc_offset);
+                       printf ("\tm68k_do_bsr (nextpc, s);\n");
                }
+               printf("\tif (debugmem_trace)\n");
+               printf("\t\tbranch_stack_push(oldpc, nextpc);\n");
                count_write += 2;
                clear_m68k_offset();
                fill_prefetch_full ();
index 4d526362529caafd47a0c924d7fbc2d9bba48741..404a7d6f3944f73be8a9e20c9ebe6021cd3f47a8 100644 (file)
@@ -15,7 +15,7 @@
 #ifdef DEBUGGER
 
 #define        MAX_HIST 500
-#define MAX_LINEWIDTH 150
+#define MAX_LINEWIDTH 10000
 
 extern int debugging;
 extern int memwatch_enabled;
@@ -30,7 +30,8 @@ extern uae_u64 debug_illegal_mask;
 
 extern void debug (void);
 extern void debugger_change (int mode);
-extern void activate_debugger (void);
+extern void activate_debugger(void);
+extern void activate_debugger_new(void);
 extern void deactivate_debugger (void);
 extern int notinrom (void);
 extern const TCHAR *debuginfo (int);
diff --git a/include/debugmem.h b/include/debugmem.h
new file mode 100644 (file)
index 0000000..f3c12ca
--- /dev/null
@@ -0,0 +1,30 @@
+
+uaecptr debugmem_reloc(uaecptr exeaddress, uae_u32 len, uaecptr task, uae_u32 *stack);
+void debugmem_init(void);
+uaecptr debugmem_allocmem(int mode, uae_u32 size, uae_u32 flags, uae_u32 caller);
+uae_u32 debugmem_freemem(int mode, uaecptr addr, uae_u32 size, uae_u32 caller);
+void debugmem_addsegs(TrapContext *ctx, uaecptr seg, uaecptr name, uae_u32 lock);
+void debugmem_remsegs(uaecptr seg);
+uae_u32 debugmem_exit(void);
+bool debugmem_break(int);
+bool debugmem_inhibit_break(int mode);
+void debugmem_disable(void);
+void debugmem_enable(void);
+int debugmem_get_segment(uaecptr addr, bool *exact, bool *ext, TCHAR *out, TCHAR *name);
+int debugmem_get_symbol(uaecptr addr, TCHAR *out, int maxsize);
+bool debugmem_get_symbol_value(const TCHAR *name, uae_u32 *valp);
+bool debugmem_list_segment(int mode, uaecptr addr);
+int debugmem_get_sourceline(uaecptr addr, TCHAR *out, int maxsize);
+bool debugmem_get_range(uaecptr*, uaecptr*);
+bool debugmem_isactive(void);
+bool debugger_load_libraries(void);
+void debugger_scan_libraries(void);
+bool debugger_get_library_symbol(uaecptr base, uaecptr addr, TCHAR *out);
+bool debugmem_list_stackframe(bool super);
+bool debugmem_break_stack_pop(void);
+bool debugmem_break_stack_push(void);
+bool debugmem_enable_stackframe(bool enable);
+
+extern uae_u32 debugmem_chiplimit;
+extern uae_u32 debugmem_chiphit(uaecptr addr, uae_u32 v, int size);
+extern bool debugmem_extinvalidmem(uaecptr addr, uae_u32 v, int size);
index 05e339a028599387279755f269e84a32f3ab3091..da72299cb429d0ae98393eed737ce98b67e75161 100644 (file)
@@ -189,6 +189,26 @@ struct autoconfig_info
 #define CE_MEMBANK_FAST16 4
 //#define CE_MEMBANK_FAST16_EXTRA_ACCURACY 5
 
+#define MEMORY_LGETI(name) \
+static uae_u32 REGPARAM3 name ## _lgeti (uaecptr) REGPARAM; \
+static uae_u32 REGPARAM2 name ## _lgeti (uaecptr addr) \
+{ \
+       uae_u8 *m; \
+       addr -= name ## _bank.start & name ## _bank.mask; \
+       addr &= name ## _bank.mask; \
+       m = name ## _bank.baseaddr + addr; \
+       return do_get_mem_long ((uae_u32 *)m); \
+}
+#define MEMORY_WGETI(name) \
+static uae_u32 REGPARAM3 name ## _wgeti (uaecptr) REGPARAM; \
+static uae_u32 REGPARAM2 name ## _wgeti (uaecptr addr) \
+{ \
+       uae_u8 *m; \
+       addr -= name ## _bank.start & name ## _bank.mask; \
+       addr &= name ## _bank.mask; \
+       m = name ## _bank.baseaddr + addr; \
+       return do_get_mem_word ((uae_u16 *)m); \
+}
 #define MEMORY_LGET(name) \
 static uae_u32 REGPARAM3 name ## _lget (uaecptr) REGPARAM; \
 static uae_u32 REGPARAM2 name ## _lget (uaecptr addr) \
@@ -404,6 +424,7 @@ extern addrbank bogomem_bank;
 extern addrbank z3fastmem_bank[MAX_RAM_BOARDS];
 extern addrbank z3chipmem_bank;
 extern addrbank mem25bit_bank;
+extern addrbank debugmem_bank;
 extern addrbank a3000lmem_bank;
 extern addrbank a3000hmem_bank;
 extern addrbank extendedkickmem_bank;
@@ -496,6 +517,7 @@ extern void free_fastmemory (int);
 extern void set_roms_modified (void);
 extern void reload_roms(void);
 extern bool read_kickstart_version(struct uae_prefs *p);
+extern void chipmem_setindirect(void);
 
 #define longget(addr) (call_mem_get_func(get_mem_bank(addr).lget, addr))
 #define wordget(addr) (call_mem_get_func(get_mem_bank(addr).wget, addr))
index 3d709bd625102c2a55a0cd89ac00076294214fc7..208b7183908c62d708468cc4ea23f24a643a783a 100644 (file)
@@ -346,6 +346,11 @@ uae_u32 mem_access_delay_longi_read_c040 (uaecptr addr);
 
 extern uae_u32(REGPARAM3 *x_cp_get_disp_ea_020)(uae_u32 base, int idx) REGPARAM;
 
+extern bool debugmem_trace;
+extern void branch_stack_push(uaecptr, uaecptr);
+extern void branch_stack_pop_rte(uaecptr);
+extern void branch_stack_pop_rts(uaecptr);
+
 /* direct (regs.pc_p) access */
 
 STATIC_INLINE void m68k_setpc(uaecptr newpc)
@@ -353,6 +358,11 @@ STATIC_INLINE void m68k_setpc(uaecptr newpc)
        regs.pc_p = regs.pc_oldp = get_real_address(newpc);
        regs.instruction_pc = regs.pc = newpc;
 }
+STATIC_INLINE void m68k_setpc_j(uaecptr newpc)
+{
+       regs.pc_p = regs.pc_oldp = get_real_address(newpc);
+       regs.pc = newpc;
+}
 STATIC_INLINE uaecptr m68k_getpc(void)
 {
        return (uaecptr)(regs.pc + ((uae_u8*)regs.pc_p - (uae_u8*)regs.pc_oldp));
@@ -411,6 +421,10 @@ STATIC_INLINE void m68k_setpci(uaecptr newpc)
 {
        regs.instruction_pc = regs.pc = newpc;
 }
+STATIC_INLINE void m68k_setpci_j(uaecptr newpc)
+{
+       regs.pc = newpc;
+}
 STATIC_INLINE uaecptr m68k_getpci(void)
 {
        return regs.pc;
@@ -605,10 +619,10 @@ extern uae_u32 REGPARAM3 get_disp_ea_020 (uae_u32 base, int idx) REGPARAM;
 extern uae_u32 REGPARAM3 get_bitfield (uae_u32 src, uae_u32 bdata[2], uae_s32 offset, int width) REGPARAM;
 extern void REGPARAM3 put_bitfield (uae_u32 dst, uae_u32 bdata[2], uae_u32 val, uae_s32 offset, int width) REGPARAM;
 
-extern void m68k_disasm_ea (uaecptr addr, uaecptr *nextpc, int cnt, uae_u32 *seaddr, uae_u32 *deaddr);
-extern void m68k_disasm (uaecptr addr, uaecptr *nextpc, int cnt);
-extern void m68k_disasm_2 (TCHAR *buf, int bufsize, uaecptr addr, uaecptr *nextpc, int cnt, uae_u32 *seaddr, uae_u32 *deaddr, int safemode);
-extern void sm68k_disasm (TCHAR*, TCHAR*, uaecptr addr, uaecptr *nextpc);
+extern void m68k_disasm_ea (uaecptr addr, uaecptr *nextpc, int cnt, uae_u32 *seaddr, uae_u32 *deaddr, uaecptr lastpc);
+extern void m68k_disasm (uaecptr addr, uaecptr *nextpc, uaecptr lastpc, int cnt);
+extern void m68k_disasm_2 (TCHAR *buf, int bufsize, uaecptr addr, uaecptr *nextpc, int cnt, uae_u32 *seaddr, uae_u32 *deaddr, uaecptr lastpc, int safemode);
+extern void sm68k_disasm (TCHAR*, TCHAR*, uaecptr addr, uaecptr *nextpc, uaecptr lastpc);
 extern int m68k_asm(TCHAR *buf, uae_u16 *out, uaecptr pc);
 extern int get_cpu_model (void);
 
@@ -632,8 +646,7 @@ extern bool m68k_divl (uae_u32, uae_u32, uae_u16);
 extern bool m68k_mull (uae_u32, uae_u32, uae_u16);
 extern void init_m68k (void);
 extern void m68k_go (int);
-extern void m68k_dumpstate (uaecptr *);
-extern void m68k_dumpstate (uaecptr, uaecptr *);
+extern void m68k_dumpstate(uaecptr *, uaecptr);
 extern void m68k_dumpcache (bool);
 extern int getDivu68kCycles (uae_u32 dividend, uae_u16 divisor);
 extern int getDivs68kCycles (uae_s32 dividend, uae_s16 divisor);
index 3f23c71d62bd83e31770e769ce528ce33de8eaa8..2cec56397f0cdb6a760185844a59ca321249e86d 100644 (file)
@@ -442,6 +442,7 @@ struct uae_prefs {
        bool socket_emu;
 
        bool start_debugger;
+       bool debugging_features;
        bool start_gui;
 
        KbdLang keyboard_lang;
@@ -685,6 +686,8 @@ struct uae_prefs {
        uae_u32 mbresmem_low_size;
        uae_u32 mbresmem_high_size;
        uae_u32 mem25bit_size;
+       uae_u32 debugmem_start;
+       uae_u32 debugmem_size;
        int cpuboard_type;
        int cpuboard_subtype;
        int cpuboard_settings;
index 21c2fd5d8bdbb13822d462f8da7a84366a1bd76d..c544eeb40e7b97c4c43edfe4d81b2b7ebac0e910 100644 (file)
@@ -35,6 +35,7 @@
 #include "threaddep/thread.h"
 #include "gayle.h"
 #include "debug.h"
+#include "debugmem.h"
 #include "gfxboard.h"
 #include "cpuboard.h"
 #include "uae/ppc.h"
@@ -216,8 +217,6 @@ static bool maybe_map_boot_rom(uaecptr addr)
 
 static void dummylog (int rw, uaecptr addr, int size, uae_u32 val, int ins)
 {
-       if (illegal_count >= MAX_ILG && MAX_ILG > 0)
-               return;
        /* ignore Zorro3 expansion space */
        if (addr >= AUTOCONFIG_Z3 && addr <= AUTOCONFIG_Z3 + 0x200)
                return;
@@ -231,6 +230,10 @@ static void dummylog (int rw, uaecptr addr, int size, uae_u32 val, int ins)
                return;
        if (addr >= 0x07f7fff0 && addr <= 0x07ffffff)
                return;
+       if (debugmem_extinvalidmem(addr, val, rw ? size : -size))
+               return;
+       if (illegal_count >= MAX_ILG && MAX_ILG > 0)
+               return;
        if (MAX_ILG >= 0)
                illegal_count++;
        if (ins) {
@@ -788,6 +791,51 @@ STATIC_INLINE uae_u8* REGPARAM2 chipmem_xlate_bigmem (uaecptr addr)
        return get_real_address (addr);
 }
 
+STATIC_INLINE void REGPARAM2 chipmem_lput_debugmem(uaecptr addr, uae_u32 v)
+{
+       if (addr < debugmem_chiplimit)
+               debugmem_chiphit(addr, v, 4);
+       put_long(addr, v);
+}
+STATIC_INLINE void REGPARAM2 chipmem_wput_debugmem(uaecptr addr, uae_u32 v)
+{
+       if (addr < debugmem_chiplimit)
+               debugmem_chiphit(addr, v, 2);
+       put_word(addr, v);
+}
+STATIC_INLINE void REGPARAM2 chipmem_bput_debugmem(uaecptr addr, uae_u32 v)
+{
+       if (addr < debugmem_chiplimit)
+               debugmem_chiphit(addr, v, 1);
+       put_byte(addr, v);
+}
+STATIC_INLINE uae_u32 REGPARAM2 chipmem_lget_debugmem(uaecptr addr)
+{
+       if (addr < debugmem_chiplimit)
+               return debugmem_chiphit(addr, 0, -4);
+       return get_long(addr);
+}
+STATIC_INLINE uae_u32 REGPARAM2 chipmem_wget_debugmem(uaecptr addr)
+{
+       if (addr < debugmem_chiplimit)
+               return debugmem_chiphit(addr, 0, -2);
+       return get_word(addr);
+}
+STATIC_INLINE uae_u32 REGPARAM2 chipmem_bget_debugmem(uaecptr addr)
+{
+       if (addr < debugmem_chiplimit)
+               return debugmem_chiphit(addr, 0, -1);
+       return get_byte(addr);
+}
+STATIC_INLINE int REGPARAM2 chipmem_check_debugmem(uaecptr addr, uae_u32 size)
+{
+       return valid_address(addr, size);
+}
+STATIC_INLINE uae_u8* REGPARAM2 chipmem_xlate_debugmem(uaecptr addr)
+{
+       return get_real_address(addr);
+}
+
 uae_u32 (REGPARAM2 *chipmem_lget_indirect)(uaecptr);
 uae_u32 (REGPARAM2 *chipmem_wget_indirect)(uaecptr);
 uae_u32 (REGPARAM2 *chipmem_bget_indirect)(uaecptr);
@@ -797,9 +845,18 @@ void (REGPARAM2 *chipmem_bput_indirect)(uaecptr, uae_u32);
 int (REGPARAM2 *chipmem_check_indirect)(uaecptr, uae_u32);
 uae_u8 *(REGPARAM2 *chipmem_xlate_indirect)(uaecptr);
 
-static void chipmem_setindirect (void)
+void chipmem_setindirect(void)
 {
-       if (currprefs.z3chipmem_size) {
+       if (debugmem_bank.baseaddr && debugmem_chiplimit) {
+               chipmem_lget_indirect = chipmem_lget_debugmem;
+               chipmem_wget_indirect = chipmem_wget_debugmem;
+               chipmem_bget_indirect = chipmem_bget_debugmem;
+               chipmem_lput_indirect = chipmem_lput_debugmem;
+               chipmem_wput_indirect = chipmem_wput_debugmem;
+               chipmem_bput_indirect = chipmem_bput_debugmem;
+               chipmem_check_indirect = chipmem_check_bigmem;
+               chipmem_xlate_indirect = chipmem_xlate_bigmem;
+       } else if (currprefs.z3chipmem_size) {
                chipmem_lget_indirect = chipmem_lget_bigmem;
                chipmem_wget_indirect = chipmem_wget_bigmem;
                chipmem_bget_indirect = chipmem_bget_bigmem;
@@ -837,6 +894,12 @@ MEMORY_FUNCTIONS(a3000hmem);
 
 MEMORY_FUNCTIONS(mem25bit);
 
+/* debugger memory */
+
+MEMORY_FUNCTIONS(debugmem);
+MEMORY_WGETI(debugmem);
+MEMORY_LGETI(debugmem);
+
 /* Kick memory */
 
 uae_u16 kickstart_version;
@@ -1065,7 +1128,7 @@ uae_u8 *REGPARAM2 default_xlate (uaecptr addr)
                                write_log (_T("Your Amiga program just did something terribly stupid %08X PC=%08X\n"), addr, M68K_GETPC);
                                if (debugging || DEBUG_STUPID) {
                                        activate_debugger ();
-                                       m68k_dumpstate (0);
+                                       m68k_dumpstate(NULL, 0xffffffff);
                                }
                                for (i = 0; i < 10; i++) {
                                        write_log (_T("%08X "), i >= 5 ? a3 : a2);
@@ -1157,6 +1220,14 @@ addrbank mem25bit_bank = {
        ABFLAG_RAM | ABFLAG_THREADSAFE | ABFLAG_CACHE_ENABLE_ALL, 0, 0
 };
 
+addrbank debugmem_bank = {
+       debugmem_lget, debugmem_wget, debugmem_bget,
+       debugmem_lput, debugmem_wput, debugmem_bput,
+       debugmem_xlate, debugmem_check, NULL, _T("debugmem"), _T("debugger memory"),
+       debugmem_lgeti, debugmem_wgeti,
+       ABFLAG_RAM | ABFLAG_THREADSAFE | ABFLAG_CACHE_ENABLE_ALL, 0, 0
+};
+
 addrbank a3000lmem_bank = {
        a3000lmem_lget, a3000lmem_wget, a3000lmem_bget,
        a3000lmem_lput, a3000lmem_wput, a3000lmem_bput,
@@ -2114,6 +2185,19 @@ static void allocate_memory (void)
                        need_hardreset = true;
                }
        }
+       if (debugmem_bank.reserved_size != currprefs.debugmem_size) {
+               mapped_free(&debugmem_bank);
+
+               debugmem_bank.reserved_size = currprefs.debugmem_size;
+               debugmem_bank.mask = debugmem_bank.reserved_size - 1;
+               debugmem_bank.start = currprefs.debugmem_start;
+               if (debugmem_bank.reserved_size) {
+                       if (!mapped_malloc(&debugmem_bank)) {
+                               write_log(_T("Out of memory for debugger memory.\n"));
+                               debugmem_bank.reserved_size = 0;
+                       }
+               }
+       }
        if (mem25bit_bank.reserved_size != currprefs.mem25bit_size) {
                mapped_free(&mem25bit_bank);
 
@@ -2597,6 +2681,8 @@ void memory_reset (void)
                map_banks(&a3000lmem_bank, a3000lmem_bank.start >> 16, a3000lmem_bank.allocated_size >> 16, 0);
        if (a3000hmem_bank.baseaddr)
                map_banks(&a3000hmem_bank, a3000hmem_bank.start >> 16, a3000hmem_bank.allocated_size >> 16, 0);
+       if (debugmem_bank.baseaddr)
+               map_banks(&debugmem_bank, debugmem_bank.start >> 16, debugmem_bank.allocated_size >> 16, 0);
 #ifdef CDTV
        if (cardmem_bank.baseaddr)
                map_banks (&cardmem_bank, cardmem_bank.start >> 16, cardmem_bank.allocated_size >> 16, 0);
index 0d11f7240fc4ba8d32014bc9620a6f37db2a9e13..b1467d6d40c76aa057412bc46a66a95741dd580f 100644 (file)
@@ -32,6 +32,7 @@
 #include "autoconf.h"
 #include "traps.h"
 #include "debug.h"
+#include "debugmem.h"
 #include "gui.h"
 #include "savestate.h"
 #include "blitter.h"
@@ -2159,14 +2160,14 @@ static void showea_val(TCHAR *buffer, uae_u16 opcode, uaecptr addr, int size)
        instr *table = &table68k[opcode];
 
        if (addr >= 0xe90000 && addr < 0xf00000)
-               return;
+               goto skip;
        if (addr >= 0xdff000 && addr < 0xe00000)
-               return;
+               goto skip;
 
        for (lookup = lookuptab; lookup->mnemo != table->mnemo; lookup++)
                ;
        if (!(lookup->flags & 1))
-               return;
+               goto skip;
        buffer += _tcslen(buffer);
        if (debug_safe_addr(addr, datasizes[size])) {
                bool cached = false;
@@ -2237,6 +2238,13 @@ static void showea_val(TCHAR *buffer, uae_u16 opcode, uaecptr addr, int size)
                                break;
                }
        }
+skip:
+       for (int i = 0; i < size; i++) {
+               TCHAR name[256];
+               if (debugmem_get_symbol(addr + i, name, sizeof(name) / sizeof(TCHAR))) {
+                       _stprintf(buffer + _tcslen(buffer), _T(" %s"), name);
+               }
+       }
 }
 
 static uaecptr ShowEA (void *f, uaecptr pc, uae_u16 opcode, int reg, amodes mode, wordsizes size, TCHAR *buf, uae_u32 *eaddr, int safemode)
@@ -2431,6 +2439,9 @@ static uaecptr ShowEA (void *f, uaecptr pc, uae_u16 opcode, int reg, amodes mode
                offset = (uae_s32)(uae_s8)get_iword_debug (pc);
                _stprintf (buffer, _T("#$%02x"), (uae_u32)(offset & 0xff));
                addr = pc + 2 + offset;
+               if ((opcode & 0xf000) == 0x6000) {
+                       showea_val(buffer, opcode, addr, 1);
+               }
                pc += 2;
                break;
        case imm1:
@@ -2438,12 +2449,18 @@ static uaecptr ShowEA (void *f, uaecptr pc, uae_u16 opcode, int reg, amodes mode
                buffer[0] = 0;
                _stprintf (buffer, _T("#$%04x"), (uae_u32)(offset & 0xffff));
                addr = pc + offset;
+               if ((opcode & 0xf000) == 0x6000) {
+                       showea_val(buffer, opcode, addr, 2);
+               }
                pc += 2;
                break;
        case imm2:
                offset = (uae_s32)get_ilong_debug (pc);
                _stprintf (buffer, _T("#$%08x"), (uae_u32)offset);
                addr = pc + offset;
+               if ((opcode & 0xf000) == 0x6000) {
+                       showea_val(buffer, opcode, addr, 4);
+               }
                pc += 4;
                break;
        case immi:
@@ -2454,7 +2471,7 @@ static uaecptr ShowEA (void *f, uaecptr pc, uae_u16 opcode, int reg, amodes mode
        default:
                break;
        }
-       if (buf == 0)
+       if (buf == NULL)
                f_out (f, _T("%s"), buffer);
        else
                _tcscat (buf, buffer);
@@ -3006,6 +3023,9 @@ kludge_me_do:
                return;
        }
        m68k_setpc (newpc);
+       if (interrupt)
+               regs.intmask = nr - 24;
+       branch_stack_push(currpc, currpc);
        regs.ir = x_get_word (m68k_getpc ()); // prefetch 1
        x_do_cycles (2 * cpucycleunit);
        regs.ipl_pin = intlev();
@@ -3276,6 +3296,8 @@ static void Exception_mmu030 (int nr, uaecptr oldpc)
                        exception3_read(regs.ir, newpc);
                return;
        }
+       if (interrupt)
+               regs.intmask = nr - 24;
        m68k_setpci (newpc);
        fill_prefetch ();
        exception_check_trace (nr);
@@ -3344,6 +3366,8 @@ static void Exception_mmu (int nr, uaecptr oldpc)
        cache_default_data &= ~CACHE_DISABLE_ALLOCATE;
 
        m68k_setpci (newpc);
+       if (interrupt)
+               regs.intmask = nr - 24;
        fill_prefetch ();
        exception_check_trace (nr);
 }
@@ -3606,11 +3630,14 @@ kludge_me_do:
                        exception3_notinstruction(regs.ir, newpc);
                return;
        }
+       if (interrupt)
+               regs.intmask = nr - 24;
        m68k_setpc (newpc);
        cache_default_data &= ~CACHE_DISABLE_ALLOCATE;
 #ifdef JIT
        set_special (SPCFLAG_END_COMPILE);
 #endif
+       branch_stack_push(currpc, nextpc);
        fill_prefetch ();
        exception_check_trace (nr);
 }
@@ -3697,7 +3724,6 @@ static void do_interrupt (int nr)
 
        for (;;) {
                Exception (nr + 24);
-               regs.intmask = nr;
                if (!currprefs.cpu_compatible || currprefs.cpu_model == 68060)
                        break;
                if (m68k_interrupt_delay)
@@ -3989,7 +4015,7 @@ uae_u32 REGPARAM2 op_illg (uae_u32 opcode)
                        warned++;
                }
                Exception (0xB);
-               //activate_debugger ();
+               //activate_debugger_new();
                return 4;
        }
        if ((opcode & 0xF000) == 0xA000) {
@@ -3998,13 +4024,13 @@ uae_u32 REGPARAM2 op_illg (uae_u32 opcode)
                        warned++;
                }
                Exception (0xA);
-               //activate_debugger();
+               //activate_debugger_new();
                return 4;
        }
        if (warned < 20) {
                write_log (_T("Illegal instruction: %04x at %08X -> %08X\n"), opcode, pc, get_long_debug(regs.vbr + 0x10));
                warned++;
-               //activate_debugger();
+               //activate_debugger_new();
        }
 
        Exception (4);
@@ -5512,10 +5538,10 @@ static void opcodedebug (uae_u32 pc, uae_u16 opcode, bool full)
                TCHAR buf[100];
                if (full)
                        write_log (_T("mmufixup=%d %04x %04x\n"), mmufixup[0].reg, regs.wb3_status, regs.mmu_ssw);
-               m68k_disasm_2 (buf, sizeof buf / sizeof (TCHAR), addr, NULL, 1, NULL, NULL, 0);
+               m68k_disasm_2 (buf, sizeof buf / sizeof (TCHAR), addr, NULL, 1, NULL, NULL, 0xffffffff, 0);
                write_log (_T("%s\n"), buf);
                if (full)
-                       m68k_dumpstate (NULL);
+                       m68k_dumpstate(NULL, 0xffffffff);
        }
 }
 
@@ -7349,17 +7375,36 @@ int m68k_asm(TCHAR *sline, uae_u16 *out, uaecptr pc)
        return 0;
 }
 
-void m68k_disasm_2 (TCHAR *buf, int bufsize, uaecptr pc, uaecptr *nextpc, int cnt, uae_u32 *seaddr, uae_u32 *deaddr, int safemode)
+static void resolve_if_jmp(TCHAR *s, uae_u32 addr)
+{
+       uae_u16 opcode = get_word_debug(addr);
+       if (opcode == 0x4ef9) { // JMP x.l
+               TCHAR *p = s + _tcslen(s);
+               uae_u32 addr2 = get_long_debug(addr + 2);
+               _stprintf(p, _T(" == $%08x "), addr2);
+               showea_val(p + _tcslen(p), opcode, addr2, 4);
+               TCHAR txt[256];
+               bool ext;
+               if (debugmem_get_segment(addr2, NULL, &ext, NULL, txt)) {
+                       if (ext) {
+                               _tcscat(p, _T(" "));
+                               _tcscat(p, txt);
+                       }
+               }
+       }
+}
+
+
+void m68k_disasm_2 (TCHAR *buf, int bufsize, uaecptr pc, uaecptr *nextpc, int cnt, uae_u32 *seaddr, uae_u32 *deaddr, uaecptr lastpc, int safemode)
 {
        uae_u32 seaddr2;
        uae_u32 deaddr2;
 
-       if (buf)
-               memset (buf, 0, bufsize * sizeof (TCHAR));
        if (!table68k)
                return;
        while (cnt-- > 0) {
                TCHAR instrname[100], *ccpt;
+               TCHAR segout[256], segname[256];
                int i;
                uae_u32 opcode;
                uae_u16 extra;
@@ -7368,6 +7413,8 @@ void m68k_disasm_2 (TCHAR *buf, int bufsize, uaecptr pc, uaecptr *nextpc, int cn
                uaecptr oldpc;
                uaecptr m68kpc_illg = 0;
                bool illegal = false;
+               int segid, lastsegid;
+               TCHAR *symbolpos;
 
                seaddr2 = deaddr2 = 0;
                oldpc = pc;
@@ -7387,8 +7434,23 @@ void m68k_disasm_2 (TCHAR *buf, int bufsize, uaecptr pc, uaecptr *nextpc, int cn
                for (lookup = lookuptab;lookup->mnemo != dp->mnemo; lookup++)
                        ;
 
+               lastsegid = -1;
+               bool exact = false;
+               if (lastpc != 0xffffffff) {
+                       lastsegid = debugmem_get_segment(lastpc, NULL, NULL, NULL, NULL);
+               }
+               segid = debugmem_get_segment(pc, &exact, NULL, segout, segname);
+               if (segid && (lastsegid != -1 || exact) && (segid != lastsegid || pc == lastpc || exact)) {
+                       buf = buf_out(buf, &bufsize, _T("%s\n"), segname);
+               }
+               symbolpos = buf;
+
                buf = buf_out (buf, &bufsize, _T("%08X "), pc);
 
+               if (segid) {
+                       buf = buf_out(buf, &bufsize, _T("%s "), segout);
+               }
+
                pc += 2;
                
                if (lookup->friendlyname)
@@ -7598,6 +7660,20 @@ void m68k_disasm_2 (TCHAR *buf, int bufsize, uaecptr pc, uaecptr *nextpc, int cn
                } else {
                        if (dp->suse) {
                                pc = ShowEA (0, pc, opcode, dp->sreg, dp->smode, dp->size, instrname, &seaddr2, safemode);
+
+                               // JSR x(a6) / JMP x(a6)
+                               if (opcode == 0x4ea8 + 6 || opcode == 0x4ee8 + 6) {
+                                       TCHAR sname[256];
+                                       if (debugger_get_library_symbol(m68k_areg(regs, 6), 0xffff0000 | extra, sname)) {
+                                               TCHAR *p = instrname + _tcslen(instrname);
+                                               _stprintf(p, _T(" %s"), sname);
+                                               resolve_if_jmp(instrname, m68k_areg(regs, 6) + (uae_s16)extra);
+                                       }
+                               }
+                               // show target address if JSR x(pc) + JMP xxxx combination
+                               if (opcode == 0x4eba && seaddr2 && instrname) { // JSR x(pc)
+                                       resolve_if_jmp(instrname, seaddr2);
+                               }
                        }
                        if (dp->suse && dp->duse)
                                _tcscat (instrname, _T(","));
@@ -7642,6 +7718,37 @@ void m68k_disasm_2 (TCHAR *buf, int bufsize, uaecptr pc, uaecptr *nextpc, int cn
                }
                buf = buf_out (buf, &bufsize, _T("\n"));
 
+               for (uaecptr segpc = oldpc; segpc < pc; segpc++) {
+                       TCHAR segout[256];
+                       if (debugmem_get_symbol(segpc, segout, sizeof(segout) / sizeof(TCHAR))) {
+                               _tcscat(segout, _T(":\n"));
+                               if (bufsize > _tcslen(segout)) {
+                                       memmove(symbolpos + _tcslen(segout), symbolpos, (_tcslen(symbolpos) + 1) * sizeof(TCHAR));
+                                       memcpy(symbolpos, segout, _tcslen(segout) * sizeof(TCHAR));
+                                       bufsize -= _tcslen(segout);
+                                       buf += _tcslen(segout);
+                                       symbolpos += _tclen(segout);
+                               }
+                       }
+               }
+
+               int srcline = -1;
+               for (uaecptr segpc = oldpc; segpc < pc; segpc++) {
+                       TCHAR sourceout[256];
+                       int line = debugmem_get_sourceline(segpc, sourceout, sizeof(sourceout) / sizeof(TCHAR));
+                       if (line < 0)
+                               break;
+                       if (srcline != line) {
+                               if (srcline < 0)
+                                       buf = buf_out(buf, &bufsize, _T("\n"));
+                               buf = buf_out(buf, &bufsize, sourceout);
+                               srcline = line;
+                       }
+               }
+               if (srcline >= 0) {
+                       buf = buf_out(buf, &bufsize, _T("\n"));
+               }
+
                if (illegal)
                        pc =  m68kpc_illg;
        }
@@ -7653,24 +7760,24 @@ void m68k_disasm_2 (TCHAR *buf, int bufsize, uaecptr pc, uaecptr *nextpc, int cn
                *deaddr = deaddr2;
 }
 
-void m68k_disasm_ea (uaecptr addr, uaecptr *nextpc, int cnt, uae_u32 *seaddr, uae_u32 *deaddr)
+void m68k_disasm_ea (uaecptr addr, uaecptr *nextpc, int cnt, uae_u32 *seaddr, uae_u32 *deaddr, uaecptr lastpc)
 {
        TCHAR *buf;
 
-       buf = xmalloc (TCHAR, (MAX_LINEWIDTH + 1) * cnt);
+       buf = xcalloc (TCHAR, (MAX_LINEWIDTH + 1) * cnt);
        if (!buf)
                return;
-       m68k_disasm_2 (buf, (MAX_LINEWIDTH + 1) * cnt, addr, nextpc, cnt, seaddr, deaddr, 1);
+       m68k_disasm_2 (buf, MAX_LINEWIDTH * cnt, addr, nextpc, cnt, seaddr, deaddr, lastpc, 1);
        xfree (buf);
 }
-void m68k_disasm (uaecptr addr, uaecptr *nextpc, int cnt)
+void m68k_disasm (uaecptr addr, uaecptr *nextpc, uaecptr lastpc, int cnt)
 {
        TCHAR *buf;
 
-       buf = xmalloc (TCHAR, (MAX_LINEWIDTH + 1) * cnt);
+       buf = xcalloc (TCHAR, (MAX_LINEWIDTH + 1) * cnt);
        if (!buf)
                return;
-       m68k_disasm_2 (buf, (MAX_LINEWIDTH + 1) * cnt, addr, nextpc, cnt, NULL, NULL, 0);
+       m68k_disasm_2 (buf, MAX_LINEWIDTH * cnt, addr, nextpc, cnt, NULL, NULL, lastpc, 0);
        console_out_f (_T("%s"), buf);
        xfree (buf);
 }
@@ -7679,7 +7786,7 @@ void m68k_disasm (uaecptr addr, uaecptr *nextpc, int cnt)
 Disasm the m68kcode at the given address into instrname
 and instrcode
 *************************************************************/
-void sm68k_disasm (TCHAR *instrname, TCHAR *instrcode, uaecptr addr, uaecptr *nextpc)
+void sm68k_disasm (TCHAR *instrname, TCHAR *instrcode, uaecptr addr, uaecptr *nextpc, uaecptr lastpc)
 {
        TCHAR *ccpt;
        uae_u32 opcode;
@@ -7752,9 +7859,10 @@ struct cpum2c m2cregs[] = {
     { -1, NULL }
 };
 
-void m68k_dumpstate (uaecptr pc, uaecptr *nextpc)
+void m68k_dumpstate(uaecptr *nextpc, uaecptr prevpc)
 {
        int i, j;
+       uaecptr pc = M68K_GETPC;
 
        for (i = 0; i < 8; i++){
                console_out_f (_T("  D%d %08X "), i, m68k_dreg (regs, i));
@@ -7832,17 +7940,16 @@ void m68k_dumpstate (uaecptr pc, uaecptr *nextpc)
                                regs.prefetch020[2], regs.prefetch020_valid[2]);
                }
        }
-
-       if (pc != 0xffffffff) {
-               m68k_disasm (pc, nextpc, 1);
-               if (nextpc)
-                       console_out_f (_T("Next PC: %08x\n"), *nextpc);
+       if (prevpc != 0xffffffff && pc - prevpc < 100) {
+               while (prevpc < pc) {
+                       m68k_disasm(prevpc, &prevpc, 0xffffffff, 1);
+               }
        }
+       m68k_disasm (pc, nextpc, pc, 1);
+       if (nextpc)
+               console_out_f (_T("Next PC: %08x\n"), *nextpc);
 }
-void m68k_dumpstate (uaecptr *nextpc)
-{
-       m68k_dumpstate (m68k_getpc (), nextpc);
-}
+
 void m68k_dumpcache (bool dc)
 {
        if (!currprefs.cpu_compatible)
index fa62332ebd6fdacf30bc4afc3a96d3d7709106bd..0af3d5bbbdac9ff7ecb0d66999c4090b98fce438 100644 (file)
@@ -519,7 +519,7 @@ static void ShowBreakpoints(void)
        for (i = 0; i < BREAKPOINT_TOTAL; i++) {
                if (!bpnodes[i].enabled)
                        continue;
-               m68k_disasm_2(outbp, sizeof outbp / sizeof (TCHAR), bpnodes[i].value1, NULL, 1, NULL, NULL, 0);
+               m68k_disasm_2(outbp, sizeof outbp / sizeof (TCHAR), bpnodes[i].value1, NULL, 1, NULL, NULL, 0xffffffff, 0);
                ULBS(outbp);
                got = 1;
        }
@@ -575,7 +575,7 @@ static int GetPrevAddr(uae_u32 addr, uae_u32 *prevaddr)
        dasmaddr = addr - 20;
        while (dasmaddr < addr) {
                next = dasmaddr + 2;
-               m68k_disasm_2(NULL, 0, dasmaddr, &next, 1, NULL, NULL, 0);
+               m68k_disasm_2(NULL, 0, dasmaddr, &next, 1, NULL, NULL, 0xffffffff, 0);
                if (next == addr) {
                        *prevaddr = dasmaddr;
                        return 1;
@@ -607,7 +607,7 @@ static void ShowDasm(int direction)
        else
                addr = dbgpage[currpage].dasmaddr;
        if (direction > 0) {
-               m68k_disasm_2(NULL, 0, addr, &addr, 1, NULL, NULL, 0);
+               m68k_disasm_2(NULL, 0, addr, &addr, 1, NULL, NULL, 0xffffffff, 0);
                if (!addr || addr < dbgpage[currpage].dasmaddr)
                        addr = dbgpage[currpage].dasmaddr;
        }
@@ -621,7 +621,7 @@ static void ShowDasm(int direction)
        lines_old = SendMessage(hDasm, LB_GETCOUNT, 0, 0);
        lines_new = GetLBOutputLines(hDasm);
        for (i = 0; i < lines_new; i++) {
-               m68k_disasm_2(out, sizeof out / sizeof (TCHAR), addr, &addr, 1, NULL, NULL, 0);
+               m68k_disasm_2(out, sizeof out / sizeof (TCHAR), addr, &addr, 1, NULL, NULL, 0xffffffff, 0);
                if (addr > dbgpage[currpage].dasmaddr)
                        UpdateListboxString(hDasm, i, out, FALSE);
                else
index bdd7260165cfe96959d307f34bae12da4a7b5186..c1c6a0ce41708f8cd17977636db850812f7bbd34 100644 (file)
@@ -6807,7 +6807,7 @@ LONG WINAPI WIN32_ExceptionFilter (struct _EXCEPTION_POINTERS *pExceptionPointer
                                        int got = 0;
                                        uaecptr opc = m68k_getpc ();
                                        void *ps = get_real_address (0);
-                                       m68k_dumpstate (0);
+                                       m68k_dumpstate(NULL, 0xffffffff);
                                        efix (&ctx->Eax, p, ps, &got);
                                        efix (&ctx->Ebx, p, ps, &got);
                                        efix (&ctx->Ecx, p, ps, &got);