Index: kernel/arch/amd64/src/boot/multiboot.S
===================================================================
--- kernel/arch/amd64/src/boot/multiboot.S	(revision 15639eccad9c8be4e57a86cf372ff060b025baa3)
+++ kernel/arch/amd64/src/boot/multiboot.S	(revision 08f1a6d3635e2c0cb486edea301cd03918d24bb8)
@@ -38,4 +38,6 @@
 #include <arch/cpu.h>
 
+// TODO: most of this file can be rewritten in C
+
 #define START_STACK  (BOOT_OFFSET - BOOT_STACK_SIZE)
 
@@ -50,5 +52,5 @@
 
 .macro pm_status msg
-#ifdef CONFIG_EGA
+#if defined(CONFIG_EGA) && !defined(CONFIG_FB)
 	pushl %esi
 	movl \msg, %esi
@@ -67,6 +69,11 @@
 multiboot_header:
 	.long MULTIBOOT_HEADER_MAGIC
+#ifdef CONFIG_FB
 	.long MULTIBOOT_HEADER_FLAGS
 	.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)  /* checksum */
+#else
+	.long MULTIBOOT_HEADER_FLAGS_NOFB
+	.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS_NOFB)  /* checksum */
+#endif
 	.long multiboot_header
 	.long unmapped_start
@@ -74,4 +81,10 @@
 	.long 0
 	.long multiboot_image_start
+#ifdef CONFIG_FB
+	.long 0
+	.long CONFIG_BFB_WIDTH
+	.long CONFIG_BFB_HEIGHT
+	.long CONFIG_BFB_BPP
+#endif
 
 SYMBOL(multiboot_image_start)
@@ -158,6 +171,4 @@
 	sse2_supported:
 
-#include "vesa_prot.inc"
-
 	pm2_status $status_prot2
 
@@ -568,6 +579,4 @@
 
 	ret
-
-#include "vesa_real.inc"
 
 .section K_INI_PTLS, "aw", @progbits
@@ -708,10 +717,6 @@
 status_prot:
 	.asciz "[prot] "
-status_vesa_copy:
-	.asciz "[vesa_copy] "
 status_multiboot_cmdline:
 	.asciz "[multiboot_cmdline] "
-status_vesa_real:
-	.asciz "[vesa_real] "
 status_prot2:
 	.asciz "[prot2] "
Index: kernel/arch/amd64/src/boot/vesa_prot.inc
===================================================================
--- kernel/arch/amd64/src/boot/vesa_prot.inc	(revision 15639eccad9c8be4e57a86cf372ff060b025baa3)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../ia32/src/boot/vesa_prot.inc
Index: kernel/arch/amd64/src/boot/vesa_real.inc
===================================================================
--- kernel/arch/amd64/src/boot/vesa_real.inc	(revision 15639eccad9c8be4e57a86cf372ff060b025baa3)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../ia32/src/boot/vesa_real.inc
Index: kernel/arch/amd64/src/boot/vesa_ret.inc
===================================================================
--- kernel/arch/amd64/src/boot/vesa_ret.inc	(revision 15639eccad9c8be4e57a86cf372ff060b025baa3)
+++ 	(revision )
@@ -1,24 +1,0 @@
-.code32
-vesa_init_protected:
-	cli
-	cld
-
-	/* Initialize stack pointer */
-	movl $START_STACK, %esp
-
-	/* Kernel data + stack */
-	movw $GDT_SELECTOR(KDATA_DES), %cx
-	movw %cx, %es
-	movw %cx, %ds
-	movw %cx, %ss
-
-	/*
-	 * Simics seems to remove hidden part of GS on entering user mode
-	 * when _visible_ part of GS does not point to user-mode segment.
-	 */
-
-	movw $GDT_SELECTOR(UDATA_DES), %cx
-	movw %cx, %fs
-	movw %cx, %gs
-
-	jmpl $GDT_SELECTOR(KTEXT32_DES), $vesa_meeting_point
Index: kernel/arch/amd64/src/boot/vga323.pal
===================================================================
--- kernel/arch/amd64/src/boot/vga323.pal	(revision 15639eccad9c8be4e57a86cf372ff060b025baa3)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../ia32/src/boot/vga323.pal
Index: kernel/arch/ia32/src/boot/multiboot.S
===================================================================
--- kernel/arch/ia32/src/boot/multiboot.S	(revision 15639eccad9c8be4e57a86cf372ff060b025baa3)
+++ kernel/arch/ia32/src/boot/multiboot.S	(revision 08f1a6d3635e2c0cb486edea301cd03918d24bb8)
@@ -38,4 +38,6 @@
 #include <arch/cpu.h>
 
+// TODO: most of this file can be rewritten in C
+
 #define START_STACK  (BOOT_OFFSET - BOOT_STACK_SIZE)
 
@@ -50,5 +52,5 @@
 
 .macro pm_status msg
-#ifdef CONFIG_EGA
+#if defined(CONFIG_EGA) && !defined(CONFIG_FB)
 	pushl %esi
 	movl \msg, %esi
@@ -66,6 +68,11 @@
 multiboot_header:
 	.long MULTIBOOT_HEADER_MAGIC
+#ifdef CONFIG_FB
 	.long MULTIBOOT_HEADER_FLAGS
 	.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)  /* checksum */
+#else
+	.long MULTIBOOT_HEADER_FLAGS_NOFB
+	.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS_NOFB)  /* checksum */
+#endif
 	.long multiboot_header
 	.long unmapped_start
@@ -73,4 +80,10 @@
 	.long 0
 	.long multiboot_image_start
+#ifdef CONFIG_FB
+	.long 0
+	.long CONFIG_BFB_WIDTH
+	.long CONFIG_BFB_HEIGHT
+	.long CONFIG_BFB_BPP
+#endif
 
 SYMBOL(multiboot_image_start)
@@ -104,6 +117,4 @@
 
 	pm_status $status_prot
-
-#include "vesa_prot.inc"
 
 #ifndef PROCESSOR_i486
@@ -685,6 +696,4 @@
 	ret
 
-#include "vesa_real.inc"
-
 .section K_DATA_START, "aw", @progbits
 
@@ -720,10 +729,6 @@
 status_non_pse:
 	.asciz "[non_pse] "
-status_vesa_copy:
-	.asciz "[vesa_copy] "
 status_multiboot_cmdline:
 	.asciz "[multiboot_cmdline] "
-status_vesa_real:
-	.asciz "[vesa_real] "
 status_prot2:
 	.asciz "[prot2] "
Index: kernel/arch/ia32/src/boot/vesa_prot.inc
===================================================================
--- kernel/arch/ia32/src/boot/vesa_prot.inc	(revision 15639eccad9c8be4e57a86cf372ff060b025baa3)
+++ 	(revision )
@@ -1,127 +1,0 @@
-#ifdef CONFIG_FB
-
-#define MBINFO_BIT_CMDLINE      2
-#define MBINFO_OFFSET_CMDLINE   16
-
-	/* Copy real mode VESA initialization code */
-
-	pm_status $status_vesa_copy
-
-	mov $vesa_init, %esi
-	mov $VESA_INIT_SEGMENT << 4, %edi
-	mov $e_vesa_init - vesa_init, %ecx
-	rep movsb
-
-	/* Check for multiboot command line */
-
-	pm_status $status_multiboot_cmdline
-
-	mov multiboot_eax, %eax
-	cmp $MULTIBOOT_LOADER_MAGIC, %eax
-	jne no_cmdline
-
-	mov multiboot_ebx, %ebx
-	mov (%ebx), %eax
-	bt $MBINFO_BIT_CMDLINE, %eax
-	jnc no_cmdline
-
-	/* Skip the kernel path in command line */
-
-	mov MBINFO_OFFSET_CMDLINE(%ebx), %esi
-
-	skip_loop:
-		lodsb
-
-		cmp $0, %al
-		je no_cmdline
-
-		cmp $' ', %al
-		je skip_loop_done
-
-		jmp skip_loop
-	skip_loop_done:
-
-	space_loop:
-		mov (%esi), %al
-
-		cmp $0, %al
-		je no_cmdline
-
-		cmp $' ', %al
-		jne space_loop_done
-
-		inc %esi
-		jmp space_loop
-	space_loop_done:
-
-	/* Copy at most 23 characters from command line */
-
-	mov $VESA_INIT_SEGMENT << 4, %edi
-	add $default_mode - vesa_init, %edi
-	mov $23, %ecx
-
-	cmd_loop:
-		lodsb
-		stosb
-
-		cmp $0, %al
-		je cmd_loop_done
-
-		loop cmd_loop
-	cmd_loop_done:
-
-	/* Zero termination */
-
-	xor %eax, %eax
-	stosb
-
-	no_cmdline:
-
-	/* Jump to the real mode */
-
-	pm_status $status_vesa_real
-
-	mov $VESA_INIT_SEGMENT << 4, %edi
-	jmpl *%edi
-
-	vesa_meeting_point:
-		/* Returned back to protected mode */
-
-		/*
-		 * Initialize Global Descriptor Table and
-		 * Interrupt Descriptor Table registers
-		 */
-		lgdtl bootstrap_gdtr
-		lidtl bootstrap_idtr
-
-		movzx %ax, %ecx
-		mov %ecx, KA2PA(bfb_scanline)
-
-		shr $16, %eax
-		mov %ax, KA2PA(bfb_bpp)
-
-		movzx %bx, %ecx
-		mov %ecx, KA2PA(bfb_height)
-
-		shr $16, %ebx
-		mov %ebx, KA2PA(bfb_width)
-
-		mov %dl, KA2PA(bfb_green_pos)
-
-		shr $8, %edx
-		mov %dl, KA2PA(bfb_green_size)
-
-		shr $8, %edx
-		mov %dl, KA2PA(bfb_red_pos)
-
-		shr $8, %edx
-		mov %dl, KA2PA(bfb_red_size)
-
-		mov %esi, %edx
-		mov %dl, KA2PA(bfb_blue_pos)
-
-		shr $8, %edx
-		mov %dl, KA2PA(bfb_blue_size)
-
-		mov %edi, KA2PA(bfb_addr)
-#endif
Index: kernel/arch/ia32/src/boot/vesa_real.inc
===================================================================
--- kernel/arch/ia32/src/boot/vesa_real.inc	(revision 15639eccad9c8be4e57a86cf372ff060b025baa3)
+++ 	(revision )
@@ -1,415 +1,0 @@
-#ifdef CONFIG_FB
-
-#include <macros.h>
-
-#define VESA_INFO_SIZE 1024
-
-#define VESA_MODE_ATTRIBUTES_OFFSET  0
-#define VESA_MODE_LIST_PTR_OFFSET    14
-#define VESA_MODE_SCANLINE_OFFSET    16
-#define VESA_MODE_WIDTH_OFFSET       18
-#define VESA_MODE_HEIGHT_OFFSET      20
-#define VESA_MODE_BPP_OFFSET         25
-#define VESA_MODE_RED_MASK_OFFSET    31
-#define VESA_MODE_RED_POS_OFFSET     32
-#define VESA_MODE_GREEN_MASK_OFFSET  33
-#define VESA_MODE_GREEN_POS_OFFSET   34
-#define VESA_MODE_BLUE_MASK_OFFSET   35
-#define VESA_MODE_BLUE_POS_OFFSET    36
-#define VESA_MODE_PHADDR_OFFSET      40
-
-#define VESA_END_OF_MODES  0xffff
-
-#define VESA_OK  0x4f
-
-#define VESA_GET_INFO       0x4f00
-#define VESA_GET_MODE_INFO  0x4f01
-#define VESA_SET_MODE       0x4f02
-#define VESA_SET_PALETTE    0x4f09
-
-.code32
-vesa_init:
-	lidtl vesa_idtr
-
-	mov $GDT_SELECTOR(VESA_INIT_DATA_DES), %bx
-
-	mov %bx, %es
-	mov %bx, %fs
-	mov %bx, %gs
-	mov %bx, %ds
-	mov %bx, %ss
-
-	jmp $GDT_SELECTOR(VESA_INIT_CODE_DES), $vesa_init_real - vesa_init
-
-vesa_idtr:
-	.word 0x3ff
-	.long 0
-
-.code16
-vesa_init_real:
-	mov %cr0, %eax
-	and $~CR0_PE, %eax
-	mov %eax, %cr0
-
-	jmp $VESA_INIT_SEGMENT, $vesa_init_real2 - vesa_init
-
-vesa_init_real2:
-	mov $VESA_INIT_SEGMENT, %bx
-
-	mov %bx, %es
-	mov %bx, %fs
-	mov %bx, %gs
-	mov %bx, %ds
-	mov %bx, %ss
-
-	movl %esp, %eax
-	movl $0x0000fffc, %esp
-	movl $0x0000fffc, %ebp
-	pushl %eax
-
-	/* Parse default mode string */
-
-	mov $default_mode - vesa_init, %di
-	xor %eax, %eax
-	xor %ebx, %ebx
-
-	mov $8, %ecx
-	parse_width:
-		mov (%di), %al
-
-		/* Check for digit */
-
-		cmp $'0', %al
-		jb parse_width_done
-
-		cmp $'9', %al
-		ja parse_width_done
-
-		sub $'0', %al
-
-		/* Multiply default_width by 10 and add digit */
-
-		mov default_width - vesa_init, %bx
-		lea (%ebx, %ebx, 4), %ebx
-		shl $1, %ebx
-		add %ax, %bx
-		mov %bx, default_width - vesa_init
-
-		inc %di
-		loop parse_width
-	parse_width_done:
-
-	mov (%di), %al
-	cmp $0, %al
-	jz parse_done
-	inc %di
-
-	mov $8, %ecx
-	parse_height:
-		mov (%di), %al
-
-		/* Check for digit */
-
-		cmp $'0', %al
-		jb parse_height_done
-
-		cmp $'9', %al
-		ja parse_height_done
-
-		sub $'0', %al
-
-		/* Multiply default_height by 10 and add digit */
-
-		mov default_height - vesa_init, %bx
-		lea (%ebx, %ebx, 4), %ebx
-		shl $1, %ebx
-		add %ax, %bx
-		mov %bx, default_height - vesa_init
-
-		inc %di
-		loop parse_height
-	parse_height_done:
-
-	mov (%di), %al
-	cmp $0, %al
-	jz parse_done
-	inc %di
-
-	mov $4, %ecx
-	parse_bpp:
-		mov (%di), %al
-
-		/* Check for digit */
-
-		cmp $'0', %al
-		jb parse_bpp_done
-
-		cmp $'9', %al
-		ja parse_bpp_done
-
-		sub $'0', %al
-
-		/* Multiply default_bpp by 10 and add digit */
-
-		mov default_bpp - vesa_init, %bx
-		lea (%ebx, %ebx, 4), %ebx
-		shl $1, %ebx
-		add %ax, %bx
-		mov %bx, default_bpp - vesa_init
-
-		inc %di
-		loop parse_bpp
-	parse_bpp_done:
-
-	parse_done:
-
-	mov $VESA_GET_INFO, %ax
-	mov $e_vesa_init - vesa_init, %di
-	push %di
-	/* Write the "VBE2" signature into the info structure in order
-	 * to get proper mode information. The presence of "VBE2"
-	 * indicates two things:
-	 *
-	 *  - VBE controller information structure is expected to be
-	 *    512 bytes long instead of 256 bytes.
-	 *  - The BIOS should report VBE 3.0 information (potentially
-	 *    including non-standard modes in the mode list).
-	 */
-	movl $0x32454256, (%di)
-	int $0x10
-
-	pop %di
-	cmp $VESA_OK, %al
-	jnz no_mode
-
-	mov 2 + VESA_MODE_LIST_PTR_OFFSET(%di), %si
-	mov %si, %gs
-	mov VESA_MODE_LIST_PTR_OFFSET(%di), %si
-
-	add $VESA_INFO_SIZE, %di
-
-	next_mode:
-		/* Try next mode */
-
-		mov %gs:(%si), %cx
-		cmp $VESA_END_OF_MODES, %cx
-		je no_mode
-
-		inc %si
-		inc %si
-		push %cx
-		push %di
-		push %si
-		mov $VESA_GET_MODE_INFO, %ax
-		int $0x10
-
-		pop %si
-		pop %di
-		pop %cx
-		cmp $VESA_OK, %al
-		jne no_mode
-
-		/*
-		 * Check for proper attributes (supported,
-		 * color, graphics, linear framebuffer).
-		 */
-
-		mov VESA_MODE_ATTRIBUTES_OFFSET(%di), %ax
-		and $0x99, %ax
-		cmp $0x99, %ax
-		jne next_mode
-
-		/* Check for proper resolution */
-
-		mov default_width - vesa_init, %ax
-		cmp VESA_MODE_WIDTH_OFFSET(%di), %ax
-		jne next_mode
-
-		mov default_height - vesa_init, %ax
-		cmp VESA_MODE_HEIGHT_OFFSET(%di), %ax
-		jne next_mode
-
-		/* Check for proper bpp */
-
-		mov default_bpp - vesa_init, %al
-		cmp VESA_MODE_BPP_OFFSET(%di), %al
-		je set_mode
-
-		mov $24, %al
-		cmp default_bpp - vesa_init, %al
-		jne next_mode
-
-		/* For 24 bpp modes accept also 32 bit bpp */
-
-		mov $32, %al
-		cmp VESA_MODE_BPP_OFFSET(%di), %al
-		jne next_mode
-
-	set_mode:
-		mov %cx, %bx
-		or $0xc000, %bx
-		push %di
-		mov $VESA_SET_MODE, %ax
-		int $0x10
-
-		pop %di
-		cmp $VESA_OK, %al
-		jnz no_mode
-
-		/* Set 3:2:3 VGA palette */
-
-		mov VESA_MODE_BPP_OFFSET(%di), %al
-		cmp $8, %al
-		jnz vga_not_set
-
-		mov VESA_MODE_ATTRIBUTES_OFFSET(%di), %ax
-		push %di
-		mov $vga323 - vesa_init, %di
-		mov $0x100, %ecx
-
-		/* Test if VGA compatible registers are present */
-		bt $5, %ax
-		jnc vga_compat
-
-			/* Use VESA routine to set the palette */
-
-			mov $VESA_SET_PALETTE, %ax
-			xor %bl, %bl
-			xor %dx, %dx
-			int $0x10
-
-			cmp $0x00, %ah
-			je vga_not_compat
-
-		vga_compat:
-
-			/* Use VGA registers to set the palette */
-
-			movw $0x3c6, %dx  /* set palette mask */
-			movb $0xff, %al
-			outb %al, %dx
-
-			movw $0x3c8, %dx  /* first index to set */
-			xor %al, %al
-			outb %al, %dx
-
-			movw $0x3c9, %dx  /* data port */
-
-			vga_loop:
-				movb %es:2(%di), %al
-				outb %al, %dx
-
-				movb %es:1(%di), %al
-				outb %al, %dx
-
-				movb %es:(%di), %al
-				outb %al, %dx
-
-				addw $4, %di
-			loop vga_loop
-
-		vga_not_compat:
-
-			pop %di
-
-		vga_not_set:
-
-		/*
-		 * Store mode parameters:
-		 *  eax = bpp[16] scanline[16]
-		 *  ebx = width[16]  height[16]
-		 *  edx = red_mask[8] red_pos[8] green_mask[8] green_pos[8]
-		 *  esi = blue_mask[8] blue_pos[8]
-		 *  edi = linear frame buffer
-		 */
-
-		mov VESA_MODE_BPP_OFFSET(%di), %al
-		xor %ah, %ah
-		shl $16, %eax
-		mov VESA_MODE_SCANLINE_OFFSET(%di), %ax
-
-		mov VESA_MODE_WIDTH_OFFSET(%di), %bx
-		shl $16, %ebx
-		mov VESA_MODE_HEIGHT_OFFSET(%di), %bx
-
-		mov VESA_MODE_BLUE_MASK_OFFSET(%di), %dl
-		shl $8, %edx
-		mov VESA_MODE_BLUE_POS_OFFSET(%di), %dl
-		mov %edx, %esi
-
-		mov VESA_MODE_RED_MASK_OFFSET(%di), %dl
-		shl $8, %edx
-		mov VESA_MODE_RED_POS_OFFSET(%di), %dl
-
-		shl $8, %edx
-		mov VESA_MODE_GREEN_MASK_OFFSET(%di), %dl
-		shl $8, %edx
-		mov VESA_MODE_GREEN_POS_OFFSET(%di), %dl
-
-		mov VESA_MODE_PHADDR_OFFSET(%di), %edi
-
-		vesa_leave_real:
-
-			mov %cr0, %ecx
-			or $CR0_PE, %ecx
-			mov %ecx, %cr0
-
-			jmp vesa_leave_real2
-
-		vesa_leave_real2:
-
-			ljmpl $GDT_SELECTOR(KTEXT32_DES), $(vesa_init_protected - vesa_init + VESA_INIT_SEGMENT << 4)
-
-	no_mode:
-
-		/* No prefered mode found */
-
-		mov $0x111, %cx
-		push %di
-		push %cx
-		mov $VESA_GET_MODE_INFO, %ax
-		int $0x10
-
-		pop %cx
-		pop %di
-		cmp $VESA_OK, %al
-		jnz text_mode
-		jz set_mode  /* force relative jump */
-
-	text_mode:
-
-		/* Reset to EGA text mode (because of problems with VESA) */
-
-		mov $0x0003, %ax
-		int $0x10
-
-		xor %eax, %eax
-		xor %ebx, %ebx
-		xor %edx, %edx
-		xor %edi, %edi
-
-		jz vesa_leave_real  /* force relative jump */
-
-vga323:
-#include "vga323.pal"
-
-default_width:
-	.word 0
-
-default_height:
-	.word 0
-
-default_bpp:
-	.byte 0
-
-default_mode:
-	.ascii STRING(CONFIG_BFB_MODE)
-	.ascii "-"
-	.asciz STRING(CONFIG_BFB_BPP)
-	.fill 24
-
-#include "vesa_ret.inc"
-
-.align 4
-e_vesa_init:
-#endif
Index: kernel/arch/ia32/src/boot/vesa_ret.inc
===================================================================
--- kernel/arch/ia32/src/boot/vesa_ret.inc	(revision 15639eccad9c8be4e57a86cf372ff060b025baa3)
+++ 	(revision )
@@ -1,17 +1,0 @@
-.code32
-vesa_init_protected:
-	cli
-	cld
-
-	/* Initialize stack pointer */
-	movl $START_STACK, %esp
-
-	/* Kernel data + stack */
-	movw $GDT_SELECTOR(KDATA_DES), %cx
-	movw %cx, %es
-	movw %cx, %fs
-	movw %cx, %gs
-	movw %cx, %ds
-	movw %cx, %ss
-
-	jmpl $GDT_SELECTOR(KTEXT_DES), $vesa_meeting_point
Index: kernel/arch/ia32/src/boot/vga323.pal
===================================================================
--- kernel/arch/ia32/src/boot/vga323.pal	(revision 15639eccad9c8be4e57a86cf372ff060b025baa3)
+++ 	(revision )
@@ -1,256 +1,0 @@
-	.byte 0x3f, 0x3f, 0x3f, 0x00
-	.byte 0x36, 0x3f, 0x3f, 0x00
-	.byte 0x2d, 0x3f, 0x3f, 0x00
-	.byte 0x24, 0x3f, 0x3f, 0x00
-	.byte 0x1b, 0x3f, 0x3f, 0x00
-	.byte 0x12, 0x3f, 0x3f, 0x00
-	.byte 0x09, 0x3f, 0x3f, 0x00
-	.byte 0x00, 0x3f, 0x3f, 0x00
-	.byte 0x3f, 0x2a, 0x3f, 0x00
-	.byte 0x36, 0x2a, 0x3f, 0x00
-	.byte 0x2d, 0x2a, 0x3f, 0x00
-	.byte 0x24, 0x2a, 0x3f, 0x00
-	.byte 0x1b, 0x2a, 0x3f, 0x00
-	.byte 0x12, 0x2a, 0x3f, 0x00
-	.byte 0x09, 0x2a, 0x3f, 0x00
-	.byte 0x00, 0x2a, 0x3f, 0x00
-	.byte 0x3f, 0x15, 0x3f, 0x00
-	.byte 0x36, 0x15, 0x3f, 0x00
-	.byte 0x2d, 0x15, 0x3f, 0x00
-	.byte 0x24, 0x15, 0x3f, 0x00
-	.byte 0x1b, 0x15, 0x3f, 0x00
-	.byte 0x12, 0x15, 0x3f, 0x00
-	.byte 0x09, 0x15, 0x3f, 0x00
-	.byte 0x00, 0x15, 0x3f, 0x00
-	.byte 0x3f, 0x00, 0x3f, 0x00
-	.byte 0x36, 0x00, 0x3f, 0x00
-	.byte 0x2d, 0x00, 0x3f, 0x00
-	.byte 0x24, 0x00, 0x3f, 0x00
-	.byte 0x1b, 0x00, 0x3f, 0x00
-	.byte 0x12, 0x00, 0x3f, 0x00
-	.byte 0x09, 0x00, 0x3f, 0x00
-	.byte 0x00, 0x00, 0x3f, 0x00
-	.byte 0x3f, 0x3f, 0x36, 0x00
-	.byte 0x36, 0x3f, 0x36, 0x00
-	.byte 0x2d, 0x3f, 0x36, 0x00
-	.byte 0x24, 0x3f, 0x36, 0x00
-	.byte 0x1b, 0x3f, 0x36, 0x00
-	.byte 0x12, 0x3f, 0x36, 0x00
-	.byte 0x09, 0x3f, 0x36, 0x00
-	.byte 0x00, 0x3f, 0x36, 0x00
-	.byte 0x3f, 0x2a, 0x36, 0x00
-	.byte 0x36, 0x2a, 0x36, 0x00
-	.byte 0x2d, 0x2a, 0x36, 0x00
-	.byte 0x24, 0x2a, 0x36, 0x00
-	.byte 0x1b, 0x2a, 0x36, 0x00
-	.byte 0x12, 0x2a, 0x36, 0x00
-	.byte 0x09, 0x2a, 0x36, 0x00
-	.byte 0x00, 0x2a, 0x36, 0x00
-	.byte 0x3f, 0x15, 0x36, 0x00
-	.byte 0x36, 0x15, 0x36, 0x00
-	.byte 0x2d, 0x15, 0x36, 0x00
-	.byte 0x24, 0x15, 0x36, 0x00
-	.byte 0x1b, 0x15, 0x36, 0x00
-	.byte 0x12, 0x15, 0x36, 0x00
-	.byte 0x09, 0x15, 0x36, 0x00
-	.byte 0x00, 0x15, 0x36, 0x00
-	.byte 0x3f, 0x00, 0x36, 0x00
-	.byte 0x36, 0x00, 0x36, 0x00
-	.byte 0x2d, 0x00, 0x36, 0x00
-	.byte 0x24, 0x00, 0x36, 0x00
-	.byte 0x1b, 0x00, 0x36, 0x00
-	.byte 0x12, 0x00, 0x36, 0x00
-	.byte 0x09, 0x00, 0x36, 0x00
-	.byte 0x00, 0x00, 0x36, 0x00
-	.byte 0x3f, 0x3f, 0x2d, 0x00
-	.byte 0x36, 0x3f, 0x2d, 0x00
-	.byte 0x2d, 0x3f, 0x2d, 0x00
-	.byte 0x24, 0x3f, 0x2d, 0x00
-	.byte 0x1b, 0x3f, 0x2d, 0x00
-	.byte 0x12, 0x3f, 0x2d, 0x00
-	.byte 0x09, 0x3f, 0x2d, 0x00
-	.byte 0x00, 0x3f, 0x2d, 0x00
-	.byte 0x3f, 0x2a, 0x2d, 0x00
-	.byte 0x36, 0x2a, 0x2d, 0x00
-	.byte 0x2d, 0x2a, 0x2d, 0x00
-	.byte 0x24, 0x2a, 0x2d, 0x00
-	.byte 0x1b, 0x2a, 0x2d, 0x00
-	.byte 0x12, 0x2a, 0x2d, 0x00
-	.byte 0x09, 0x2a, 0x2d, 0x00
-	.byte 0x00, 0x2a, 0x2d, 0x00
-	.byte 0x3f, 0x15, 0x2d, 0x00
-	.byte 0x36, 0x15, 0x2d, 0x00
-	.byte 0x2d, 0x15, 0x2d, 0x00
-	.byte 0x24, 0x15, 0x2d, 0x00
-	.byte 0x1b, 0x15, 0x2d, 0x00
-	.byte 0x12, 0x15, 0x2d, 0x00
-	.byte 0x09, 0x15, 0x2d, 0x00
-	.byte 0x00, 0x15, 0x2d, 0x00
-	.byte 0x3f, 0x00, 0x2d, 0x00
-	.byte 0x36, 0x00, 0x2d, 0x00
-	.byte 0x2d, 0x00, 0x2d, 0x00
-	.byte 0x24, 0x00, 0x2d, 0x00
-	.byte 0x1b, 0x00, 0x2d, 0x00
-	.byte 0x12, 0x00, 0x2d, 0x00
-	.byte 0x09, 0x00, 0x2d, 0x00
-	.byte 0x00, 0x00, 0x2d, 0x00
-	.byte 0x3f, 0x3f, 0x24, 0x00
-	.byte 0x36, 0x3f, 0x24, 0x00
-	.byte 0x2d, 0x3f, 0x24, 0x00
-	.byte 0x24, 0x3f, 0x24, 0x00
-	.byte 0x1b, 0x3f, 0x24, 0x00
-	.byte 0x12, 0x3f, 0x24, 0x00
-	.byte 0x09, 0x3f, 0x24, 0x00
-	.byte 0x00, 0x3f, 0x24, 0x00
-	.byte 0x3f, 0x2a, 0x24, 0x00
-	.byte 0x36, 0x2a, 0x24, 0x00
-	.byte 0x2d, 0x2a, 0x24, 0x00
-	.byte 0x24, 0x2a, 0x24, 0x00
-	.byte 0x1b, 0x2a, 0x24, 0x00
-	.byte 0x12, 0x2a, 0x24, 0x00
-	.byte 0x09, 0x2a, 0x24, 0x00
-	.byte 0x00, 0x2a, 0x24, 0x00
-	.byte 0x3f, 0x15, 0x24, 0x00
-	.byte 0x36, 0x15, 0x24, 0x00
-	.byte 0x2d, 0x15, 0x24, 0x00
-	.byte 0x24, 0x15, 0x24, 0x00
-	.byte 0x1b, 0x15, 0x24, 0x00
-	.byte 0x12, 0x15, 0x24, 0x00
-	.byte 0x09, 0x15, 0x24, 0x00
-	.byte 0x00, 0x15, 0x24, 0x00
-	.byte 0x3f, 0x00, 0x24, 0x00
-	.byte 0x36, 0x00, 0x24, 0x00
-	.byte 0x2d, 0x00, 0x24, 0x00
-	.byte 0x24, 0x00, 0x24, 0x00
-	.byte 0x1b, 0x00, 0x24, 0x00
-	.byte 0x12, 0x00, 0x24, 0x00
-	.byte 0x09, 0x00, 0x24, 0x00
-	.byte 0x00, 0x00, 0x24, 0x00
-	.byte 0x3f, 0x3f, 0x1b, 0x00
-	.byte 0x36, 0x3f, 0x1b, 0x00
-	.byte 0x2d, 0x3f, 0x1b, 0x00
-	.byte 0x24, 0x3f, 0x1b, 0x00
-	.byte 0x1b, 0x3f, 0x1b, 0x00
-	.byte 0x12, 0x3f, 0x1b, 0x00
-	.byte 0x09, 0x3f, 0x1b, 0x00
-	.byte 0x00, 0x3f, 0x1b, 0x00
-	.byte 0x3f, 0x2a, 0x1b, 0x00
-	.byte 0x36, 0x2a, 0x1b, 0x00
-	.byte 0x2d, 0x2a, 0x1b, 0x00
-	.byte 0x24, 0x2a, 0x1b, 0x00
-	.byte 0x1b, 0x2a, 0x1b, 0x00
-	.byte 0x12, 0x2a, 0x1b, 0x00
-	.byte 0x09, 0x2a, 0x1b, 0x00
-	.byte 0x00, 0x2a, 0x1b, 0x00
-	.byte 0x3f, 0x15, 0x1b, 0x00
-	.byte 0x36, 0x15, 0x1b, 0x00
-	.byte 0x2d, 0x15, 0x1b, 0x00
-	.byte 0x24, 0x15, 0x1b, 0x00
-	.byte 0x1b, 0x15, 0x1b, 0x00
-	.byte 0x12, 0x15, 0x1b, 0x00
-	.byte 0x09, 0x15, 0x1b, 0x00
-	.byte 0x00, 0x15, 0x1b, 0x00
-	.byte 0x3f, 0x00, 0x1b, 0x00
-	.byte 0x36, 0x00, 0x1b, 0x00
-	.byte 0x2d, 0x00, 0x1b, 0x00
-	.byte 0x24, 0x00, 0x1b, 0x00
-	.byte 0x1b, 0x00, 0x1b, 0x00
-	.byte 0x12, 0x00, 0x1b, 0x00
-	.byte 0x09, 0x00, 0x1b, 0x00
-	.byte 0x00, 0x00, 0x1b, 0x00
-	.byte 0x3f, 0x3f, 0x12, 0x00
-	.byte 0x36, 0x3f, 0x12, 0x00
-	.byte 0x2d, 0x3f, 0x12, 0x00
-	.byte 0x24, 0x3f, 0x12, 0x00
-	.byte 0x1b, 0x3f, 0x12, 0x00
-	.byte 0x12, 0x3f, 0x12, 0x00
-	.byte 0x09, 0x3f, 0x12, 0x00
-	.byte 0x00, 0x3f, 0x12, 0x00
-	.byte 0x3f, 0x2a, 0x12, 0x00
-	.byte 0x36, 0x2a, 0x12, 0x00
-	.byte 0x2d, 0x2a, 0x12, 0x00
-	.byte 0x24, 0x2a, 0x12, 0x00
-	.byte 0x1b, 0x2a, 0x12, 0x00
-	.byte 0x12, 0x2a, 0x12, 0x00
-	.byte 0x09, 0x2a, 0x12, 0x00
-	.byte 0x00, 0x2a, 0x12, 0x00
-	.byte 0x3f, 0x15, 0x12, 0x00
-	.byte 0x36, 0x15, 0x12, 0x00
-	.byte 0x2d, 0x15, 0x12, 0x00
-	.byte 0x24, 0x15, 0x12, 0x00
-	.byte 0x1b, 0x15, 0x12, 0x00
-	.byte 0x12, 0x15, 0x12, 0x00
-	.byte 0x09, 0x15, 0x12, 0x00
-	.byte 0x00, 0x15, 0x12, 0x00
-	.byte 0x3f, 0x00, 0x12, 0x00
-	.byte 0x36, 0x00, 0x12, 0x00
-	.byte 0x2d, 0x00, 0x12, 0x00
-	.byte 0x24, 0x00, 0x12, 0x00
-	.byte 0x1b, 0x00, 0x12, 0x00
-	.byte 0x12, 0x00, 0x12, 0x00
-	.byte 0x09, 0x00, 0x12, 0x00
-	.byte 0x00, 0x00, 0x12, 0x00
-	.byte 0x3f, 0x3f, 0x09, 0x00
-	.byte 0x36, 0x3f, 0x09, 0x00
-	.byte 0x2d, 0x3f, 0x09, 0x00
-	.byte 0x24, 0x3f, 0x09, 0x00
-	.byte 0x1b, 0x3f, 0x09, 0x00
-	.byte 0x12, 0x3f, 0x09, 0x00
-	.byte 0x09, 0x3f, 0x09, 0x00
-	.byte 0x00, 0x3f, 0x09, 0x00
-	.byte 0x3f, 0x2a, 0x09, 0x00
-	.byte 0x36, 0x2a, 0x09, 0x00
-	.byte 0x2d, 0x2a, 0x09, 0x00
-	.byte 0x24, 0x2a, 0x09, 0x00
-	.byte 0x1b, 0x2a, 0x09, 0x00
-	.byte 0x12, 0x2a, 0x09, 0x00
-	.byte 0x09, 0x2a, 0x09, 0x00
-	.byte 0x00, 0x2a, 0x09, 0x00
-	.byte 0x3f, 0x15, 0x09, 0x00
-	.byte 0x36, 0x15, 0x09, 0x00
-	.byte 0x2d, 0x15, 0x09, 0x00
-	.byte 0x24, 0x15, 0x09, 0x00
-	.byte 0x1b, 0x15, 0x09, 0x00
-	.byte 0x12, 0x15, 0x09, 0x00
-	.byte 0x09, 0x15, 0x09, 0x00
-	.byte 0x00, 0x15, 0x09, 0x00
-	.byte 0x3f, 0x00, 0x09, 0x00
-	.byte 0x36, 0x00, 0x09, 0x00
-	.byte 0x2d, 0x00, 0x09, 0x00
-	.byte 0x24, 0x00, 0x09, 0x00
-	.byte 0x1b, 0x00, 0x09, 0x00
-	.byte 0x12, 0x00, 0x09, 0x00
-	.byte 0x09, 0x00, 0x09, 0x00
-	.byte 0x00, 0x00, 0x09, 0x00
-	.byte 0x3f, 0x3f, 0x00, 0x00
-	.byte 0x36, 0x3f, 0x00, 0x00
-	.byte 0x2d, 0x3f, 0x00, 0x00
-	.byte 0x24, 0x3f, 0x00, 0x00
-	.byte 0x1b, 0x3f, 0x00, 0x00
-	.byte 0x12, 0x3f, 0x00, 0x00
-	.byte 0x09, 0x3f, 0x00, 0x00
-	.byte 0x00, 0x3f, 0x00, 0x00
-	.byte 0x3f, 0x2a, 0x00, 0x00
-	.byte 0x36, 0x2a, 0x00, 0x00
-	.byte 0x2d, 0x2a, 0x00, 0x00
-	.byte 0x24, 0x2a, 0x00, 0x00
-	.byte 0x1b, 0x2a, 0x00, 0x00
-	.byte 0x12, 0x2a, 0x00, 0x00
-	.byte 0x09, 0x2a, 0x00, 0x00
-	.byte 0x00, 0x2a, 0x00, 0x00
-	.byte 0x3f, 0x15, 0x00, 0x00
-	.byte 0x36, 0x15, 0x00, 0x00
-	.byte 0x2d, 0x15, 0x00, 0x00
-	.byte 0x24, 0x15, 0x00, 0x00
-	.byte 0x1b, 0x15, 0x00, 0x00
-	.byte 0x12, 0x15, 0x00, 0x00
-	.byte 0x09, 0x15, 0x00, 0x00
-	.byte 0x00, 0x15, 0x00, 0x00
-	.byte 0x3f, 0x00, 0x00, 0x00
-	.byte 0x36, 0x00, 0x00, 0x00
-	.byte 0x2d, 0x00, 0x00, 0x00
-	.byte 0x24, 0x00, 0x00, 0x00
-	.byte 0x1b, 0x00, 0x00, 0x00
-	.byte 0x12, 0x00, 0x00, 0x00
-	.byte 0x09, 0x00, 0x00, 0x00
-	.byte 0x00, 0x00, 0x00, 0x00
