public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: gccbug@casualhacker.net To: gcc-gnats@gcc.gnu.org Subject: c/7453: ARM -fverbose-asm segfault Date: Tue, 30 Jul 2002 23:46:00 -0000 [thread overview] Message-ID: <m17ZnAX-002sqFC@froody> (raw) >Number: 7453 >Category: c >Synopsis: -fverbose-asm causes gcc -S to crash >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Tue Jul 30 23:46:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Tim Newsome >Release: 3.1 >Organization: >Environment: System: Linux froody 2.4.7 #2 Thu Feb 28 21:08:52 PST 2002 i686 unknown Architecture: i686 Debian installation with a manually compiled gcc. Running gcc on an x86 host (AMD Duron), targeting ARM. drz@froody:cvs/gba/game% ldd /home/drz/gba/usr/bin/arm-thumb-elf-gcc libc.so.6 => /lib/libc.so.6 (0x40023000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) drz@froody:cvs/gba/game% /home/drz/gba/usr/bin/arm-thumb-elf-gcc -v Reading specs from /home/drz/gba/usr/lib/gcc-lib/arm-thumb-elf/3.1/specs Configured with: ../gcc-3.1/configure --target=arm-thumb-elf --prefix=/home/drz/gba/usr -v Thread model: single gcc version 3.1 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: arm-thumb-elf configured with: ../gcc-3.1/configure --target=arm-thumb-elf --prefix=/home/drz/gba/usr -v >Description: When using the -fverbose-asm option, gcc segfaults. When I don't use this option everything works fine. >How-To-Repeat: Save the following file as foo.c, and run the following command line: /home/drz/gba/usr/bin/arm-thumb-elf-gcc -Wall -pipe -Wno-unused -fno-builtin -O2 -fomit-frame-pointer -S -o foo.s foo.c -fverbose-asm The compiler output: In file included from main.c:3: math.h: In function `sin': math.h:21: internal error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. ---[ cut here ]--- # 1 "main.c" # 1 "gba.h" 1 # 1 "types.h" 1 typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned long uint32; typedef signed char int8; typedef signed short int16; typedef signed long int32; # 4 "gba.h" 2 static void gba_vsync() { while ((*(volatile uint16 *) 0x4000006) != 160) ; } void gba_init_sprites(void); # 1 "main.c" 2 # 1 "fixedpoint.h" 1 static inline int fp_mul(int a, int b) { return (a * b) >> 8; } static inline int fp(int a) { return a << 8; } static inline int fp_val(int a) { return a >> 8; } # 2 "main.c" 2 # 1 "math.h" 1 # 1 "sintable.h" 1 extern int16 sintable[]; # 1 "math.h" 2 static uint32 sin(int angle) { angle &= 0xff; if (angle < 128) { if (angle < 64) { return sintable[angle]; } else { return sintable[127 - angle]; } } else { if (angle < 192) { return -sintable[angle - 128]; } else { return -sintable[255 - angle]; } } } static uint32 cos(int angle) { angle &= 0xff; return sin(angle + 256 / 4); } # 3 "main.c" 2 # 1 "libc.h" 1 # 1 "/usr/lib/gcc-lib/i386-linux/2.95.4/include/stdarg.h" 1 3 typedef void *__gnuc_va_list; void va_end (__gnuc_va_list); # 175 "/usr/lib/gcc-lib/i386-linux/2.95.4/include/stdarg.h" 3 typedef __gnuc_va_list va_list; # 4 "libc.h" 2 void memcpy(void *dest, const void *src, int bytes); void memset(void *dest, int c, int bytes); void srand(uint32 seed); uint8 rand8(void); uint16 rand16(void); uint32 rand32(void); uint32 sprintf(char *str, const char *format, ...); uint32 vsprintf(char *str, const char *format, va_list ap); uint32 strlen(const char *s); # 5 "main.c" 2 # 1 "util.h" 1 # 7 "main.c" 2 # 1 "ship.h" 1 uint16 ship_palette[] = { 0x0000, 0x7c00, 0x7c00, 0x7800, 0x5e40, 0x7420, 0x35ce, 0x7420, 0x31ad, 0x3d8f, 0x7020, 0x45f1, 0x396b, 0x354e, 0x7c60, 0x2dec, }; uint8 ship_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x80, 0x20, 0x33, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x33, 0x03, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x33, 0x03, 0x00, 0x30, 0x33, 0x00, 0x00, 0x43, 0x33, 0x03, 0x00, 0x43, 0x33, 0xa3, 0x33, 0x43, 0x00, 0x00, 0x33, 0x03, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x30, 0xe1, 0x00, 0x00, 0x20, 0x13, 0x03, 0x00, 0x30, 0x31, 0x34, 0x00, 0x00, 0x52, 0x34, 0x00, 0x30, 0x33, 0x34, 0xa3, 0x33, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x53, 0x23, 0x3e, 0x33, 0xe3, 0x33, 0x73, 0x33, 0x5e, 0x33, 0x32, 0xaa, 0x00, 0x60, 0xdb, 0x33, 0x0a, 0xb0, 0xfb, 0x21, 0x0a, 0x00, 0x00, 0x33, 0x03, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x33, 0xae, 0x13, 0xa3, 0x32, 0x32, 0x33, 0x23, 0x32, 0x25, 0x32, 0x3e, 0x69, 0x06, 0x00, 0xa3, 0xff, 0x08, 0x30, 0x13, 0x00, 0x00, 0x30, 0x33, 0x00, 0x00, 0x30, 0xaa, 0x00, 0x00, 0x30, 0x03, 0x09, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x33, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x0e, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; # 10 "main.c" 2 # 1 "bullet.h" 1 uint16 bullet_palette[] = { 0x0000, 0x001f, 0x085f, 0x109f, 0x14bf, 0x18df, 0x295f, 0x2d7f, 0x3dff, 0x463f, 0x5eff, }; uint8 bullet_data[] = { 0x00, 0x11, 0x11, 0x00, 0x10, 0x32, 0x34, 0x02, 0x21, 0x65, 0x67, 0x25, 0x31, 0x86, 0x89, 0x36, 0x41, 0x97, 0x9a, 0x47, 0x31, 0x86, 0x89, 0x36, 0x20, 0x65, 0x67, 0x05, 0x00, 0x32, 0x34, 0x00, }; # 11 "main.c" 2 # 1 "font.h" 1 uint16 font_palette[] = { 0x0000, 0x7fff, }; uint8 font_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x00, 0x01, 0x00, 0x00, 0x11, 0x10, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x10, 0x01, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x10, 0x01, 0x00, 0x10, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x01, 0x00, 0x10, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x01, 0x10, 0x10, 0x00, 0x10, 0x11, 0x10, 0x01, 0x10, 0x01, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x01, 0x00, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x11, 0x01, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x11, 0x11, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x11, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x01, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x10, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x11, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x11, 0x11, 0x00, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x11, 0x01, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x00, 0x10, 0x10, 0x10, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x10, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x00, 0x11, 0x10, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x10, 0x11, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x01, 0x10, 0x01, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x10, 0x11, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x01, 0x10, 0x01, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x01, 0x10, 0x00, 0x01, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x10, 0x10, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x10, 0x01, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x10, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x10, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x01, 0x00, 0x01, 0x10, 0x01, 0x00, 0x10, 0x10, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x00, 0x10, 0x10, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x10, 0x11, 0x10, 0x01, 0x10, 0x11, 0x11, 0x10, 0x10, 0x00, 0x01, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x01, 0x10, 0x00, 0x01, 0x11, 0x11, 0x00, 0x01, 0x00, 0x11, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x11, 0x10, 0x01, 0x10, 0x01, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x01, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x11, 0x11, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x10, 0x01, 0x00, 0x01, 0x00, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x01, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x11, 0x11, 0x01, 0x00, 0x01, 0x11, 0x00, 0x00, 0x01, 0x10, 0x01, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x10, 0x00, 0x00, 0x10, 0x10, 0x01, 0x00, 0x00, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x11, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x11, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x10, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x01, 0x00, 0x11, 0x00, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x01, 0x10, 0x00, 0x10, 0x01, 0x10, 0x00, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x10, 0x01, 0x10, 0x10, 0x10, 0x01, 0x10, 0x10, 0x11, 0x10, 0x11, 0x00, 0x11, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x01, 0x00, 0x11, 0x10, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x10, 0x01, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x10, 0x11, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x10, 0x10, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; # 12 "main.c" 2 # 1 "font_8x8.h" 1 static unsigned char fontdata_8x8[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e, 0x7e, 0xff, 0xdb, 0xff, 0xc3, 0xe7, 0xff, 0x7e, 0x6c, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x38, 0x7c, 0x38, 0xfe, 0xfe, 0xd6, 0x10, 0x38, 0x10, 0x38, 0x7c, 0xfe, 0xfe, 0x7c, 0x10, 0x38, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff, 0x0f, 0x07, 0x0f, 0x7d, 0xcc, 0xcc, 0xcc, 0x78, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x70, 0xf0, 0xe0, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x67, 0xe6, 0xc0, 0x18, 0xdb, 0x3c, 0xe7, 0xe7, 0x3c, 0xdb, 0x18, 0x80, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0x80, 0x00, 0x02, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x02, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00, 0x7f, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x00, 0x3e, 0x61, 0x3c, 0x66, 0x66, 0x3c, 0x86, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x7e, 0x3c, 0x18, 0xff, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x00, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x18, 0x3e, 0x60, 0x3c, 0x06, 0x7c, 0x18, 0x00, 0x00, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xc6, 0x00, 0x38, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0x76, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x38, 0x6c, 0xc6, 0xd6, 0xc6, 0x6c, 0x38, 0x00, 0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x7c, 0xc6, 0x06, 0x1c, 0x30, 0x66, 0xfe, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x00, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x1e, 0x00, 0xfe, 0xc0, 0xc0, 0xfc, 0x06, 0xc6, 0x7c, 0x00, 0x38, 0x60, 0xc0, 0xfc, 0xc6, 0xc6, 0x7c, 0x00, 0xfe, 0xc6, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x00, 0x7c, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30, 0x06, 0x0c, 0x18, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x00, 0x7c, 0xc6, 0xde, 0xde, 0xde, 0xc0, 0x78, 0x00, 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x66, 0x66, 0xfc, 0x00, 0x3c, 0x66, 0xc0, 0xc0, 0xc0, 0x66, 0x3c, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0xfe, 0x62, 0x68, 0x78, 0x68, 0x62, 0xfe, 0x00, 0xfe, 0x62, 0x68, 0x78, 0x68, 0x60, 0xf0, 0x00, 0x3c, 0x66, 0xc0, 0xc0, 0xce, 0x66, 0x3a, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00, 0xe6, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00, 0xc6, 0xe6, 0xf6, 0xde, 0xce, 0xc6, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0xfc, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xce, 0x7c, 0x0e, 0xfc, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0xe6, 0x00, 0x3c, 0x66, 0x30, 0x18, 0x0c, 0x66, 0x3c, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x3c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0xc6, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0xc6, 0x00, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x3c, 0x00, 0xfe, 0xc6, 0x8c, 0x18, 0x32, 0x66, 0xfe, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x02, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00, 0xe0, 0x60, 0x7c, 0x66, 0x66, 0x66, 0xdc, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc6, 0x7c, 0x00, 0x1c, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00, 0x3c, 0x66, 0x60, 0xf8, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0xf8, 0xe0, 0x60, 0x6c, 0x76, 0x66, 0x66, 0xe6, 0x00, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x06, 0x00, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0xe0, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0xe6, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x7c, 0x60, 0xf0, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0x7c, 0x0c, 0x1e, 0x00, 0x00, 0xdc, 0x76, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0x7c, 0x06, 0xfc, 0x00, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0xfc, 0x00, 0x00, 0x7e, 0x4c, 0x18, 0x32, 0x7e, 0x00, 0x0e, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0e, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x70, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x70, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc6, 0x7c, 0x0c, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x0c, 0x18, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00, 0x7c, 0x82, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00, 0xc6, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00, 0x30, 0x18, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00, 0x30, 0x30, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, 0x7e, 0x0c, 0x38, 0x7c, 0x82, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00, 0x30, 0x18, 0x7c, 0xc6, 0xfe, 0xc0, 0x7c, 0x00, 0x66, 0x00, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x7c, 0x82, 0x38, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3c, 0x00, 0xc6, 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x38, 0x6c, 0x7c, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x18, 0x30, 0xfe, 0xc0, 0xf8, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x7e, 0x18, 0x7e, 0xd8, 0x7e, 0x00, 0x3e, 0x6c, 0xcc, 0xfe, 0xcc, 0xcc, 0xce, 0x00, 0x7c, 0x82, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x30, 0x18, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x78, 0x84, 0x00, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x60, 0x30, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0xfc, 0xc6, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x18, 0x18, 0x7e, 0xc0, 0xc0, 0x7e, 0x18, 0x18, 0x38, 0x6c, 0x64, 0xf0, 0x60, 0x66, 0xfc, 0x00, 0x66, 0x66, 0x3c, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0xf8, 0xcc, 0xcc, 0xfa, 0xc6, 0xcf, 0xc6, 0xc7, 0x0e, 0x1b, 0x18, 0x3c, 0x18, 0xd8, 0x70, 0x00, 0x18, 0x30, 0x78, 0x0c, 0x7c, 0xcc, 0x76, 0x00, 0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, 0x3c, 0x00, 0x0c, 0x18, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x18, 0x30, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x00, 0x76, 0xdc, 0x00, 0xe6, 0xf6, 0xde, 0xce, 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00, 0x00, 0x18, 0x00, 0x18, 0x18, 0x30, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, 0x00, 0x00, 0x63, 0xe6, 0x6c, 0x7e, 0x33, 0x66, 0xcc, 0x0f, 0x63, 0xe6, 0x6c, 0x7a, 0x36, 0x6a, 0xdf, 0x06, 0x18, 0x00, 0x18, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x33, 0x66, 0xcc, 0x66, 0x33, 0x00, 0x00, 0x00, 0xcc, 0x66, 0x33, 0x66, 0xcc, 0x00, 0x00, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x36, 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0xfe, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x36, 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, 0x00, 0x00, 0x00, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xc8, 0xdc, 0x76, 0x00, 0x78, 0xcc, 0xcc, 0xd8, 0xcc, 0xc6, 0xcc, 0x00, 0xfe, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7c, 0xc0, 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0x6c, 0x38, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x6c, 0xee, 0x00, 0x0e, 0x18, 0x0c, 0x3e, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x06, 0x0c, 0x7e, 0xdb, 0xdb, 0x7e, 0x60, 0xc0, 0x1e, 0x30, 0x60, 0x7e, 0x60, 0x30, 0x1e, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x0c, 0x18, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0x70, 0x00, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x3c, 0x1c, 0x6c, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x18, 0x30, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; # 13 "main.c" 2 static inline void setup_screen(void) { (*(volatile uint16 *) 0x4000000) = (0 << 0 ) | (1 << 6) | (1 << 8) | (1 << 10) | (1 << 12) ; } static void pal_random(uint16 *palette, uint16 color, int noise) { int i; int red, green, blue; for (i = 0; i < 16; i++) { red = color & 0x1f; green = (color >> 5) & 0x1f; blue = (color >> 10) & 0x1f; red += (rand32() % (2*noise)) - noise; red = (( red ) > ( 0 ) ? ( red ) : ( 0 )) ; red = (( red ) < ( 0x1f ) ? ( red ) : ( 0x1f )) ; green += (rand32() % (2*noise)) - noise; green = (( green ) > ( 0 ) ? ( green ) : ( 0 )) ; green = (( green ) < ( 0x1f ) ? ( green ) : ( 0x1f )) ; blue += (rand32() % (2*noise)) - noise; blue = (( blue ) > ( 0 ) ? ( blue ) : ( 0 )) ; blue = (( blue ) < ( 0x1f ) ? ( blue ) : ( 0x1f )) ; palette[i] = (( red ) | (( green ) << 5) | (( blue ) << 10)) ; } } static void pal_gradient(uint16 *palette, uint16 a, uint16 b) { int i; int a_r, a_g, a_b; int b_r, b_g, b_b; a_r = a & 0x1f; a_g = (a >> 5) & 0x1f; a_b = (a >> 10) & 0x1f; b_r = b & 0x1f; b_g = (b >> 5) & 0x1f; b_b = (b >> 10) & 0x1f; for (i = 0; i < 16; i++) { int red, green, blue; red = (i * b_r - (16-i) * a_r) / 16; green = (i * b_g - (16-i) * a_g) / 16; blue = (i * b_b - (16-i) * a_b) / 16; palette[i] = (( red ) | (( green ) << 5) | (( blue ) << 10)) ; } } static void map_random_tile(int tile, int x, int y) { int i; uint32 r; srand(x ^ (y << 8)); for (i = 0; i < 8; i++) { r = rand32(); if ((r & 0xf) == 0) r |= 0x1; if ((r & 0xf0) == 0) r |= 0x10; if ((r & 0xf00) == 0) r |= 0x100; if ((r & 0xf000) == 0) r |= 0x1000; if ((r & 0xf0000) == 0) r |= 0x10000; if ((r & 0xf00000) == 0) r |= 0x100000; if ((r & 0xf000000) == 0) r |= 0x1000000; if ((r & 0xf0000000) == 0) r |= 0x10000000; ((uint32 *) ((volatile uint16 *) (0x6000000 + 0x4000 * ( 0 ))) )[tile * 8 + i] = r; } } void map_blank_tile(int tile) { uint32 *data = (uint32 *) (((volatile uint16 *) (0x6000000 + 0x4000 * ( 0 ))) + tile * 16); *data++ = 0; *data++ = 0; *data++ = 0; *data++ = 0; *data++ = 0; *data++ = 0; *data++ = 0; *data++ = 0; } static uint8 map[(512 / 4 ) * (512 / 4 ) ]; static void map_init(void) { int x, y; uint8 *map_entry = map; for (y = 0; y < (512 / 4 ) ; y++) for (x = 0; x < (512 / 4 ) ; x++) *map_entry++ = rand8(); } static void map_color_tile(int tile, int color) { uint32 line; uint32 *data = (uint32 *) (((volatile uint16 *) (0x6000000 + 0x4000 * ( 0 ))) + tile * 16); line = color; line |= line << 4; line |= line << 8; line |= line << 16; *data++ = line; *data++ = line; *data++ = line; *data++ = line; *data++ = line; *data++ = line; *data++ = line; *data++ = line; } static void map_render_tile(int tile, int tile_x, int tile_y) { int x, y; int c; uint32 line; int top_left, top_right, bottom_left, bottom_right; int left_x, top_y; int map_x, map_y; uint32 *data = ((uint32 *) ((volatile uint16 *) (0x6000000 + 0x4000 * ( 0 ))) ) + tile * 8; tile_x = tile_x & (512 - 1); tile_y = tile_y & (512 - 1); map_x = tile_x / 4 ; map_y = tile_y / 4 ; tile_x = tile_x % 4 ; tile_y = tile_y % 4 ; top_left = map[map_x + (512 / 4 ) * map_y]; top_right = map[(map_x + 1) % (512 / 4 ) + (512 / 4 ) * map_y]; bottom_left = map[map_x + (512 / 4 ) * ((map_y + 1) % (512 / 4 ) )]; bottom_right = map[(map_x + 1) % (512 / 4 ) + (512 / 4 ) * ((map_y + 1) % (512 / 4 ) )]; for (y = tile_y * 8; y < tile_y*8 + 8; y++) { int left, right, increment; left = (top_left * (8* 4 -(8*tile_x)) * (8* 4 -y) + top_right * (8*tile_x) * (8* 4 -y) + bottom_left * (8* 4 -(8*tile_x)) * y + bottom_right * (8*tile_x) * y) / 64 / 4; right = (top_left * (8* 4 -(8*tile_x+8)) * (8* 4 -y) + top_right * (8*tile_x+8) * (8* 4 -y) + bottom_left * (8* 4 -(8*tile_x+8)) * y + bottom_right * (8*tile_x+8) * y) / 64 / 4; left <<= 8; right <<= 8; increment = (right - left) / 8; line = 0; for (x = 0; x < 8; x++) { c = (left + (x%8) * increment) >> 8; line |= (c/16) << (4*(x%8)); } *data++ = line; } } static void font_init(void) { int i; uint32 *tile; uint32 line; uint8 *data; tile = (uint32 *) ((volatile uint16 *) (0x6000000 + 0x4000 * ( 2 ))) ; data = fontdata_8x8 + 8 * 32; for (i = 0; i < 96 * 8; i++) { uint8 c; c = *data++; line = 0; line = ((c >> 0) & 1) << 28; line |= ((c >> 1) & 1) << 24; line |= ((c >> 2) & 1) << 20; line |= ((c >> 3) & 1) << 16; line |= ((c >> 4) & 1) << 12; line |= ((c >> 5) & 1) << 8; line |= ((c >> 6) & 1) << 4; line |= ((c >> 7) & 1) << 0; if (i >= 8) line += 0x11111111; *tile++ = line; } ((volatile uint16 *) 0x5000000) [64] = 0; ((volatile uint16 *) 0x5000000) [65] = 0xffff; ((volatile uint16 *) 0x5000000) [66] = 0; memset((void *) ((volatile uint16 *) (0x6000000 + 0x800 * ( 30 ))) , 0, 0x800); (*(volatile uint16 *) 0x04000008) = (2 << 0 ) | (2 << 2 ) | (30 << 8 ) | (0 << 14 ) ; (*(volatile uint16 *) 0x04000010) = 0; (*(volatile uint16 *) 0x04000012) = 0; } static void font_text(int line, const char *string) { int i; volatile uint16 *map_entry = ((volatile uint16 *) (0x6000000 + 0x800 * ( 30 ))) + line * 32; while (*string) { *map_entry++ = (4 << 12) | (*string - 32); string++; } } static void status_line(const char *format, ...) { static char buf[31]; va_list ap; int i; ( ap = ((__gnuc_va_list) __builtin_next_arg ( format ))) ; i = vsprintf(buf, format, ap); ((void)0) ; for (; i < 31; i++) buf[i] = ' '; buf[i] = 0; font_text(160 /8 - 1, buf); } typedef struct { int vx, vy; int x, y; int rotation; } sprite_t; static sprite_t sprites[128]; void AgbMain() { int i, frames = 0, fps = 0; int viewx, viewy; (*(volatile uint16 *) 0x0400010e) = (3<< 0 ) | (1<<7) ; setup_screen(); map_init(); font_init(); pal_random((uint16 *) ((volatile uint16 *) 0x5000000) , (( ( 79 )>>3 ) | (( ( 118 )>>3 ) << 5) | (( ( 234 )>>3 ) << 10)) , 4); pal_gradient((uint16 *) ((volatile uint16 *) 0x5000000) , (( ( 0 )>>3 ) | (( ( 0 )>>3 ) << 5) | (( ( 0 )>>3 ) << 10)) , (( ( 0 )>>3 ) | (( ( 255 )>>3 ) << 5) | (( ( 0 )>>3 ) << 10)) ); pal_random((uint16 *) ((volatile uint16 *) 0x5000000) + 16, (( ( 229 )>>3 ) | (( ( 195 )>>3 ) << 5) | (( ( 22 )>>3 ) << 10)) , 3); pal_random((uint16 *) ((volatile uint16 *) 0x5000000) + 16, (( ( 72 )>>3 ) | (( ( 255 )>>3 ) << 5) | (( ( 56 )>>3 ) << 10)) , 4); memcpy((void *) ((volatile uint16 *) 0x6010000) , ship_data, 32 * 32 ); memcpy((void *) ((volatile uint16 *) 0x5000200) , ship_palette, sizeof(ship_palette)); memcpy((uint16 *) ((volatile uint16 *) 0x6010000) + 16 * 16, bullet_data, 8 * 8 ); memcpy((uint16 *) ((volatile uint16 *) 0x5000200) +16, bullet_palette, sizeof(bullet_palette)); { int x, y, tile; tile = 0; for (y = 0; y < 256/8; y++) for (x = 0; x < 256/8; x++) { ((volatile uint16 *) (0x6000000 + 0x800 * ( 31 ))) [y * 256/8 + x] = (y * 256/8 + x) | (1 << 10) | (0 << 12); } } (*(volatile uint16 *) 0x0400000c) = (3 << 0 ) | (0 << 2 ) | (31 << 8 ) | (0 << 14 ) ; gba_init_sprites(); ((volatile uint16 *) 0x7000000) [2] = (0 << 0 ) | (0 << 10 ) | (0 << 12 ); ((volatile uint16 *) 0x7000000) [6] = (16 << 0 ) | (0 << 10 ) | (1 << 12 ); sprites[0].x = fp(200); sprites[0].y = fp(0); sprites[0].vx = fp(0); sprites[0].vy = fp(0); sprites[0].rotation = 0; viewx = fp(0); viewy = fp(0); sprites[1].x = 0; sprites[1].y = 0; while (1) { uint32 keys; int ax, ay; gba_vsync(); { int tmpx, tmpy; tmpx = fp_val(sprites[0].x - viewx) - 32 ; tmpy = fp_val(sprites[0].y - viewy) - 32 ; ((volatile uint16 *) 0x7000000) [0] = ((tmpy << 0 ) & (0xff << 0 ) ) | (0 << 14 ) | (1 << 8) | (1 << 9) ; ((volatile uint16 *) 0x7000000) [1] = ((tmpx << 0 ) & (0x1ff << 0 ) ) | (2 << 14 ) | (0 << 9 ); } ((volatile uint16 *) 0x7000000) [3] = cos(sprites[0].rotation); ((volatile uint16 *) 0x7000000) [7] = sin(sprites[0].rotation); ((volatile uint16 *) 0x7000000) [11] = -sin(sprites[0].rotation); ((volatile uint16 *) 0x7000000) [15] = cos(sprites[0].rotation); # 426 "main.c" (*(volatile uint16 *) 0x04000018) = fp_val(viewx); (*(volatile uint16 *) 0x0400001a) = fp_val(viewy); { if ((*(volatile uint16 *) 0x0400010c) >= 0x4000) { fps = (0x4000 * frames) / (*(volatile uint16 *) 0x0400010c) ; frames = 0; (*(volatile uint16 *) 0x0400010c) = 0; } status_line("fps=%x", fps); } keys = (*(volatile uint32 *) 0x04000130) ; ax = fp(0); ay = fp(0); if (keys & 0x100 ) { if (!(keys & 0x20 )) ax -= 32 ; if (!(keys & 0x10 )) ax += 32 ; if (!(keys & 0x40 )) ay -= 32 ; if (!(keys & 0x80 )) ay += 32 ; } else { int target_angle = 0; int power = 128 ; if ((keys & (0x20 | 0x40 )) == 0) target_angle = 224; else if ((keys & (0x40 | 0x10 )) == 0) target_angle = 32; else if ((keys & (0x10 | 0x80 )) == 0) target_angle = 96; else if ((keys & (0x80 | 0x20 )) == 0) target_angle = 160; else if (!(keys & 0x20 )) target_angle = 192; else if (!(keys & 0x40 )) target_angle = 0; else if (!(keys & 0x10 )) target_angle = 64; else if (!(keys & 0x80 )) target_angle = 128; else power = 0; if (power) { if (target_angle > sprites[0].rotation) { if (target_angle - sprites[0].rotation <= 128) sprites[0].rotation += 4 ; else sprites[0].rotation -= 4 ; } else if (target_angle < sprites[0].rotation) { if (sprites[0].rotation - target_angle <= 128) sprites[0].rotation -= 4 ; else sprites[0].rotation += 4 ; } sprites[0].rotation = sprites[0].rotation & 0xff; ax = fp_mul(power, sin(sprites[0].rotation)); ay = fp_mul(power, -cos(sprites[0].rotation)); } } sprites[0].vx += ax; sprites[0].vy += ay; sprites[0].vx = fp_mul(sprites[0].vx, 0xf0); if (sprites[0].vx < 0x10 && sprites[0].vx > -0x10) sprites[0].vx = 0; sprites[0].vy = fp_mul(sprites[0].vy, 0xf0); if (sprites[0].vy < 0x10 && sprites[0].vy > -0x10) sprites[0].vy = 0; sprites[0].x += sprites[0].vx; sprites[0].y += sprites[0].vy; if (sprites[0].x - viewx < fp((8+ 32 /2) )) viewx = sprites[0].x - fp((8+ 32 /2) ); if (sprites[0].x - viewx > fp(240 - (8+ 32 /2) )) viewx = sprites[0].x - fp(240 ) + fp((8+ 32 /2) ); if (sprites[0].y - viewy < fp((8+ 32 /2) )) viewy = sprites[0].y - fp((8+ 32 /2) ); if (sprites[0].y - viewy > fp(160 - (8+ 32 /2) )) viewy = sprites[0].y - fp(160 ) + fp((8+ 32 /2) ); { int x, y; uint16 *tile = (uint16 *) ((volatile uint16 *) (0x6000000 + 0x800 * ( 31 ))) ; int tilex = viewx >> 11; int tiley = viewy >> 11; int visx0 = (tilex & 31); int visx1 = (( 256/8 ) < ( visx0 + ((240 /8) + 1) ) ? ( 256/8 ) : ( visx0 + ((240 /8) + 1) )) ; int visw = ((240 /8) + 1) - (visx1 - visx0); int visy0 = (tiley & 31); int visy1 = (( 256/8 ) < ( visy0 + ((160 /8) + 1) ) ? ( 256/8 ) : ( visy0 + ((160 /8) + 1) )) ; int vish = ((160 /8) + 1) - (visy1 - visy0); tilex &= ~31; tiley &= ~31; for (y = 0; y < 256/8; y++) { if ((y >= visy0 && y < visy1) || y < vish) { int realy; realy = tiley + y; if (y < vish) realy += 256/8; for (x = 0; x < 256/8; x++) { if ((x >= visx0 && x < visx1) || x < visw) { if (*tile & (1<<10)) { int realx; *tile &= ~(1<<10); realx = tilex + x; if (x < visw) realx += 256/8; map_render_tile(*tile & 0x3ff, realx, realy); } } else { *tile |= 1<<10; } tile++; } } else { for (x = 0; x < 256/8/2; x++) { *(uint32 *) tile |= (1<<10) | (1<<26); tile++; tile++; } } } } frames++; } } ---[ cut here ]--- >Fix: Don't use -fverbose-asm. >Release-Note: >Audit-Trail: >Unformatted:
reply other threads:[~2002-07-31 6:46 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=m17ZnAX-002sqFC@froody \ --to=gccbug@casualhacker.net \ --cc=gcc-gnats@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).