diff options
Diffstat (limited to 'instructables/cube_pc')
23 files changed, 11852 insertions, 0 deletions
| diff --git a/instructables/cube_pc/3d.c b/instructables/cube_pc/3d.c new file mode 100644 index 0000000..e1ddeaf --- /dev/null +++ b/instructables/cube_pc/3d.c @@ -0,0 +1,344 @@ +#include "draw.h" +#include "draw_3d.h" +#include "3d.h" +#include <math.h> +#include <stdlib.h> +#include <stdint.h> +#include <stdio.h> +#include <string.h> + +void linespin (int iterations, int delay) +{ +	float top_x, top_y, top_z, bot_x, bot_y, bot_z, sin_base; +	float center_x, center_y; + +	center_x = 4; +	center_y = 4; + +	int i, z; +	for (i=0;i<iterations;i++) +	{ + +		//printf("Sin base %f \n",sin_base); + +		for (z = 0; z < 8; z++) +		{ + +		sin_base = (float)i/50 + (float)z/(10+(7*sin((float)i/200))); + +		top_x = center_x + sin(sin_base)*5; +		top_y = center_x + cos(sin_base)*5; +		//top_z = center_x + cos(sin_base/100)*2.5; + +		bot_x = center_x + sin(sin_base+3.14)*10; +		bot_y = center_x + cos(sin_base+3.14)*10; +		//bot_z = 7-top_z; +		 +		bot_z = z; +		top_z = z; + +		//setvoxel((int) top_x, (int) top_y, 7); +		//setvoxel((int) bot_x, (int) bot_y, 0); + +		//printf("P1: %i %i %i P2: %i %i %i \n", (int) top_x, (int) top_y, 7, (int) bot_x, (int) bot_y, 0); + +		//line_3d((int) top_x, (int) top_y, (int) top_z, (int) bot_x, (int) bot_y, (int) bot_z); +		line_3d((int) top_z, (int) top_x, (int) top_y, (int) bot_z, (int) bot_x, (int) bot_y); +		} + +		delay_ms(120); +		fill(0x00); +	} + +} + +void sinelines (int iterations, int delay) +{ +	int i,x; + +	float left, right, sine_base, x_dividor,ripple_height; + +	for (i=0; i<iterations; i++) +	{ +		for (x=0; x<8 ;x++) +		{ +			x_dividor = 2 + sin((float)i/100)+1; +			ripple_height = 3 + (sin((float)i/200)+1)*6; + +			sine_base = (float) i/40 + (float) x/x_dividor; + +			left = 4 + sin(sine_base)*ripple_height; +			right = 4 + cos(sine_base)*ripple_height; +			right = 7-left; + +			//printf("%i %i \n", (int) left, (int) right); + +			line_3d(0-3, x, (int) left, 7+3, x, (int) right); +			//line_3d((int) right, 7, x); +		} +	 +	delay_ms(delay); +	fill(0x00); +	} +} + +// Display a sine wave running out from the center of the cube. +void ripples (int iterations, int delay) +{ +	float origin_x, origin_y, distance, height, ripple_interval; +	int x,y,i; + +	fill(0x00); + +	for (i=0;i<iterations;i++) +	{ +		for (x=0;x<8;x++) +		{ +			for (y=0;y<8;y++) +			{ +				distance = distance2d(3.5,3.5,x,y)/9.899495*8; +				//distance = distance2d(3.5,3.5,x,y); +				ripple_interval =1.3; +				height = 4+sin(distance/ripple_interval+(float) i/50)*4; + +				setvoxel(x,y,(int) height);	 +			} +		} +		delay_ms(delay); +		fill(0x00); +	} +} + +void sidewaves (int iterations, int delay) +{ +	float origin_x, origin_y, distance, height, ripple_interval; +	int x,y,i; + +	fill(0x00); + +	for (i=0;i<iterations;i++) +	{ + +		origin_x = 3.5+sin((float)i/500)*4; +		origin_y = 3.5+cos((float)i/500)*4; +		 +		for (x=0;x<8;x++) +		{ +			for (y=0;y<8;y++) +			{ +				distance = distance2d(origin_x,origin_y,x,y)/9.899495*8; +				ripple_interval =2; +				height = 4+sin(distance/ripple_interval+(float) i/50)*3.6; + +				setvoxel(x,y,(int) height); +				setvoxel(x,y,(int) height); +					 +			} +		} + +		delay_ms(delay); +		fill(0x00); +	} +} + +void spheremove (int iterations, int delay) +{ +	 +	fill(0x00); + +	float origin_x, origin_y, origin_z, distance, diameter; + +	origin_x = 0; +	origin_y = 3.5; +	origin_z = 3.5; + +	diameter = 3; + +	int x, y, z, i; + +	for (i=0; i<iterations; i++) +	{ +		origin_x = 3.5+sin((float)i/50)*2.5; +		origin_y = 3.5+cos((float)i/50)*2.5; +		origin_z = 3.5+cos((float)i/30)*2; + +		diameter = 2+sin((float)i/150); + +		for (x=0; x<8; x++) +		{ +			for (y=0; y<8; y++) +			{ +				for (z=0; z<8; z++) +				{ +					distance = distance3d(x,y,z, origin_x, origin_y, origin_z); +					//printf("Distance: %f \n", distance); + +					if (distance>diameter && distance<diameter+1) +					{ +						setvoxel(x,y,z); +					} +				} +			} +		} + +		delay_ms(delay); +		fill(0x00); +	} + +} + +void fireworks (int iterations, int n, int delay) +{ +	fill(0x00); + +	int i,f,e; + +	float origin_x = 3; +	float origin_y = 3; +	float origin_z = 3; + +	int rand_y, rand_x, rand_z; + +	float slowrate, gravity; + +	// Particles and their position, x,y,z and their movement, dx, dy, dz +	float particles[n][6]; + +	for (i=0; i<iterations; i++) +	{ + +		origin_x = rand()%4; +		origin_y = rand()%4; +		origin_z = rand()%2; +		origin_z +=5; +        origin_x +=2; +        origin_y +=2; + +		// shoot a particle up in the air +		for (e=0;e<origin_z;e++) +		{ +			setvoxel(origin_x,origin_y,e); +			delay_ms(600+500*e); +			fill(0x00); +		} + +		// Fill particle array +		for (f=0; f<n; f++) +		{ +			// Position +			particles[f][0] = origin_x; +			particles[f][1] = origin_y; +			particles[f][2] = origin_z; +			 +			rand_x = rand()%200; +			rand_y = rand()%200; +			rand_z = rand()%200; + +			// Movement +			particles[f][3] = 1-(float)rand_x/100; // dx +			particles[f][4] = 1-(float)rand_y/100; // dy +			particles[f][5] = 1-(float)rand_z/100; // dz +		} + +		// explode +		for (e=0; e<25; e++) +		{ +			slowrate = 1+tan((e+0.1)/20)*10; +			 +			gravity = tan((e+0.1)/20)/2; + +			for (f=0; f<n; f++) +			{ +				particles[f][0] += particles[f][3]/slowrate; +				particles[f][1] += particles[f][4]/slowrate; +				particles[f][2] += particles[f][5]/slowrate; +				particles[f][2] -= gravity; + +				setvoxel(particles[f][0],particles[f][1],particles[f][2]); + + +			} + +			delay_ms(delay); +			fill(0x00); +		} + +	} + +} + +void effect_rotate_random_pixels (int iterations, int delay, int pixels) +{ +	vertex points[pixels]; +	vertex rotated[pixels]; + +	float fy, fx, fz; +	int x,y,z; +	int i,p; + +	float rot_x = 0; +	float rot_y = 0; +	float rot_z = 0; +	vertex cube_center = {3.5, 3.5, 3.5}; + +	for (i=0; i<pixels; i++) +	{ +		x = rand()%1200-200;	 +		y = rand()%1200-200;	 +		z = rand()%1200-200; +		fx = (float)x/100; +		fy = (float)y/100; +		fz = (float)z/100; + +		points[i].x = fx; +		points[i].y = fy; +		points[i].z = fz; + +		setvoxel((int)points[i].x, (int)points[i].y, (int)points[i].z); +		delay_ms(100); +	} +	delay_ms(10000); + +	for (i=0; i<iterations; i++) +	{ +		rot_x = (float)i/75; +		rot_y = (float)i/150; +		rot_z = (float)i/200; + +		for (p=0; p<pixels; p++) +		{ +			rotated[p] = point_rotate_around_point (points[p], cube_center, rot_x, rot_y, rot_z); +		} + +		fill(0x00); +		for (p=0; p<pixels; p++) +		{ +			setvoxel((int)rotated[p].x, (int)rotated[p].y, (int)rotated[p].z); +		} + +		delay_ms(delay); +	} + +	fill(0x00); +} + + +float distance2d (float x1, float y1, float x2, float y2) +{	 +	float dist; +	dist = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)); + +	return dist; +} + +float distance3d (float x1, float y1, float z1, float x2, float y2, float z2) +{	 +	float dist; +	dist = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) + (z1-z2)*(z1-z2)); + +	return dist; +} + + + + diff --git a/instructables/cube_pc/3d.h b/instructables/cube_pc/3d.h new file mode 100644 index 0000000..61beaca --- /dev/null +++ b/instructables/cube_pc/3d.h @@ -0,0 +1,16 @@ +#ifndef EFFECT3D_H +#define EFFECT3D_H + + +void effect_rotate_random_pixels (int iterations, int delay, int pixels); + +void linespin (int iterations, int delay); + +void ripples (int iterations, int delay); +float distance2d (float x1, float y1, float x2, float y2); +float distance3d (float x1, float y1, float z1, float x2, float y2, float z2); + + +//typedef struct {float x; float y; float z;} vertex; + +#endif diff --git a/instructables/cube_pc/Makefile b/instructables/cube_pc/Makefile new file mode 100644 index 0000000..7063fee --- /dev/null +++ b/instructables/cube_pc/Makefile @@ -0,0 +1,4 @@ + +cube: main.c cube.c draw.c effect.c font.c 3d.c draw_3d.c gameoflife.c launch_effect.c +	gcc -lpthread -lm -o cube main.c cube.c draw.c effect.c font.c 3d.c draw_3d.c gameoflife.c launch_effect.c + diff --git a/instructables/cube_pc/cube b/instructables/cube_pc/cubeBinary files differ new file mode 100755 index 0000000..0439329 --- /dev/null +++ b/instructables/cube_pc/cube diff --git a/instructables/cube_pc/cube.c b/instructables/cube_pc/cube.c new file mode 100644 index 0000000..e0066e4 --- /dev/null +++ b/instructables/cube_pc/cube.c @@ -0,0 +1,83 @@ +#include <stdio.h> +#include <stdlib.h> +#include "cube.h" +#include <termios.h> +#include <fcntl.h> +#include <strings.h> + +void cube_push (unsigned char data[8][8]) +{ +	int x,y,i; + +	i= 0; + +	unsigned char buffer[200]; + +	buffer[i++] = 0xff; // escape +	buffer[i++] = 0x00; // reset to 0,0 + +	for (x=0;x<8;x++) +	{ +		for (y=0;y<8;y++) +		{ +			buffer[i++] = data[x][y]; +			if (data[x][y] == 0xff) +			{ +				buffer[i++] = data[x][y]; +			} +		} +	} + +	write(tty,&buffer,i); +} + +int cube_init (const char* tty_path) +{ + +	//FILE *ftty; + +	//ftty = fopen("/dev/ttyUSB0","a"); + + +	struct termios io; + +	//char *tty_path = "/dev/ttyUSB0"; +	//char *tty_path = "/dev/ttyUSB1"; + +	//tty = open(tty_path, O_RDWR | O_NOCTTY | O_NDELAY); // <-  ORIGINAL +	tty = open(tty_path, O_RDWR); + + +	if (tty <0) {perror(tty_path); exit(-1); } + +	bzero(&io, sizeof(io)); +	//io.c_cflag = B2400 | CRTSCTS | CS8 | CLOCAL | CREAD; +	//io.c_cflag = B2400 | CRTSCTS | PARENB | CS8 | CLOCAL | CREAD; +	io.c_cflag = B38400 | PARENB | CS8 | CLOCAL | CREAD; +	//io.c_cflag = B19200 | PARENB | CS8 | CLOCAL | CREAD; +	io.c_iflag = IGNPAR; +	io.c_oflag = 0; + +	// set input mode (non-canonical, no echo,...) +	io.c_lflag &= ~OPOST; +	//io.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); + +	io.c_cc[VTIME]    = 0;   // inter-character timer unused +	io.c_cc[VMIN]     = 0;   // blocking read until 5 chars received + +	// Flush buffer +	tcflush(tty, TCIFLUSH); + +    //cfsetospeed(&io, B1000000); +	//cfsetispeed(&io, B1000000); + +	// write config to tty +	tcsetattr(tty,TCSANOW,&io); + + +	//fcntl(tty, F_SETFL, 0); + + + +	return 1; +} diff --git a/instructables/cube_pc/cube.h b/instructables/cube_pc/cube.h new file mode 100644 index 0000000..bac730e --- /dev/null +++ b/instructables/cube_pc/cube.h @@ -0,0 +1,25 @@ + +#define AXIS_X 0x78 +#define AXIS_Y 0x79 +#define AXIS_Z 0x7a + +#define CUBE_SIZE 8 + +int LED_PORT; +int LED_RED; +int LED_GREEN; + +volatile unsigned char cube[8][8]; +volatile unsigned char rs232_cube[8][8]; +unsigned char fb[8][8]; + +int tty; + +// FILE *ftty; + +// func dsfs +void cube_putchar (unsigned char data); +int cube_init (const char* tty_path); +void cube_push (unsigned char data[8][8]); + + diff --git a/instructables/cube_pc/draw.c b/instructables/cube_pc/draw.c new file mode 100644 index 0000000..549d109 --- /dev/null +++ b/instructables/cube_pc/draw.c @@ -0,0 +1,682 @@ +#include "draw.h" +#include "draw_3d.h" +#include <string.h> + + +void setvoxel(int x, int y, int z) +{ +	if (inrange(x,y,z)) +		cube[y][z] |= (1 << x); + +} + +void tmpsetvoxel(int x, int y, int z) +{ +	if (inrange(x,y,z)) +		fb[y][z] |= (1 << x); +} + +void clrvoxel(int x, int y, int z) +{ +	if (inrange(x,y,z)) +		cube[y][z] &= ~(1 << x); +} + +void tmpclrvoxel(int x, int y, int z) +{ +	if (inrange(x,y,z)) +		fb[y][z] &= ~(1 << x); +} + +// This function validates that we are drawing inside the cube. +unsigned char inrange(int x, int y, int z) +{ +	if (x >= 0 && x < 8 && y >= 0 && y < 8 && z >= 0 && z < 8) +	{ +		return 0x01; +	} else +	{ +		// One of the coordinates was outside the cube. +		return 0x00; +	} +} + +// Get the current status of a voxel +unsigned char getvoxel(int x, int y, int z) +{ +	if (inrange(x,y,z)) +	{ +		if (cube[y][z] & (1 << x)) +		{ +			return 0x01; +		} else +		{ +			return 0x00; +		} +	} else +	{ +		return 0x00; +	} +} + +void altervoxel(int x, int y, int z, int state) +{ +	if (state == 1) +	{ +		setvoxel(x,y,z); +	} else +	{ +		clrvoxel(x,y,z); +	} +} + +// Flip the state of a voxel. +// If the voxel is 1, its turned into a 0, and vice versa. +void flpvoxel(int x, int y, int z) +{ +	if (inrange(x, y, z)) +		cube[y][z] ^= (1 << x); +} + +// Makes sure x1 is alwas smaller than x2 +void argorder(int ix1, int ix2, int *ox1, int *ox2) +{ +	if (ix1>ix2) +	{ +		int tmp; +		tmp = ix1; +		ix1= ix2; +		ix2 = tmp; +	} +	*ox1 = ix1; +	*ox2 = ix2; +} + +void setplane_z (int z) +{ +	int i; +	if (z>=0 && z<8) +	{ +		for (i=0;i<8;i++) +			cube[i][z] = 0xff; +	} +} + + +void clrplane_z (int z) +{ +	int i; +	if (z>=0 && z<8) +	{ +		for (i=0;i<8;i++) +			cube[i][z] = 0x00; +	} +} + +void setplane_x (int x) +{ +	int z; +	int y; +	if (x>=0 && x<8) +	{ +		for (z=0;z<8;z++) +		{ +			for (y=0;y<8;y++) +			{ +				cube[y][z] |= (1 << x); +			} +		} +	} +} + +void clrplane_x (int x) +{ +	int z; +	int y; +	if (x>=0 && x<8) +	{ +		for (z=0;z<8;z++) +		{ +			for (y=0;y<8;y++) +			{ +				cube[y][z] &= ~(1 << x); +			} +		} +	} +} + +void setplane_y (int y) +{ +	int z; +	if (y>=0 && y<8) +	{ +		for (z=0;z<8;z++) +			cube[y][z] = 0xff; +	} +} + +void clrplane_y (int y) +{ +	int z; +	if (y>=0 && y<8) +	{ +		for (z=0;z<8;z++) +			cube[y][z] = 0x00; +	} +} + + +void fill (unsigned char pattern) +{ +	int z; +	int y; +	for (z=0;z<8;z++) +	{ +		for (y=0;y<8;y++) +		{ +			cube[y][z] = pattern; +		} +	} +} + +void tmpfill (unsigned char pattern) +{ +	int z; +	int y; +	for (z=0;z<8;z++) +	{ +		for (y=0;y<8;y++) +		{ +			fb[z][y] = pattern; +		} +	} +} + + +void box_filled(int x1, int y1, int z1, int x2, int y2, int z2) +{ +	int iy; +	int iz; + +	argorder(x1, x2, &x1, &x2); +	argorder(y1, y2, &y1, &y2); +	argorder(z1, z2, &z1, &z2); + +	for (iz=z1;iz<=z2;iz++) +	{ +		for (iy=y1;iy<=y2;iy++) +		{ +			cube[iy][iz] |= byteline(x1,x2); +		} +	} + +} + +void box_walls(int x1, int y1, int z1, int x2, int y2, int z2) +{ +	int iy; +	int iz; + +	argorder(x1, x2, &x1, &x2); +	argorder(y1, y2, &y1, &y2); +	argorder(z1, z2, &z1, &z2); + +	for (iz=z1;iz<=z2;iz++) +	{ +		for (iy=y1;iy<=y2;iy++) +		{ +			if (iy == y1 || iy == y2 || iz == z1 || iz == z2) +			{ +				cube[iy][iz] = byteline(x1,x2); +			} else +			{ +				cube[iy][iz] |= ((0x01 << x1) | (0x01 << x2)); +			} +		} +	} + +} + + +void box_wireframe(int x1, int y1, int z1, int x2, int y2, int z2) +{ +	int iy; +	int iz; + +	argorder(x1, x2, &x1, &x2); +	argorder(y1, y2, &y1, &y2); +	argorder(z1, z2, &z1, &z2); + +	// Lines along X axis +	cube[y1][z1] = byteline(x1,x2); +	cube[y1][z2] = byteline(x1,x2); +	cube[y2][z1] = byteline(x1,x2); +	cube[y2][z2] = byteline(x1,x2); + +	// Lines along Y axis +	for (iy=y1;iy<=y2;iy++) +	{ +		setvoxel(x1,iy,z1); +		setvoxel(x1,iy,z2); +		setvoxel(x2,iy,z1); +		setvoxel(x2,iy,z2); +	} + +	// Lines along Z axis +	for (iz=z1;iz<=z2;iz++) +	{ +		setvoxel(x1,y1,iz); +		setvoxel(x1,y2,iz); +		setvoxel(x2,y1,iz); +		setvoxel(x2,y2,iz); +	} + +} + +// Returns a byte with a row of 1's drawn in it. +// byteline(2,5) gives 0b00111100 +char byteline (int start, int end) +{ +	return ((0xff<<start) & ~(0xff<<(end+1))); +} + +char flipbyte (char byte) +{ +	char flop = 0x00; + +	flop = (flop & 0b11111110) | (0b00000001 & (byte >> 7)); +	flop = (flop & 0b11111101) | (0b00000010 & (byte >> 5)); +	flop = (flop & 0b11111011) | (0b00000100 & (byte >> 3)); +	flop = (flop & 0b11110111) | (0b00001000 & (byte >> 1)); +	flop = (flop & 0b11101111) | (0b00010000 & (byte << 1)); +	flop = (flop & 0b11011111) | (0b00100000 & (byte << 3)); +	flop = (flop & 0b10111111) | (0b01000000 & (byte << 5)); +	flop = (flop & 0b01111111) | (0b10000000 & (byte << 7)); +	return flop; +} + +void line(int x1, int y1, int z1, int x2, int y2, int z2) +{ +	float xy;	// how many voxels do we move on the y axis for each step on the x axis +	float xz;	// how many voxels do we move on the y axis for each step on the x axis +	unsigned char x,y,z; +	unsigned char lasty,lastz; + +	// We always want to draw the line from x=0 to x=7. +	// If x1 is bigget than x2, we need to flip all the values. +	if (x1>x2) +	{ +		int tmp; +		tmp = x2; x2 = x1; x1 = tmp; +		tmp = y2; y2 = y1; y1 = tmp; +		tmp = z2; z2 = z1; z1 = tmp; +	} + + +	if (y1>y2) +	{ +		xy = (float)(y1-y2)/(float)(x2-x1); +		lasty = y2; +	} else +	{ +		xy = (float)(y2-y1)/(float)(x2-x1); +		lasty = y1; +	} + +	if (z1>z2) +	{ +		xz = (float)(z1-z2)/(float)(x2-x1); +		lastz = z2; +	} else +	{ +		xz = (float)(z2-z1)/(float)(x2-x1); +		lastz = z1; +	} + + + +	for (x = x1; x<=x2;x++) +	{ +		y = (xy*(x-x1))+y1; +		z = (xz*(x-x1))+z1; +		setvoxel(x,y,z); +	} + +} + +void delay_ms(int x) +{ +    memcpy(rs232_cube, cube, 64); +	usleep(x*80); +} + +// Copies the contents of fb (temp cube buffer) into the rendering buffer +void tmp2cube (void) +{ +	int y, z; +	for (z=0;z<8;z++) +	{ +		for (y=0;y<8;y++) +		{ +			cube[y][z] = fb[y][z]; +		} +	} +} + +void shift (char axis, int direction) +{ +	int i, x ,y; +	int ii, iii; +	int state; + +	for (i = 0; i < 8; i++) +	{ +		if (direction == -1) +		{ +			ii = i; +		} else +		{ +			ii = (7-i); +		} + + +		for (x = 0; x < 8; x++) +		{ +			for (y = 0; y < 8; y++) +			{ +				if (direction == -1) +				{ +					iii = ii+1; +				} else +				{ +					iii = ii-1; +				} + +				if (axis == AXIS_Z) +				{ +					state = getvoxel(x,y,iii); +					altervoxel(x,y,ii,state); +				} + +				if (axis == AXIS_Y) +				{ +					state = getvoxel(x,iii,y); +					altervoxel(x,ii,y,state); +				} + +				if (axis == AXIS_X) +				{ +					state = getvoxel(iii,y,x); +					altervoxel(ii,x,y,state); +				} +			} +		} +	} + +	if (direction == -1) +	{ +		i = 7; +	} else +	{ +		i = 0; +	} + +	for (x = 0; x < 8; x++) +	{ +		for (y = 0; y < 8; y++) +		{ +			if (axis == AXIS_Z) +				clrvoxel(x,y,i); + +			if (axis == AXIS_Y) +				clrvoxel(x,i,y); + +			if (axis == AXIS_X) +				clrvoxel(i,y,x); +		} +	} +} + + + +void line_3d (int x1, int y1, int z1, int x2, int y2, int z2) +{ +	int i, dx, dy, dz, l, m, n, x_inc, y_inc, z_inc, +	err_1, err_2, dx2, dy2, dz2; +	int pixel[3]; +	pixel[0] = x1; +	pixel[1] = y1; +	pixel[2] = z1; +	dx = x2 - x1; +	dy = y2 - y1; +	dz = z2 - z1; +	x_inc = (dx < 0) ? -1 : 1; +	l = abs(dx); +	y_inc = (dy < 0) ? -1 : 1; +	m = abs(dy); +	z_inc = (dz < 0) ? -1 : 1; +	n = abs(dz); +	dx2 = l << 1; +	dy2 = m << 1; +	dz2 = n << 1; +	if ((l >= m) && (l >= n)) { +	err_1 = dy2 - l; +	err_2 = dz2 - l; +	for (i = 0; i < l; i++) { +	//PUT_PIXEL(pixel); +	setvoxel(pixel[0],pixel[1],pixel[2]); +	//printf("Setting %i %i %i \n", pixel[0],pixel[1],pixel[2]); +	if (err_1 > 0) { +	pixel[1] += y_inc; +	err_1 -= dx2; +	} +	if (err_2 > 0) { +	pixel[2] += z_inc; +	err_2 -= dx2; +	} +	err_1 += dy2; +	err_2 += dz2; +	pixel[0] += x_inc; +	} +	} else if ((m >= l) && (m >= n)) { +	err_1 = dx2 - m; +	err_2 = dz2 - m; +	for (i = 0; i < m; i++) { +	//PUT_PIXEL(pixel); +	setvoxel(pixel[0],pixel[1],pixel[2]); +	//printf("Setting %i %i %i \n", pixel[0],pixel[1],pixel[2]); +	if (err_1 > 0) { +	pixel[0] += x_inc; +	err_1 -= dy2; +	} +	if (err_2 > 0) { +	pixel[2] += z_inc; +	err_2 -= dy2; +	} +	err_1 += dx2; +	err_2 += dz2; +	pixel[1] += y_inc; +	} +	} else { +	err_1 = dy2 - n; +	err_2 = dx2 - n; +	for (i = 0; i < n; i++) { +	setvoxel(pixel[0],pixel[1],pixel[2]); +	//printf("Setting %i %i %i \n", pixel[0],pixel[1],pixel[2]); +	//PUT_PIXEL(pixel); +	if (err_1 > 0) { +	pixel[1] += y_inc; +	err_1 -= dz2; +	} +	if (err_2 > 0) { +	pixel[0] += x_inc; +	err_2 -= dz2; +	} +	err_1 += dy2; +	err_2 += dx2; +	pixel[2] += z_inc; +	} +	} +	setvoxel(pixel[0],pixel[1],pixel[2]); +	//printf("Setting %i %i %i \n", pixel[0],pixel[1],pixel[2]); +	//PUT_PIXEL(pixel); +} + + +void line_3d_float (vertex point1, vertex point2) +{ +	float x1, y1, z1, x2, y2, z2; + +	x1 = point1.x; +	y1 = point1.y; +	z1 = point1.z; +	x2 = point2.x; +	y2 = point2.y; +	z2 = point2.z; + + +	float i; +	float dx, dy, dz, l, m, n, x_inc, y_inc, z_inc, +	err_1, err_2, dx2, dy2, dz2; +	float pixel[3]; +	pixel[0] = x1; +	pixel[1] = y1; +	pixel[2] = z1; +	dx = x2 - x1; +	dy = y2 - y1; +	dz = z2 - z1; +	x_inc = (dx < 0) ? -1 : 1; +	l = abs(dx); +	y_inc = (dy < 0) ? -1 : 1; +	m = abs(dy); +	z_inc = (dz < 0) ? -1 : 1; +	n = abs(dz); +	dx2 = l*l; +	dy2 = m*m; +	dz2 = n*n; +	if ((l >= m) && (l >= n)) { +		err_1 = dy2 - l; +		err_2 = dz2 - l; +		for (i = 0; i < l; i++) { +			//PUT_PIXEL(pixel); +			setvoxel((int)pixel[0],(int)pixel[1],(int)pixel[2]); +			//printf("Setting %i %i %i \n", pixel[0],pixel[1],pixel[2]); +			if (err_1 > 0) { +				pixel[1] += y_inc; +				err_1 -= dx2; +			} +			if (err_2 > 0) { +				pixel[2] += z_inc; +				err_2 -= dx2; +			} +			err_1 += dy2; +			err_2 += dz2; +			pixel[0] += x_inc; +		} +	} else if ((m >= l) && (m >= n)) { +		err_1 = dx2 - m; +		err_2 = dz2 - m; +		for (i = 0; i < m; i++) { +			//PUT_PIXEL(pixel); +			//setvoxel(pixel[0]/scale,pixel[1]/scale,pixel[2]/scale); +			setvoxel((int)pixel[0],(int)pixel[1],(int)pixel[2]); +			//printf("Setting %i %i %i \n", pixel[0],pixel[1],pixel[2]); +			if (err_1 > 0) { +				pixel[0] += x_inc; +				err_1 -= dy2; +			} +			if (err_2 > 0) { +				pixel[2] += z_inc; +				err_2 -= dy2; +			} +			err_1 += dx2; +			err_2 += dz2; +			pixel[1] += y_inc; +		} +	} else { +		err_1 = dy2 - n; +		err_2 = dx2 - n; +		for (i = 0; i < n; i++) { +			//setvoxel(pixel[0]/scale,pixel[1]/scale,pixel[2]/scale); +			setvoxel((int)pixel[0],(int)pixel[1],(int)pixel[2]); +			//printf("Setting %i %i %i \n", pixel[0],pixel[1],pixel[2]); +			//PUT_PIXEL(pixel); +			if (err_1 > 0) { +				pixel[1] += y_inc; +				err_1 -= dz2; +			} +			if (err_2 > 0) { +				pixel[0] += x_inc; +				err_2 -= dz2; +			} +			err_1 += dy2; +			err_2 += dx2; +			pixel[2] += z_inc; +		} +	} +	//setvoxel(pixel[0]/scale,pixel[1]/scale,pixel[2]/scale); +			setvoxel((int)pixel[0],(int)pixel[1],(int)pixel[2]); +	//printf("Setting %i %i %i \n", pixel[0],pixel[1],pixel[2]); +	//PUT_PIXEL(pixel); +} + +// Flip the cube 180 degrees along the x axis +void mirror_x (void) +{ +    unsigned char buffer[8][8]; +    unsigned char y,z; + +    memcpy(buffer, cube, 64); // copy the current cube into a buffer. + +    fill(0x00); + +    for (z=0; z<8; z++) +    { +        for (y=0; y<8; y++) +        { +            cube[y][z] = flipbyte(buffer[y][z]); +        } +    } +} +// Flip the cube 180 degrees along the y axis. +void mirror_y (void) +{ +    unsigned char buffer[8][8]; +    unsigned char x,y,z; + +    memcpy(buffer, cube, 64); // copy the current cube into a buffer. + +    fill(0x00); +    for (z=0; z<8; z++) +    { +        for (y=0; y<8; y++) +        { +            for (x=0; x<8; x++) +            { +                if (buffer[y][z] & (0x01 << x)) +                    setvoxel(x,7-y,z); +            } +        } +    } + +} +// flip the cube 180 degrees along the z axis +void mirror_z (void) +{ +    unsigned char buffer[8][8]; +    unsigned char z, y; + +    memcpy(buffer, cube, 64); // copy the current cube into a buffer. + +    for (y=0; y<8; y++) +    { +        for (z=0; z<8; z++) +        { +            cube[7-z][y] = buffer[y][z]; +        } +    } +} + + + + diff --git a/instructables/cube_pc/draw.h b/instructables/cube_pc/draw.h new file mode 100644 index 0000000..a1c7e85 --- /dev/null +++ b/instructables/cube_pc/draw.h @@ -0,0 +1,52 @@ +#ifndef DRAW_H +#define DRAW_H + + +#include "cube.h" + +extern const unsigned char font[480]; + + + +void delay_ms (int x); + + +void setvoxel(int x, int y, int z); +void clrvoxel(int x, int y, int z); +void tmpsetvoxel(int x, int y, int z); +void tmpclrvoxel(int x, int y, int z); + +unsigned char inrange(int x, int y, int z); +unsigned char getvoxel(int x, int y, int z); +void flpvoxel(int x, int y, int z); + +void altervoxel(int x, int y, int z, int state); +void setplane_z(int z); +void clrplane_z(int z); +void setplane_x(int x); +void clrplane_x(int x); +void setplane_y(int y); +void clrplane_y(int y); +void setline_z(int x, int y, int z1, int z2); +void setline_x(int z, int y, int x1, int x2); +void setline_y(int z, int x, int y1, int y2); +void clrline_z(int x, int y, int z1, int z2); +void clrline_x(int z, int y, int x1, int x2); +void clrline_y(int z, int x, int y1, int y2); +void fill(unsigned char pattern); +void tmpfill(unsigned char pattern); +void line(int x1, int y1, int z1, int x2, int y2, int z2); +void drawchar(char chr, int offset, int layer); +char flipbyte(char byte); +void charfly (char chr, int direction, char axis, int mode, int delay); +void strfly (char * str, int direction, char axis, int mode, int delay, int pause); +void box_filled(int x1, int y1, int z1, int x2, int y2, int z2); +void box_walls(int x1, int y1, int z1, int x2, int y2, int z2); +void box_wireframe(int x1, int y1, int z1, int x2, int y2, int z2); +char byteline (int start, int end); + +void tmp2cube (void); +void shift (char axis, int direction); + +#endif + diff --git a/instructables/cube_pc/draw.lst b/instructables/cube_pc/draw.lst new file mode 100644 index 0000000..8881094 --- /dev/null +++ b/instructables/cube_pc/draw.lst @@ -0,0 +1,2472 @@ +   1               		.file	"draw.c" +   2               	__SREG__ = 0x3f +   3               	__SP_H__ = 0x3e +   4               	__SP_L__ = 0x3d +   5               	__CCP__  = 0x34 +   6               	__tmp_reg__ = 0 +   7               	__zero_reg__ = 1 +   8               		.global __do_copy_data +   9               		.global __do_clear_bss +  17               	.Ltext0: +  18               	.global	setvoxel +  20               	setvoxel: +  21               	.LFB2: +  22               	.LM1: +  23               	.LVL0: +  24               	/* prologue: function */ +  25               	/* frame size = 0 */ +  26 0000 DC01      		movw r26,r24 +  27               	.LBB94: +  28               	.LBB95: +  29               	.LM2: +  30 0002 8830      		cpi r24,8 +  31 0004 9105      		cpc r25,__zero_reg__ +  32 0006 00F4      		brsh .L3 +  33 0008 77FD      		sbrc r23,7 +  34 000a 00C0      		rjmp .L3 +  35 000c 6830      		cpi r22,8 +  36 000e 7105      		cpc r23,__zero_reg__ +  37 0010 04F4      		brge .L3 +  38 0012 57FD      		sbrc r21,7 +  39 0014 00C0      		rjmp .L3 +  40 0016 4830      		cpi r20,8 +  41 0018 5105      		cpc r21,__zero_reg__ +  42 001a 04F4      		brge .L3 +  43               	.LBE95: +  44               	.LBE94: +  45               	.LM3: +  46 001c FA01      		movw r30,r20 +  47 001e 83E0      		ldi r24,3 +  48 0020 EE0F      	1:	lsl r30 +  49 0022 FF1F      		rol r31 +  50 0024 8A95      		dec r24 +  51 0026 01F4      		brne 1b +  52               	.LVL1: +  53 0028 E60F      		add r30,r22 +  54 002a F71F      		adc r31,r23 +  55 002c E050      		subi r30,lo8(-(cube)) +  56 002e F040      		sbci r31,hi8(-(cube)) +  57 0030 2081      		ld r18,Z +  58 0032 81E0      		ldi r24,lo8(1) +  59 0034 90E0      		ldi r25,hi8(1) +  60 0036 00C0      		rjmp 2f +  61 0038 880F      	1:	lsl r24 +  62 003a 991F      		rol r25 +  63 003c AA95      	2:	dec r26 +  64 003e 02F4      		brpl 1b +  65 0040 282B      		or r18,r24 +  66 0042 2083      		st Z,r18 +  67               	.LVL2: +  68               	.L3: +  69 0044 0895      		ret +  70               	.LFE2: +  72               	.global	tmpsetvoxel +  74               	tmpsetvoxel: +  75               	.LFB3: +  76               	.LM4: +  77               	.LVL3: +  78               	/* prologue: function */ +  79               	/* frame size = 0 */ +  80 0046 DC01      		movw r26,r24 +  81               	.LBB96: +  82               	.LBB97: +  83               	.LM5: +  84 0048 8830      		cpi r24,8 +  85 004a 9105      		cpc r25,__zero_reg__ +  86 004c 00F4      		brsh .L6 +  87 004e 77FD      		sbrc r23,7 +  88 0050 00C0      		rjmp .L6 +  89 0052 6830      		cpi r22,8 +  90 0054 7105      		cpc r23,__zero_reg__ +  91 0056 04F4      		brge .L6 +  92 0058 57FD      		sbrc r21,7 +  93 005a 00C0      		rjmp .L6 +  94 005c 4830      		cpi r20,8 +  95 005e 5105      		cpc r21,__zero_reg__ +  96 0060 04F4      		brge .L6 +  97               	.LBE97: +  98               	.LBE96: +  99               	.LM6: + 100 0062 FA01      		movw r30,r20 + 101 0064 93E0      		ldi r25,3 + 102 0066 EE0F      	1:	lsl r30 + 103 0068 FF1F      		rol r31 + 104 006a 9A95      		dec r25 + 105 006c 01F4      		brne 1b + 106 006e E60F      		add r30,r22 + 107 0070 F71F      		adc r31,r23 + 108 0072 E050      		subi r30,lo8(-(fb)) + 109 0074 F040      		sbci r31,hi8(-(fb)) + 110 0076 2081      		ld r18,Z + 111 0078 81E0      		ldi r24,lo8(1) + 112 007a 90E0      		ldi r25,hi8(1) + 113               	.LVL4: + 114 007c 00C0      		rjmp 2f + 115 007e 880F      	1:	lsl r24 + 116 0080 991F      		rol r25 + 117 0082 AA95      	2:	dec r26 + 118 0084 02F4      		brpl 1b + 119 0086 282B      		or r18,r24 + 120 0088 2083      		st Z,r18 + 121               	.LVL5: + 122               	.L6: + 123 008a 0895      		ret + 124               	.LFE3: + 126               	.global	clrvoxel + 128               	clrvoxel: + 129               	.LFB4: + 130               	.LM7: + 131               	.LVL6: + 132               	/* prologue: function */ + 133               	/* frame size = 0 */ + 134 008c DC01      		movw r26,r24 + 135               	.LBB98: + 136               	.LBB99: + 137               	.LM8: + 138 008e 8830      		cpi r24,8 + 139 0090 9105      		cpc r25,__zero_reg__ + 140 0092 00F4      		brsh .L9 + 141 0094 77FD      		sbrc r23,7 + 142 0096 00C0      		rjmp .L9 + 143 0098 6830      		cpi r22,8 + 144 009a 7105      		cpc r23,__zero_reg__ + 145 009c 04F4      		brge .L9 + 146 009e 57FD      		sbrc r21,7 + 147 00a0 00C0      		rjmp .L9 + 148 00a2 4830      		cpi r20,8 + 149 00a4 5105      		cpc r21,__zero_reg__ + 150 00a6 04F4      		brge .L9 + 151               	.LBE99: + 152               	.LBE98: + 153               	.LM9: + 154 00a8 FA01      		movw r30,r20 + 155 00aa 23E0      		ldi r18,3 + 156 00ac EE0F      	1:	lsl r30 + 157 00ae FF1F      		rol r31 + 158 00b0 2A95      		dec r18 + 159 00b2 01F4      		brne 1b + 160 00b4 E60F      		add r30,r22 + 161 00b6 F71F      		adc r31,r23 + 162 00b8 E050      		subi r30,lo8(-(cube)) + 163 00ba F040      		sbci r31,hi8(-(cube)) + 164 00bc 2081      		ld r18,Z + 165 00be 81E0      		ldi r24,lo8(1) + 166 00c0 90E0      		ldi r25,hi8(1) + 167               	.LVL7: + 168 00c2 00C0      		rjmp 2f + 169 00c4 880F      	1:	lsl r24 + 170 00c6 991F      		rol r25 + 171 00c8 AA95      	2:	dec r26 + 172 00ca 02F4      		brpl 1b + 173 00cc 8095      		com r24 + 174 00ce 8223      		and r24,r18 + 175 00d0 8083      		st Z,r24 + 176               	.LVL8: + 177               	.L9: + 178 00d2 0895      		ret + 179               	.LFE4: + 181               	.global	tmpclrvoxel + 183               	tmpclrvoxel: + 184               	.LFB5: + 185               	.LM10: + 186               	.LVL9: + 187               	/* prologue: function */ + 188               	/* frame size = 0 */ + 189 00d4 DC01      		movw r26,r24 + 190               	.LBB100: + 191               	.LBB101: + 192               	.LM11: + 193 00d6 8830      		cpi r24,8 + 194 00d8 9105      		cpc r25,__zero_reg__ + 195 00da 00F4      		brsh .L12 + 196 00dc 77FD      		sbrc r23,7 + 197 00de 00C0      		rjmp .L12 + 198 00e0 6830      		cpi r22,8 + 199 00e2 7105      		cpc r23,__zero_reg__ + 200 00e4 04F4      		brge .L12 + 201 00e6 57FD      		sbrc r21,7 + 202 00e8 00C0      		rjmp .L12 + 203 00ea 4830      		cpi r20,8 + 204 00ec 5105      		cpc r21,__zero_reg__ + 205 00ee 04F4      		brge .L12 + 206               	.LBE101: + 207               	.LBE100: + 208               	.LM12: + 209 00f0 FA01      		movw r30,r20 + 210 00f2 33E0      		ldi r19,3 + 211 00f4 EE0F      	1:	lsl r30 + 212 00f6 FF1F      		rol r31 + 213 00f8 3A95      		dec r19 + 214 00fa 01F4      		brne 1b + 215 00fc E60F      		add r30,r22 + 216 00fe F71F      		adc r31,r23 + 217 0100 E050      		subi r30,lo8(-(fb)) + 218 0102 F040      		sbci r31,hi8(-(fb)) + 219 0104 2081      		ld r18,Z + 220 0106 81E0      		ldi r24,lo8(1) + 221 0108 90E0      		ldi r25,hi8(1) + 222               	.LVL10: + 223 010a 00C0      		rjmp 2f + 224 010c 880F      	1:	lsl r24 + 225 010e 991F      		rol r25 + 226 0110 AA95      	2:	dec r26 + 227 0112 02F4      		brpl 1b + 228 0114 8095      		com r24 + 229 0116 8223      		and r24,r18 + 230 0118 8083      		st Z,r24 + 231               	.LVL11: + 232               	.L12: + 233 011a 0895      		ret + 234               	.LFE5: + 236               	.global	inrange + 238               	inrange: + 239               	.LFB6: + 240               	.LM13: + 241               	.LVL12: + 242               	/* prologue: function */ + 243               	/* frame size = 0 */ + 244               	.LM14: + 245 011c 0897      		sbiw r24,8 + 246 011e 00F4      		brsh .L14 + 247 0120 77FD      		sbrc r23,7 + 248 0122 00C0      		rjmp .L14 + 249 0124 6830      		cpi r22,8 + 250 0126 7105      		cpc r23,__zero_reg__ + 251 0128 04F4      		brge .L14 + 252 012a 57FD      		sbrc r21,7 + 253 012c 00C0      		rjmp .L14 + 254 012e 90E0      		ldi r25,lo8(0) + 255 0130 4830      		cpi r20,8 + 256 0132 5105      		cpc r21,__zero_reg__ + 257 0134 04F0      		brlt .L15 + 258 0136 91E0      		ldi r25,lo8(1) + 259               	.L15: + 260 0138 81E0      		ldi r24,lo8(1) + 261               	.LVL13: + 262 013a 9827      		eor r25,r24 + 263 013c 00C0      		rjmp .L16 + 264               	.LVL14: + 265               	.L14: + 266 013e 90E0      		ldi r25,lo8(0) + 267               	.L16: + 268               	.LM15: + 269 0140 892F      		mov r24,r25 + 270               	.LVL15: + 271               	/* epilogue start */ + 272 0142 0895      		ret + 273               	.LFE6: + 275               	.global	getvoxel + 277               	getvoxel: + 278               	.LFB7: + 279               	.LM16: + 280               	.LVL16: + 281               	/* prologue: function */ + 282               	/* frame size = 0 */ + 283 0144 9C01      		movw r18,r24 + 284 0146 FA01      		movw r30,r20 + 285               	.LBB102: + 286               	.LBB103: + 287               	.LM17: + 288 0148 8830      		cpi r24,8 + 289 014a 9105      		cpc r25,__zero_reg__ + 290 014c 00F4      		brsh .L19 + 291               	.LVL17: + 292 014e 77FD      		sbrc r23,7 + 293 0150 00C0      		rjmp .L19 + 294 0152 6830      		cpi r22,8 + 295 0154 7105      		cpc r23,__zero_reg__ + 296 0156 04F4      		brge .L19 + 297 0158 57FD      		sbrc r21,7 + 298 015a 00C0      		rjmp .L19 + 299               	.LVL18: + 300 015c 4830      		cpi r20,8 + 301 015e 5105      		cpc r21,__zero_reg__ + 302 0160 04F4      		brge .L19 + 303               	.LBE103: + 304               	.LBE102: + 305               	.LM18: + 306 0162 43E0      		ldi r20,3 + 307 0164 EE0F      	1:	lsl r30 + 308 0166 FF1F      		rol r31 + 309 0168 4A95      		dec r20 + 310 016a 01F4      		brne 1b + 311               	.LVL19: + 312 016c E60F      		add r30,r22 + 313 016e F71F      		adc r31,r23 + 314 0170 E050      		subi r30,lo8(-(cube)) + 315 0172 F040      		sbci r31,hi8(-(cube)) + 316 0174 8081      		ld r24,Z + 317               	.LVL20: + 318 0176 90E0      		ldi r25,lo8(0) + 319 0178 00C0      		rjmp 2f + 320 017a 9595      	1:	asr r25 + 321 017c 8795      		ror r24 + 322 017e 2A95      	2:	dec r18 + 323 0180 02F4      		brpl 1b + 324 0182 8170      		andi r24,lo8(1) + 325 0184 0895      		ret + 326               	.LVL21: + 327               	.L19: + 328 0186 80E0      		ldi r24,lo8(0) + 329               	.LVL22: + 330               	.LM19: + 331 0188 0895      		ret + 332               	.LFE7: + 334               	.global	altervoxel + 336               	altervoxel: + 337               	.LFB8: + 338               	.LM20: + 339               	.LVL23: + 340               	/* prologue: function */ + 341               	/* frame size = 0 */ + 342 018a DC01      		movw r26,r24 + 343               	.LM21: + 344 018c 2130      		cpi r18,1 + 345 018e 3105      		cpc r19,__zero_reg__ + 346 0190 01F4      		brne .L23 + 347               	.LVL24: + 348               	.LBB104: + 349               	.LBB105: + 350               	.LBB106: + 351               	.LBB107: + 352               	.LM22: + 353 0192 8830      		cpi r24,8 + 354 0194 9105      		cpc r25,__zero_reg__ + 355 0196 00F4      		brsh .L25 + 356               	.LVL25: + 357 0198 77FD      		sbrc r23,7 + 358 019a 00C0      		rjmp .L25 + 359 019c 6830      		cpi r22,8 + 360 019e 7105      		cpc r23,__zero_reg__ + 361 01a0 04F4      		brge .L25 + 362 01a2 57FD      		sbrc r21,7 + 363 01a4 00C0      		rjmp .L25 + 364 01a6 4830      		cpi r20,8 + 365 01a8 5105      		cpc r21,__zero_reg__ + 366 01aa 04F4      		brge .L25 + 367               	.LBE107: + 368               	.LBE106: + 369               	.LM23: + 370 01ac FA01      		movw r30,r20 + 371 01ae 53E0      		ldi r21,3 + 372 01b0 EE0F      	1:	lsl r30 + 373 01b2 FF1F      		rol r31 + 374 01b4 5A95      		dec r21 + 375 01b6 01F4      		brne 1b + 376 01b8 E60F      		add r30,r22 + 377 01ba F71F      		adc r31,r23 + 378 01bc E050      		subi r30,lo8(-(cube)) + 379 01be F040      		sbci r31,hi8(-(cube)) + 380 01c0 8081      		ld r24,Z + 381               	.LVL26: + 382 01c2 00C0      		rjmp 2f + 383 01c4 220F      	1:	lsl r18 + 384 01c6 331F      		rol r19 + 385 01c8 AA95      	2:	dec r26 + 386 01ca 02F4      		brpl 1b + 387               	.LVL27: + 388 01cc 822B      		or r24,r18 + 389 01ce 8083      		st Z,r24 + 390 01d0 0895      		ret + 391               	.LVL28: + 392               	.L23: + 393               	.LBE105: + 394               	.LBE104: + 395               	.LM24: + 396 01d2 0E94 0000 		call clrvoxel + 397               	.LVL29: + 398               	.L25: + 399 01d6 0895      		ret + 400               	.LFE8: + 402               	.global	flpvoxel + 404               	flpvoxel: + 405               	.LFB9: + 406               	.LM25: + 407               	.LVL30: + 408               	/* prologue: function */ + 409               	/* frame size = 0 */ + 410 01d8 DC01      		movw r26,r24 + 411               	.LBB108: + 412               	.LBB109: + 413               	.LM26: + 414 01da 8830      		cpi r24,8 + 415 01dc 9105      		cpc r25,__zero_reg__ + 416 01de 00F4      		brsh .L28 + 417 01e0 77FD      		sbrc r23,7 + 418 01e2 00C0      		rjmp .L28 + 419 01e4 6830      		cpi r22,8 + 420 01e6 7105      		cpc r23,__zero_reg__ + 421 01e8 04F4      		brge .L28 + 422 01ea 57FD      		sbrc r21,7 + 423 01ec 00C0      		rjmp .L28 + 424 01ee 4830      		cpi r20,8 + 425 01f0 5105      		cpc r21,__zero_reg__ + 426 01f2 04F4      		brge .L28 + 427               	.LBE109: + 428               	.LBE108: + 429               	.LM27: + 430 01f4 FA01      		movw r30,r20 + 431 01f6 B3E0      		ldi r27,3 + 432 01f8 EE0F      	1:	lsl r30 + 433 01fa FF1F      		rol r31 + 434 01fc BA95      		dec r27 + 435 01fe 01F4      		brne 1b + 436 0200 E60F      		add r30,r22 + 437 0202 F71F      		adc r31,r23 + 438 0204 E050      		subi r30,lo8(-(cube)) + 439 0206 F040      		sbci r31,hi8(-(cube)) + 440 0208 2081      		ld r18,Z + 441 020a 81E0      		ldi r24,lo8(1) + 442 020c 90E0      		ldi r25,hi8(1) + 443               	.LVL31: + 444 020e 00C0      		rjmp 2f + 445 0210 880F      	1:	lsl r24 + 446 0212 991F      		rol r25 + 447 0214 AA95      	2:	dec r26 + 448 0216 02F4      		brpl 1b + 449 0218 2827      		eor r18,r24 + 450 021a 2083      		st Z,r18 + 451               	.LVL32: + 452               	.L28: + 453 021c 0895      		ret + 454               	.LFE9: + 456               	.global	argorder + 458               	argorder: + 459               	.LFB10: + 460               	.LM28: + 461               	.LVL33: + 462 021e CF93      		push r28 + 463 0220 DF93      		push r29 + 464               	/* prologue: function */ + 465               	/* frame size = 0 */ + 466 0222 FC01      		movw r30,r24 + 467 0224 DA01      		movw r26,r20 + 468 0226 E901      		movw r28,r18 + 469               	.LM29: + 470 0228 6817      		cp r22,r24 + 471 022a 7907      		cpc r23,r25 + 472 022c 04F4      		brge .L30 + 473               	.LVL34: + 474 022e CB01      		movw r24,r22 + 475               	.LVL35: + 476 0230 BF01      		movw r22,r30 + 477               	.LVL36: + 478 0232 FC01      		movw r30,r24 + 479               	.LVL37: + 480               	.L30: + 481               	.LM30: + 482 0234 ED93      		st X+,r30 + 483 0236 FC93      		st X,r31 + 484               	.LM31: + 485 0238 7983      		std Y+1,r23 + 486 023a 6883      		st Y,r22 + 487               	/* epilogue start */ + 488               	.LM32: + 489 023c DF91      		pop r29 + 490 023e CF91      		pop r28 + 491               	.LVL38: + 492 0240 0895      		ret + 493               	.LFE10: + 495               	.global	setplane_z + 497               	setplane_z: + 498               	.LFB11: + 499               	.LM33: + 500               	.LVL39: + 501               	/* prologue: function */ + 502               	/* frame size = 0 */ + 503               	.LM34: + 504 0242 8830      		cpi r24,8 + 505 0244 9105      		cpc r25,__zero_reg__ + 506 0246 00F4      		brsh .L35 + 507 0248 20E0      		ldi r18,lo8(0) + 508 024a 30E0      		ldi r19,hi8(0) + 509               	.LVL40: + 510               	.LM35: + 511 024c 43E0      		ldi r20,3 + 512 024e 880F      	1:	lsl r24 + 513 0250 991F      		rol r25 + 514 0252 4A95      		dec r20 + 515 0254 01F4      		brne 1b + 516               	.LVL41: + 517 0256 4FEF      		ldi r20,lo8(-1) + 518               	.L34: + 519 0258 FC01      		movw r30,r24 + 520 025a E20F      		add r30,r18 + 521 025c F31F      		adc r31,r19 + 522 025e E050      		subi r30,lo8(-(cube)) + 523 0260 F040      		sbci r31,hi8(-(cube)) + 524 0262 4083      		st Z,r20 + 525               	.LM36: + 526 0264 2F5F      		subi r18,lo8(-(1)) + 527 0266 3F4F      		sbci r19,hi8(-(1)) + 528 0268 2830      		cpi r18,8 + 529 026a 3105      		cpc r19,__zero_reg__ + 530 026c 01F4      		brne .L34 + 531               	.LVL42: + 532               	.L35: + 533 026e 0895      		ret + 534               	.LFE11: + 536               	.global	clrplane_z + 538               	clrplane_z: + 539               	.LFB12: + 540               	.LM37: + 541               	.LVL43: + 542               	/* prologue: function */ + 543               	/* frame size = 0 */ + 544               	.LM38: + 545 0270 8830      		cpi r24,8 + 546 0272 9105      		cpc r25,__zero_reg__ + 547 0274 00F4      		brsh .L40 + 548 0276 20E0      		ldi r18,lo8(0) + 549 0278 30E0      		ldi r19,hi8(0) + 550               	.LVL44: + 551               	.LM39: + 552 027a 53E0      		ldi r21,3 + 553 027c 880F      	1:	lsl r24 + 554 027e 991F      		rol r25 + 555 0280 5A95      		dec r21 + 556 0282 01F4      		brne 1b + 557               	.LVL45: + 558               	.L39: + 559 0284 FC01      		movw r30,r24 + 560 0286 E20F      		add r30,r18 + 561 0288 F31F      		adc r31,r19 + 562 028a E050      		subi r30,lo8(-(cube)) + 563 028c F040      		sbci r31,hi8(-(cube)) + 564 028e 1082      		st Z,__zero_reg__ + 565               	.LM40: + 566 0290 2F5F      		subi r18,lo8(-(1)) + 567 0292 3F4F      		sbci r19,hi8(-(1)) + 568 0294 2830      		cpi r18,8 + 569 0296 3105      		cpc r19,__zero_reg__ + 570 0298 01F4      		brne .L39 + 571               	.LVL46: + 572               	.L40: + 573 029a 0895      		ret + 574               	.LFE12: + 576               	.global	setplane_x + 578               	setplane_x: + 579               	.LFB13: + 580               	.LM41: + 581               	.LVL47: + 582               	/* prologue: function */ + 583               	/* frame size = 0 */ + 584 029c 9C01      		movw r18,r24 + 585               	.LM42: + 586 029e 8830      		cpi r24,8 + 587 02a0 9105      		cpc r25,__zero_reg__ + 588 02a2 00F4      		brsh .L46 + 589               	.LM43: + 590 02a4 81E0      		ldi r24,lo8(1) + 591 02a6 90E0      		ldi r25,hi8(1) + 592               	.LVL48: + 593 02a8 00C0      		rjmp 2f + 594 02aa 880F      	1:	lsl r24 + 595 02ac 991F      		rol r25 + 596 02ae 2A95      	2:	dec r18 + 597 02b0 02F4      		brpl 1b + 598 02b2 982F      		mov r25,r24 + 599 02b4 40E0      		ldi r20,lo8(0) + 600 02b6 50E0      		ldi r21,hi8(0) + 601               	.LVL49: + 602 02b8 00C0      		rjmp .L44 + 603               	.LVL50: + 604               	.L45: + 605 02ba FB01      		movw r30,r22 + 606 02bc E20F      		add r30,r18 + 607 02be F31F      		adc r31,r19 + 608 02c0 E050      		subi r30,lo8(-(cube)) + 609 02c2 F040      		sbci r31,hi8(-(cube)) + 610 02c4 8081      		ld r24,Z + 611 02c6 892B      		or r24,r25 + 612 02c8 8083      		st Z,r24 + 613               	.LM44: + 614 02ca 2F5F      		subi r18,lo8(-(1)) + 615 02cc 3F4F      		sbci r19,hi8(-(1)) + 616 02ce 2830      		cpi r18,8 + 617 02d0 3105      		cpc r19,__zero_reg__ + 618 02d2 01F4      		brne .L45 + 619               	.LM45: + 620 02d4 4F5F      		subi r20,lo8(-(1)) + 621 02d6 5F4F      		sbci r21,hi8(-(1)) + 622 02d8 4830      		cpi r20,8 + 623 02da 5105      		cpc r21,__zero_reg__ + 624 02dc 01F0      		breq .L46 + 625               	.LVL51: + 626               	.L44: + 627 02de 20E0      		ldi r18,lo8(0) + 628 02e0 30E0      		ldi r19,hi8(0) + 629               	.LVL52: + 630               	.LM46: + 631 02e2 BA01      		movw r22,r20 + 632 02e4 E3E0      		ldi r30,3 + 633 02e6 660F      	1:	lsl r22 + 634 02e8 771F      		rol r23 + 635 02ea EA95      		dec r30 + 636 02ec 01F4      		brne 1b + 637 02ee 00C0      		rjmp .L45 + 638               	.LVL53: + 639               	.L46: + 640 02f0 0895      		ret + 641               	.LFE13: + 643               	.global	clrplane_x + 645               	clrplane_x: + 646               	.LFB14: + 647               	.LM47: + 648               	.LVL54: + 649               	/* prologue: function */ + 650               	/* frame size = 0 */ + 651 02f2 9C01      		movw r18,r24 + 652               	.LM48: + 653 02f4 8830      		cpi r24,8 + 654 02f6 9105      		cpc r25,__zero_reg__ + 655 02f8 00F4      		brsh .L52 + 656               	.LM49: + 657 02fa 81E0      		ldi r24,lo8(1) + 658 02fc 90E0      		ldi r25,hi8(1) + 659               	.LVL55: + 660 02fe 00C0      		rjmp 2f + 661 0300 880F      	1:	lsl r24 + 662 0302 991F      		rol r25 + 663 0304 2A95      	2:	dec r18 + 664 0306 02F4      		brpl 1b + 665 0308 982F      		mov r25,r24 + 666 030a 9095      		com r25 + 667 030c 40E0      		ldi r20,lo8(0) + 668 030e 50E0      		ldi r21,hi8(0) + 669               	.LVL56: + 670 0310 00C0      		rjmp .L50 + 671               	.LVL57: + 672               	.L51: + 673 0312 FB01      		movw r30,r22 + 674 0314 E20F      		add r30,r18 + 675 0316 F31F      		adc r31,r19 + 676 0318 E050      		subi r30,lo8(-(cube)) + 677 031a F040      		sbci r31,hi8(-(cube)) + 678 031c 8081      		ld r24,Z + 679 031e 8923      		and r24,r25 + 680 0320 8083      		st Z,r24 + 681               	.LM50: + 682 0322 2F5F      		subi r18,lo8(-(1)) + 683 0324 3F4F      		sbci r19,hi8(-(1)) + 684 0326 2830      		cpi r18,8 + 685 0328 3105      		cpc r19,__zero_reg__ + 686 032a 01F4      		brne .L51 + 687               	.LM51: + 688 032c 4F5F      		subi r20,lo8(-(1)) + 689 032e 5F4F      		sbci r21,hi8(-(1)) + 690 0330 4830      		cpi r20,8 + 691 0332 5105      		cpc r21,__zero_reg__ + 692 0334 01F0      		breq .L52 + 693               	.LVL58: + 694               	.L50: + 695 0336 20E0      		ldi r18,lo8(0) + 696 0338 30E0      		ldi r19,hi8(0) + 697               	.LVL59: + 698               	.LM52: + 699 033a BA01      		movw r22,r20 + 700 033c F3E0      		ldi r31,3 + 701 033e 660F      	1:	lsl r22 + 702 0340 771F      		rol r23 + 703 0342 FA95      		dec r31 + 704 0344 01F4      		brne 1b + 705 0346 00C0      		rjmp .L51 + 706               	.LVL60: + 707               	.L52: + 708 0348 0895      		ret + 709               	.LFE14: + 711               	.global	setplane_y + 713               	setplane_y: + 714               	.LFB15: + 715               	.LM53: + 716               	.LVL61: + 717               	/* prologue: function */ + 718               	/* frame size = 0 */ + 719               	.LM54: + 720 034a 8830      		cpi r24,8 + 721 034c 9105      		cpc r25,__zero_reg__ + 722 034e 00F4      		brsh .L57 + 723 0350 20E0      		ldi r18,lo8(0) + 724 0352 30E0      		ldi r19,hi8(0) + 725               	.LVL62: + 726               	.LM55: + 727 0354 4FEF      		ldi r20,lo8(-1) + 728               	.L56: + 729 0356 F901      		movw r30,r18 + 730 0358 A3E0      		ldi r26,3 + 731 035a EE0F      	1:	lsl r30 + 732 035c FF1F      		rol r31 + 733 035e AA95      		dec r26 + 734 0360 01F4      		brne 1b + 735 0362 E80F      		add r30,r24 + 736 0364 F91F      		adc r31,r25 + 737 0366 E050      		subi r30,lo8(-(cube)) + 738 0368 F040      		sbci r31,hi8(-(cube)) + 739 036a 4083      		st Z,r20 + 740               	.LM56: + 741 036c 2F5F      		subi r18,lo8(-(1)) + 742 036e 3F4F      		sbci r19,hi8(-(1)) + 743 0370 2830      		cpi r18,8 + 744 0372 3105      		cpc r19,__zero_reg__ + 745 0374 01F4      		brne .L56 + 746               	.L57: + 747 0376 0895      		ret + 748               	.LFE15: + 750               	.global	clrplane_y + 752               	clrplane_y: + 753               	.LFB16: + 754               	.LM57: + 755               	.LVL63: + 756               	/* prologue: function */ + 757               	/* frame size = 0 */ + 758               	.LM58: + 759 0378 8830      		cpi r24,8 + 760 037a 9105      		cpc r25,__zero_reg__ + 761 037c 00F4      		brsh .L62 + 762 037e 20E0      		ldi r18,lo8(0) + 763 0380 30E0      		ldi r19,hi8(0) + 764               	.LVL64: + 765               	.L61: + 766               	.LM59: + 767 0382 F901      		movw r30,r18 + 768 0384 B3E0      		ldi r27,3 + 769 0386 EE0F      	1:	lsl r30 + 770 0388 FF1F      		rol r31 + 771 038a BA95      		dec r27 + 772 038c 01F4      		brne 1b + 773 038e E80F      		add r30,r24 + 774 0390 F91F      		adc r31,r25 + 775 0392 E050      		subi r30,lo8(-(cube)) + 776 0394 F040      		sbci r31,hi8(-(cube)) + 777 0396 1082      		st Z,__zero_reg__ + 778               	.LM60: + 779 0398 2F5F      		subi r18,lo8(-(1)) + 780 039a 3F4F      		sbci r19,hi8(-(1)) + 781 039c 2830      		cpi r18,8 + 782 039e 3105      		cpc r19,__zero_reg__ + 783 03a0 01F4      		brne .L61 + 784               	.L62: + 785 03a2 0895      		ret + 786               	.LFE16: + 788               	.global	fill + 790               	fill: + 791               	.LFB17: + 792               	.LM61: + 793               	.LVL65: + 794               	/* prologue: function */ + 795               	/* frame size = 0 */ + 796               	.LM62: + 797 03a4 40E0      		ldi r20,lo8(0) + 798 03a6 50E0      		ldi r21,hi8(0) + 799               	.LVL66: + 800 03a8 00C0      		rjmp .L65 + 801               	.LVL67: + 802               	.L66: + 803               	.LM63: + 804 03aa FB01      		movw r30,r22 + 805 03ac E20F      		add r30,r18 + 806 03ae F31F      		adc r31,r19 + 807 03b0 E050      		subi r30,lo8(-(cube)) + 808 03b2 F040      		sbci r31,hi8(-(cube)) + 809 03b4 8083      		st Z,r24 + 810               	.LM64: + 811 03b6 2F5F      		subi r18,lo8(-(1)) + 812 03b8 3F4F      		sbci r19,hi8(-(1)) + 813 03ba 2830      		cpi r18,8 + 814 03bc 3105      		cpc r19,__zero_reg__ + 815 03be 01F4      		brne .L66 + 816               	.LM65: + 817 03c0 4F5F      		subi r20,lo8(-(1)) + 818 03c2 5F4F      		sbci r21,hi8(-(1)) + 819 03c4 4830      		cpi r20,8 + 820 03c6 5105      		cpc r21,__zero_reg__ + 821 03c8 01F0      		breq .L68 + 822               	.L65: + 823 03ca 20E0      		ldi r18,lo8(0) + 824 03cc 30E0      		ldi r19,hi8(0) + 825               	.LM66: + 826 03ce BA01      		movw r22,r20 + 827 03d0 93E0      		ldi r25,3 + 828 03d2 660F      	1:	lsl r22 + 829 03d4 771F      		rol r23 + 830 03d6 9A95      		dec r25 + 831 03d8 01F4      		brne 1b + 832 03da 00C0      		rjmp .L66 + 833               	.L68: + 834 03dc 0895      		ret + 835               	.LFE17: + 837               	.global	tmpfill + 839               	tmpfill: + 840               	.LFB18: + 841               	.LM67: + 842               	.LVL68: + 843               	/* prologue: function */ + 844               	/* frame size = 0 */ + 845               	.LM68: + 846 03de 40E0      		ldi r20,lo8(0) + 847 03e0 50E0      		ldi r21,hi8(0) + 848               	.LVL69: + 849 03e2 00C0      		rjmp .L71 + 850               	.LVL70: + 851               	.L72: + 852               	.LM69: + 853 03e4 FB01      		movw r30,r22 + 854 03e6 E20F      		add r30,r18 + 855 03e8 F31F      		adc r31,r19 + 856 03ea E050      		subi r30,lo8(-(fb)) + 857 03ec F040      		sbci r31,hi8(-(fb)) + 858 03ee 8083      		st Z,r24 + 859               	.LM70: + 860 03f0 2F5F      		subi r18,lo8(-(1)) + 861 03f2 3F4F      		sbci r19,hi8(-(1)) + 862 03f4 2830      		cpi r18,8 + 863 03f6 3105      		cpc r19,__zero_reg__ + 864 03f8 01F4      		brne .L72 + 865               	.LM71: + 866 03fa 4F5F      		subi r20,lo8(-(1)) + 867 03fc 5F4F      		sbci r21,hi8(-(1)) + 868 03fe 4830      		cpi r20,8 + 869 0400 5105      		cpc r21,__zero_reg__ + 870 0402 01F0      		breq .L74 + 871               	.L71: + 872 0404 20E0      		ldi r18,lo8(0) + 873 0406 30E0      		ldi r19,hi8(0) + 874               	.LM72: + 875 0408 BA01      		movw r22,r20 + 876 040a E3E0      		ldi r30,3 + 877 040c 660F      	1:	lsl r22 + 878 040e 771F      		rol r23 + 879 0410 EA95      		dec r30 + 880 0412 01F4      		brne 1b + 881 0414 00C0      		rjmp .L72 + 882               	.L74: + 883 0416 0895      		ret + 884               	.LFE18: + 886               	.global	box_filled + 888               	box_filled: + 889               	.LFB19: + 890               	.LM73: + 891               	.LVL71: + 892 0418 EF92      		push r14 + 893               	.LVL72: + 894 041a FF92      		push r15 + 895 041c 0F93      		push r16 + 896               	.LVL73: + 897 041e 1F93      		push r17 + 898 0420 CF93      		push r28 + 899 0422 DF93      		push r29 + 900               	/* prologue: function */ + 901               	/* frame size = 0 */ + 902 0424 DC01      		movw r26,r24 + 903 0426 EB01      		movw r28,r22 + 904 0428 F901      		movw r30,r18 + 905               	.LBB110: + 906               	.LBB111: + 907               	.LM74: + 908 042a 2817      		cp r18,r24 + 909 042c 3907      		cpc r19,r25 + 910 042e 04F4      		brge .L77 + 911               	.LVL74: + 912 0430 D901      		movw r26,r18 + 913               	.LVL75: + 914 0432 FC01      		movw r30,r24 + 915               	.LVL76: + 916               	.L77: + 917               	.LBE111: + 918               	.LBE110: + 919               	.LBB112: + 920               	.LBB113: + 921 0434 0C17      		cp r16,r28 + 922 0436 1D07      		cpc r17,r29 + 923               	.LVL77: + 924 0438 04F4      		brge .L78 + 925 043a CE01      		movw r24,r28 + 926               	.LVL78: + 927 043c E801      		movw r28,r16 + 928               	.LVL79: + 929 043e 8C01      		movw r16,r24 + 930               	.LVL80: + 931               	.L78: + 932               	.LBE113: + 933               	.LBE112: + 934               	.LBB114: + 935               	.LBB115: + 936 0440 E416      		cp r14,r20 + 937 0442 F506      		cpc r15,r21 + 938               	.LVL81: + 939 0444 04F4      		brge .L79 + 940 0446 CA01      		movw r24,r20 + 941               	.LVL82: + 942 0448 A701      		movw r20,r14 + 943               	.LVL83: + 944 044a 7C01      		movw r14,r24 + 945               	.LVL84: + 946               	.L79: + 947               	.LBE115: + 948               	.LBE114: + 949               	.LBB116: + 950               	.LBB117: + 951               	.LM75: + 952 044c 3196      		adiw r30,1 + 953 044e 8FEF      		ldi r24,lo8(255) + 954 0450 90E0      		ldi r25,hi8(255) + 955 0452 9C01      		movw r18,r24 + 956 0454 00C0      		rjmp 2f + 957 0456 220F      	1:	lsl r18 + 958 0458 331F      		rol r19 + 959 045a EA95      	2:	dec r30 + 960 045c 02F4      		brpl 1b + 961 045e 2095      		com r18 + 962 0460 00C0      		rjmp 2f + 963 0462 880F      	1:	lsl r24 + 964 0464 991F      		rol r25 + 965 0466 AA95      	2:	dec r26 + 966 0468 02F4      		brpl 1b + 967 046a 2823      		and r18,r24 + 968 046c 00C0      		rjmp .L80 + 969               	.LVL85: + 970               	.L81: + 971               	.LBE117: + 972               	.LBE116: + 973               	.LM76: + 974 046e FB01      		movw r30,r22 + 975               	.LVL86: + 976 0470 EA0F      		add r30,r26 + 977 0472 FB1F      		adc r31,r27 + 978 0474 E050      		subi r30,lo8(-(cube)) + 979 0476 F040      		sbci r31,hi8(-(cube)) + 980 0478 8081      		ld r24,Z + 981 047a 822B      		or r24,r18 + 982 047c 8083      		st Z,r24 + 983               	.LM77: + 984 047e 1196      		adiw r26,1 + 985               	.LVL87: + 986               	.L83: + 987 0480 0A17      		cp r16,r26 + 988 0482 1B07      		cpc r17,r27 + 989 0484 04F4      		brge .L81 + 990               	.LM78: + 991 0486 4F5F      		subi r20,lo8(-(1)) + 992 0488 5F4F      		sbci r21,hi8(-(1)) + 993               	.LVL88: + 994               	.L80: + 995 048a E416      		cp r14,r20 + 996 048c F506      		cpc r15,r21 + 997 048e 04F0      		brlt .L84 + 998 0490 DE01      		movw r26,r28 + 999               	.LVL89: + 1000               	.LM79: + 1001 0492 BA01      		movw r22,r20 + 1002 0494 F3E0      		ldi r31,3 + 1003 0496 660F      	1:	lsl r22 + 1004 0498 771F      		rol r23 + 1005 049a FA95      		dec r31 + 1006 049c 01F4      		brne 1b + 1007 049e 00C0      		rjmp .L83 + 1008               	.LVL90: + 1009               	.L84: + 1010               	/* epilogue start */ + 1011               	.LM80: + 1012 04a0 DF91      		pop r29 + 1013 04a2 CF91      		pop r28 + 1014               	.LVL91: + 1015 04a4 1F91      		pop r17 + 1016 04a6 0F91      		pop r16 + 1017               	.LVL92: + 1018 04a8 FF90      		pop r15 + 1019 04aa EF90      		pop r14 + 1020               	.LVL93: + 1021 04ac 0895      		ret + 1022               	.LFE19: + 1024               	.global	box_walls + 1026               	box_walls: + 1027               	.LFB20: + 1028               	.LM81: + 1029               	.LVL94: + 1030 04ae CF92      		push r12 + 1031 04b0 DF92      		push r13 + 1032 04b2 EF92      		push r14 + 1033               	.LVL95: + 1034 04b4 FF92      		push r15 + 1035 04b6 0F93      		push r16 + 1036               	.LVL96: + 1037 04b8 1F93      		push r17 + 1038 04ba CF93      		push r28 + 1039 04bc DF93      		push r29 + 1040               	/* prologue: function */ + 1041               	/* frame size = 0 */ + 1042 04be DC01      		movw r26,r24 + 1043 04c0 F901      		movw r30,r18 + 1044               	.LBB118: + 1045               	.LBB119: + 1046               	.LM82: + 1047 04c2 2817      		cp r18,r24 + 1048 04c4 3907      		cpc r19,r25 + 1049 04c6 04F4      		brge .L86 + 1050 04c8 D901      		movw r26,r18 + 1051               	.LVL97: + 1052 04ca FC01      		movw r30,r24 + 1053               	.LVL98: + 1054               	.L86: + 1055               	.LBE119: + 1056               	.LBE118: + 1057               	.LBB120: + 1058               	.LBB121: + 1059 04cc 0617      		cp r16,r22 + 1060 04ce 1707      		cpc r17,r23 + 1061               	.LVL99: + 1062 04d0 04F4      		brge .L87 + 1063 04d2 CB01      		movw r24,r22 + 1064               	.LVL100: + 1065 04d4 B801      		movw r22,r16 + 1066               	.LVL101: + 1067 04d6 8C01      		movw r16,r24 + 1068               	.LVL102: + 1069               	.L87: + 1070               	.LBE121: + 1071               	.LBE120: + 1072               	.LBB122: + 1073               	.LBB123: + 1074 04d8 E416      		cp r14,r20 + 1075 04da F506      		cpc r15,r21 + 1076               	.LVL103: + 1077 04dc 04F4      		brge .L88 + 1078 04de CA01      		movw r24,r20 + 1079               	.LVL104: + 1080 04e0 A701      		movw r20,r14 + 1081               	.LVL105: + 1082 04e2 7C01      		movw r14,r24 + 1083               	.LVL106: + 1084               	.L88: + 1085               	.LBE123: + 1086               	.LBE122: + 1087               	.LM83: + 1088 04e4 81E0      		ldi r24,lo8(1) + 1089 04e6 90E0      		ldi r25,hi8(1) + 1090 04e8 9C01      		movw r18,r24 + 1091 04ea 0E2E      		mov r0,r30 + 1092 04ec 00C0      		rjmp 2f + 1093 04ee 220F      	1:	lsl r18 + 1094 04f0 331F      		rol r19 + 1095 04f2 0A94      	2:	dec r0 + 1096 04f4 02F4      		brpl 1b + 1097 04f6 0A2E      		mov r0,r26 + 1098 04f8 00C0      		rjmp 2f + 1099 04fa 880F      	1:	lsl r24 + 1100 04fc 991F      		rol r25 + 1101 04fe 0A94      	2:	dec r0 + 1102 0500 02F4      		brpl 1b + 1103 0502 C22E      		mov r12,r18 + 1104 0504 C82A      		or r12,r24 + 1105               	.LBB124: + 1106               	.LBB125: + 1107               	.LM84: + 1108 0506 3196      		adiw r30,1 + 1109 0508 8FEF      		ldi r24,lo8(255) + 1110 050a 90E0      		ldi r25,hi8(255) + 1111 050c 9C01      		movw r18,r24 + 1112 050e 00C0      		rjmp 2f + 1113 0510 220F      	1:	lsl r18 + 1114 0512 331F      		rol r19 + 1115 0514 EA95      	2:	dec r30 + 1116 0516 02F4      		brpl 1b + 1117 0518 D22E      		mov r13,r18 + 1118 051a D094      		com r13 + 1119 051c 00C0      		rjmp 2f + 1120 051e 880F      	1:	lsl r24 + 1121 0520 991F      		rol r25 + 1122 0522 AA95      	2:	dec r26 + 1123 0524 02F4      		brpl 1b + 1124 0526 D822      		and r13,r24 + 1125 0528 9A01      		movw r18,r20 + 1126               	.LVL107: + 1127 052a 00C0      		rjmp .L89 + 1128               	.LVL108: + 1129               	.L93: + 1130               	.LBE125: + 1131               	.LBE124: + 1132               	.LM85: + 1133 052c A617      		cp r26,r22 + 1134 052e B707      		cpc r27,r23 + 1135 0530 01F0      		breq .L90 + 1136 0532 A017      		cp r26,r16 + 1137 0534 B107      		cpc r27,r17 + 1138 0536 01F0      		breq .L90 + 1139 0538 2417      		cp r18,r20 + 1140 053a 3507      		cpc r19,r21 + 1141 053c 01F0      		breq .L90 + 1142 053e 2E15      		cp r18,r14 + 1143 0540 3F05      		cpc r19,r15 + 1144 0542 01F4      		brne .L91 + 1145               	.L90: + 1146               	.LM86: + 1147 0544 FE01      		movw r30,r28 + 1148               	.LVL109: + 1149 0546 EA0F      		add r30,r26 + 1150 0548 FB1F      		adc r31,r27 + 1151 054a E050      		subi r30,lo8(-(cube)) + 1152 054c F040      		sbci r31,hi8(-(cube)) + 1153 054e D082      		st Z,r13 + 1154 0550 00C0      		rjmp .L92 + 1155               	.LVL110: + 1156               	.L91: + 1157               	.LM87: + 1158 0552 FE01      		movw r30,r28 + 1159               	.LVL111: + 1160 0554 EA0F      		add r30,r26 + 1161 0556 FB1F      		adc r31,r27 + 1162 0558 E050      		subi r30,lo8(-(cube)) + 1163 055a F040      		sbci r31,hi8(-(cube)) + 1164 055c 8081      		ld r24,Z + 1165 055e 8C29      		or r24,r12 + 1166 0560 8083      		st Z,r24 + 1167               	.L92: + 1168               	.LM88: + 1169 0562 1196      		adiw r26,1 + 1170               	.LVL112: + 1171               	.L95: + 1172 0564 0A17      		cp r16,r26 + 1173 0566 1B07      		cpc r17,r27 + 1174 0568 04F4      		brge .L93 + 1175               	.LM89: + 1176 056a 2F5F      		subi r18,lo8(-(1)) + 1177 056c 3F4F      		sbci r19,hi8(-(1)) + 1178               	.LVL113: + 1179               	.L89: + 1180 056e E216      		cp r14,r18 + 1181 0570 F306      		cpc r15,r19 + 1182 0572 04F0      		brlt .L96 + 1183 0574 DB01      		movw r26,r22 + 1184               	.LVL114: + 1185               	.LM90: + 1186 0576 E901      		movw r28,r18 + 1187 0578 83E0      		ldi r24,3 + 1188 057a CC0F      	1:	lsl r28 + 1189 057c DD1F      		rol r29 + 1190 057e 8A95      		dec r24 + 1191 0580 01F4      		brne 1b + 1192 0582 00C0      		rjmp .L95 + 1193               	.LVL115: + 1194               	.L96: + 1195               	/* epilogue start */ + 1196               	.LM91: + 1197 0584 DF91      		pop r29 + 1198 0586 CF91      		pop r28 + 1199 0588 1F91      		pop r17 + 1200 058a 0F91      		pop r16 + 1201               	.LVL116: + 1202 058c FF90      		pop r15 + 1203 058e EF90      		pop r14 + 1204               	.LVL117: + 1205 0590 DF90      		pop r13 + 1206 0592 CF90      		pop r12 + 1207 0594 0895      		ret + 1208               	.LFE20: + 1210               	.global	box_wireframe + 1212               	box_wireframe: + 1213               	.LFB21: + 1214               	.LM92: + 1215               	.LVL118: + 1216 0596 8F92      		push r8 + 1217 0598 9F92      		push r9 + 1218 059a AF92      		push r10 + 1219 059c BF92      		push r11 + 1220 059e CF92      		push r12 + 1221 05a0 DF92      		push r13 + 1222 05a2 EF92      		push r14 + 1223               	.LVL119: + 1224 05a4 FF92      		push r15 + 1225 05a6 0F93      		push r16 + 1226               	.LVL120: + 1227 05a8 1F93      		push r17 + 1228 05aa CF93      		push r28 + 1229 05ac DF93      		push r29 + 1230               	/* prologue: function */ + 1231               	/* frame size = 0 */ + 1232 05ae 4C01      		movw r8,r24 + 1233 05b0 6B01      		movw r12,r22 + 1234 05b2 EA01      		movw r28,r20 + 1235 05b4 5901      		movw r10,r18 + 1236               	.LBB126: + 1237               	.LBB127: + 1238               	.LM93: + 1239 05b6 2817      		cp r18,r24 + 1240 05b8 3907      		cpc r19,r25 + 1241 05ba 04F4      		brge .L98 + 1242               	.LVL121: + 1243 05bc 4901      		movw r8,r18 + 1244               	.LVL122: + 1245 05be 5C01      		movw r10,r24 + 1246               	.LVL123: + 1247               	.L98: + 1248               	.LBE127: + 1249               	.LBE126: + 1250               	.LBB128: + 1251               	.LBB129: + 1252 05c0 0C15      		cp r16,r12 + 1253 05c2 1D05      		cpc r17,r13 + 1254               	.LVL124: + 1255 05c4 04F4      		brge .L99 + 1256 05c6 C601      		movw r24,r12 + 1257               	.LVL125: + 1258 05c8 6801      		movw r12,r16 + 1259               	.LVL126: + 1260 05ca 8C01      		movw r16,r24 + 1261               	.LVL127: + 1262               	.L99: + 1263               	.LBE129: + 1264               	.LBE128: + 1265               	.LBB130: + 1266               	.LBB131: + 1267 05cc EC16      		cp r14,r28 + 1268 05ce FD06      		cpc r15,r29 + 1269               	.LVL128: + 1270 05d0 04F4      		brge .L100 + 1271 05d2 CE01      		movw r24,r28 + 1272               	.LVL129: + 1273 05d4 E701      		movw r28,r14 + 1274               	.LVL130: + 1275 05d6 7C01      		movw r14,r24 + 1276               	.LVL131: + 1277               	.L100: + 1278               	.LBE131: + 1279               	.LBE130: + 1280               	.LBB132: + 1281               	.LBB133: + 1282               	.LM94: + 1283 05d8 0894      		sec + 1284 05da A11C      		adc r10,__zero_reg__ + 1285 05dc B11C      		adc r11,__zero_reg__ + 1286 05de 8FEF      		ldi r24,lo8(255) + 1287 05e0 90E0      		ldi r25,hi8(255) + 1288 05e2 9C01      		movw r18,r24 + 1289 05e4 0A2C      		mov r0,r10 + 1290 05e6 00C0      		rjmp 2f + 1291 05e8 220F      	1:	lsl r18 + 1292 05ea 331F      		rol r19 + 1293 05ec 0A94      	2:	dec r0 + 1294 05ee 02F4      		brpl 1b + 1295 05f0 0894      		sec + 1296 05f2 A108      		sbc r10,__zero_reg__ + 1297 05f4 B108      		sbc r11,__zero_reg__ + 1298 05f6 2095      		com r18 + 1299 05f8 082C      		mov r0,r8 + 1300 05fa 00C0      		rjmp 2f + 1301 05fc 880F      	1:	lsl r24 + 1302 05fe 991F      		rol r25 + 1303 0600 0A94      	2:	dec r0 + 1304 0602 02F4      		brpl 1b + 1305 0604 2823      		and r18,r24 + 1306               	.LBE133: + 1307               	.LBE132: + 1308               	.LM95: + 1309 0606 BE01      		movw r22,r28 + 1310 0608 83E0      		ldi r24,3 + 1311 060a 660F      	1:	lsl r22 + 1312 060c 771F      		rol r23 + 1313 060e 8A95      		dec r24 + 1314 0610 01F4      		brne 1b + 1315 0612 FB01      		movw r30,r22 + 1316 0614 EC0D      		add r30,r12 + 1317 0616 FD1D      		adc r31,r13 + 1318 0618 E050      		subi r30,lo8(-(cube)) + 1319 061a F040      		sbci r31,hi8(-(cube)) + 1320 061c 2083      		st Z,r18 + 1321               	.LM96: + 1322 061e FB01      		movw r30,r22 + 1323 0620 E00F      		add r30,r16 + 1324 0622 F11F      		adc r31,r17 + 1325 0624 E050      		subi r30,lo8(-(cube)) + 1326 0626 F040      		sbci r31,hi8(-(cube)) + 1327 0628 2083      		st Z,r18 + 1328               	.LM97: + 1329 062a A701      		movw r20,r14 + 1330 062c B3E0      		ldi r27,3 + 1331 062e 440F      	1:	lsl r20 + 1332 0630 551F      		rol r21 + 1333 0632 BA95      		dec r27 + 1334 0634 01F4      		brne 1b + 1335 0636 FA01      		movw r30,r20 + 1336 0638 EC0D      		add r30,r12 + 1337 063a FD1D      		adc r31,r13 + 1338 063c E050      		subi r30,lo8(-(cube)) + 1339 063e F040      		sbci r31,hi8(-(cube)) + 1340 0640 2083      		st Z,r18 + 1341               	.LM98: + 1342 0642 FA01      		movw r30,r20 + 1343 0644 E00F      		add r30,r16 + 1344 0646 F11F      		adc r31,r17 + 1345 0648 E050      		subi r30,lo8(-(cube)) + 1346 064a F040      		sbci r31,hi8(-(cube)) + 1347 064c 2083      		st Z,r18 + 1348               	.LBB134: + 1349               	.LBB135: + 1350               	.LM99: + 1351 064e 81E0      		ldi r24,lo8(1) + 1352 0650 90E0      		ldi r25,hi8(1) + 1353 0652 9C01      		movw r18,r24 + 1354 0654 082C      		mov r0,r8 + 1355 0656 00C0      		rjmp 2f + 1356 0658 220F      	1:	lsl r18 + 1357 065a 331F      		rol r19 + 1358 065c 0A94      	2:	dec r0 + 1359 065e 02F4      		brpl 1b + 1360               	.LBE135: + 1361               	.LBE134: + 1362               	.LBB139: + 1363               	.LBB140: + 1364 0660 0A2C      		mov r0,r10 + 1365 0662 00C0      		rjmp 2f + 1366 0664 880F      	1:	lsl r24 + 1367 0666 991F      		rol r25 + 1368 0668 0A94      	2:	dec r0 + 1369 066a 02F4      		brpl 1b + 1370 066c 982F      		mov r25,r24 + 1371 066e D601      		movw r26,r12 + 1372               	.LVL132: + 1373 0670 00C0      		rjmp .L101 + 1374               	.L106: + 1375               	.LBE140: + 1376               	.LBE139: + 1377               	.LBB144: + 1378               	.LBB138: + 1379               	.LBB136: + 1380               	.LBB137: + 1381               	.LM100: + 1382 0672 88E0      		ldi r24,lo8(8) + 1383 0674 8816      		cp r8,r24 + 1384 0676 9104      		cpc r9,__zero_reg__ + 1385 0678 00F4      		brsh .L102 + 1386 067a B7FD      		sbrc r27,7 + 1387 067c 00C0      		rjmp .L102 + 1388 067e A830      		cpi r26,8 + 1389 0680 B105      		cpc r27,__zero_reg__ + 1390 0682 04F4      		brge .L102 + 1391 0684 D7FD      		sbrc r29,7 + 1392 0686 00C0      		rjmp .L103 + 1393 0688 C830      		cpi r28,8 + 1394 068a D105      		cpc r29,__zero_reg__ + 1395 068c 04F4      		brge .L103 + 1396               	.LBE137: + 1397               	.LBE136: + 1398               	.LM101: + 1399 068e FB01      		movw r30,r22 + 1400 0690 EA0F      		add r30,r26 + 1401 0692 FB1F      		adc r31,r27 + 1402 0694 E050      		subi r30,lo8(-(cube)) + 1403 0696 F040      		sbci r31,hi8(-(cube)) + 1404 0698 8081      		ld r24,Z + 1405 069a 822B      		or r24,r18 + 1406 069c 8083      		st Z,r24 + 1407               	.L103: + 1408               	.LBE138: + 1409               	.LBE144: + 1410               	.LBB145: + 1411               	.LBB146: + 1412               	.LBB147: + 1413               	.LBB148: + 1414               	.LM102: + 1415 069e F7FC      		sbrc r15,7 + 1416 06a0 00C0      		rjmp .L102 + 1417 06a2 88E0      		ldi r24,lo8(8) + 1418 06a4 E816      		cp r14,r24 + 1419 06a6 F104      		cpc r15,__zero_reg__ + 1420 06a8 04F4      		brge .L102 + 1421               	.LBE148: + 1422               	.LBE147: + 1423               	.LM103: + 1424 06aa FA01      		movw r30,r20 + 1425 06ac EA0F      		add r30,r26 + 1426 06ae FB1F      		adc r31,r27 + 1427 06b0 E050      		subi r30,lo8(-(cube)) + 1428 06b2 F040      		sbci r31,hi8(-(cube)) + 1429 06b4 8081      		ld r24,Z + 1430 06b6 822B      		or r24,r18 + 1431 06b8 8083      		st Z,r24 + 1432               	.L102: + 1433               	.LBE146: + 1434               	.LBE145: + 1435               	.LBB149: + 1436               	.LBB143: + 1437               	.LBB141: + 1438               	.LBB142: + 1439               	.LM104: + 1440 06ba 88E0      		ldi r24,lo8(8) + 1441 06bc A816      		cp r10,r24 + 1442 06be B104      		cpc r11,__zero_reg__ + 1443 06c0 00F4      		brsh .L104 + 1444 06c2 B7FD      		sbrc r27,7 + 1445 06c4 00C0      		rjmp .L104 + 1446 06c6 A830      		cpi r26,8 + 1447 06c8 B105      		cpc r27,__zero_reg__ + 1448 06ca 04F4      		brge .L104 + 1449 06cc D7FD      		sbrc r29,7 + 1450 06ce 00C0      		rjmp .L105 + 1451 06d0 C830      		cpi r28,8 + 1452 06d2 D105      		cpc r29,__zero_reg__ + 1453 06d4 04F4      		brge .L105 + 1454               	.LBE142: + 1455               	.LBE141: + 1456               	.LM105: + 1457 06d6 FB01      		movw r30,r22 + 1458 06d8 EA0F      		add r30,r26 + 1459 06da FB1F      		adc r31,r27 + 1460 06dc E050      		subi r30,lo8(-(cube)) + 1461 06de F040      		sbci r31,hi8(-(cube)) + 1462 06e0 8081      		ld r24,Z + 1463 06e2 892B      		or r24,r25 + 1464 06e4 8083      		st Z,r24 + 1465               	.L105: + 1466               	.LBE143: + 1467               	.LBE149: + 1468               	.LBB150: + 1469               	.LBB151: + 1470               	.LBB152: + 1471               	.LBB153: + 1472               	.LM106: + 1473 06e6 F7FC      		sbrc r15,7 + 1474 06e8 00C0      		rjmp .L104 + 1475 06ea 88E0      		ldi r24,lo8(8) + 1476 06ec E816      		cp r14,r24 + 1477 06ee F104      		cpc r15,__zero_reg__ + 1478 06f0 04F4      		brge .L104 + 1479               	.LBE153: + 1480               	.LBE152: + 1481               	.LM107: + 1482 06f2 FA01      		movw r30,r20 + 1483 06f4 EA0F      		add r30,r26 + 1484 06f6 FB1F      		adc r31,r27 + 1485 06f8 E050      		subi r30,lo8(-(cube)) + 1486 06fa F040      		sbci r31,hi8(-(cube)) + 1487 06fc 8081      		ld r24,Z + 1488 06fe 892B      		or r24,r25 + 1489 0700 8083      		st Z,r24 + 1490               	.L104: + 1491               	.LBE151: + 1492               	.LBE150: + 1493               	.LM108: + 1494 0702 1196      		adiw r26,1 + 1495               	.L101: + 1496 0704 0A17      		cp r16,r26 + 1497 0706 1B07      		cpc r17,r27 + 1498 0708 04F0      		brlt .+2 + 1499 070a 00C0      		rjmp .L106 + 1500 070c AE01      		movw r20,r28 + 1501               	.LVL133: + 1502 070e 00C0      		rjmp .L107 + 1503               	.L112: + 1504               	.LBB154: + 1505               	.LBB155: + 1506               	.LBB156: + 1507               	.LBB157: + 1508               	.LM109: + 1509 0710 88E0      		ldi r24,lo8(8) + 1510 0712 8816      		cp r8,r24 + 1511 0714 9104      		cpc r9,__zero_reg__ + 1512 0716 00F4      		brsh .L108 + 1513 0718 D7FC      		sbrc r13,7 + 1514 071a 00C0      		rjmp .L109 + 1515 071c 88E0      		ldi r24,lo8(8) + 1516 071e C816      		cp r12,r24 + 1517 0720 D104      		cpc r13,__zero_reg__ + 1518 0722 04F4      		brge .L109 + 1519 0724 57FD      		sbrc r21,7 + 1520 0726 00C0      		rjmp .L109 + 1521 0728 4830      		cpi r20,8 + 1522 072a 5105      		cpc r21,__zero_reg__ + 1523 072c 04F4      		brge .L109 + 1524               	.LBE157: + 1525               	.LBE156: + 1526               	.LM110: + 1527 072e FA01      		movw r30,r20 + 1528 0730 A3E0      		ldi r26,3 + 1529 0732 EE0F      	1:	lsl r30 + 1530 0734 FF1F      		rol r31 + 1531 0736 AA95      		dec r26 + 1532 0738 01F4      		brne 1b + 1533               	.LVL134: + 1534 073a EC0D      		add r30,r12 + 1535 073c FD1D      		adc r31,r13 + 1536 073e E050      		subi r30,lo8(-(cube)) + 1537 0740 F040      		sbci r31,hi8(-(cube)) + 1538 0742 8081      		ld r24,Z + 1539 0744 822B      		or r24,r18 + 1540 0746 8083      		st Z,r24 + 1541               	.LVL135: + 1542               	.L109: + 1543               	.LBE155: + 1544               	.LBE154: + 1545               	.LBB158: + 1546               	.LBB159: + 1547               	.LBB160: + 1548               	.LBB161: + 1549               	.LM111: + 1550 0748 17FD      		sbrc r17,7 + 1551 074a 00C0      		rjmp .L108 + 1552 074c 0830      		cpi r16,8 + 1553 074e 1105      		cpc r17,__zero_reg__ + 1554 0750 04F4      		brge .L108 + 1555 0752 57FD      		sbrc r21,7 + 1556 0754 00C0      		rjmp .L108 + 1557 0756 4830      		cpi r20,8 + 1558 0758 5105      		cpc r21,__zero_reg__ + 1559 075a 04F4      		brge .L108 + 1560               	.LBE161: + 1561               	.LBE160: + 1562               	.LM112: + 1563 075c FA01      		movw r30,r20 + 1564 075e 73E0      		ldi r23,3 + 1565 0760 EE0F      	1:	lsl r30 + 1566 0762 FF1F      		rol r31 + 1567 0764 7A95      		dec r23 + 1568 0766 01F4      		brne 1b + 1569 0768 E00F      		add r30,r16 + 1570 076a F11F      		adc r31,r17 + 1571 076c E050      		subi r30,lo8(-(cube)) + 1572 076e F040      		sbci r31,hi8(-(cube)) + 1573 0770 8081      		ld r24,Z + 1574 0772 822B      		or r24,r18 + 1575 0774 8083      		st Z,r24 + 1576               	.L108: + 1577               	.LBE159: + 1578               	.LBE158: + 1579               	.LBB162: + 1580               	.LBB163: + 1581               	.LBB164: + 1582               	.LBB165: + 1583               	.LM113: + 1584 0776 88E0      		ldi r24,lo8(8) + 1585 0778 A816      		cp r10,r24 + 1586 077a B104      		cpc r11,__zero_reg__ + 1587 077c 00F4      		brsh .L110 + 1588 077e D7FC      		sbrc r13,7 + 1589 0780 00C0      		rjmp .L111 + 1590 0782 88E0      		ldi r24,lo8(8) + 1591 0784 C816      		cp r12,r24 + 1592 0786 D104      		cpc r13,__zero_reg__ + 1593 0788 04F4      		brge .L111 + 1594 078a 57FD      		sbrc r21,7 + 1595 078c 00C0      		rjmp .L111 + 1596 078e 4830      		cpi r20,8 + 1597 0790 5105      		cpc r21,__zero_reg__ + 1598 0792 04F4      		brge .L111 + 1599               	.LBE165: + 1600               	.LBE164: + 1601               	.LM114: + 1602 0794 FA01      		movw r30,r20 + 1603 0796 63E0      		ldi r22,3 + 1604 0798 EE0F      	1:	lsl r30 + 1605 079a FF1F      		rol r31 + 1606 079c 6A95      		dec r22 + 1607 079e 01F4      		brne 1b + 1608 07a0 EC0D      		add r30,r12 + 1609 07a2 FD1D      		adc r31,r13 + 1610 07a4 E050      		subi r30,lo8(-(cube)) + 1611 07a6 F040      		sbci r31,hi8(-(cube)) + 1612 07a8 8081      		ld r24,Z + 1613 07aa 892B      		or r24,r25 + 1614 07ac 8083      		st Z,r24 + 1615               	.L111: + 1616               	.LBE163: + 1617               	.LBE162: + 1618               	.LBB166: + 1619               	.LBB167: + 1620               	.LBB168: + 1621               	.LBB169: + 1622               	.LM115: + 1623 07ae 17FD      		sbrc r17,7 + 1624 07b0 00C0      		rjmp .L110 + 1625 07b2 0830      		cpi r16,8 + 1626 07b4 1105      		cpc r17,__zero_reg__ + 1627 07b6 04F4      		brge .L110 + 1628 07b8 57FD      		sbrc r21,7 + 1629 07ba 00C0      		rjmp .L110 + 1630 07bc 4830      		cpi r20,8 + 1631 07be 5105      		cpc r21,__zero_reg__ + 1632 07c0 04F4      		brge .L110 + 1633               	.LBE169: + 1634               	.LBE168: + 1635               	.LM116: + 1636 07c2 FA01      		movw r30,r20 + 1637 07c4 33E0      		ldi r19,3 + 1638 07c6 EE0F      	1:	lsl r30 + 1639 07c8 FF1F      		rol r31 + 1640 07ca 3A95      		dec r19 + 1641 07cc 01F4      		brne 1b + 1642 07ce E00F      		add r30,r16 + 1643 07d0 F11F      		adc r31,r17 + 1644 07d2 E050      		subi r30,lo8(-(cube)) + 1645 07d4 F040      		sbci r31,hi8(-(cube)) + 1646 07d6 8081      		ld r24,Z + 1647 07d8 892B      		or r24,r25 + 1648 07da 8083      		st Z,r24 + 1649               	.L110: + 1650               	.LBE167: + 1651               	.LBE166: + 1652               	.LM117: + 1653 07dc 4F5F      		subi r20,lo8(-(1)) + 1654 07de 5F4F      		sbci r21,hi8(-(1)) + 1655               	.L107: + 1656 07e0 E416      		cp r14,r20 + 1657 07e2 F506      		cpc r15,r21 + 1658 07e4 04F0      		brlt .+2 + 1659 07e6 00C0      		rjmp .L112 + 1660               	/* epilogue start */ + 1661               	.LM118: + 1662 07e8 DF91      		pop r29 + 1663 07ea CF91      		pop r28 + 1664               	.LVL136: + 1665 07ec 1F91      		pop r17 + 1666 07ee 0F91      		pop r16 + 1667               	.LVL137: + 1668 07f0 FF90      		pop r15 + 1669 07f2 EF90      		pop r14 + 1670               	.LVL138: + 1671 07f4 DF90      		pop r13 + 1672 07f6 CF90      		pop r12 + 1673               	.LVL139: + 1674 07f8 BF90      		pop r11 + 1675 07fa AF90      		pop r10 + 1676               	.LVL140: + 1677 07fc 9F90      		pop r9 + 1678 07fe 8F90      		pop r8 + 1679               	.LVL141: + 1680 0800 0895      		ret + 1681               	.LFE21: + 1683               	.global	byteline + 1685               	byteline: + 1686               	.LFB22: + 1687               	.LM119: + 1688               	.LVL142: + 1689               	/* prologue: function */ + 1690               	/* frame size = 0 */ + 1691               	.LM120: + 1692 0802 6F5F      		subi r22,lo8(-(1)) + 1693 0804 7F4F      		sbci r23,hi8(-(1)) + 1694               	.LVL143: + 1695 0806 2FEF      		ldi r18,lo8(255) + 1696 0808 30E0      		ldi r19,hi8(255) + 1697 080a A901      		movw r20,r18 + 1698 080c 00C0      		rjmp 2f + 1699 080e 440F      	1:	lsl r20 + 1700 0810 551F      		rol r21 + 1701 0812 6A95      	2:	dec r22 + 1702 0814 02F4      		brpl 1b + 1703 0816 BA01      		movw r22,r20 + 1704               	.LVL144: + 1705 0818 6095      		com r22 + 1706 081a 00C0      		rjmp 2f + 1707 081c 220F      	1:	lsl r18 + 1708 081e 331F      		rol r19 + 1709 0820 8A95      	2:	dec r24 + 1710 0822 02F4      		brpl 1b + 1711               	.LM121: + 1712 0824 862F      		mov r24,r22 + 1713               	.LVL145: + 1714 0826 8223      		and r24,r18 + 1715               	/* epilogue start */ + 1716 0828 0895      		ret + 1717               	.LFE22: + 1719               	.global	flipbyte + 1721               	flipbyte: + 1722               	.LFB23: + 1723               	.LM122: + 1724               	.LVL146: + 1725               	/* prologue: function */ + 1726               	/* frame size = 0 */ + 1727 082a 482F      		mov r20,r24 + 1728               	.LM123: + 1729 082c 282F      		mov r18,r24 + 1730 082e 30E0      		ldi r19,lo8(0) + 1731 0830 8295      		swap r24 + 1732               	.LVL147: + 1733 0832 8695      		lsr r24 + 1734 0834 8270      		andi r24,lo8(2) + 1735 0836 942F      		mov r25,r20 + 1736 0838 991F      		rol r25 + 1737 083a 9927      		clr r25 + 1738 083c 991F      		rol r25 + 1739 083e 892B      		or r24,r25 + 1740 0840 942F      		mov r25,r20 + 1741 0842 9695      		lsr r25 + 1742 0844 9695      		lsr r25 + 1743 0846 9695      		lsr r25 + 1744 0848 9470      		andi r25,lo8(4) + 1745 084a 892B      		or r24,r25 + 1746 084c 4695      		lsr r20 + 1747 084e 4870      		andi r20,lo8(8) + 1748 0850 842B      		or r24,r20 + 1749 0852 220F      		lsl r18 + 1750 0854 331F      		rol r19 + 1751 0856 922F      		mov r25,r18 + 1752 0858 9071      		andi r25,lo8(16) + 1753 085a 892B      		or r24,r25 + 1754 085c 220F      		lsl r18 + 1755 085e 331F      		rol r19 + 1756 0860 220F      		lsl r18 + 1757 0862 331F      		rol r19 + 1758 0864 922F      		mov r25,r18 + 1759 0866 9072      		andi r25,lo8(32) + 1760 0868 892B      		or r24,r25 + 1761 086a 220F      		lsl r18 + 1762 086c 331F      		rol r19 + 1763 086e 220F      		lsl r18 + 1764 0870 331F      		rol r19 + 1765               	.LVL148: + 1766 0872 922F      		mov r25,r18 + 1767 0874 9074      		andi r25,lo8(64) + 1768 0876 892B      		or r24,r25 + 1769 0878 220F      		lsl r18 + 1770 087a 331F      		rol r19 + 1771 087c 220F      		lsl r18 + 1772 087e 331F      		rol r19 + 1773               	.LM124: + 1774 0880 822B      		or r24,r18 + 1775               	/* epilogue start */ + 1776 0882 0895      		ret + 1777               	.LFE23: + 1779               	.global	line + 1781               	line: + 1782               	.LFB24: + 1783               	.LM125: + 1784               	.LVL149: + 1785 0884 2F92      		push r2 + 1786 0886 3F92      		push r3 + 1787 0888 4F92      		push r4 + 1788 088a 5F92      		push r5 + 1789 088c 6F92      		push r6 + 1790 088e 7F92      		push r7 + 1791 0890 8F92      		push r8 + 1792 0892 9F92      		push r9 + 1793 0894 AF92      		push r10 + 1794 0896 BF92      		push r11 + 1795 0898 CF92      		push r12 + 1796 089a DF92      		push r13 + 1797 089c EF92      		push r14 + 1798               	.LVL150: + 1799 089e FF92      		push r15 + 1800 08a0 0F93      		push r16 + 1801               	.LVL151: + 1802 08a2 1F93      		push r17 + 1803 08a4 DF93      		push r29 + 1804 08a6 CF93      		push r28 + 1805 08a8 CDB7      		in r28,__SP_L__ + 1806 08aa DEB7      		in r29,__SP_H__ + 1807 08ac 6297      		sbiw r28,18 + 1808 08ae 0FB6      		in __tmp_reg__,__SREG__ + 1809 08b0 F894      		cli + 1810 08b2 DEBF      		out __SP_H__,r29 + 1811 08b4 0FBE      		out __SREG__,__tmp_reg__ + 1812 08b6 CDBF      		out __SP_L__,r28 + 1813               	/* prologue: function */ + 1814               	/* frame size = 18 */ + 1815 08b8 4C01      		movw r8,r24 + 1816 08ba 5B01      		movw r10,r22 + 1817 08bc 2A01      		movw r4,r20 + 1818 08be 3901      		movw r6,r18 + 1819 08c0 6701      		movw r12,r14 + 1820               	.LVL152: + 1821               	.LM126: + 1822 08c2 2817      		cp r18,r24 + 1823 08c4 3907      		cpc r19,r25 + 1824 08c6 04F4      		brge .L119 + 1825               	.LVL153: + 1826 08c8 3401      		movw r6,r8 + 1827               	.LVL154: + 1828 08ca 4901      		movw r8,r18 + 1829 08cc C801      		movw r24,r16 + 1830               	.LVL155: + 1831 08ce 8B01      		movw r16,r22 + 1832               	.LVL156: + 1833 08d0 5C01      		movw r10,r24 + 1834 08d2 6A01      		movw r12,r20 + 1835 08d4 2701      		movw r4,r14 + 1836               	.LVL157: + 1837               	.L119: + 1838 08d6 1301      		movw r2,r6 + 1839 08d8 2818      		sub r2,r8 + 1840 08da 3908      		sbc r3,r9 + 1841               	.LM127: + 1842 08dc 0A15      		cp r16,r10 + 1843 08de 1B05      		cpc r17,r11 + 1844 08e0 04F4      		brge .L120 + 1845               	.LM128: + 1846 08e2 B501      		movw r22,r10 + 1847 08e4 601B      		sub r22,r16 + 1848 08e6 710B      		sbc r23,r17 + 1849 08e8 8827      		clr r24 + 1850 08ea 77FD      		sbrc r23,7 + 1851 08ec 8095      		com r24 + 1852 08ee 982F      		mov r25,r24 + 1853 08f0 00C0      		rjmp .L128 + 1854               	.LVL158: + 1855               	.L120: + 1856               	.LM129: + 1857 08f2 0A19      		sub r16,r10 + 1858 08f4 1B09      		sbc r17,r11 + 1859 08f6 B801      		movw r22,r16 + 1860 08f8 8827      		clr r24 + 1861 08fa 77FD      		sbrc r23,7 + 1862 08fc 8095      		com r24 + 1863 08fe 982F      		mov r25,r24 + 1864               	.L128: + 1865 0900 0E94 0000 		call __floatsisf + 1866 0904 7B01      		movw r14,r22 + 1867 0906 8C01      		movw r16,r24 + 1868 0908 B101      		movw r22,r2 + 1869 090a 8827      		clr r24 + 1870 090c 77FD      		sbrc r23,7 + 1871 090e 8095      		com r24 + 1872 0910 982F      		mov r25,r24 + 1873 0912 0E94 0000 		call __floatsisf + 1874 0916 9B01      		movw r18,r22 + 1875 0918 AC01      		movw r20,r24 + 1876 091a C801      		movw r24,r16 + 1877 091c B701      		movw r22,r14 + 1878 091e 0E94 0000 		call __divsf3 + 1879 0922 6D83      		std Y+5,r22 + 1880 0924 7E83      		std Y+6,r23 + 1881 0926 8F83      		std Y+7,r24 + 1882 0928 9887      		std Y+8,r25 + 1883               	.LVL159: + 1884 092a 1301      		movw r2,r6 + 1885 092c 2818      		sub r2,r8 + 1886 092e 3908      		sbc r3,r9 + 1887               	.LM130: + 1888 0930 C414      		cp r12,r4 + 1889 0932 D504      		cpc r13,r5 + 1890 0934 04F4      		brge .L122 + 1891               	.LM131: + 1892 0936 B201      		movw r22,r4 + 1893 0938 6C19      		sub r22,r12 + 1894 093a 7D09      		sbc r23,r13 + 1895 093c 8827      		clr r24 + 1896 093e 77FD      		sbrc r23,7 + 1897 0940 8095      		com r24 + 1898 0942 982F      		mov r25,r24 + 1899 0944 00C0      		rjmp .L129 + 1900               	.L122: + 1901               	.LM132: + 1902 0946 C418      		sub r12,r4 + 1903 0948 D508      		sbc r13,r5 + 1904 094a B601      		movw r22,r12 + 1905 094c 8827      		clr r24 + 1906 094e 77FD      		sbrc r23,7 + 1907 0950 8095      		com r24 + 1908 0952 982F      		mov r25,r24 + 1909               	.L129: + 1910 0954 0E94 0000 		call __floatsisf + 1911 0958 7B01      		movw r14,r22 + 1912 095a 8C01      		movw r16,r24 + 1913 095c B101      		movw r22,r2 + 1914 095e 8827      		clr r24 + 1915 0960 77FD      		sbrc r23,7 + 1916 0962 8095      		com r24 + 1917 0964 982F      		mov r25,r24 + 1918 0966 0E94 0000 		call __floatsisf + 1919 096a 9B01      		movw r18,r22 + 1920 096c AC01      		movw r20,r24 + 1921 096e C801      		movw r24,r16 + 1922 0970 B701      		movw r22,r14 + 1923 0972 0E94 0000 		call __divsf3 + 1924 0976 6983      		std Y+1,r22 + 1925 0978 7A83      		std Y+2,r23 + 1926 097a 8B83      		std Y+3,r24 + 1927 097c 9C83      		std Y+4,r25 + 1928               	.LVL160: + 1929               	.LM133: + 1930 097e 382C      		mov r3,r8 + 1931               	.LVL161: + 1932               	.LM134: + 1933 0980 C501      		movw r24,r10 + 1934 0982 AA27      		clr r26 + 1935 0984 97FD      		sbrc r25,7 + 1936 0986 A095      		com r26 + 1937 0988 BA2F      		mov r27,r26 + 1938 098a 8987      		std Y+9,r24 + 1939 098c 9A87      		std Y+10,r25 + 1940 098e AB87      		std Y+11,r26 + 1941 0990 BC87      		std Y+12,r27 + 1942 0992 C201      		movw r24,r4 + 1943 0994 AA27      		clr r26 + 1944 0996 97FD      		sbrc r25,7 + 1945 0998 A095      		com r26 + 1946 099a BA2F      		mov r27,r26 + 1947 099c 8D87      		std Y+13,r24 + 1948 099e 9E87      		std Y+14,r25 + 1949 09a0 AF87      		std Y+15,r26 + 1950 09a2 B88B      		std Y+16,r27 + 1951 09a4 00C0      		rjmp .L124 + 1952               	.L126: + 1953               	.LBB170: + 1954               	.LBB172: + 1955               	.LBB174: + 1956               	.LBB176: + 1957               	.LM135: + 1958 09a6 A989      		ldd r26,Y+17 + 1959 09a8 BA89      		ldd r27,Y+18 + 1960 09aa A830      		cpi r26,8 + 1961 09ac B105      		cpc r27,__zero_reg__ + 1962 09ae 00F0      		brlo .+2 + 1963 09b0 00C0      		rjmp .L125 + 1964               	.LBE176: + 1965               	.LBE174: + 1966               	.LBE172: + 1967               	.LBE170: + 1968               	.LM136: + 1969 09b2 BD01      		movw r22,r26 + 1970 09b4 6819      		sub r22,r8 + 1971 09b6 7909      		sbc r23,r9 + 1972 09b8 8827      		clr r24 + 1973 09ba 77FD      		sbrc r23,7 + 1974 09bc 8095      		com r24 + 1975 09be 982F      		mov r25,r24 + 1976 09c0 0E94 0000 		call __floatsisf + 1977 09c4 5B01      		movw r10,r22 + 1978 09c6 6C01      		movw r12,r24 + 1979               	.LVL162: + 1980               	.LM137: + 1981 09c8 6D81      		ldd r22,Y+5 + 1982 09ca 7E81      		ldd r23,Y+6 + 1983 09cc 8F81      		ldd r24,Y+7 + 1984 09ce 9885      		ldd r25,Y+8 + 1985 09d0 A601      		movw r20,r12 + 1986 09d2 9501      		movw r18,r10 + 1987 09d4 0E94 0000 		call __mulsf3 + 1988 09d8 7B01      		movw r14,r22 + 1989 09da 8C01      		movw r16,r24 + 1990 09dc 6985      		ldd r22,Y+9 + 1991 09de 7A85      		ldd r23,Y+10 + 1992 09e0 8B85      		ldd r24,Y+11 + 1993 09e2 9C85      		ldd r25,Y+12 + 1994 09e4 0E94 0000 		call __floatsisf + 1995 09e8 9B01      		movw r18,r22 + 1996 09ea AC01      		movw r20,r24 + 1997 09ec C801      		movw r24,r16 + 1998 09ee B701      		movw r22,r14 + 1999 09f0 0E94 0000 		call __addsf3 + 2000 09f4 0E94 0000 		call __fixunssfsi + 2001 09f8 462E      		mov r4,r22 + 2002               	.LVL163: + 2003 09fa 5524      		clr r5 + 2004               	.LBB180: + 2005               	.LBB171: + 2006               	.LBB173: + 2007               	.LBB175: + 2008               	.LM138: + 2009 09fc B8E0      		ldi r27,lo8(8) + 2010 09fe 4B16      		cp r4,r27 + 2011 0a00 5104      		cpc r5,__zero_reg__ + 2012 0a02 04F4      		brge .L125 + 2013               	.LBE175: + 2014               	.LBE173: + 2015               	.LBE171: + 2016               	.LBE180: + 2017               	.LM139: + 2018 0a04 6981      		ldd r22,Y+1 + 2019 0a06 7A81      		ldd r23,Y+2 + 2020 0a08 8B81      		ldd r24,Y+3 + 2021 0a0a 9C81      		ldd r25,Y+4 + 2022 0a0c A601      		movw r20,r12 + 2023 0a0e 9501      		movw r18,r10 + 2024 0a10 0E94 0000 		call __mulsf3 + 2025 0a14 7B01      		movw r14,r22 + 2026 0a16 8C01      		movw r16,r24 + 2027 0a18 6D85      		ldd r22,Y+13 + 2028 0a1a 7E85      		ldd r23,Y+14 + 2029 0a1c 8F85      		ldd r24,Y+15 + 2030 0a1e 9889      		ldd r25,Y+16 + 2031 0a20 0E94 0000 		call __floatsisf + 2032 0a24 9B01      		movw r18,r22 + 2033 0a26 AC01      		movw r20,r24 + 2034 0a28 C801      		movw r24,r16 + 2035 0a2a B701      		movw r22,r14 + 2036 0a2c 0E94 0000 		call __addsf3 + 2037 0a30 0E94 0000 		call __fixunssfsi + 2038 0a34 70E0      		ldi r23,lo8(0) + 2039               	.LBB181: + 2040               	.LBB179: + 2041               	.LBB178: + 2042               	.LBB177: + 2043               	.LM140: + 2044 0a36 6830      		cpi r22,8 + 2045 0a38 7105      		cpc r23,__zero_reg__ + 2046 0a3a 04F4      		brge .L125 + 2047               	.LBE177: + 2048               	.LBE178: + 2049               	.LM141: + 2050 0a3c FB01      		movw r30,r22 + 2051 0a3e 73E0      		ldi r23,3 + 2052 0a40 EE0F      	1:	lsl r30 + 2053 0a42 FF1F      		rol r31 + 2054 0a44 7A95      		dec r23 + 2055 0a46 01F4      		brne 1b + 2056 0a48 E40D      		add r30,r4 + 2057 0a4a F51D      		adc r31,r5 + 2058 0a4c E050      		subi r30,lo8(-(cube)) + 2059 0a4e F040      		sbci r31,hi8(-(cube)) + 2060 0a50 2081      		ld r18,Z + 2061 0a52 81E0      		ldi r24,lo8(1) + 2062 0a54 90E0      		ldi r25,hi8(1) + 2063 0a56 0988      		ldd r0,Y+17 + 2064 0a58 00C0      		rjmp 2f + 2065 0a5a 880F      	1:	lsl r24 + 2066 0a5c 991F      		rol r25 + 2067 0a5e 0A94      	2:	dec r0 + 2068 0a60 02F4      		brpl 1b + 2069 0a62 282B      		or r18,r24 + 2070 0a64 2083      		st Z,r18 + 2071               	.LVL164: + 2072               	.L125: + 2073               	.LBE179: + 2074               	.LBE181: + 2075               	.LM142: + 2076 0a66 3394      		inc r3 + 2077               	.L124: + 2078 0a68 E32D      		mov r30,r3 + 2079 0a6a F0E0      		ldi r31,lo8(0) + 2080 0a6c FA8B      		std Y+18,r31 + 2081 0a6e E98B      		std Y+17,r30 + 2082 0a70 6E16      		cp r6,r30 + 2083 0a72 7F06      		cpc r7,r31 + 2084 0a74 04F0      		brlt .+2 + 2085 0a76 00C0      		rjmp .L126 + 2086               	/* epilogue start */ + 2087               	.LM143: + 2088 0a78 6296      		adiw r28,18 + 2089 0a7a 0FB6      		in __tmp_reg__,__SREG__ + 2090 0a7c F894      		cli + 2091 0a7e DEBF      		out __SP_H__,r29 + 2092 0a80 0FBE      		out __SREG__,__tmp_reg__ + 2093 0a82 CDBF      		out __SP_L__,r28 + 2094 0a84 CF91      		pop r28 + 2095 0a86 DF91      		pop r29 + 2096 0a88 1F91      		pop r17 + 2097 0a8a 0F91      		pop r16 + 2098               	.LVL165: + 2099 0a8c FF90      		pop r15 + 2100 0a8e EF90      		pop r14 + 2101 0a90 DF90      		pop r13 + 2102 0a92 CF90      		pop r12 + 2103               	.LVL166: + 2104 0a94 BF90      		pop r11 + 2105 0a96 AF90      		pop r10 + 2106               	.LVL167: + 2107 0a98 9F90      		pop r9 + 2108 0a9a 8F90      		pop r8 + 2109               	.LVL168: + 2110 0a9c 7F90      		pop r7 + 2111 0a9e 6F90      		pop r6 + 2112               	.LVL169: + 2113 0aa0 5F90      		pop r5 + 2114 0aa2 4F90      		pop r4 + 2115               	.LVL170: + 2116 0aa4 3F90      		pop r3 + 2117               	.LVL171: + 2118 0aa6 2F90      		pop r2 + 2119 0aa8 0895      		ret + 2120               	.LFE24: + 2122               	.global	delay_ms + 2124               	delay_ms: + 2125               	.LFB25: + 2126               	.LM144: + 2127               	.LVL172: + 2128               	/* prologue: function */ + 2129               	/* frame size = 0 */ + 2130 0aaa 00C0      		rjmp .L131 + 2131               	.LVL173: + 2132               	.L133: + 2133               	.LM145: + 2134 0aac 20E0      		ldi r18,lo8(0) + 2135               	.L132: + 2136               	.LM146: + 2137               	/* #APP */ + 2138               	 ;  350 "draw.c" 1 + 2139 0aae 0000      		nop + 2140               	 ;  0 "" 2 + 2141               	 ;  350 "draw.c" 1 + 2142 0ab0 0000      		nop + 2143               	 ;  0 "" 2 + 2144               	 ;  350 "draw.c" 1 + 2145 0ab2 0000      		nop + 2146               	 ;  0 "" 2 + 2147               	 ;  350 "draw.c" 1 + 2148 0ab4 0000      		nop + 2149               	 ;  0 "" 2 + 2150               	 ;  350 "draw.c" 1 + 2151 0ab6 0000      		nop + 2152               	 ;  0 "" 2 + 2153               	 ;  350 "draw.c" 1 + 2154 0ab8 0000      		nop + 2155               	 ;  0 "" 2 + 2156               	.LM147: + 2157               	/* #NOAPP */ + 2158 0aba 2F5F      		subi r18,lo8(-(1)) + 2159 0abc 2A35      		cpi r18,lo8(90) + 2160 0abe 01F4      		brne .L132 + 2161               	.LM148: + 2162 0ac0 0197      		sbiw r24,1 + 2163               	.LVL174: + 2164               	.L131: + 2165 0ac2 0097      		sbiw r24,0 + 2166 0ac4 01F4      		brne .L133 + 2167               	/* epilogue start */ + 2168               	.LM149: + 2169 0ac6 0895      		ret + 2170               	.LFE25: + 2172               	.global	tmp2cube + 2174               	tmp2cube: + 2175               	.LFB26: + 2176               	.LM150: + 2177               	/* prologue: function */ + 2178               	/* frame size = 0 */ + 2179               	.LM151: + 2180 0ac8 40E0      		ldi r20,lo8(0) + 2181 0aca 50E0      		ldi r21,hi8(0) + 2182               	.LVL175: + 2183 0acc 00C0      		rjmp .L137 + 2184               	.LVL176: + 2185               	.L138: + 2186               	.LM152: + 2187 0ace FB01      		movw r30,r22 + 2188 0ad0 E20F      		add r30,r18 + 2189 0ad2 F31F      		adc r31,r19 + 2190 0ad4 DF01      		movw r26,r30 + 2191 0ad6 A050      		subi r26,lo8(-(fb)) + 2192 0ad8 B040      		sbci r27,hi8(-(fb)) + 2193 0ada 8C91      		ld r24,X + 2194 0adc E050      		subi r30,lo8(-(cube)) + 2195 0ade F040      		sbci r31,hi8(-(cube)) + 2196 0ae0 8083      		st Z,r24 + 2197               	.LM153: + 2198 0ae2 2F5F      		subi r18,lo8(-(1)) + 2199 0ae4 3F4F      		sbci r19,hi8(-(1)) + 2200 0ae6 2830      		cpi r18,8 + 2201 0ae8 3105      		cpc r19,__zero_reg__ + 2202 0aea 01F4      		brne .L138 + 2203               	.LM154: + 2204 0aec 4F5F      		subi r20,lo8(-(1)) + 2205 0aee 5F4F      		sbci r21,hi8(-(1)) + 2206 0af0 4830      		cpi r20,8 + 2207 0af2 5105      		cpc r21,__zero_reg__ + 2208 0af4 01F0      		breq .L140 + 2209               	.L137: + 2210 0af6 20E0      		ldi r18,lo8(0) + 2211 0af8 30E0      		ldi r19,hi8(0) + 2212               	.LM155: + 2213 0afa BA01      		movw r22,r20 + 2214 0afc E3E0      		ldi r30,3 + 2215 0afe 660F      	1:	lsl r22 + 2216 0b00 771F      		rol r23 + 2217 0b02 EA95      		dec r30 + 2218 0b04 01F4      		brne 1b + 2219 0b06 00C0      		rjmp .L138 + 2220               	.L140: + 2221 0b08 0895      		ret + 2222               	.LFE26: + 2224               	.global	shift + 2226               	shift: + 2227               	.LFB27: + 2228               	.LM156: + 2229               	.LVL177: + 2230 0b0a 2F92      		push r2 + 2231 0b0c 3F92      		push r3 + 2232 0b0e 4F92      		push r4 + 2233 0b10 5F92      		push r5 + 2234 0b12 6F92      		push r6 + 2235 0b14 7F92      		push r7 + 2236 0b16 9F92      		push r9 + 2237 0b18 AF92      		push r10 + 2238 0b1a BF92      		push r11 + 2239 0b1c CF92      		push r12 + 2240 0b1e DF92      		push r13 + 2241 0b20 EF92      		push r14 + 2242 0b22 FF92      		push r15 + 2243 0b24 0F93      		push r16 + 2244 0b26 1F93      		push r17 + 2245 0b28 CF93      		push r28 + 2246 0b2a DF93      		push r29 + 2247               	/* prologue: function */ + 2248               	/* frame size = 0 */ + 2249 0b2c 982E      		mov r9,r24 + 2250 0b2e 5B01      		movw r10,r22 + 2251               	.LM157: + 2252 0b30 CC24      		clr r12 + 2253 0b32 DD24      		clr r13 + 2254               	.LVL178: + 2255               	.LM158: + 2256 0b34 A7E0      		ldi r26,lo8(7) + 2257 0b36 2A2E      		mov r2,r26 + 2258 0b38 312C      		mov r3,__zero_reg__ + 2259               	.LVL179: + 2260               	.L153: + 2261 0b3a 8FEF      		ldi r24,lo8(-1) + 2262 0b3c A816      		cp r10,r24 + 2263 0b3e 8FEF      		ldi r24,hi8(-1) + 2264 0b40 B806      		cpc r11,r24 + 2265 0b42 01F4      		brne .L143 + 2266 0b44 7601      		movw r14,r12 + 2267 0b46 00C0      		rjmp .L144 + 2268               	.L143: + 2269 0b48 7101      		movw r14,r2 + 2270 0b4a EC18      		sub r14,r12 + 2271 0b4c FD08      		sbc r15,r13 + 2272               	.L144: + 2273 0b4e 00E0      		ldi r16,lo8(0) + 2274 0b50 10E0      		ldi r17,hi8(0) + 2275               	.LM159: + 2276 0b52 2701      		movw r4,r14 + 2277               	.LVL180: + 2278 0b54 0894      		sec + 2279 0b56 4108      		sbc r4,__zero_reg__ + 2280 0b58 5108      		sbc r5,__zero_reg__ + 2281               	.LM160: + 2282 0b5a 3701      		movw r6,r14 + 2283               	.LVL181: + 2284 0b5c 0894      		sec + 2285 0b5e 611C      		adc r6,__zero_reg__ + 2286 0b60 711C      		adc r7,__zero_reg__ + 2287 0b62 00C0      		rjmp .L145 + 2288               	.LVL182: + 2289               	.L151: + 2290               	.LM161: + 2291 0b64 8FEF      		ldi r24,lo8(-1) + 2292 0b66 A816      		cp r10,r24 + 2293 0b68 8FEF      		ldi r24,hi8(-1) + 2294 0b6a B806      		cpc r11,r24 + 2295 0b6c 01F4      		brne .L146 + 2296               	.LM162: + 2297 0b6e C301      		movw r24,r6 + 2298 0b70 00C0      		rjmp .L166 + 2299               	.L146: + 2300               	.LM163: + 2301 0b72 C201      		movw r24,r4 + 2302               	.LVL183: + 2303               	.L166: + 2304 0b74 AC01      		movw r20,r24 + 2305               	.LM164: + 2306 0b76 8AE7      		ldi r24,lo8(122) + 2307 0b78 9816      		cp r9,r24 + 2308 0b7a 01F4      		brne .L148 + 2309               	.LVL184: + 2310               	.LM165: + 2311 0b7c C801      		movw r24,r16 + 2312 0b7e BE01      		movw r22,r28 + 2313 0b80 0E94 0000 		call getvoxel + 2314 0b84 282F      		mov r18,r24 + 2315               	.LM166: + 2316 0b86 C801      		movw r24,r16 + 2317 0b88 BE01      		movw r22,r28 + 2318 0b8a A701      		movw r20,r14 + 2319 0b8c 00C0      		rjmp .L167 + 2320               	.LVL185: + 2321               	.L148: + 2322               	.LM167: + 2323 0b8e 89E7      		ldi r24,lo8(121) + 2324 0b90 9816      		cp r9,r24 + 2325 0b92 01F4      		brne .L150 + 2326               	.LM168: + 2327 0b94 C801      		movw r24,r16 + 2328 0b96 BA01      		movw r22,r20 + 2329 0b98 AE01      		movw r20,r28 + 2330 0b9a 0E94 0000 		call getvoxel + 2331 0b9e 282F      		mov r18,r24 + 2332               	.LM169: + 2333 0ba0 C801      		movw r24,r16 + 2334 0ba2 B701      		movw r22,r14 + 2335 0ba4 00C0      		rjmp .L169 + 2336               	.LVL186: + 2337               	.L150: + 2338               	.LM170: + 2339 0ba6 88E7      		ldi r24,lo8(120) + 2340 0ba8 9816      		cp r9,r24 + 2341 0baa 01F4      		brne .L149 + 2342               	.LM171: + 2343 0bac CA01      		movw r24,r20 + 2344 0bae BE01      		movw r22,r28 + 2345 0bb0 A801      		movw r20,r16 + 2346 0bb2 0E94 0000 		call getvoxel + 2347 0bb6 282F      		mov r18,r24 + 2348               	.LM172: + 2349 0bb8 C701      		movw r24,r14 + 2350 0bba B801      		movw r22,r16 + 2351               	.L169: + 2352 0bbc AE01      		movw r20,r28 + 2353               	.L167: + 2354 0bbe 30E0      		ldi r19,lo8(0) + 2355 0bc0 0E94 0000 		call altervoxel + 2356               	.LVL187: + 2357               	.L149: + 2358               	.LM173: + 2359 0bc4 2196      		adiw r28,1 + 2360 0bc6 C830      		cpi r28,8 + 2361 0bc8 D105      		cpc r29,__zero_reg__ + 2362 0bca 01F4      		brne .L151 + 2363               	.LM174: + 2364 0bcc 0F5F      		subi r16,lo8(-(1)) + 2365 0bce 1F4F      		sbci r17,hi8(-(1)) + 2366 0bd0 0830      		cpi r16,8 + 2367 0bd2 1105      		cpc r17,__zero_reg__ + 2368 0bd4 01F0      		breq .L152 + 2369               	.L145: + 2370 0bd6 C0E0      		ldi r28,lo8(0) + 2371 0bd8 D0E0      		ldi r29,hi8(0) + 2372 0bda 00C0      		rjmp .L151 + 2373               	.L152: + 2374               	.LM175: + 2375 0bdc 0894      		sec + 2376 0bde C11C      		adc r12,__zero_reg__ + 2377 0be0 D11C      		adc r13,__zero_reg__ + 2378 0be2 88E0      		ldi r24,lo8(8) + 2379 0be4 C816      		cp r12,r24 + 2380 0be6 D104      		cpc r13,__zero_reg__ + 2381 0be8 01F0      		breq .+2 + 2382 0bea 00C0      		rjmp .L153 + 2383               	.LM176: + 2384 0bec 8FEF      		ldi r24,lo8(-1) + 2385 0bee A816      		cp r10,r24 + 2386 0bf0 8FEF      		ldi r24,hi8(-1) + 2387 0bf2 B806      		cpc r11,r24 + 2388 0bf4 01F0      		breq .L154 + 2389 0bf6 EE24      		clr r14 + 2390 0bf8 FF24      		clr r15 + 2391               	.LVL188: + 2392 0bfa 00C0      		rjmp .L155 + 2393               	.LVL189: + 2394               	.L154: + 2395 0bfc F7E0      		ldi r31,lo8(7) + 2396 0bfe EF2E      		mov r14,r31 + 2397 0c00 F12C      		mov r15,__zero_reg__ + 2398               	.LVL190: + 2399               	.L155: + 2400 0c02 00E0      		ldi r16,lo8(0) + 2401 0c04 10E0      		ldi r17,hi8(0) + 2402               	.LVL191: + 2403 0c06 00C0      		rjmp .L156 + 2404               	.L160: + 2405               	.LM177: + 2406 0c08 8AE7      		ldi r24,lo8(122) + 2407 0c0a 9816      		cp r9,r24 + 2408 0c0c 01F4      		brne .L157 + 2409               	.LM178: + 2410 0c0e C801      		movw r24,r16 + 2411 0c10 BE01      		movw r22,r28 + 2412 0c12 A701      		movw r20,r14 + 2413 0c14 00C0      		rjmp .L168 + 2414               	.LVL192: + 2415               	.L157: + 2416               	.LM179: + 2417 0c16 89E7      		ldi r24,lo8(121) + 2418 0c18 9816      		cp r9,r24 + 2419 0c1a 01F4      		brne .L159 + 2420               	.LM180: + 2421 0c1c C801      		movw r24,r16 + 2422 0c1e B701      		movw r22,r14 + 2423 0c20 AE01      		movw r20,r28 + 2424 0c22 00C0      		rjmp .L168 + 2425               	.LVL193: + 2426               	.L159: + 2427               	.LM181: + 2428 0c24 88E7      		ldi r24,lo8(120) + 2429 0c26 9816      		cp r9,r24 + 2430 0c28 01F4      		brne .L158 + 2431               	.LM182: + 2432 0c2a C701      		movw r24,r14 + 2433 0c2c BE01      		movw r22,r28 + 2434 0c2e A801      		movw r20,r16 + 2435               	.L168: + 2436 0c30 0E94 0000 		call clrvoxel + 2437               	.LVL194: + 2438               	.L158: + 2439               	.LM183: + 2440 0c34 2196      		adiw r28,1 + 2441 0c36 C830      		cpi r28,8 + 2442 0c38 D105      		cpc r29,__zero_reg__ + 2443 0c3a 01F4      		brne .L160 + 2444               	.LM184: + 2445 0c3c 0F5F      		subi r16,lo8(-(1)) + 2446 0c3e 1F4F      		sbci r17,hi8(-(1)) + 2447 0c40 0830      		cpi r16,8 + 2448 0c42 1105      		cpc r17,__zero_reg__ + 2449 0c44 01F0      		breq .L162 + 2450               	.L156: + 2451 0c46 C0E0      		ldi r28,lo8(0) + 2452 0c48 D0E0      		ldi r29,hi8(0) + 2453 0c4a 00C0      		rjmp .L160 + 2454               	.L162: + 2455               	/* epilogue start */ + 2456               	.LM185: + 2457 0c4c DF91      		pop r29 + 2458 0c4e CF91      		pop r28 + 2459               	.LVL195: + 2460 0c50 1F91      		pop r17 + 2461 0c52 0F91      		pop r16 + 2462               	.LVL196: + 2463 0c54 FF90      		pop r15 + 2464 0c56 EF90      		pop r14 + 2465               	.LVL197: + 2466 0c58 DF90      		pop r13 + 2467 0c5a CF90      		pop r12 + 2468 0c5c BF90      		pop r11 + 2469 0c5e AF90      		pop r10 + 2470               	.LVL198: + 2471 0c60 9F90      		pop r9 + 2472               	.LVL199: + 2473 0c62 7F90      		pop r7 + 2474 0c64 6F90      		pop r6 + 2475               	.LVL200: + 2476 0c66 5F90      		pop r5 + 2477 0c68 4F90      		pop r4 + 2478               	.LVL201: + 2479 0c6a 3F90      		pop r3 + 2480 0c6c 2F90      		pop r2 + 2481 0c6e 0895      		ret + 2482               	.LFE27: + 2484               		.comm cube,64,1 + 2485               		.comm fb,64,1 + 2710               	.Letext0: +DEFINED SYMBOLS +                            *ABS*:0000000000000000 draw.c +     /tmp/ccqCtm9Q.s:2      *ABS*:000000000000003f __SREG__ +     /tmp/ccqCtm9Q.s:3      *ABS*:000000000000003e __SP_H__ +     /tmp/ccqCtm9Q.s:4      *ABS*:000000000000003d __SP_L__ +     /tmp/ccqCtm9Q.s:5      *ABS*:0000000000000034 __CCP__ +     /tmp/ccqCtm9Q.s:6      *ABS*:0000000000000000 __tmp_reg__ +     /tmp/ccqCtm9Q.s:7      *ABS*:0000000000000001 __zero_reg__ +     /tmp/ccqCtm9Q.s:20     .text:0000000000000000 setvoxel +                            *COM*:0000000000000040 cube +     /tmp/ccqCtm9Q.s:74     .text:0000000000000046 tmpsetvoxel +                            *COM*:0000000000000040 fb +     /tmp/ccqCtm9Q.s:128    .text:000000000000008c clrvoxel +     /tmp/ccqCtm9Q.s:183    .text:00000000000000d4 tmpclrvoxel +     /tmp/ccqCtm9Q.s:238    .text:000000000000011c inrange +     /tmp/ccqCtm9Q.s:277    .text:0000000000000144 getvoxel +     /tmp/ccqCtm9Q.s:336    .text:000000000000018a altervoxel +     /tmp/ccqCtm9Q.s:404    .text:00000000000001d8 flpvoxel +     /tmp/ccqCtm9Q.s:458    .text:000000000000021e argorder +     /tmp/ccqCtm9Q.s:497    .text:0000000000000242 setplane_z +     /tmp/ccqCtm9Q.s:538    .text:0000000000000270 clrplane_z +     /tmp/ccqCtm9Q.s:578    .text:000000000000029c setplane_x +     /tmp/ccqCtm9Q.s:645    .text:00000000000002f2 clrplane_x +     /tmp/ccqCtm9Q.s:713    .text:000000000000034a setplane_y +     /tmp/ccqCtm9Q.s:752    .text:0000000000000378 clrplane_y +     /tmp/ccqCtm9Q.s:790    .text:00000000000003a4 fill +     /tmp/ccqCtm9Q.s:839    .text:00000000000003de tmpfill +     /tmp/ccqCtm9Q.s:888    .text:0000000000000418 box_filled +     /tmp/ccqCtm9Q.s:1026   .text:00000000000004ae box_walls +     /tmp/ccqCtm9Q.s:1212   .text:0000000000000596 box_wireframe +     /tmp/ccqCtm9Q.s:1685   .text:0000000000000802 byteline +     /tmp/ccqCtm9Q.s:1721   .text:000000000000082a flipbyte +     /tmp/ccqCtm9Q.s:1781   .text:0000000000000884 line +     /tmp/ccqCtm9Q.s:2124   .text:0000000000000aaa delay_ms +     /tmp/ccqCtm9Q.s:2174   .text:0000000000000ac8 tmp2cube +     /tmp/ccqCtm9Q.s:2226   .text:0000000000000b0a shift + +UNDEFINED SYMBOLS +__do_copy_data +__do_clear_bss +__floatsisf +__divsf3 +__mulsf3 +__addsf3 +__fixunssfsi diff --git a/instructables/cube_pc/draw_3d.c b/instructables/cube_pc/draw_3d.c new file mode 100644 index 0000000..c3201d9 --- /dev/null +++ b/instructables/cube_pc/draw_3d.c @@ -0,0 +1,96 @@ +#include "draw_3d.h" +#include <math.h> + + +vertex point_rotate_around_point (vertex point, vertex center, float rotation_x, float rotation_y, float rotation_z) +{ +	float x, y, z; +	float sx,cx, sy,cy, sz,cz; +	float xy,xz, yx,yz, zx,zy; +	vertex newpoint; + +	// Center all the points around 0,0,0 +	x = point.x - center.x; +	y = point.y - center.y; +	z = point.z - center.z; + +	// Precalculate sinus and cosinus for each axis rotation +	sx = sin(rotation_x); +	cx = cos(rotation_x); + +	sy = sin(rotation_y); +	cy = cos(rotation_y); + +	sz = sin(rotation_z); +	cz = cos(rotation_z); + + +	// Rotation around x +	xy = cx*y - sx*z; +	xz = sx*y + cx*z; +	 +	// Rotation around y +	yz = cy*xz - sy*x; +	yx = sy*xz + cy*x; +	 +	// Rotation around z +	zx = cz*yx - sz*xy; +	zy = sz*yx + cz*xy; + +	newpoint.x = zx + center.x; +	newpoint.y = zy + center.y; +	newpoint.z = yz + center.z; + + +	return newpoint; +} + + +// Calculate all 8 corners of a cube. +void calculate_cube_corners (vertex pnt[8], vertex center, float size) +{ + +	// Distance from center on any axis. +	float dist = size/2; + +	// Points +	// X				Y				Z + +	pnt[0].x = center.x+dist;	pnt[0].y = center.y+dist;	pnt[0].z = center.z+dist;	// 0 right, front, upper +	pnt[1].x = center.x-dist;	pnt[1].y = center.y+dist;	pnt[1].z = center.z+dist;	// 1 left, front, upper +	pnt[2].x = center.x+dist;	pnt[2].y = center.y-dist;	pnt[2].z = center.z+dist;	// 2 right, back, upper +	pnt[3].x = center.x-dist;	pnt[3].y = center.y-dist;	pnt[3].z = center.z+dist;	// 3 left, back, uppper +	pnt[4].x = center.x+dist;	pnt[4].y = center.y+dist;	pnt[4].z = center.z-dist;	// 4 right, front, lower +	pnt[5].x = center.x-dist;	pnt[5].y = center.y+dist;	pnt[5].z = center.z-dist;	// 5 left, front, lower +	pnt[6].x = center.x+dist;	pnt[6].y = center.y-dist;	pnt[6].z = center.z-dist;	// 6 right, back, lower +	pnt[7].x = center.x-dist;	pnt[7].y = center.y-dist;	pnt[7].z = center.z-dist;	// 7 left, bakc, lower + + +} + +void draw_cube_wireframe (vertex pnt[8]) +{ +	int i; +	 +	// upper "lid" +	line_3d ((int)pnt[0].x,(int)pnt[0].y,(int)pnt[0].z,(int)pnt[1].x,(int)pnt[1].y,(int)pnt[1].z); +	line_3d ((int)pnt[2].x,(int)pnt[2].y,(int)pnt[2].z,(int)pnt[3].x,(int)pnt[3].y,(int)pnt[3].z); +	line_3d ((int)pnt[1].x,(int)pnt[1].y,(int)pnt[1].z,(int)pnt[3].x,(int)pnt[3].y,(int)pnt[3].z); +	line_3d ((int)pnt[2].x,(int)pnt[2].y,(int)pnt[2].z,(int)pnt[0].x,(int)pnt[0].y,(int)pnt[0].z); + +	// lower "lid" +	line_3d ((int)pnt[4].x,(int)pnt[4].y,(int)pnt[4].z,(int)pnt[5].x,(int)pnt[5].y,(int)pnt[5].z); +	line_3d ((int)pnt[6].x,(int)pnt[6].y,(int)pnt[6].z,(int)pnt[7].x,(int)pnt[7].y,(int)pnt[7].z); +	line_3d ((int)pnt[5].x,(int)pnt[5].y,(int)pnt[5].z,(int)pnt[7].x,(int)pnt[7].y,(int)pnt[7].z); +	line_3d ((int)pnt[6].x,(int)pnt[6].y,(int)pnt[6].z,(int)pnt[4].x,(int)pnt[4].y,(int)pnt[4].z); + +	// side walls +	line_3d ((int)pnt[0].x,(int)pnt[0].y,(int)pnt[0].z,(int)pnt[4].x,(int)pnt[4].y,(int)pnt[4].z); +	line_3d ((int)pnt[1].x,(int)pnt[1].y,(int)pnt[1].z,(int)pnt[5].x,(int)pnt[5].y,(int)pnt[5].z); +	line_3d ((int)pnt[2].x,(int)pnt[2].y,(int)pnt[2].z,(int)pnt[6].x,(int)pnt[6].y,(int)pnt[6].z); +	line_3d ((int)pnt[3].x,(int)pnt[3].y,(int)pnt[3].z,(int)pnt[7].x,(int)pnt[7].y,(int)pnt[7].z); + +} + + + diff --git a/instructables/cube_pc/draw_3d.h b/instructables/cube_pc/draw_3d.h new file mode 100644 index 0000000..0f56033 --- /dev/null +++ b/instructables/cube_pc/draw_3d.h @@ -0,0 +1,26 @@ +#include <stdlib.h> + +#ifndef DRAW3D_H +#define DRAW3D_H + + +typedef struct { +	float x; +	float y; +	float z; +} vertex; + +typedef struct { +    int x; +    int y; +    int z; +} intvertex; + +vertex point_rotate_around_point (vertex point, vertex center, float rotation_x, float rotation_y, float rotation_z); + +void rotate_cube_contents(float rx, float ry, float rz); + +void calculate_cube_corners (vertex points[8], vertex center, float size); + + +#endif diff --git a/instructables/cube_pc/effect.c b/instructables/cube_pc/effect.c new file mode 100644 index 0000000..e6ed54a --- /dev/null +++ b/instructables/cube_pc/effect.c @@ -0,0 +1,1478 @@ +#include "effect.h" +#include "draw.h" +#include "font.h" +#include <math.h> + +void effect_test (void) +{ + +	int x,y,i; + +	for (i=0;i<1000;i++) +	{ +		x = sin(i/8)*2+3.5; +		y = cos(i/8)*2+3.5; + +		setvoxel(x,y,1); +		setvoxel(x,y,1); +		delay_ms(1000); +		fill(0x00); +	} + +} + + +//void effext_stringfly2 (char *str, char axis, char mirror, char direction, int delay, int space) +void effect_stringfly2(char * str) +{ +	int x,y,i,ii; +	int state; +	 +	unsigned char chr[5]; +	 +	while (*str) +	{ +		font_getchar(*str++, chr); +		 +		for (x = 0; x < 5; x++) +		{ +			for (y = 0; y < 8; y++) +			{ +				if ((chr[x] & (0x80>>y))) +				{ +					setvoxel(7,x+2,y); +				} +			} +		} +		 +		for (ii = 0; ii<6; ii++) +		{ +			delay_ms(1500); +			for (i = 0; i < 7; i++) +			{ +				for (x = 0; x < 8; x++) +				{ +					for (y = 0; y < 8; y++) +					{ +						state = getvoxel(i+1,x,y); +						altervoxel(i,x,y,state); +					} +				} +			} +			for (x = 0; x < 8; x++) +			{ +				for (y = 0; y < 8; y++) +				{ +					clrvoxel(7,x,y); +				} +			} +		} +	} +	for (ii = 0; ii<8; ii++) +	{ +		delay_ms(1500); +		for (i = 0; i < 7; i++) +		{ +			for (x = 0; x < 8; x++) +			{ +				for (y = 0; y < 8; y++) +				{ +					state = getvoxel(i+1,x,y); +					altervoxel(i,x,y,state); +				} +			} +		} +		for (x = 0; x < 8; x++) +		{ +			for (y = 0; y < 8; y++) +			{ +				clrvoxel(7,x,y); +			} +		} +	} +	 +} + +void effect_planboing (int plane, int speed) +{ +	int i; +	for (i=0;i<8;i++) +	{ +		fill(0x00); +		if (plane == AXIS_Z) +			setplane_z(i); +		 +		if (plane == AXIS_X) +			setplane_x(i); +		 +		if (plane == AXIS_Y) +			setplane_y(i); +		 +		delay_ms(speed); +	} +	 +	for (i=7;i>=0;i--) +	{ +		fill(0x00); +		if (plane == AXIS_Z) +			setplane_z(i); +		 +		if (plane == AXIS_X) +			setplane_x(i); +		 +		if (plane == AXIS_Y) +			setplane_y(i); +			 +		delay_ms(speed); +	} +} + +void effect_blinky2() +{ +	int i,r; +	fill(0x00); +	 +	for (r=0;r<2;r++) +	{ +		i = 750; +		while (i>0) +		{ +			fill(0x00); +			delay_ms(i); +			 +			fill(0xff); +			delay_ms(100); +			 +			i = i - (15+(1000/(i/10))); +		} +		 +		delay_ms(1000); +		 +		i = 750; +		while (i>0) +		{ +			fill(0x00); +			delay_ms(751-i); +			 +			fill(0xff); +			delay_ms(100); +			 +			i = i - (15+(1000/(i/10))); +		} +	} + +} + +void effect_box_shrink_grow (int iterations, int mode, int direction, uint16_t delay) +{ +	int x; +	int i; +	 +	int x1 = 0; +	int y1 = 0; +	int z1 = 0; +	int x2 = 0; +	int y2 = 0; +	int z2 = 0; +	 +	 +	for (x=0;x<iterations;x++) +	{ +		for (i=7;i>=0;i--) +		{ +			if(direction == 0) +			{ +				// Dette funker også.. +				// memcpy(test, (int[]){1, 2, 3, 4, 5, 6}, 6 * sizeof(int)); +				x1=0; y1=0; z1=0; x2=i; y2=i; z2=i; +			} + +			if(direction == 1) // fail +			{ +				x1=0; y1=0; z1=7-i; x2=i; y2=i; z2=7; +			} + +			if(direction == 2) +			{ +				x1=0; y1=7; z1=0; x2=i; y2=7-i; z2=i; +			} + +			if(direction == 3) //fail +			{ +				x1=0; y1=7; z1=7; x2=i; y2=7-i; z2=7-i; +			} + +			if(direction == 4) //fail +			{ +				x1=7; y1=0; z1=0; x2=7-i; y2=i; z2=i; +			} + +			if(direction == 5) +			{ +				x1=7; y1=0; z1=7; x2=7-i; y2=i; z2=7-i; +			} + +			if(direction == 6) //fail +			{ +				x1=7; y1=7; z1=0; x2=7-i; y2=7-i; z2=i; +			} + +			if(direction == 7) +			{ +				x1=7; y1=7; z1=7; x2=7-i; y2=7-i; z2=7-i; +			} + +			if (mode == 3) +			{ +				box_filled(x1,y1,z1,x2,y2,z2); +			} +			else if (mode == 2) +			{ +				box_walls(x1,y1,z1,x2,y2,z2); +			} +			else +			{ +				box_wireframe(x1,y1,z1,x2,y2,z2); +			} + +			delay_ms(delay); +			fill(0x00); +		} +		for (i=0;i<8;i++) +		{ +			if(direction == 0) +			{ +				x1=0; y1=0; z1=0; x2=i; y2=i; z2=i; +			} + +			if(direction == 1) // fail +			{ +				x1=0; y1=0; z1=7-i; x2=i; y2=i; z2=7; +			} + +			if(direction == 2) +			{ +				x1=0; y1=7; z1=0; x2=i; y2=7-i; z2=i; +			} + +			if(direction == 3) //fail +			{ +				x1=0; y1=7; z1=7; x2=i; y2=7-i; z2=7-i; +			} + +			if(direction == 4) //fail +			{ +				x1=7; y1=0; z1=0; x2=7-i; y2=i; z2=i; +			} + +			if(direction == 5) +			{ +				x1=7; y1=0; z1=7; x2=7-i; y2=i; z2=7-i; +			} + +			if(direction == 6) //fail +			{ +				x1=7; y1=7; z1=0; x2=7-i; y2=7-i; z2=i; +			} + +			if(direction == 7) +			{ +				x1=7; y1=7; z1=7; x2=7-i; y2=7-i; z2=7-i; +			} + +			if (mode == 3) +			{ +				box_filled(x1,y1,z1,x2,y2,z2); +			} +			else if (mode == 2) +			{ +				box_walls(x1,y1,z1,x2,y2,z2); +			} +			else +			{ +				box_wireframe(x1,y1,z1,x2,y2,z2); +			} +			 +			delay_ms(delay); +			fill(0x00); +                } +        } +} + + +void effect_box_woopwoop (int delay, int grow) +{ +	int i; +	 +	fill(0x00); +	if (grow == 1) +	{ +		for (i=0;i<4;i++) +		{ +			box_wireframe(4+i,4+i,4+i,3-i,3-i,3-i); +			delay_ms(delay); +			fill(0x00); +		} +	} else +	{ +		for (i=3;i>=0;i--) +		{ +			box_wireframe(4+i,4+i,4+i,3-i,3-i,3-i); +			delay_ms(delay); +			fill(0x00); +		} +	} +} + + +// Send a voxel flying from one side of the cube to the other +// It its at the bottom, send it to the top.. +void sendvoxel_z (unsigned char x, unsigned char y, unsigned char z, int delay) +{ +	int i, ii; +	for (i=0; i<8; i++) +	{ +		if (z == 7) +		{ +			ii = 7-i; +			clrvoxel(x,y,ii+1); +		} else +		{ +			ii = i; +			clrvoxel(x,y,ii-1); +		} +		setvoxel(x,y,ii); +		delay_ms(delay); +	} +} + +// Send all the voxels from one side of the cube to the other +// Start at z and send to the opposite side. +// Sends in random order. +void sendplane_rand_z (unsigned char z, int delay, int wait) +{ +	unsigned char loop = 16; +	unsigned char x, y; + +	fill(0x00); + +	setplane_z(z); +	 +	// Send voxels at random untill all 16 have crossed the cube. +	while(loop) +	{ +		x = rand()%4; +		y = rand()%4; +		if (getvoxel(x,y,z)) +		{ +			// Send the voxel flying +			sendvoxel_z(x,y,z,delay); +			delay_ms(wait); +			loop--; // one down, loop-- to go. when this hits 0, the loop exits.  +		} +	} +} + +// For each coordinate along X and Y, a voxel is set either at level 0 or at level 7 +// for n iterations, a random voxel is sent to the opposite side of where it was. +void sendvoxels_rand_z (int iterations, int delay, int wait) +{ +	unsigned char x, y, last_x, last_y, i; + +	last_x = 0; +	last_y = 0; + +	fill(0x00); +	 +	//srand(123); + +	// Loop through all the X and Y coordinates +	for (x=0;x<8;x++) +	{ +		for (y=0;y<8;y++) +		{ +			// Then set a voxel either at the top or at the bottom +			if (rand()%2 == 0) +			{ +				 +				setvoxel(x,y,0); +			} else +			{ +				setvoxel(x,y,7); +			} +			 +			 +		} +	} + +	for (i=0;i<iterations;i++) +	{ +		// Pick a random x,y position +		x = rand()%8; +		y = rand()%8; +		// but not the sameone twice in a row +		if (y != last_y && x != last_x) +		{ +			// If the voxel at this x,y is at the bottom +			if (getvoxel(x,y,0)) +			{ +				// send it to the top +				sendvoxel_z(x,y,0,delay); +			} else +			{ +				// if its at the top, send it to the bottom +				sendvoxel_z(x,y,7,delay); +			} +			delay_ms(wait); +			 +			// Remember the last move +			last_y = y; +			last_x = x; +		} +	} + +} + + +// Big ugly function :p but it looks pretty +void boingboing(uint16_t iterations, int delay, unsigned char mode, unsigned char drawmode) +{ +	fill(0x00);		// Blank the cube + +	int x, y, z;		// Current coordinates for the point +	int dx, dy, dz;	// Direction of movement +	int lol, i;		// lol? +	unsigned char crash_x, crash_y, crash_z; + +	// Coordinate array for the snake. +	int snake[8][3]; +	for (i=0;i<8;i++) +	{ +		snake[i][0] = 4; +		snake[i][1] = 4; +		snake[i][2] = 4; +	} +	 +	y = rand()%8; +	x = rand()%8; +	z = rand()%8; +	 +	dx = 1; +	dy = 1; +	dz = 1; +	 +	while(iterations) +	{ +		crash_x = 0; +		crash_y = 0; +		crash_z = 0; +	 + +		// Let's mix things up a little: +		if (rand()%3 == 0) +		{ +			// Pick a random axis, and set the speed to a random number. +			lol = rand()%3; +			if (lol == 0) +				dx = rand()%3 - 1; +			 +			if (lol == 1) +				dy = rand()%3 - 1; +				 +			if (lol == 2) +				dz = rand()%3 - 1; +		} + +	 +		if (dx == -1 && x == 0) +		{ +			crash_x = 0x01; +			if (rand()%3 == 1) +			{ +				dx = 1; +			} else +			{ +				dx = 0; +			} +		} +		 +		if (dy == -1 && y == 0) +		{ +			crash_y = 0x01; +			if (rand()%3 == 1) +			{ +				dy = 1; +			} else +			{ +				dy = 0; +			} +		} +		 +		if (dz == -1 && z == 0) +		{ +			crash_z = 0x01; +			if (rand()%3 == 1) +			{ +				dz = 1; +			} else +			{ +				dz = 0; +			} +		} +			 +		if (dx == 1 && x == 7) +		{ +			crash_x = 0x01; +			if (rand()%3 == 1) +			{ +				dx = -1; +			} else +			{ +				dx = 0; +			} +		} +		 +		if (dy == 1 && y == 7) +		{ +			crash_y = 0x01; +			if (rand()%3 == 1) +			{ +				dy = -1; +			} else +			{ +				dy = 0; +			} +		} +		 +		if (dz == 1 && z == 7) +		{ +			crash_z = 0x01; +			if (rand()%3 == 1) +			{ +				dz = -1; +			} else +			{ +				dz = 0; +			} +		} +		 +		// mode bit 0 sets crash action enable +		if (mode | 0x01) +		{ +			if (crash_x) +			{ +				if (dy == 0) +				{ +					if (y == 7) +					{ +						dy = -1; +					} else if (y == 0) +					{ +						dy = +1; +					} else +					{ +						if (rand()%2 == 0) +						{ +							dy = -1; +						} else +						{ +							dy = 1; +						} +					} +				} +				if (dz == 0) +				{ +					if (z == 7) +					{ +						dz = -1; +					} else if (z == 0) +					{ +						dz = 1; +					} else +					{ +						if (rand()%2 == 0) +						{ +							dz = -1; +						} else +						{ +							dz = 1; +						} +					}	 +				} +			} +			 +			if (crash_y) +			{ +				if (dx == 0) +				{ +					if (x == 7) +					{ +						dx = -1; +					} else if (x == 0) +					{ +						dx = 1; +					} else +					{ +						if (rand()%2 == 0) +						{ +							dx = -1; +						} else +						{ +							dx = 1; +						} +					} +				} +				if (dz == 0) +				{ +					if (z == 3) +					{ +						dz = -1; +					} else if (z == 0) +					{ +						dz = 1; +					} else +					{ +						if (rand()%2 == 0) +						{ +							dz = -1; +						} else +						{ +							dz = 1; +						} +					}	 +				} +			} +			 +			if (crash_z) +			{ +				if (dy == 0) +				{ +					if (y == 7) +					{ +						dy = -1; +					} else if (y == 0) +					{ +						dy = 1; +					} else +					{ +						if (rand()%2 == 0) +						{ +							dy = -1; +						} else +						{ +							dy = 1; +						} +					}	 +				} +				if (dx == 0) +				{ +					if (x == 7) +					{ +						dx = -1; +					} else if (x == 0) +					{ +						dx = 1; +					} else +					{ +						if (rand()%2 == 0) +						{ +							dx = -1; +						} else +						{ +							dx = 1; +						} +					}	 +				} +			} +		} +		 +		// mode bit 1 sets corner avoid enable +		if (mode | 0x02) +		{ +			if (	// We are in one of 8 corner positions +				(x == 0 && y == 0 && z == 0) || +				(x == 0 && y == 0 && z == 7) || +				(x == 0 && y == 7 && z == 0) || +				(x == 0 && y == 7 && z == 7) || +				(x == 7 && y == 0 && z == 0) || +				(x == 7 && y == 0 && z == 7) || +				(x == 7 && y == 7 && z == 0) || +				(x == 7 && y == 7 && z == 7) +			) +			{ +				// At this point, the voxel would bounce +				// back and forth between this corner, +				// and the exact opposite corner +				// We don't want that! +			 +				// So we alter the trajectory a bit, +				// to avoid corner stickyness +				lol = rand()%3; +				if (lol == 0) +					dx = 0; +				 +				if (lol == 1) +					dy = 0; +					 +				if (lol == 2) +					dz = 0; +			} +		} +	 +		// Finally, move the voxel. +		x = x + dx; +		y = y + dy; +		z = z + dz; +		 +		if (drawmode == 0x01) // show one voxel at time +		{ +			setvoxel(x,y,z); +			delay_ms(delay); +			clrvoxel(x,y,z);	 +		} else if (drawmode == 0x02) // flip the voxel in question +		{ +			flpvoxel(x,y,z); +			delay_ms(delay); +		} if (drawmode == 0x03) +		{ +			for (i=7;i>=0;i--) +			{ +				snake[i][0] = snake[i-1][0]; +				snake[i][1] = snake[i-1][1]; +				snake[i][2] = snake[i-1][2]; +			} +			snake[0][0] = x; +			snake[0][1] = y; +			snake[0][2] = z; +				 +			for (i=0;i<8;i++) +			{ +				setvoxel(snake[i][0],snake[i][1],snake[i][2]); +			} +			delay_ms(delay); +			for (i=0;i<8;i++) +			{ +				clrvoxel(snake[i][0],snake[i][1],snake[i][2]); +			} +		} +		 +	 +		iterations--; +	} +} + +// Set or clear exactly 512 voxels in a random order. +void effect_random_filler (int delay, int state) +{ +	int x,y,z; +	int loop = 0; +	 +	 +	if (state == 1) +	{ +		fill(0x00); +	} else +	{ +		fill(0xff); +	} +	 +	while (loop<511) +	{ +		x = rand()%8; +		y = rand()%8; +		z = rand()%8; + +		if ((state == 0 && getvoxel(x,y,z) == 0x01) || (state == 1 && getvoxel(x,y,z) == 0x00)) +		{ +			altervoxel(x,y,z,state); +			delay_ms(delay); +			loop++; +		}	 +	} +} + + +void effect_rain (int iterations) +{ +	int i, ii; +	int rnd_x; +	int rnd_y; +	int rnd_num; +	 +	for (ii=0;ii<iterations;ii++) +	{ +		rnd_num = rand()%4; +		 +		for (i=0; i < rnd_num;i++) +		{ +			rnd_x = rand()%8; +			rnd_y = rand()%8; +			setvoxel(rnd_x,rnd_y,7); +		} +		 +		delay_ms(1000); +		shift(AXIS_Z,-1); +	} +} + +void effect_z_updown (int iterations, int delay) +{ +	unsigned char positions[64]; +	unsigned char destinations[64]; + +	int i,y,move,px; +	 +	for (i=0; i<64; i++) +	{ +		positions[i] = 4; +		destinations[i] = rand()%8; +	} + +	for (i=0; i<8; i++) +	{ +		effect_z_updown_move(positions, destinations, AXIS_Z); +		delay_ms(delay); +	} +	 +	for (i=0;i<iterations;i++) +	{ +		for (move=0;move<8;move++) +		{ +			effect_z_updown_move(positions, destinations, AXIS_Z); +			delay_ms(delay); +		} + +		delay_ms(delay*4); + + +		for (y=0;y<10;y++) +		{ +				destinations[rand()%64] = rand()%8; +		} +		 +	} + +} + +void effect_z_updown_move (unsigned char positions[64], unsigned char destinations[64], char axis) +{ +	int px; +	for (px=0; px<64; px++) +	{ +		if (positions[px]<destinations[px]) +		{ +			positions[px]++; +		} +		if (positions[px]>destinations[px]) +		{ +			positions[px]--; +		} +	} +		 +	draw_positions_axis (AXIS_Z, positions,0); +} + +void effect_axis_updown_randsuspend (char axis, int delay, int sleep, int invert) +{ +	unsigned char positions[64]; +	unsigned char destinations[64]; + +	int i,px; +	 +	for (i=0; i<64; i++) +	{ +		positions[i] = 0; +		destinations[i] = rand()%8; +	} + +	for (i=0; i<8; i++) +	{ +		for (px=0; px<64; px++) +		{ +			if (positions[px]<destinations[px]) +			{ +				positions[px]++; +			} +			if (positions[px]>destinations[px]) +			{ +				positions[px]--; +			} +		} +		draw_positions_axis (axis, positions,invert); +		delay_ms(delay); +	} +	 +	for (i=0; i<64; i++) +	{ +		destinations[i] = 7; +	} +	 +	delay_ms(sleep); +	 +	for (i=0; i<8; i++) +	{ +		for (px=0; px<64; px++) +		{ +			if (positions[px]<destinations[px]) +			{ +				positions[px]++; +			} +			if (positions[px]>destinations[px]) +			{ +				positions[px]--; +			} +		} +		draw_positions_axis (axis, positions,invert); +		delay_ms(delay); +	} +	 +	 + +} + +void draw_positions_axis (char axis, unsigned char positions[64], int invert) +{ +	int x, y, p; +	 +	fill(0x00); +	 +	for (x=0; x<8; x++) +	{ +		for (y=0; y<8; y++) +		{ +			if (invert) +			{ +				p = (7-positions[(x*8)+y]); +			} else +			{ +				p = positions[(x*8)+y]; +			} +		 +			if (axis == AXIS_Z) +				setvoxel(x,y,p); +				 +			if (axis == AXIS_Y) +				setvoxel(x,p,y); +				 +			if (axis == AXIS_X) +				setvoxel(p,y,x); +		} +	} +	 +} + + +void effect_boxside_randsend_parallel (char axis, int origin, int delay, int mode) +{ +	int i; +	int done; +	unsigned char cubepos[64]; +	unsigned char pos[64]; +	int notdone = 1; +	int notdone2 = 1; +	int sent = 0; +	 +	for (i=0;i<64;i++) +	{ +		pos[i] = 0; +	} +	 +	while (notdone) +	{ +		if (mode == 1) +		{ +			notdone2 = 1; +			while (notdone2 && sent<64) +			{ +				i = rand()%64; +				if (pos[i] == 0) +				{ +					sent++; +					pos[i] += 1; +					notdone2 = 0; +				} +			} +		} else if (mode == 2) +		{ +			if (sent<64) +			{ +				pos[sent] += 1; +				sent++; +			} +		} +		 +		done = 0; +		for (i=0;i<64;i++) +		{ +			if (pos[i] > 0 && pos[i] <7) +			{ +				pos[i] += 1; +			} +				 +			if (pos[i] == 7) +				done++; +		} +		 +		if (done == 64) +			notdone = 0; +		 +		for (i=0;i<64;i++) +		{ +			if (origin == 0) +			{ +				cubepos[i] = pos[i]; +			} else +			{ +				cubepos[i] = (7-pos[i]); +			} +		} +		 +		 +		delay_ms(delay); +		draw_positions_axis(axis,cubepos,0); +		LED_PORT ^= LED_RED; +	} +	 +} + + + + +// Light all leds layer by layer, +// then unset layer by layer +void effect_loadbar(int delay) +{ +	fill(0x00); +	 +	int z,y; +	 +	for (z=0;z<8;z++) +	{ +		for (y=0;y<8;y++) +			cube[z][y] = 0xff; +			 +		delay_ms(delay); +	} +	 +	delay_ms(delay*3); +	 +	for (z=0;z<8;z++) +	{ +		for (y=0;y<8;y++) +			cube[z][y] = 0x00; +			 +		delay_ms(delay); +	} +} + + +// Set n number of voxels at random positions +void effect_random_sparkle_flash (int iterations, int voxels, int delay) +{ +	int i; +	int v; +	for (i = 0; i < iterations; i++) +	{ +		for (v=0;v<=voxels;v++) +			setvoxel(rand()%8,rand()%8,rand()%8); +			 +		delay_ms(delay); +		fill(0x00); +	} +} + +// blink 1 random voxel, blink 2 random voxels..... blink 20 random voxels +// and back to 1 again. +void effect_random_sparkle (void) +{ +	int i; +	 +	for (i=1;i<20;i++) +	{ +		effect_random_sparkle_flash(5,i,200); +	} +	 +	for (i=20;i>=1;i--) +	{ +		effect_random_sparkle_flash(5,i,200); +	} +	 +} + +int effect_telcstairs_do(int x, int val, int delay) +{ +	int y,z; + +	for(y = 0, z = x; y <= z; y++, x--) +	{ +		if(x < CUBE_SIZE && y < CUBE_SIZE) +		{ +			cube[x][y] = val; +		} +	} +	delay_ms(delay); +	return z; +} + +void effect_telcstairs (int invert, int delay, int val) +{ +	int x; + +	if(invert) +	{ +		for(x = CUBE_SIZE*2; x >= 0; x--) +		{ +			x = effect_telcstairs_do(x,val,delay); +		} +	} +	else +	{ +		for(x = 0; x < CUBE_SIZE*2; x++) +		{ +			x = effect_telcstairs_do(x,val,delay); +		} +	} +} + +void effect_wormsqueeze (int size, int axis, int direction, int iterations, int delay) +{ +	int x, y, i,j,k, dx, dy; +	int cube_size; +	int origin = 0; +	 +	if (direction == -1) +		origin = 7; +	 +	cube_size = 8-(size-1); +	 +	x = rand()%cube_size; +	y = rand()%cube_size; +	 +	for (i=0; i<iterations; i++) +	{ +		dx = ((rand()%3)-1); +		dy = ((rand()%3)-1); +	 +		if ((x+dx) > 0 && (x+dx) < cube_size) +			x += dx; +			 +		if ((y+dy) > 0 && (y+dy) < cube_size) +			y += dy; +	 +		shift(axis, direction); +		 + +		for (j=0; j<size;j++) +		{ +			for (k=0; k<size;k++) +			{ +				if (axis == AXIS_Z) +					setvoxel(x+j,y+k,origin); +					 +				if (axis == AXIS_Y) +					setvoxel(x+j,origin,y+k); +					 +				if (axis == AXIS_X) +					setvoxel(origin,y+j,x+k); +			} +		} +		 +		delay_ms(delay); +	} +} + +void effect_smileyspin (int count, int delay, char bitmap) +{ +	unsigned char dybde[] = {0,1,2,3,4,5,6,7,1,1,2,3,4,5,6,6,2,2,3,3,4,4,5,5,3,3,3,3,4,4,4,4}; +	int d = 0; +	int flip = 0; +	int x, y, off; +	int i, s; +	for (i = 0; i<count; i++) +	{ +		flip = 0; +		d = 0; +		off = 0; +		// front: +		for (s=0;s<7;s++){ +			if(!flip){ +				off++; +				if (off == 4){ +					flip = 1; +					off = 0; +				} +			} else { +				off++; +			} +		        for (x=0; x<8; x++) +        		{ +				d = 0; +                		for (y=0; y<8; y++) +	                	{ +					if (font_getbitmappixel ( bitmap, 7-x, y)){ +						if (!flip) +							setvoxel(y,dybde[8 * off + d++],x); +						else +							setvoxel(y,dybde[31 - 8 * off - d++],x); +					} else { +						d++; +					} +				} +			} +			delay_ms(delay); +			fill(0x00); +		} + +		// side: +		off = 0; +		flip = 0; +		d = 0; +		int s; +		for (s=0;s<7;s++){ +			if(!flip){ +				off++; +				if (off == 4){ +					flip = 1; +					off = 0; +				} +			} else { +				off++; +			} +		        for (x=0; x<8; x++) +        		{ +				d = 0; +                		for (y=0; y<8; y++) +	                	{ +					if (font_getbitmappixel ( bitmap, 7-x, y)){ +						if (!flip) +							setvoxel(dybde[8 * off + d++], 7 - y,x); +						else +							setvoxel(dybde[31 - 8 * off - d++],7 - y,x); +					} else { +						d++; +					} +				} +			} +			delay_ms(delay); +			fill(0x00); +		} + + +		flip = 0; +		d = 0; +		off = 0; +		// back: +		for (s=0;s<7;s++){ +			if(!flip){ +				off++; +				if (off == 4){ +					flip = 1; +					off = 0; +				} +			} else { +				off++; +			} +		        for (x=0; x<8; x++) +        		{ +				d = 0; +                		for (y=0; y<8; y++) +	                	{ +					if (font_getbitmappixel ( bitmap, 7-x, 7-y)){ +						if (!flip) +							setvoxel(y,dybde[8 * off + d++],x); +						else +							setvoxel(y,dybde[31 - 8 * off - d++],x); +					} else { +						d++; +					} +				} +			} +			delay_ms(delay); +			fill(0x00); +		} + +		// other side: +		off = 0; +		flip = 0; +		d = 0; +		for (s=0;s<7;s++){ +			if(!flip){ +				off++; +				if (off == 4){ +					flip = 1; +					off = 0; +				} +			} else { +				off++; +			} +		        for (x=0; x<8; x++) +        		{ +				d = 0; +                		for (y=0; y<8; y++) +	                	{ +					if (font_getbitmappixel ( bitmap, 7-x, 7-y)){ +						if (!flip) +							setvoxel(dybde[8 * off + d++], 7 - y,x); +						else +							setvoxel(dybde[31 - 8 * off - d++],7 - y,x); +					} else { +						d++; +					} +				} +			} +			delay_ms(delay); +			fill(0x00); +		} + +	} +} + + +void effect_pathmove (unsigned char *path, int length) +{ +	int i,z; +	unsigned char state; +	 +	for (i=(length-1);i>=1;i--) +	{ +		for (z=0;z<8;z++) +		{ +		 +			state = getvoxel(((path[(i-1)]>>4) & 0x0f), (path[(i-1)] & 0x0f), z); +			altervoxel(((path[i]>>4) & 0x0f), (path[i] & 0x0f), z, state); +		} +	} +	for (i=0;i<8;i++) +		clrvoxel(((path[0]>>4) & 0x0f), (path[0] & 0x0f),i); +} + +void effect_rand_patharound (int iterations, int delay) +{ +	int z, dz, i; +	z = 4; +	unsigned char path[28]; +	 +	font_getpath(0,path,28); +	 +	for (i = 0; i < iterations; i++) +	{ +		dz = ((rand()%3)-1); +		z += dz; +		 +		if (z>7) +			z = 7; +			 +		if (z<0) +			z = 0; +		 +		effect_pathmove(path, 28); +		setvoxel(0,7,z); +		delay_ms(delay); +	} +} + +void effect_pathspiral (int iterations, int delay) +{ +	int z, i; +	z = 4; +	unsigned char path[16]; +	 +	font_getpath(1,path,16); +	 +	for (i = 0; i < iterations; i++) +	{ +		setvoxel(4,0,i%8); +		delay_ms(delay); +		effect_pathmove(path, 28); +		 +	} +} + +void effect_path_text (int delay, char *str) +{ +	int z, i,ii; +	z = 4; +	unsigned char path[28]; +	font_getpath(0,path,28); +	 +	unsigned char chr[5]; +	unsigned char stripe; +	 +	while (*str) +	{ +		//charfly(*str++, direction, axis, mode, delay); +		 +		 +		font_getchar(*str++, chr); +		 +		for (ii=0;ii<5;ii++) +		{ +			//stripe = pgm_read_byte(&font[(chr*5)+ii]); +			stripe = chr[ii]; +			 +			for (z=0;z<8;z++) +			{ +				if ((stripe>>(7-z)) & 0x01) +				{ +					setvoxel(0,7,z); +				} else +				{ +					clrvoxel(0,7,z); +				} +				 +			} +			effect_pathmove(path, 28); +			delay_ms(delay); +		} +	 +		effect_pathmove(path, 28); +		delay_ms(delay); +	} +	for (i=0;i<28;i++) +	{ +		effect_pathmove(path, 28); +		delay_ms(delay); +	} +} + +void effect_path_bitmap (int delay, char bitmap, int iterations) +{ +	int z, i, ii; +	z = 4; +	unsigned char path[28]; +	font_getpath(0,path,28); +	 +	for (i=0; i < iterations; i++) +	{	 +		for (ii=0;ii<8;ii++) +		{		 +			for (z=0;z<8;z++) +			{ +				if (font_getbitmappixel(bitmap,(7-z),ii)) +				{ +					setvoxel(0,7,z); +				} else +				{ +					clrvoxel(0,7,z); +				} +				 +			} +			delay_ms(delay); +			effect_pathmove(path, 28); +		} +	 +		for (ii=0;ii<20;ii++) +		{ +			delay_ms(delay); +			effect_pathmove(path, 28); +		} +	} +	for (ii=0;ii<10;ii++) +	{ +		delay_ms(delay); +		effect_pathmove(path, 28); +	} +} + + + diff --git a/instructables/cube_pc/effect.h b/instructables/cube_pc/effect.h new file mode 100644 index 0000000..edaac18 --- /dev/null +++ b/instructables/cube_pc/effect.h @@ -0,0 +1,57 @@ +#ifndef EFFECT_H +#define EFFECT_H + +//#include <avr/io.h> +//#include <avr/pgmspace.h> +#include <stdlib.h> +#include <stdint.h> + +#include "cube.h" + + + +void effect_box_shrink_grow (int iterations, int mode, int direction, uint16_t delay); + +void effect_hollow_1 (int iterations, uint16_t delay); +void effect_hollow_2 (int iterations, int corner, uint16_t delay); + +void sendvoxel_z (unsigned char x, unsigned char y, unsigned char z, int delay); +void sendplane_rand_z (unsigned char z, int delay, int wait); +void sendvoxels_rand_z (int iterations, int delay, int wait); +void boingboing(uint16_t iterations, int delay, unsigned char mode, unsigned char drawmode); + +void effect_planboing (int plane, int speed); + +void effect_random_filler (int delay, int state); + +void effect_z_updown (int iterations, int delay); +void effect_rain(int iterations); +void effect_stringfly2(char * str); +void effect_blinky2(void); +void draw_positions_axis (char axis, unsigned char positions[64], int invert); +void effect_axis_updown_randsuspend (char axis, int delay, int sleep, int invert); + +void effect_random_sparkle_flash (int iterations, int voxels, int delay); +void effect_random_sparkle (void); + +void effect_box_woopwoop (int delay, int grow); +void effect_telcstairs (int invert, int delay, int val); +void effect_loadbar(int delay); + +void effect_boxside_randsend_parallel (char axis, int origin, int delay, int mode); +void effect_smileyspin (int count, int delay, char bitmap); +void effect_pathmove (unsigned char *path, int length); +void effect_rand_patharound (int iterations, int delay); +void effect_pathspiral (int iterations, int delay); +void effect_path_text (int delay, char *str); +void effect_path_bitmap (int delay, char bitmap, int iterations); +void effect_wormsqueeze (int size, int axis, int direction, int iterations, int delay); + +void effect_z_updown (int iterations, int delay); +void effect_z_updown_move (unsigned char positions[64], unsigned char destinations[64], char axis); + + + + +#endif + diff --git a/instructables/cube_pc/effect.lst b/instructables/cube_pc/effect.lst new file mode 100644 index 0000000..7a08f0a --- /dev/null +++ b/instructables/cube_pc/effect.lst @@ -0,0 +1,5902 @@ +   1               		.file	"effect.c" +   2               	__SREG__ = 0x3f +   3               	__SP_H__ = 0x3e +   4               	__SP_L__ = 0x3d +   5               	__CCP__  = 0x34 +   6               	__tmp_reg__ = 0 +   7               	__zero_reg__ = 1 +   8               		.global __do_copy_data +   9               		.global __do_clear_bss +  17               	.Ltext0: +  18               	.global	effect_telcstairs_do +  20               	effect_telcstairs_do: +  21               	.LFB24: +  22               	.LM1: +  23               	.LVL0: +  24 0000 CF93      		push r28 +  25 0002 DF93      		push r29 +  26               	/* prologue: function */ +  27               	/* frame size = 0 */ +  28 0004 EC01      		movw r28,r24 +  29               	.LM2: +  30 0006 DC01      		movw r26,r24 +  31 0008 20E0      		ldi r18,lo8(0) +  32 000a 30E0      		ldi r19,hi8(0) +  33               	.LVL1: +  34 000c 00C0      		rjmp .L2 +  35               	.LVL2: +  36               	.L4: +  37               	.LM3: +  38 000e A830      		cpi r26,8 +  39 0010 B105      		cpc r27,__zero_reg__ +  40 0012 04F4      		brge .L3 +  41               	.LVL3: +  42 0014 2830      		cpi r18,8 +  43 0016 3105      		cpc r19,__zero_reg__ +  44 0018 04F4      		brge .L3 +  45               	.LM4: +  46 001a FD01      		movw r30,r26 +  47 001c 83E0      		ldi r24,3 +  48 001e EE0F      	1:	lsl r30 +  49 0020 FF1F      		rol r31 +  50 0022 8A95      		dec r24 +  51 0024 01F4      		brne 1b +  52 0026 E20F      		add r30,r18 +  53 0028 F31F      		adc r31,r19 +  54 002a E050      		subi r30,lo8(-(cube)) +  55 002c F040      		sbci r31,hi8(-(cube)) +  56 002e 6083      		st Z,r22 +  57               	.LVL4: +  58               	.L3: +  59               	.LM5: +  60 0030 2F5F      		subi r18,lo8(-(1)) +  61 0032 3F4F      		sbci r19,hi8(-(1)) +  62 0034 1197      		sbiw r26,1 +  63               	.LVL5: +  64               	.L2: +  65 0036 C217      		cp r28,r18 +  66 0038 D307      		cpc r29,r19 +  67 003a 04F4      		brge .L4 +  68               	.LVL6: +  69               	.LM6: +  70 003c CA01      		movw r24,r20 +  71 003e 0E94 0000 		call delay_ms +  72               	.LVL7: +  73               	.LM7: +  74 0042 CE01      		movw r24,r28 +  75               	.LVL8: +  76               	/* epilogue start */ +  77 0044 DF91      		pop r29 +  78 0046 CF91      		pop r28 +  79 0048 0895      		ret +  80               	.LFE24: +  82               	.global	effect_telcstairs +  84               	effect_telcstairs: +  85               	.LFB25: +  86               	.LM8: +  87               	.LVL9: +  88 004a 0F93      		push r16 +  89 004c 1F93      		push r17 +  90 004e CF93      		push r28 +  91 0050 DF93      		push r29 +  92               	/* prologue: function */ +  93               	/* frame size = 0 */ +  94 0052 8B01      		movw r16,r22 +  95 0054 EA01      		movw r28,r20 +  96               	.LM9: +  97 0056 892B      		or r24,r25 +  98 0058 01F0      		breq .L7 +  99               	.LVL10: + 100 005a 80E1      		ldi r24,lo8(16) + 101 005c 90E0      		ldi r25,hi8(16) + 102               	.LVL11: + 103               	.L8: + 104               	.LM10: + 105 005e BE01      		movw r22,r28 + 106 0060 A801      		movw r20,r16 + 107 0062 0E94 0000 		call effect_telcstairs_do + 108               	.LVL12: + 109               	.LM11: + 110 0066 0197      		sbiw r24,1 + 111               	.LVL13: + 112 0068 97FF      		sbrs r25,7 + 113 006a 00C0      		rjmp .L8 + 114 006c 00C0      		rjmp .L11 + 115               	.LVL14: + 116               	.L7: + 117 006e 80E0      		ldi r24,lo8(0) + 118 0070 90E0      		ldi r25,hi8(0) + 119               	.LVL15: + 120               	.L10: + 121               	.LM12: + 122 0072 BE01      		movw r22,r28 + 123 0074 A801      		movw r20,r16 + 124 0076 0E94 0000 		call effect_telcstairs_do + 125               	.LVL16: + 126               	.LM13: + 127 007a 0196      		adiw r24,1 + 128               	.LVL17: + 129 007c 8031      		cpi r24,16 + 130 007e 9105      		cpc r25,__zero_reg__ + 131 0080 04F0      		brlt .L10 + 132               	.L11: + 133               	/* epilogue start */ + 134               	.LM14: + 135 0082 DF91      		pop r29 + 136 0084 CF91      		pop r28 + 137               	.LVL18: + 138 0086 1F91      		pop r17 + 139 0088 0F91      		pop r16 + 140               	.LVL19: + 141 008a 0895      		ret + 142               	.LFE25: + 144               	.global	sendvoxel_z + 146               	sendvoxel_z: + 147               	.LFB10: + 148               	.LM15: + 149               	.LVL20: + 150 008c 7F92      		push r7 + 151 008e 8F92      		push r8 + 152 0090 9F92      		push r9 + 153 0092 AF92      		push r10 + 154 0094 BF92      		push r11 + 155 0096 CF92      		push r12 + 156 0098 DF92      		push r13 + 157 009a EF92      		push r14 + 158 009c FF92      		push r15 + 159 009e 0F93      		push r16 + 160 00a0 1F93      		push r17 + 161 00a2 CF93      		push r28 + 162 00a4 DF93      		push r29 + 163               	/* prologue: function */ + 164               	/* frame size = 0 */ + 165 00a6 E82E      		mov r14,r24 + 166 00a8 F62E      		mov r15,r22 + 167 00aa 742E      		mov r7,r20 + 168 00ac 6901      		movw r12,r18 + 169               	.LM16: + 170 00ae C0E0      		ldi r28,lo8(0) + 171 00b0 D0E0      		ldi r29,hi8(0) + 172               	.LVL21: + 173 00b2 27E0      		ldi r18,lo8(7) + 174 00b4 822E      		mov r8,r18 + 175 00b6 912C      		mov r9,__zero_reg__ + 176               	.LVL22: + 177               	.LM17: + 178 00b8 98E0      		ldi r25,lo8(8) + 179 00ba A92E      		mov r10,r25 + 180 00bc B12C      		mov r11,__zero_reg__ + 181               	.LVL23: + 182               	.L17: + 183               	.LM18: + 184 00be 87E0      		ldi r24,lo8(7) + 185 00c0 7816      		cp r7,r24 + 186 00c2 01F4      		brne .L15 + 187               	.LM19: + 188 00c4 8401      		movw r16,r8 + 189 00c6 0C1B      		sub r16,r28 + 190 00c8 1D0B      		sbc r17,r29 + 191               	.LM20: + 192 00ca A501      		movw r20,r10 + 193 00cc 4C1B      		sub r20,r28 + 194 00ce 5D0B      		sbc r21,r29 + 195 00d0 8E2D      		mov r24,r14 + 196 00d2 90E0      		ldi r25,lo8(0) + 197 00d4 6F2D      		mov r22,r15 + 198 00d6 70E0      		ldi r23,lo8(0) + 199 00d8 0E94 0000 		call clrvoxel + 200 00dc 00C0      		rjmp .L16 + 201               	.LVL24: + 202               	.L15: + 203               	.LM21: + 204 00de AE01      		movw r20,r28 + 205 00e0 4150      		subi r20,lo8(-(-1)) + 206 00e2 5040      		sbci r21,hi8(-(-1)) + 207 00e4 8E2D      		mov r24,r14 + 208 00e6 90E0      		ldi r25,lo8(0) + 209 00e8 6F2D      		mov r22,r15 + 210 00ea 70E0      		ldi r23,lo8(0) + 211 00ec 0E94 0000 		call clrvoxel + 212 00f0 8E01      		movw r16,r28 + 213               	.L16: + 214               	.LM22: + 215 00f2 8E2D      		mov r24,r14 + 216 00f4 90E0      		ldi r25,lo8(0) + 217 00f6 6F2D      		mov r22,r15 + 218 00f8 70E0      		ldi r23,lo8(0) + 219 00fa A801      		movw r20,r16 + 220 00fc 0E94 0000 		call setvoxel + 221               	.LM23: + 222 0100 C601      		movw r24,r12 + 223 0102 0E94 0000 		call delay_ms + 224               	.LM24: + 225 0106 2196      		adiw r28,1 + 226 0108 C830      		cpi r28,8 + 227 010a D105      		cpc r29,__zero_reg__ + 228 010c 01F4      		brne .L17 + 229               	/* epilogue start */ + 230               	.LM25: + 231 010e DF91      		pop r29 + 232 0110 CF91      		pop r28 + 233               	.LVL25: + 234 0112 1F91      		pop r17 + 235 0114 0F91      		pop r16 + 236               	.LVL26: + 237 0116 FF90      		pop r15 + 238               	.LVL27: + 239 0118 EF90      		pop r14 + 240               	.LVL28: + 241 011a DF90      		pop r13 + 242 011c CF90      		pop r12 + 243               	.LVL29: + 244 011e BF90      		pop r11 + 245 0120 AF90      		pop r10 + 246 0122 9F90      		pop r9 + 247 0124 8F90      		pop r8 + 248 0126 7F90      		pop r7 + 249               	.LVL30: + 250 0128 0895      		ret + 251               	.LFE10: + 253               	.global	effect_pathmove + 255               	effect_pathmove: + 256               	.LFB28: + 257               	.LM26: + 258               	.LVL31: + 259 012a CF92      		push r12 + 260 012c DF92      		push r13 + 261 012e EF92      		push r14 + 262 0130 FF92      		push r15 + 263 0132 0F93      		push r16 + 264 0134 1F93      		push r17 + 265 0136 CF93      		push r28 + 266 0138 DF93      		push r29 + 267               	/* prologue: function */ + 268               	/* frame size = 0 */ + 269 013a 6C01      		movw r12,r24 + 270               	.LM27: + 271 013c 7B01      		movw r14,r22 + 272               	.LVL32: + 273 013e 0894      		sec + 274 0140 E108      		sbc r14,__zero_reg__ + 275 0142 F108      		sbc r15,__zero_reg__ + 276 0144 8B01      		movw r16,r22 + 277 0146 0250      		subi r16,lo8(-(-2)) + 278 0148 1040      		sbci r17,hi8(-(-2)) + 279 014a 080F      		add r16,r24 + 280 014c 191F      		adc r17,r25 + 281 014e 00C0      		rjmp .L21 + 282               	.LVL33: + 283               	.L23: + 284 0150 C0E0      		ldi r28,lo8(0) + 285 0152 D0E0      		ldi r29,hi8(0) + 286               	.LVL34: + 287               	.L22: + 288               	.LM28: + 289 0154 F801      		movw r30,r16 + 290 0156 8081      		ld r24,Z + 291               	.LVL35: + 292 0158 682F      		mov r22,r24 + 293               	.LVL36: + 294 015a 70E0      		ldi r23,lo8(0) + 295 015c 6F70      		andi r22,lo8(15) + 296 015e 7070      		andi r23,hi8(15) + 297 0160 8295      		swap r24 + 298 0162 8F70      		andi r24,lo8(15) + 299 0164 90E0      		ldi r25,lo8(0) + 300 0166 AE01      		movw r20,r28 + 301 0168 0E94 0000 		call getvoxel + 302 016c 282F      		mov r18,r24 + 303               	.LVL37: + 304               	.LM29: + 305 016e F801      		movw r30,r16 + 306 0170 8181      		ldd r24,Z+1 + 307 0172 682F      		mov r22,r24 + 308 0174 70E0      		ldi r23,lo8(0) + 309 0176 6F70      		andi r22,lo8(15) + 310 0178 7070      		andi r23,hi8(15) + 311 017a 8295      		swap r24 + 312 017c 8F70      		andi r24,lo8(15) + 313 017e 90E0      		ldi r25,lo8(0) + 314 0180 AE01      		movw r20,r28 + 315 0182 30E0      		ldi r19,lo8(0) + 316 0184 0E94 0000 		call altervoxel + 317               	.LVL38: + 318               	.LM30: + 319 0188 2196      		adiw r28,1 + 320 018a C830      		cpi r28,8 + 321 018c D105      		cpc r29,__zero_reg__ + 322 018e 01F4      		brne .L22 + 323               	.LM31: + 324 0190 0894      		sec + 325 0192 E108      		sbc r14,__zero_reg__ + 326 0194 F108      		sbc r15,__zero_reg__ + 327 0196 0150      		subi r16,lo8(-(-1)) + 328 0198 1040      		sbci r17,hi8(-(-1)) + 329               	.LVL39: + 330               	.L21: + 331 019a 1E14      		cp __zero_reg__,r14 + 332 019c 1F04      		cpc __zero_reg__,r15 + 333 019e 04F0      		brlt .L23 + 334 01a0 C0E0      		ldi r28,lo8(0) + 335 01a2 D0E0      		ldi r29,hi8(0) + 336               	.LVL40: + 337               	.L24: + 338               	.LM32: + 339 01a4 F601      		movw r30,r12 + 340 01a6 8081      		ld r24,Z + 341               	.LVL41: + 342 01a8 682F      		mov r22,r24 + 343               	.LVL42: + 344 01aa 70E0      		ldi r23,lo8(0) + 345 01ac 6F70      		andi r22,lo8(15) + 346 01ae 7070      		andi r23,hi8(15) + 347 01b0 8295      		swap r24 + 348 01b2 8F70      		andi r24,lo8(15) + 349 01b4 90E0      		ldi r25,lo8(0) + 350 01b6 AE01      		movw r20,r28 + 351 01b8 0E94 0000 		call clrvoxel + 352               	.LM33: + 353 01bc 2196      		adiw r28,1 + 354 01be C830      		cpi r28,8 + 355 01c0 D105      		cpc r29,__zero_reg__ + 356 01c2 01F4      		brne .L24 + 357               	/* epilogue start */ + 358               	.LM34: + 359 01c4 DF91      		pop r29 + 360 01c6 CF91      		pop r28 + 361               	.LVL43: + 362 01c8 1F91      		pop r17 + 363 01ca 0F91      		pop r16 + 364 01cc FF90      		pop r15 + 365 01ce EF90      		pop r14 + 366 01d0 DF90      		pop r13 + 367 01d2 CF90      		pop r12 + 368               	.LVL44: + 369 01d4 0895      		ret + 370               	.LFE28: + 372               	.global	effect_path_bitmap + 374               	effect_path_bitmap: + 375               	.LFB32: + 376               	.LM35: + 377               	.LVL45: + 378 01d6 5F92      		push r5 + 379 01d8 6F92      		push r6 + 380 01da 7F92      		push r7 + 381 01dc 8F92      		push r8 + 382 01de 9F92      		push r9 + 383 01e0 AF92      		push r10 + 384 01e2 BF92      		push r11 + 385 01e4 CF92      		push r12 + 386 01e6 DF92      		push r13 + 387 01e8 EF92      		push r14 + 388 01ea FF92      		push r15 + 389 01ec 0F93      		push r16 + 390 01ee 1F93      		push r17 + 391 01f0 DF93      		push r29 + 392 01f2 CF93      		push r28 + 393 01f4 CDB7      		in r28,__SP_L__ + 394 01f6 DEB7      		in r29,__SP_H__ + 395 01f8 6C97      		sbiw r28,28 + 396 01fa 0FB6      		in __tmp_reg__,__SREG__ + 397 01fc F894      		cli + 398 01fe DEBF      		out __SP_H__,r29 + 399 0200 0FBE      		out __SREG__,__tmp_reg__ + 400 0202 CDBF      		out __SP_L__,r28 + 401               	/* prologue: function */ + 402               	/* frame size = 28 */ + 403 0204 4C01      		movw r8,r24 + 404               	.LVL46: + 405 0206 562E      		mov r5,r22 + 406 0208 3A01      		movw r6,r20 + 407               	.LM36: + 408 020a 80E0      		ldi r24,lo8(0) + 409 020c 5E01      		movw r10,r28 + 410 020e 0894      		sec + 411 0210 A11C      		adc r10,__zero_reg__ + 412 0212 B11C      		adc r11,__zero_reg__ + 413 0214 B501      		movw r22,r10 + 414               	.LVL47: + 415 0216 4CE1      		ldi r20,lo8(28) + 416 0218 50E0      		ldi r21,hi8(28) + 417               	.LVL48: + 418 021a 0E94 0000 		call font_getpath + 419 021e CC24      		clr r12 + 420 0220 DD24      		clr r13 + 421               	.LVL49: + 422 0222 00C0      		rjmp .L29 + 423               	.LVL50: + 424               	.L32: + 425               	.LM37: + 426 0224 852D      		mov r24,r5 + 427 0226 6F2D      		mov r22,r15 + 428 0228 4E2D      		mov r20,r14 + 429 022a 0E94 0000 		call font_getbitmappixel + 430 022e 8823      		tst r24 + 431 0230 01F0      		breq .L30 + 432               	.LM38: + 433 0232 80E0      		ldi r24,lo8(0) + 434 0234 90E0      		ldi r25,hi8(0) + 435 0236 67E0      		ldi r22,lo8(7) + 436 0238 70E0      		ldi r23,hi8(7) + 437 023a A801      		movw r20,r16 + 438 023c 0E94 0000 		call setvoxel + 439 0240 00C0      		rjmp .L31 + 440               	.L30: + 441               	.LM39: + 442 0242 80E0      		ldi r24,lo8(0) + 443 0244 90E0      		ldi r25,hi8(0) + 444 0246 67E0      		ldi r22,lo8(7) + 445 0248 70E0      		ldi r23,hi8(7) + 446 024a A801      		movw r20,r16 + 447 024c 0E94 0000 		call clrvoxel + 448               	.L31: + 449               	.LM40: + 450 0250 0F5F      		subi r16,lo8(-(1)) + 451 0252 1F4F      		sbci r17,hi8(-(1)) + 452 0254 FA94      		dec r15 + 453 0256 8FEF      		ldi r24,lo8(-1) + 454 0258 F816      		cp r15,r24 + 455 025a 01F4      		brne .L32 + 456               	.LM41: + 457 025c C401      		movw r24,r8 + 458 025e 0E94 0000 		call delay_ms + 459               	.LM42: + 460 0262 C501      		movw r24,r10 + 461 0264 6CE1      		ldi r22,lo8(28) + 462 0266 70E0      		ldi r23,hi8(28) + 463 0268 0E94 0000 		call effect_pathmove + 464 026c E394      		inc r14 + 465               	.LM43: + 466 026e 88E0      		ldi r24,lo8(8) + 467 0270 E816      		cp r14,r24 + 468 0272 01F0      		breq .L33 + 469               	.LVL51: + 470               	.L36: + 471 0274 00E0      		ldi r16,lo8(0) + 472 0276 10E0      		ldi r17,hi8(0) + 473               	.LVL52: + 474 0278 37E0      		ldi r19,lo8(7) + 475 027a F32E      		mov r15,r19 + 476 027c 00C0      		rjmp .L32 + 477               	.L33: + 478 027e 00E0      		ldi r16,lo8(0) + 479 0280 10E0      		ldi r17,hi8(0) + 480               	.LVL53: + 481               	.L34: + 482               	.LM44: + 483 0282 C401      		movw r24,r8 + 484 0284 0E94 0000 		call delay_ms + 485               	.LM45: + 486 0288 C501      		movw r24,r10 + 487 028a 6CE1      		ldi r22,lo8(28) + 488 028c 70E0      		ldi r23,hi8(28) + 489 028e 0E94 0000 		call effect_pathmove + 490               	.LM46: + 491 0292 0F5F      		subi r16,lo8(-(1)) + 492 0294 1F4F      		sbci r17,hi8(-(1)) + 493 0296 0431      		cpi r16,20 + 494 0298 1105      		cpc r17,__zero_reg__ + 495 029a 01F4      		brne .L34 + 496               	.LM47: + 497 029c 0894      		sec + 498 029e C11C      		adc r12,__zero_reg__ + 499 02a0 D11C      		adc r13,__zero_reg__ + 500               	.L29: + 501 02a2 C614      		cp r12,r6 + 502 02a4 D704      		cpc r13,r7 + 503 02a6 04F4      		brge .L35 + 504 02a8 EE24      		clr r14 + 505 02aa 00C0      		rjmp .L36 + 506               	.L35: + 507 02ac 00E0      		ldi r16,lo8(0) + 508 02ae 10E0      		ldi r17,hi8(0) + 509               	.LVL54: + 510               	.LM48: + 511 02b0 7E01      		movw r14,r28 + 512 02b2 0894      		sec + 513 02b4 E11C      		adc r14,__zero_reg__ + 514 02b6 F11C      		adc r15,__zero_reg__ + 515               	.L37: + 516               	.LM49: + 517 02b8 C401      		movw r24,r8 + 518 02ba 0E94 0000 		call delay_ms + 519               	.LM50: + 520 02be C701      		movw r24,r14 + 521 02c0 6CE1      		ldi r22,lo8(28) + 522 02c2 70E0      		ldi r23,hi8(28) + 523 02c4 0E94 0000 		call effect_pathmove + 524               	.LM51: + 525 02c8 0F5F      		subi r16,lo8(-(1)) + 526 02ca 1F4F      		sbci r17,hi8(-(1)) + 527 02cc 0A30      		cpi r16,10 + 528 02ce 1105      		cpc r17,__zero_reg__ + 529 02d0 01F4      		brne .L37 + 530               	/* epilogue start */ + 531               	.LM52: + 532 02d2 6C96      		adiw r28,28 + 533 02d4 0FB6      		in __tmp_reg__,__SREG__ + 534 02d6 F894      		cli + 535 02d8 DEBF      		out __SP_H__,r29 + 536 02da 0FBE      		out __SREG__,__tmp_reg__ + 537 02dc CDBF      		out __SP_L__,r28 + 538 02de CF91      		pop r28 + 539 02e0 DF91      		pop r29 + 540 02e2 1F91      		pop r17 + 541 02e4 0F91      		pop r16 + 542               	.LVL55: + 543 02e6 FF90      		pop r15 + 544 02e8 EF90      		pop r14 + 545 02ea DF90      		pop r13 + 546 02ec CF90      		pop r12 + 547               	.LVL56: + 548 02ee BF90      		pop r11 + 549 02f0 AF90      		pop r10 + 550 02f2 9F90      		pop r9 + 551 02f4 8F90      		pop r8 + 552 02f6 7F90      		pop r7 + 553 02f8 6F90      		pop r6 + 554               	.LVL57: + 555 02fa 5F90      		pop r5 + 556               	.LVL58: + 557 02fc 0895      		ret + 558               	.LFE32: + 560               	.global	effect_path_text + 562               	effect_path_text: + 563               	.LFB31: + 564               	.LM53: + 565               	.LVL59: + 566 02fe 2F92      		push r2 + 567 0300 3F92      		push r3 + 568 0302 4F92      		push r4 + 569 0304 5F92      		push r5 + 570 0306 6F92      		push r6 + 571 0308 7F92      		push r7 + 572 030a 8F92      		push r8 + 573 030c 9F92      		push r9 + 574 030e AF92      		push r10 + 575 0310 BF92      		push r11 + 576 0312 CF92      		push r12 + 577 0314 DF92      		push r13 + 578 0316 EF92      		push r14 + 579 0318 FF92      		push r15 + 580 031a 0F93      		push r16 + 581 031c 1F93      		push r17 + 582 031e DF93      		push r29 + 583 0320 CF93      		push r28 + 584 0322 CDB7      		in r28,__SP_L__ + 585 0324 DEB7      		in r29,__SP_H__ + 586 0326 A197      		sbiw r28,33 + 587 0328 0FB6      		in __tmp_reg__,__SREG__ + 588 032a F894      		cli + 589 032c DEBF      		out __SP_H__,r29 + 590 032e 0FBE      		out __SREG__,__tmp_reg__ + 591 0330 CDBF      		out __SP_L__,r28 + 592               	/* prologue: function */ + 593               	/* frame size = 33 */ + 594 0332 3C01      		movw r6,r24 + 595               	.LVL60: + 596 0334 6B01      		movw r12,r22 + 597               	.LM54: + 598 0336 56E0      		ldi r21,lo8(6) + 599 0338 852E      		mov r8,r21 + 600 033a 912C      		mov r9,__zero_reg__ + 601 033c 8C0E      		add r8,r28 + 602 033e 9D1E      		adc r9,r29 + 603 0340 80E0      		ldi r24,lo8(0) + 604 0342 B401      		movw r22,r8 + 605               	.LVL61: + 606 0344 4CE1      		ldi r20,lo8(28) + 607 0346 50E0      		ldi r21,hi8(28) + 608 0348 0E94 0000 		call font_getpath + 609               	.LM55: + 610 034c 1E01      		movw r2,r28 + 611 034e 0894      		sec + 612 0350 211C      		adc r2,__zero_reg__ + 613 0352 311C      		adc r3,__zero_reg__ + 614               	.LM56: + 615 0354 2401      		movw r4,r8 + 616 0356 00C0      		rjmp .L43 + 617               	.LVL62: + 618               	.L48: + 619               	.LM57: + 620 0358 B101      		movw r22,r2 + 621 035a 0E94 0000 		call font_getchar + 622 035e 7101      		movw r14,r2 + 623               	.L47: + 624               	.LM58: + 625 0360 F701      		movw r30,r14 + 626 0362 8081      		ld r24,Z + 627               	.LVL63: + 628 0364 00E0      		ldi r16,lo8(0) + 629 0366 10E0      		ldi r17,hi8(0) + 630               	.LM59: + 631 0368 A82E      		mov r10,r24 + 632 036a BB24      		clr r11 + 633               	.LVL64: + 634               	.L46: + 635 036c 87E0      		ldi r24,lo8(7) + 636 036e 90E0      		ldi r25,hi8(7) + 637 0370 801B      		sub r24,r16 + 638 0372 910B      		sbc r25,r17 + 639 0374 9501      		movw r18,r10 + 640 0376 00C0      		rjmp 2f + 641 0378 3595      	1:	asr r19 + 642 037a 2795      		ror r18 + 643 037c 8A95      	2:	dec r24 + 644 037e 02F4      		brpl 1b + 645 0380 20FF      		sbrs r18,0 + 646 0382 00C0      		rjmp .L44 + 647               	.LM60: + 648 0384 80E0      		ldi r24,lo8(0) + 649 0386 90E0      		ldi r25,hi8(0) + 650 0388 67E0      		ldi r22,lo8(7) + 651 038a 70E0      		ldi r23,hi8(7) + 652 038c A801      		movw r20,r16 + 653 038e 0E94 0000 		call setvoxel + 654 0392 00C0      		rjmp .L45 + 655               	.L44: + 656               	.LM61: + 657 0394 80E0      		ldi r24,lo8(0) + 658 0396 90E0      		ldi r25,hi8(0) + 659 0398 67E0      		ldi r22,lo8(7) + 660 039a 70E0      		ldi r23,hi8(7) + 661 039c A801      		movw r20,r16 + 662 039e 0E94 0000 		call clrvoxel + 663               	.L45: + 664               	.LM62: + 665 03a2 0F5F      		subi r16,lo8(-(1)) + 666 03a4 1F4F      		sbci r17,hi8(-(1)) + 667 03a6 0830      		cpi r16,8 + 668 03a8 1105      		cpc r17,__zero_reg__ + 669 03aa 01F4      		brne .L46 + 670               	.LM63: + 671 03ac C401      		movw r24,r8 + 672 03ae 6CE1      		ldi r22,lo8(28) + 673 03b0 70E0      		ldi r23,hi8(28) + 674 03b2 0E94 0000 		call effect_pathmove + 675               	.LM64: + 676 03b6 C301      		movw r24,r6 + 677 03b8 0E94 0000 		call delay_ms + 678 03bc 0894      		sec + 679 03be E11C      		adc r14,__zero_reg__ + 680 03c0 F11C      		adc r15,__zero_reg__ + 681               	.LM65: + 682 03c2 E414      		cp r14,r4 + 683 03c4 F504      		cpc r15,r5 + 684 03c6 01F4      		brne .L47 + 685               	.LM66: + 686 03c8 0894      		sec + 687 03ca C11C      		adc r12,__zero_reg__ + 688 03cc D11C      		adc r13,__zero_reg__ + 689               	.LM67: + 690 03ce C201      		movw r24,r4 + 691 03d0 6CE1      		ldi r22,lo8(28) + 692 03d2 70E0      		ldi r23,hi8(28) + 693 03d4 0E94 0000 		call effect_pathmove + 694               	.LM68: + 695 03d8 C301      		movw r24,r6 + 696 03da 0E94 0000 		call delay_ms + 697               	.L43: + 698               	.LM69: + 699 03de F601      		movw r30,r12 + 700 03e0 8081      		ld r24,Z + 701 03e2 8823      		tst r24 + 702 03e4 01F0      		breq .+2 + 703 03e6 00C0      		rjmp .L48 + 704 03e8 00E0      		ldi r16,lo8(0) + 705 03ea 10E0      		ldi r17,hi8(0) + 706               	.LVL65: + 707               	.LM70: + 708 03ec 46E0      		ldi r20,lo8(6) + 709 03ee E42E      		mov r14,r20 + 710 03f0 F12C      		mov r15,__zero_reg__ + 711 03f2 EC0E      		add r14,r28 + 712 03f4 FD1E      		adc r15,r29 + 713               	.L49: + 714 03f6 C701      		movw r24,r14 + 715 03f8 6CE1      		ldi r22,lo8(28) + 716 03fa 70E0      		ldi r23,hi8(28) + 717 03fc 0E94 0000 		call effect_pathmove + 718               	.LM71: + 719 0400 C301      		movw r24,r6 + 720 0402 0E94 0000 		call delay_ms + 721               	.LM72: + 722 0406 0F5F      		subi r16,lo8(-(1)) + 723 0408 1F4F      		sbci r17,hi8(-(1)) + 724 040a 0C31      		cpi r16,28 + 725 040c 1105      		cpc r17,__zero_reg__ + 726 040e 01F4      		brne .L49 + 727               	/* epilogue start */ + 728               	.LM73: + 729 0410 A196      		adiw r28,33 + 730 0412 0FB6      		in __tmp_reg__,__SREG__ + 731 0414 F894      		cli + 732 0416 DEBF      		out __SP_H__,r29 + 733 0418 0FBE      		out __SREG__,__tmp_reg__ + 734 041a CDBF      		out __SP_L__,r28 + 735 041c CF91      		pop r28 + 736 041e DF91      		pop r29 + 737 0420 1F91      		pop r17 + 738 0422 0F91      		pop r16 + 739               	.LVL66: + 740 0424 FF90      		pop r15 + 741 0426 EF90      		pop r14 + 742 0428 DF90      		pop r13 + 743 042a CF90      		pop r12 + 744               	.LVL67: + 745 042c BF90      		pop r11 + 746               	.LVL68: + 747 042e AF90      		pop r10 + 748               	.LVL69: + 749 0430 9F90      		pop r9 + 750 0432 8F90      		pop r8 + 751 0434 7F90      		pop r7 + 752 0436 6F90      		pop r6 + 753 0438 5F90      		pop r5 + 754 043a 4F90      		pop r4 + 755 043c 3F90      		pop r3 + 756 043e 2F90      		pop r2 + 757 0440 0895      		ret + 758               	.LFE31: + 760               	.global	effect_pathspiral + 762               	effect_pathspiral: + 763               	.LFB30: + 764               	.LM74: + 765               	.LVL70: + 766 0442 9F92      		push r9 + 767 0444 AF92      		push r10 + 768 0446 BF92      		push r11 + 769 0448 CF92      		push r12 + 770 044a DF92      		push r13 + 771 044c EF92      		push r14 + 772 044e FF92      		push r15 + 773 0450 0F93      		push r16 + 774 0452 1F93      		push r17 + 775 0454 DF93      		push r29 + 776 0456 CF93      		push r28 + 777 0458 CDB7      		in r28,__SP_L__ + 778 045a DEB7      		in r29,__SP_H__ + 779 045c 6097      		sbiw r28,16 + 780 045e 0FB6      		in __tmp_reg__,__SREG__ + 781 0460 F894      		cli + 782 0462 DEBF      		out __SP_H__,r29 + 783 0464 0FBE      		out __SREG__,__tmp_reg__ + 784 0466 CDBF      		out __SP_L__,r28 + 785               	/* prologue: function */ + 786               	/* frame size = 16 */ + 787 0468 5C01      		movw r10,r24 + 788 046a 6B01      		movw r12,r22 + 789               	.LM75: + 790 046c 81E0      		ldi r24,lo8(1) + 791               	.LVL71: + 792 046e 8E01      		movw r16,r28 + 793 0470 0F5F      		subi r16,lo8(-(1)) + 794 0472 1F4F      		sbci r17,hi8(-(1)) + 795 0474 B801      		movw r22,r16 + 796               	.LVL72: + 797 0476 40E1      		ldi r20,lo8(16) + 798 0478 50E0      		ldi r21,hi8(16) + 799 047a 0E94 0000 		call font_getpath + 800 047e EE24      		clr r14 + 801 0480 FF24      		clr r15 + 802               	.LVL73: + 803               	.LM76: + 804 0482 902E      		mov r9,r16 + 805 0484 012F      		mov r16,r17 + 806 0486 00C0      		rjmp .L55 + 807               	.L56: + 808               	.LM77: + 809 0488 A701      		movw r20,r14 + 810 048a 4770      		andi r20,lo8(7) + 811 048c 5070      		andi r21,hi8(7) + 812 048e 84E0      		ldi r24,lo8(4) + 813 0490 90E0      		ldi r25,hi8(4) + 814 0492 60E0      		ldi r22,lo8(0) + 815 0494 70E0      		ldi r23,hi8(0) + 816 0496 0E94 0000 		call setvoxel + 817               	.LM78: + 818 049a C601      		movw r24,r12 + 819 049c 0E94 0000 		call delay_ms + 820               	.LM79: + 821 04a0 892D      		mov r24,r9 + 822 04a2 902F      		mov r25,r16 + 823 04a4 6CE1      		ldi r22,lo8(28) + 824 04a6 70E0      		ldi r23,hi8(28) + 825 04a8 0E94 0000 		call effect_pathmove + 826               	.LM80: + 827 04ac 0894      		sec + 828 04ae E11C      		adc r14,__zero_reg__ + 829 04b0 F11C      		adc r15,__zero_reg__ + 830               	.L55: + 831 04b2 EA14      		cp r14,r10 + 832 04b4 FB04      		cpc r15,r11 + 833 04b6 04F0      		brlt .L56 + 834               	/* epilogue start */ + 835               	.LM81: + 836 04b8 6096      		adiw r28,16 + 837 04ba 0FB6      		in __tmp_reg__,__SREG__ + 838 04bc F894      		cli + 839 04be DEBF      		out __SP_H__,r29 + 840 04c0 0FBE      		out __SREG__,__tmp_reg__ + 841 04c2 CDBF      		out __SP_L__,r28 + 842 04c4 CF91      		pop r28 + 843 04c6 DF91      		pop r29 + 844 04c8 1F91      		pop r17 + 845 04ca 0F91      		pop r16 + 846 04cc FF90      		pop r15 + 847 04ce EF90      		pop r14 + 848               	.LVL74: + 849 04d0 DF90      		pop r13 + 850 04d2 CF90      		pop r12 + 851               	.LVL75: + 852 04d4 BF90      		pop r11 + 853 04d6 AF90      		pop r10 + 854               	.LVL76: + 855 04d8 9F90      		pop r9 + 856 04da 0895      		ret + 857               	.LFE30: + 859               	.global	effect_rand_patharound + 861               	effect_rand_patharound: + 862               	.LFB29: + 863               	.LM82: + 864               	.LVL77: + 865 04dc 7F92      		push r7 + 866 04de 8F92      		push r8 + 867 04e0 9F92      		push r9 + 868 04e2 AF92      		push r10 + 869 04e4 BF92      		push r11 + 870 04e6 CF92      		push r12 + 871 04e8 DF92      		push r13 + 872 04ea EF92      		push r14 + 873 04ec FF92      		push r15 + 874 04ee 0F93      		push r16 + 875 04f0 1F93      		push r17 + 876 04f2 DF93      		push r29 + 877 04f4 CF93      		push r28 + 878 04f6 CDB7      		in r28,__SP_L__ + 879 04f8 DEB7      		in r29,__SP_H__ + 880 04fa 6C97      		sbiw r28,28 + 881 04fc 0FB6      		in __tmp_reg__,__SREG__ + 882 04fe F894      		cli + 883 0500 DEBF      		out __SP_H__,r29 + 884 0502 0FBE      		out __SREG__,__tmp_reg__ + 885 0504 CDBF      		out __SP_L__,r28 + 886               	/* prologue: function */ + 887               	/* frame size = 28 */ + 888 0506 4C01      		movw r8,r24 + 889 0508 5B01      		movw r10,r22 + 890               	.LM83: + 891 050a 80E0      		ldi r24,lo8(0) + 892               	.LVL78: + 893 050c 8E01      		movw r16,r28 + 894 050e 0F5F      		subi r16,lo8(-(1)) + 895 0510 1F4F      		sbci r17,hi8(-(1)) + 896 0512 B801      		movw r22,r16 + 897               	.LVL79: + 898 0514 4CE1      		ldi r20,lo8(28) + 899 0516 50E0      		ldi r21,hi8(28) + 900 0518 0E94 0000 		call font_getpath + 901 051c 74E0      		ldi r23,lo8(4) + 902 051e E72E      		mov r14,r23 + 903 0520 F12C      		mov r15,__zero_reg__ + 904               	.LVL80: + 905 0522 CC24      		clr r12 + 906 0524 DD24      		clr r13 + 907               	.LVL81: + 908               	.LM84: + 909 0526 702E      		mov r7,r16 + 910 0528 012F      		mov r16,r17 + 911 052a 00C0      		rjmp .L59 + 912               	.L62: + 913               	.LM85: + 914 052c 0E94 0000 		call rand + 915 0530 0894      		sec + 916 0532 E108      		sbc r14,__zero_reg__ + 917 0534 F108      		sbc r15,__zero_reg__ + 918               	.LM86: + 919 0536 63E0      		ldi r22,lo8(3) + 920 0538 70E0      		ldi r23,hi8(3) + 921 053a 0E94 0000 		call __divmodhi4 + 922 053e E80E      		add r14,r24 + 923 0540 F91E      		adc r15,r25 + 924               	.LM87: + 925 0542 88E0      		ldi r24,lo8(8) + 926 0544 E816      		cp r14,r24 + 927 0546 F104      		cpc r15,__zero_reg__ + 928 0548 04F0      		brlt .L60 + 929 054a 67E0      		ldi r22,lo8(7) + 930 054c E62E      		mov r14,r22 + 931 054e F12C      		mov r15,__zero_reg__ + 932 0550 00C0      		rjmp .L61 + 933               	.L60: + 934               	.LM88: + 935 0552 F7FE      		sbrs r15,7 + 936 0554 00C0      		rjmp .L61 + 937 0556 EE24      		clr r14 + 938 0558 FF24      		clr r15 + 939               	.L61: + 940               	.LM89: + 941 055a 872D      		mov r24,r7 + 942 055c 902F      		mov r25,r16 + 943 055e 6CE1      		ldi r22,lo8(28) + 944 0560 70E0      		ldi r23,hi8(28) + 945 0562 0E94 0000 		call effect_pathmove + 946               	.LM90: + 947 0566 80E0      		ldi r24,lo8(0) + 948 0568 90E0      		ldi r25,hi8(0) + 949 056a 67E0      		ldi r22,lo8(7) + 950 056c 70E0      		ldi r23,hi8(7) + 951 056e A701      		movw r20,r14 + 952 0570 0E94 0000 		call setvoxel + 953               	.LM91: + 954 0574 C501      		movw r24,r10 + 955 0576 0E94 0000 		call delay_ms + 956               	.LM92: + 957 057a 0894      		sec + 958 057c C11C      		adc r12,__zero_reg__ + 959 057e D11C      		adc r13,__zero_reg__ + 960               	.L59: + 961 0580 C814      		cp r12,r8 + 962 0582 D904      		cpc r13,r9 + 963 0584 04F0      		brlt .L62 + 964               	/* epilogue start */ + 965               	.LM93: + 966 0586 6C96      		adiw r28,28 + 967 0588 0FB6      		in __tmp_reg__,__SREG__ + 968 058a F894      		cli + 969 058c DEBF      		out __SP_H__,r29 + 970 058e 0FBE      		out __SREG__,__tmp_reg__ + 971 0590 CDBF      		out __SP_L__,r28 + 972 0592 CF91      		pop r28 + 973 0594 DF91      		pop r29 + 974 0596 1F91      		pop r17 + 975 0598 0F91      		pop r16 + 976 059a FF90      		pop r15 + 977 059c EF90      		pop r14 + 978               	.LVL82: + 979 059e DF90      		pop r13 + 980 05a0 CF90      		pop r12 + 981               	.LVL83: + 982 05a2 BF90      		pop r11 + 983 05a4 AF90      		pop r10 + 984               	.LVL84: + 985 05a6 9F90      		pop r9 + 986 05a8 8F90      		pop r8 + 987               	.LVL85: + 988 05aa 7F90      		pop r7 + 989 05ac 0895      		ret + 990               	.LFE29: + 992               	.global	effect_stringfly2 + 994               	effect_stringfly2: + 995               	.LFB5: + 996               	.LM94: + 997               	.LVL86: + 998 05ae 2F92      		push r2 + 999 05b0 3F92      		push r3 + 1000 05b2 4F92      		push r4 + 1001 05b4 5F92      		push r5 + 1002 05b6 6F92      		push r6 + 1003 05b8 7F92      		push r7 + 1004 05ba 8F92      		push r8 + 1005 05bc 9F92      		push r9 + 1006 05be AF92      		push r10 + 1007 05c0 BF92      		push r11 + 1008 05c2 CF92      		push r12 + 1009 05c4 DF92      		push r13 + 1010 05c6 EF92      		push r14 + 1011 05c8 FF92      		push r15 + 1012 05ca 0F93      		push r16 + 1013 05cc 1F93      		push r17 + 1014 05ce DF93      		push r29 + 1015 05d0 CF93      		push r28 + 1016 05d2 00D0      		rcall . + 1017 05d4 00D0      		rcall . + 1018 05d6 0F92      		push __tmp_reg__ + 1019 05d8 CDB7      		in r28,__SP_L__ + 1020 05da DEB7      		in r29,__SP_H__ + 1021               	/* prologue: function */ + 1022               	/* frame size = 5 */ + 1023 05dc 3C01      		movw r6,r24 + 1024               	.LM95: + 1025 05de 2E01      		movw r4,r28 + 1026 05e0 0894      		sec + 1027 05e2 411C      		adc r4,__zero_reg__ + 1028 05e4 511C      		adc r5,__zero_reg__ + 1029               	.LM96: + 1030 05e6 F0E8      		ldi r31,lo8(128) + 1031 05e8 2F2E      		mov r2,r31 + 1032 05ea 312C      		mov r3,__zero_reg__ + 1033 05ec 00C0      		rjmp .L65 + 1034               	.LVL87: + 1035               	.L78: + 1036               	.LM97: + 1037 05ee B201      		movw r22,r4 + 1038 05f0 0E94 0000 		call font_getchar + 1039 05f4 EE24      		clr r14 + 1040 05f6 FF24      		clr r15 + 1041               	.LVL88: + 1042 05f8 00C0      		rjmp .L66 + 1043               	.LVL89: + 1044               	.L68: + 1045               	.LM98: + 1046 05fa 9101      		movw r18,r2 + 1047 05fc 002E      		mov r0,r16 + 1048 05fe 00C0      		rjmp 2f + 1049 0600 3595      	1:	asr r19 + 1050 0602 2795      		ror r18 + 1051 0604 0A94      	2:	dec r0 + 1052 0606 02F4      		brpl 1b + 1053 0608 F501      		movw r30,r10 + 1054 060a 8081      		ld r24,Z + 1055 060c 90E0      		ldi r25,lo8(0) + 1056 060e 2823      		and r18,r24 + 1057 0610 3923      		and r19,r25 + 1058 0612 232B      		or r18,r19 + 1059 0614 01F0      		breq .L67 + 1060               	.LM99: + 1061 0616 87E0      		ldi r24,lo8(7) + 1062 0618 90E0      		ldi r25,hi8(7) + 1063 061a B601      		movw r22,r12 + 1064 061c A801      		movw r20,r16 + 1065 061e 0E94 0000 		call setvoxel + 1066               	.L67: + 1067               	.LM100: + 1068 0622 0F5F      		subi r16,lo8(-(1)) + 1069 0624 1F4F      		sbci r17,hi8(-(1)) + 1070 0626 0830      		cpi r16,8 + 1071 0628 1105      		cpc r17,__zero_reg__ + 1072 062a 01F4      		brne .L68 + 1073               	.LM101: + 1074 062c 0894      		sec + 1075 062e E11C      		adc r14,__zero_reg__ + 1076 0630 F11C      		adc r15,__zero_reg__ + 1077 0632 F5E0      		ldi r31,lo8(5) + 1078 0634 EF16      		cp r14,r31 + 1079 0636 F104      		cpc r15,__zero_reg__ + 1080 0638 01F0      		breq .L69 + 1081               	.LVL90: + 1082               	.L66: + 1083 063a 00E0      		ldi r16,lo8(0) + 1084 063c 10E0      		ldi r17,hi8(0) + 1085               	.LM102: + 1086 063e 5201      		movw r10,r4 + 1087               	.LVL91: + 1088 0640 AE0C      		add r10,r14 + 1089 0642 BF1C      		adc r11,r15 + 1090               	.LM103: + 1091 0644 E2E0      		ldi r30,lo8(2) + 1092 0646 CE2E      		mov r12,r30 + 1093 0648 D12C      		mov r13,__zero_reg__ + 1094 064a CE0C      		add r12,r14 + 1095 064c DF1C      		adc r13,r15 + 1096 064e 00C0      		rjmp .L68 + 1097               	.L69: + 1098               	.LM104: + 1099 0650 AA24      		clr r10 + 1100 0652 BB24      		clr r11 + 1101               	.LVL92: + 1102               	.L77: + 1103               	.LM105: + 1104 0654 88EE      		ldi r24,lo8(1000) + 1105 0656 93E0      		ldi r25,hi8(1000) + 1106 0658 0E94 0000 		call delay_ms + 1107 065c CC24      		clr r12 + 1108 065e DD24      		clr r13 + 1109               	.LVL93: + 1110 0660 00C0      		rjmp .L70 + 1111               	.L71: + 1112               	.LM106: + 1113 0662 C401      		movw r24,r8 + 1114 0664 B701      		movw r22,r14 + 1115 0666 A801      		movw r20,r16 + 1116 0668 0E94 0000 		call getvoxel + 1117 066c 282F      		mov r18,r24 + 1118               	.LM107: + 1119 066e C601      		movw r24,r12 + 1120 0670 B701      		movw r22,r14 + 1121 0672 A801      		movw r20,r16 + 1122 0674 30E0      		ldi r19,lo8(0) + 1123 0676 0E94 0000 		call altervoxel + 1124               	.LM108: + 1125 067a 0F5F      		subi r16,lo8(-(1)) + 1126 067c 1F4F      		sbci r17,hi8(-(1)) + 1127 067e 0830      		cpi r16,8 + 1128 0680 1105      		cpc r17,__zero_reg__ + 1129 0682 01F4      		brne .L71 + 1130               	.LM109: + 1131 0684 0894      		sec + 1132 0686 E11C      		adc r14,__zero_reg__ + 1133 0688 F11C      		adc r15,__zero_reg__ + 1134 068a 88E0      		ldi r24,lo8(8) + 1135 068c E816      		cp r14,r24 + 1136 068e F104      		cpc r15,__zero_reg__ + 1137 0690 01F0      		breq .L72 + 1138               	.L74: + 1139 0692 00E0      		ldi r16,lo8(0) + 1140 0694 10E0      		ldi r17,hi8(0) + 1141 0696 00C0      		rjmp .L71 + 1142               	.L72: + 1143 0698 6401      		movw r12,r8 + 1144               	.LM110: + 1145 069a E7E0      		ldi r30,lo8(7) + 1146 069c 8E16      		cp r8,r30 + 1147 069e 9104      		cpc r9,__zero_reg__ + 1148 06a0 01F4      		brne .L70 + 1149               	.LVL94: + 1150 06a2 EE24      		clr r14 + 1151 06a4 FF24      		clr r15 + 1152               	.LVL95: + 1153 06a6 00C0      		rjmp .L73 + 1154               	.LVL96: + 1155               	.L70: + 1156 06a8 EE24      		clr r14 + 1157 06aa FF24      		clr r15 + 1158               	.LM111: + 1159 06ac 4601      		movw r8,r12 + 1160 06ae 0894      		sec + 1161 06b0 811C      		adc r8,__zero_reg__ + 1162 06b2 911C      		adc r9,__zero_reg__ + 1163 06b4 00C0      		rjmp .L74 + 1164               	.LVL97: + 1165               	.L75: + 1166               	.LM112: + 1167 06b6 87E0      		ldi r24,lo8(7) + 1168 06b8 90E0      		ldi r25,hi8(7) + 1169 06ba B701      		movw r22,r14 + 1170 06bc A801      		movw r20,r16 + 1171 06be 0E94 0000 		call clrvoxel + 1172               	.LM113: + 1173 06c2 0F5F      		subi r16,lo8(-(1)) + 1174 06c4 1F4F      		sbci r17,hi8(-(1)) + 1175 06c6 0830      		cpi r16,8 + 1176 06c8 1105      		cpc r17,__zero_reg__ + 1177 06ca 01F4      		brne .L75 + 1178               	.LM114: + 1179 06cc 0894      		sec + 1180 06ce E11C      		adc r14,__zero_reg__ + 1181 06d0 F11C      		adc r15,__zero_reg__ + 1182 06d2 F8E0      		ldi r31,lo8(8) + 1183 06d4 EF16      		cp r14,r31 + 1184 06d6 F104      		cpc r15,__zero_reg__ + 1185 06d8 01F0      		breq .L76 + 1186               	.L73: + 1187 06da 00E0      		ldi r16,lo8(0) + 1188 06dc 10E0      		ldi r17,hi8(0) + 1189 06de 00C0      		rjmp .L75 + 1190               	.L76: + 1191               	.LM115: + 1192 06e0 0894      		sec + 1193 06e2 A11C      		adc r10,__zero_reg__ + 1194 06e4 B11C      		adc r11,__zero_reg__ + 1195 06e6 86E0      		ldi r24,lo8(6) + 1196 06e8 A816      		cp r10,r24 + 1197 06ea B104      		cpc r11,__zero_reg__ + 1198 06ec 01F0      		breq .+2 + 1199 06ee 00C0      		rjmp .L77 + 1200               	.LM116: + 1201 06f0 0894      		sec + 1202 06f2 611C      		adc r6,__zero_reg__ + 1203 06f4 711C      		adc r7,__zero_reg__ + 1204               	.LVL98: + 1205               	.L65: + 1206               	.LM117: + 1207 06f6 F301      		movw r30,r6 + 1208 06f8 8081      		ld r24,Z + 1209 06fa 8823      		tst r24 + 1210 06fc 01F0      		breq .+2 + 1211 06fe 00C0      		rjmp .L78 + 1212 0700 AA24      		clr r10 + 1213 0702 BB24      		clr r11 + 1214               	.LVL99: + 1215               	.L86: + 1216               	.LM118: + 1217 0704 88EE      		ldi r24,lo8(1000) + 1218 0706 93E0      		ldi r25,hi8(1000) + 1219 0708 0E94 0000 		call delay_ms + 1220 070c CC24      		clr r12 + 1221 070e DD24      		clr r13 + 1222               	.LVL100: + 1223 0710 00C0      		rjmp .L79 + 1224               	.L80: + 1225               	.LM119: + 1226 0712 C401      		movw r24,r8 + 1227 0714 B701      		movw r22,r14 + 1228 0716 A801      		movw r20,r16 + 1229 0718 0E94 0000 		call getvoxel + 1230 071c 282F      		mov r18,r24 + 1231               	.LM120: + 1232 071e C601      		movw r24,r12 + 1233 0720 B701      		movw r22,r14 + 1234 0722 A801      		movw r20,r16 + 1235 0724 30E0      		ldi r19,lo8(0) + 1236 0726 0E94 0000 		call altervoxel + 1237               	.LM121: + 1238 072a 0F5F      		subi r16,lo8(-(1)) + 1239 072c 1F4F      		sbci r17,hi8(-(1)) + 1240 072e 0830      		cpi r16,8 + 1241 0730 1105      		cpc r17,__zero_reg__ + 1242 0732 01F4      		brne .L80 + 1243               	.LM122: + 1244 0734 0894      		sec + 1245 0736 E11C      		adc r14,__zero_reg__ + 1246 0738 F11C      		adc r15,__zero_reg__ + 1247 073a F8E0      		ldi r31,lo8(8) + 1248 073c EF16      		cp r14,r31 + 1249 073e F104      		cpc r15,__zero_reg__ + 1250 0740 01F0      		breq .L81 + 1251               	.L83: + 1252 0742 00E0      		ldi r16,lo8(0) + 1253 0744 10E0      		ldi r17,hi8(0) + 1254 0746 00C0      		rjmp .L80 + 1255               	.L81: + 1256 0748 6401      		movw r12,r8 + 1257               	.LM123: + 1258 074a 87E0      		ldi r24,lo8(7) + 1259 074c 8816      		cp r8,r24 + 1260 074e 9104      		cpc r9,__zero_reg__ + 1261 0750 01F4      		brne .L79 + 1262               	.LVL101: + 1263 0752 EE24      		clr r14 + 1264 0754 FF24      		clr r15 + 1265               	.LVL102: + 1266 0756 00C0      		rjmp .L82 + 1267               	.LVL103: + 1268               	.L79: + 1269 0758 EE24      		clr r14 + 1270 075a FF24      		clr r15 + 1271               	.LM124: + 1272 075c 4601      		movw r8,r12 + 1273 075e 0894      		sec + 1274 0760 811C      		adc r8,__zero_reg__ + 1275 0762 911C      		adc r9,__zero_reg__ + 1276 0764 00C0      		rjmp .L83 + 1277               	.LVL104: + 1278               	.L84: + 1279               	.LM125: + 1280 0766 87E0      		ldi r24,lo8(7) + 1281 0768 90E0      		ldi r25,hi8(7) + 1282 076a B701      		movw r22,r14 + 1283 076c A801      		movw r20,r16 + 1284 076e 0E94 0000 		call clrvoxel + 1285               	.LM126: + 1286 0772 0F5F      		subi r16,lo8(-(1)) + 1287 0774 1F4F      		sbci r17,hi8(-(1)) + 1288 0776 0830      		cpi r16,8 + 1289 0778 1105      		cpc r17,__zero_reg__ + 1290 077a 01F4      		brne .L84 + 1291               	.LM127: + 1292 077c 0894      		sec + 1293 077e E11C      		adc r14,__zero_reg__ + 1294 0780 F11C      		adc r15,__zero_reg__ + 1295 0782 E8E0      		ldi r30,lo8(8) + 1296 0784 EE16      		cp r14,r30 + 1297 0786 F104      		cpc r15,__zero_reg__ + 1298 0788 01F0      		breq .L85 + 1299               	.L82: + 1300 078a 00E0      		ldi r16,lo8(0) + 1301 078c 10E0      		ldi r17,hi8(0) + 1302 078e 00C0      		rjmp .L84 + 1303               	.L85: + 1304               	.LM128: + 1305 0790 0894      		sec + 1306 0792 A11C      		adc r10,__zero_reg__ + 1307 0794 B11C      		adc r11,__zero_reg__ + 1308 0796 F8E0      		ldi r31,lo8(8) + 1309 0798 AF16      		cp r10,r31 + 1310 079a B104      		cpc r11,__zero_reg__ + 1311 079c 01F0      		breq .+2 + 1312 079e 00C0      		rjmp .L86 + 1313               	/* epilogue start */ + 1314               	.LM129: + 1315 07a0 0F90      		pop __tmp_reg__ + 1316 07a2 0F90      		pop __tmp_reg__ + 1317 07a4 0F90      		pop __tmp_reg__ + 1318 07a6 0F90      		pop __tmp_reg__ + 1319 07a8 0F90      		pop __tmp_reg__ + 1320 07aa CF91      		pop r28 + 1321 07ac DF91      		pop r29 + 1322 07ae 1F91      		pop r17 + 1323 07b0 0F91      		pop r16 + 1324               	.LVL105: + 1325 07b2 FF90      		pop r15 + 1326 07b4 EF90      		pop r14 + 1327               	.LVL106: + 1328 07b6 DF90      		pop r13 + 1329 07b8 CF90      		pop r12 + 1330 07ba BF90      		pop r11 + 1331 07bc AF90      		pop r10 + 1332               	.LVL107: + 1333 07be 9F90      		pop r9 + 1334 07c0 8F90      		pop r8 + 1335               	.LVL108: + 1336 07c2 7F90      		pop r7 + 1337 07c4 6F90      		pop r6 + 1338               	.LVL109: + 1339 07c6 5F90      		pop r5 + 1340 07c8 4F90      		pop r4 + 1341 07ca 3F90      		pop r3 + 1342 07cc 2F90      		pop r2 + 1343 07ce 0895      		ret + 1344               	.LFE5: + 1346               	.global	effect_smileyspin + 1348               	effect_smileyspin: + 1349               	.LFB27: + 1350               	.LM130: + 1351               	.LVL110: + 1352 07d0 2F92      		push r2 + 1353 07d2 3F92      		push r3 + 1354 07d4 4F92      		push r4 + 1355 07d6 5F92      		push r5 + 1356 07d8 6F92      		push r6 + 1357 07da 7F92      		push r7 + 1358 07dc 8F92      		push r8 + 1359 07de 9F92      		push r9 + 1360 07e0 AF92      		push r10 + 1361 07e2 BF92      		push r11 + 1362 07e4 CF92      		push r12 + 1363 07e6 DF92      		push r13 + 1364 07e8 EF92      		push r14 + 1365 07ea FF92      		push r15 + 1366 07ec 0F93      		push r16 + 1367 07ee 1F93      		push r17 + 1368 07f0 DF93      		push r29 + 1369 07f2 CF93      		push r28 + 1370 07f4 CDB7      		in r28,__SP_L__ + 1371 07f6 DEB7      		in r29,__SP_H__ + 1372 07f8 EC97      		sbiw r28,60 + 1373 07fa 0FB6      		in __tmp_reg__,__SREG__ + 1374 07fc F894      		cli + 1375 07fe DEBF      		out __SP_H__,r29 + 1376 0800 0FBE      		out __SREG__,__tmp_reg__ + 1377 0802 CDBF      		out __SP_L__,r28 + 1378               	/* prologue: function */ + 1379               	/* frame size = 60 */ + 1380 0804 9FA7      		std Y+47,r25 + 1381 0806 8EA7      		std Y+46,r24 + 1382 0808 69AB      		std Y+49,r22 + 1383 080a 7AAB      		std Y+50,r23 + 1384               	.LVL111: + 1385 080c 48AB      		std Y+48,r20 + 1386               	.LM131: + 1387 080e DE01      		movw r26,r28 + 1388 0810 1196      		adiw r26,1 + 1389 0812 E0E0      		ldi r30,lo8(C.30.2453) + 1390 0814 F0E0      		ldi r31,hi8(C.30.2453) + 1391 0816 80E2      		ldi r24,lo8(32) + 1392               	.LVL112: + 1393               	.L98: + 1394 0818 0190      		ld r0,Z+ + 1395 081a 0D92      		st X+,r0 + 1396 081c 8150      		subi r24,lo8(-(-1)) + 1397 081e 01F4      		brne .L98 + 1398 0820 1DA6      		std Y+45,__zero_reg__ + 1399 0822 1CA6      		std Y+44,__zero_reg__ + 1400               	.LVL113: + 1401               	.LBB2: + 1402               	.LBB3: + 1403               	.LM132: + 1404 0824 9E01      		movw r18,r28 + 1405 0826 2F5F      		subi r18,lo8(-(1)) + 1406 0828 3F4F      		sbci r19,hi8(-(1)) + 1407 082a 3CAF      		std Y+60,r19 + 1408 082c 2BAF      		std Y+59,r18 + 1409 082e 00C0      		rjmp .L99 + 1410               	.LVL114: + 1411               	.L132: + 1412               	.LBE3: + 1413               	.LBE2: + 1414               	.LM133: + 1415 0830 2224      		clr r2 + 1416 0832 3324      		clr r3 + 1417               	.LVL115: + 1418 0834 8824      		clr r8 + 1419 0836 9924      		clr r9 + 1420               	.LVL116: + 1421 0838 4424      		clr r4 + 1422 083a 5524      		clr r5 + 1423               	.LVL117: + 1424               	.L107: + 1425 083c C401      		movw r24,r8 + 1426 083e 0196      		adiw r24,1 + 1427               	.LVL118: + 1428               	.LBB8: + 1429               	.LBB4: + 1430               	.LM134: + 1431 0840 2114      		cp r2,__zero_reg__ + 1432 0842 3104      		cpc r3,__zero_reg__ + 1433 0844 01F4      		brne .L100 + 1434               	.LM135: + 1435 0846 4C01      		movw r8,r24 + 1436               	.LM136: + 1437 0848 8430      		cpi r24,4 + 1438 084a 9105      		cpc r25,__zero_reg__ + 1439 084c 01F4      		brne .L101 + 1440 084e 71E0      		ldi r23,lo8(1) + 1441 0850 272E      		mov r2,r23 + 1442 0852 312C      		mov r3,__zero_reg__ + 1443               	.LVL119: + 1444 0854 8824      		clr r8 + 1445 0856 9924      		clr r9 + 1446               	.LVL120: + 1447 0858 00C0      		rjmp .L101 + 1448               	.LVL121: + 1449               	.L100: + 1450               	.LM137: + 1451 085a 4C01      		movw r8,r24 + 1452               	.LVL122: + 1453               	.L101: + 1454               	.LM138: + 1455 085c C401      		movw r24,r8 + 1456 085e 63E0      		ldi r22,3 + 1457 0860 880F      	1:	lsl r24 + 1458 0862 991F      		rol r25 + 1459 0864 6A95      		dec r22 + 1460 0866 01F4      		brne 1b + 1461               	.LVL123: + 1462               	.LM139: + 1463 0868 6BAC      		ldd r6,Y+59 + 1464 086a 7CAC      		ldd r7,Y+60 + 1465 086c 681A      		sub r6,r24 + 1466 086e 790A      		sbc r7,r25 + 1467 0870 AA24      		clr r10 + 1468 0872 BB24      		clr r11 + 1469 0874 E7E0      		ldi r30,lo8(7) + 1470 0876 EFA3      		std Y+39,r30 + 1471               	.LM140: + 1472 0878 2FE1      		ldi r18,lo8(31) + 1473 087a 30E0      		ldi r19,hi8(31) + 1474 087c 620E      		add r6,r18 + 1475 087e 731E      		adc r7,r19 + 1476 0880 E1E0      		ldi r30,lo8(1) + 1477 0882 F0E0      		ldi r31,hi8(1) + 1478 0884 EC0F      		add r30,r28 + 1479 0886 FD1F      		adc r31,r29 + 1480 0888 E80F      		add r30,r24 + 1481 088a F91F      		adc r31,r25 + 1482 088c FAAF      		std Y+58,r31 + 1483 088e E9AF      		std Y+57,r30 + 1484 0890 00C0      		rjmp .L102 + 1485               	.L105: + 1486               	.LM141: + 1487 0892 88A9      		ldd r24,Y+48 + 1488 0894 6FA1      		ldd r22,Y+39 + 1489 0896 402F      		mov r20,r16 + 1490 0898 0E94 0000 		call font_getbitmappixel + 1491               	.LVL124: + 1492 089c 8823      		tst r24 + 1493 089e 01F0      		breq .L103 + 1494               	.LM142: + 1495 08a0 2114      		cp r2,__zero_reg__ + 1496 08a2 3104      		cpc r3,__zero_reg__ + 1497 08a4 01F4      		brne .L104 + 1498               	.LM143: + 1499 08a6 F701      		movw r30,r14 + 1500 08a8 00C0      		rjmp .L143 + 1501               	.L104: + 1502               	.LM144: + 1503 08aa F601      		movw r30,r12 + 1504               	.L143: + 1505 08ac 6081      		ld r22,Z + 1506 08ae C801      		movw r24,r16 + 1507 08b0 70E0      		ldi r23,lo8(0) + 1508 08b2 A501      		movw r20,r10 + 1509 08b4 0E94 0000 		call setvoxel + 1510               	.L103: + 1511               	.LM145: + 1512 08b8 0F5F      		subi r16,lo8(-(1)) + 1513 08ba 1F4F      		sbci r17,hi8(-(1)) + 1514 08bc 0894      		sec + 1515 08be C108      		sbc r12,__zero_reg__ + 1516 08c0 D108      		sbc r13,__zero_reg__ + 1517 08c2 0894      		sec + 1518 08c4 E11C      		adc r14,__zero_reg__ + 1519 08c6 F11C      		adc r15,__zero_reg__ + 1520 08c8 0830      		cpi r16,8 + 1521 08ca 1105      		cpc r17,__zero_reg__ + 1522 08cc 01F4      		brne .L105 + 1523               	.LM146: + 1524 08ce 0894      		sec + 1525 08d0 A11C      		adc r10,__zero_reg__ + 1526 08d2 B11C      		adc r11,__zero_reg__ + 1527 08d4 FFA1      		ldd r31,Y+39 + 1528 08d6 F150      		subi r31,lo8(-(-1)) + 1529 08d8 FFA3      		std Y+39,r31 + 1530 08da FF3F      		cpi r31,lo8(-1) + 1531 08dc 01F0      		breq .L106 + 1532               	.LVL125: + 1533               	.L102: + 1534 08de 6301      		movw r12,r6 + 1535 08e0 E9AC      		ldd r14,Y+57 + 1536 08e2 FAAC      		ldd r15,Y+58 + 1537 08e4 00E0      		ldi r16,lo8(0) + 1538 08e6 10E0      		ldi r17,hi8(0) + 1539 08e8 00C0      		rjmp .L105 + 1540               	.LVL126: + 1541               	.L106: + 1542               	.LM147: + 1543 08ea 89A9      		ldd r24,Y+49 + 1544 08ec 9AA9      		ldd r25,Y+50 + 1545 08ee 0E94 0000 		call delay_ms + 1546               	.LM148: + 1547 08f2 80E0      		ldi r24,lo8(0) + 1548 08f4 0E94 0000 		call fill + 1549               	.LM149: + 1550 08f8 0894      		sec + 1551 08fa 411C      		adc r4,__zero_reg__ + 1552 08fc 511C      		adc r5,__zero_reg__ + 1553 08fe 27E0      		ldi r18,lo8(7) + 1554 0900 4216      		cp r4,r18 + 1555 0902 5104      		cpc r5,__zero_reg__ + 1556 0904 01F0      		breq .+2 + 1557 0906 00C0      		rjmp .L107 + 1558 0908 1EA2      		std Y+38,__zero_reg__ + 1559 090a 1DA2      		std Y+37,__zero_reg__ + 1560               	.LVL127: + 1561 090c 6624      		clr r6 + 1562 090e 7724      		clr r7 + 1563               	.LVL128: + 1564 0910 2224      		clr r2 + 1565 0912 3324      		clr r3 + 1566               	.LVL129: + 1567               	.L115: + 1568 0914 C301      		movw r24,r6 + 1569 0916 0196      		adiw r24,1 + 1570               	.LVL130: + 1571               	.LBE4: + 1572               	.LBB5: + 1573               	.LM150: + 1574 0918 EDA1      		ldd r30,Y+37 + 1575 091a FEA1      		ldd r31,Y+38 + 1576 091c EF2B      		or r30,r31 + 1577 091e 01F4      		brne .L108 + 1578               	.LM151: + 1579 0920 3C01      		movw r6,r24 + 1580               	.LM152: + 1581 0922 8430      		cpi r24,4 + 1582 0924 9105      		cpc r25,__zero_reg__ + 1583 0926 01F4      		brne .L109 + 1584 0928 21E0      		ldi r18,lo8(1) + 1585 092a 30E0      		ldi r19,hi8(1) + 1586 092c 3EA3      		std Y+38,r19 + 1587 092e 2DA3      		std Y+37,r18 + 1588               	.LVL131: + 1589 0930 6624      		clr r6 + 1590 0932 7724      		clr r7 + 1591               	.LVL132: + 1592 0934 00C0      		rjmp .L109 + 1593               	.LVL133: + 1594               	.L108: + 1595               	.LM153: + 1596 0936 3C01      		movw r6,r24 + 1597               	.LVL134: + 1598               	.L109: + 1599               	.LM154: + 1600 0938 C301      		movw r24,r6 + 1601 093a 53E0      		ldi r21,3 + 1602 093c 880F      	1:	lsl r24 + 1603 093e 991F      		rol r25 + 1604 0940 5A95      		dec r21 + 1605 0942 01F4      		brne 1b + 1606               	.LM155: + 1607 0944 4BAC      		ldd r4,Y+59 + 1608 0946 5CAC      		ldd r5,Y+60 + 1609               	.LVL135: + 1610 0948 481A      		sub r4,r24 + 1611 094a 590A      		sbc r5,r25 + 1612 094c 8824      		clr r8 + 1613 094e 9924      		clr r9 + 1614 0950 37E0      		ldi r19,lo8(7) + 1615 0952 38A7      		std Y+40,r19 + 1616               	.LM156: + 1617 0954 EFE1      		ldi r30,lo8(31) + 1618 0956 F0E0      		ldi r31,hi8(31) + 1619 0958 4E0E      		add r4,r30 + 1620 095a 5F1E      		adc r5,r31 + 1621 095c 21E0      		ldi r18,lo8(1) + 1622 095e 30E0      		ldi r19,hi8(1) + 1623 0960 2C0F      		add r18,r28 + 1624 0962 3D1F      		adc r19,r29 + 1625 0964 280F      		add r18,r24 + 1626 0966 391F      		adc r19,r25 + 1627 0968 38AF      		std Y+56,r19 + 1628 096a 2FAB      		std Y+55,r18 + 1629 096c 00C0      		rjmp .L110 + 1630               	.LVL136: + 1631               	.L113: + 1632               	.LM157: + 1633 096e 4E2D      		mov r20,r14 + 1634 0970 4150      		subi r20,lo8(-(-1)) + 1635 0972 88A9      		ldd r24,Y+48 + 1636 0974 68A5      		ldd r22,Y+40 + 1637 0976 0E94 0000 		call font_getbitmappixel + 1638 097a 8823      		tst r24 + 1639 097c 01F0      		breq .L111 + 1640               	.LM158: + 1641 097e 8DA1      		ldd r24,Y+37 + 1642 0980 9EA1      		ldd r25,Y+38 + 1643 0982 892B      		or r24,r25 + 1644 0984 01F4      		brne .L112 + 1645               	.LM159: + 1646 0986 F601      		movw r30,r12 + 1647 0988 00C0      		rjmp .L144 + 1648               	.L112: + 1649               	.LM160: + 1650 098a F501      		movw r30,r10 + 1651               	.L144: + 1652 098c 8081      		ld r24,Z + 1653 098e 90E0      		ldi r25,lo8(0) + 1654 0990 B801      		movw r22,r16 + 1655 0992 A401      		movw r20,r8 + 1656 0994 0E94 0000 		call setvoxel + 1657               	.L111: + 1658 0998 0894      		sec + 1659 099a E11C      		adc r14,__zero_reg__ + 1660 099c F11C      		adc r15,__zero_reg__ + 1661 099e 0150      		subi r16,lo8(-(-1)) + 1662 09a0 1040      		sbci r17,hi8(-(-1)) + 1663 09a2 0894      		sec + 1664 09a4 A108      		sbc r10,__zero_reg__ + 1665 09a6 B108      		sbc r11,__zero_reg__ + 1666 09a8 0894      		sec + 1667 09aa C11C      		adc r12,__zero_reg__ + 1668 09ac D11C      		adc r13,__zero_reg__ + 1669               	.LM161: + 1670 09ae F9E0      		ldi r31,lo8(9) + 1671 09b0 EF16      		cp r14,r31 + 1672 09b2 F104      		cpc r15,__zero_reg__ + 1673 09b4 01F4      		brne .L113 + 1674               	.LM162: + 1675 09b6 0894      		sec + 1676 09b8 811C      		adc r8,__zero_reg__ + 1677 09ba 911C      		adc r9,__zero_reg__ + 1678 09bc 28A5      		ldd r18,Y+40 + 1679 09be 2150      		subi r18,lo8(-(-1)) + 1680 09c0 28A7      		std Y+40,r18 + 1681 09c2 2F3F      		cpi r18,lo8(-1) + 1682 09c4 01F0      		breq .L114 + 1683               	.LVL137: + 1684               	.L110: + 1685 09c6 5201      		movw r10,r4 + 1686 09c8 CFA8      		ldd r12,Y+55 + 1687 09ca D8AC      		ldd r13,Y+56 + 1688 09cc 41E0      		ldi r20,lo8(1) + 1689 09ce E42E      		mov r14,r20 + 1690 09d0 F12C      		mov r15,__zero_reg__ + 1691 09d2 07E0      		ldi r16,lo8(7) + 1692 09d4 10E0      		ldi r17,hi8(7) + 1693               	.LVL138: + 1694 09d6 00C0      		rjmp .L113 + 1695               	.L114: + 1696               	.LM163: + 1697 09d8 89A9      		ldd r24,Y+49 + 1698 09da 9AA9      		ldd r25,Y+50 + 1699 09dc 0E94 0000 		call delay_ms + 1700               	.LM164: + 1701 09e0 80E0      		ldi r24,lo8(0) + 1702 09e2 0E94 0000 		call fill + 1703               	.LM165: + 1704 09e6 0894      		sec + 1705 09e8 211C      		adc r2,__zero_reg__ + 1706 09ea 311C      		adc r3,__zero_reg__ + 1707 09ec 37E0      		ldi r19,lo8(7) + 1708 09ee 2316      		cp r2,r19 + 1709 09f0 3104      		cpc r3,__zero_reg__ + 1710 09f2 01F0      		breq .+2 + 1711 09f4 00C0      		rjmp .L115 + 1712 09f6 1CA2      		std Y+36,__zero_reg__ + 1713 09f8 1BA2      		std Y+35,__zero_reg__ + 1714               	.LVL139: + 1715 09fa 6624      		clr r6 + 1716 09fc 7724      		clr r7 + 1717               	.LVL140: + 1718 09fe 1BA6      		std Y+43,__zero_reg__ + 1719 0a00 1AA6      		std Y+42,__zero_reg__ + 1720               	.LVL141: + 1721               	.L123: + 1722 0a02 C301      		movw r24,r6 + 1723 0a04 0196      		adiw r24,1 + 1724               	.LVL142: + 1725               	.LBE5: + 1726               	.LBB6: + 1727               	.LM166: + 1728 0a06 EBA1      		ldd r30,Y+35 + 1729 0a08 FCA1      		ldd r31,Y+36 + 1730 0a0a EF2B      		or r30,r31 + 1731 0a0c 01F4      		brne .L116 + 1732               	.LM167: + 1733 0a0e 3C01      		movw r6,r24 + 1734               	.LM168: + 1735 0a10 8430      		cpi r24,4 + 1736 0a12 9105      		cpc r25,__zero_reg__ + 1737 0a14 01F4      		brne .L117 + 1738 0a16 21E0      		ldi r18,lo8(1) + 1739 0a18 30E0      		ldi r19,hi8(1) + 1740 0a1a 3CA3      		std Y+36,r19 + 1741 0a1c 2BA3      		std Y+35,r18 + 1742               	.LVL143: + 1743 0a1e 6624      		clr r6 + 1744 0a20 7724      		clr r7 + 1745               	.LVL144: + 1746 0a22 00C0      		rjmp .L117 + 1747               	.LVL145: + 1748               	.L116: + 1749               	.LM169: + 1750 0a24 3C01      		movw r6,r24 + 1751               	.LVL146: + 1752               	.L117: + 1753               	.LM170: + 1754 0a26 C301      		movw r24,r6 + 1755 0a28 33E0      		ldi r19,3 + 1756 0a2a 880F      	1:	lsl r24 + 1757 0a2c 991F      		rol r25 + 1758 0a2e 3A95      		dec r19 + 1759 0a30 01F4      		brne 1b + 1760               	.LM171: + 1761 0a32 4BAC      		ldd r4,Y+59 + 1762 0a34 5CAC      		ldd r5,Y+60 + 1763 0a36 481A      		sub r4,r24 + 1764 0a38 590A      		sbc r5,r25 + 1765 0a3a AA24      		clr r10 + 1766 0a3c BB24      		clr r11 + 1767               	.LVL147: + 1768 0a3e 27E0      		ldi r18,lo8(7) + 1769 0a40 222E      		mov r2,r18 + 1770               	.LVL148: + 1771               	.LM172: + 1772 0a42 EFE1      		ldi r30,lo8(31) + 1773 0a44 F0E0      		ldi r31,hi8(31) + 1774 0a46 4E0E      		add r4,r30 + 1775 0a48 5F1E      		adc r5,r31 + 1776 0a4a 21E0      		ldi r18,lo8(1) + 1777 0a4c 30E0      		ldi r19,hi8(1) + 1778 0a4e 2C0F      		add r18,r28 + 1779 0a50 3D1F      		adc r19,r29 + 1780 0a52 280F      		add r18,r24 + 1781 0a54 391F      		adc r19,r25 + 1782 0a56 3EAB      		std Y+54,r19 + 1783 0a58 2DAB      		std Y+53,r18 + 1784 0a5a 00C0      		rjmp .L118 + 1785               	.L121: + 1786               	.LM173: + 1787 0a5c 4801      		movw r8,r16 + 1788 0a5e 0894      		sec + 1789 0a60 8108      		sbc r8,__zero_reg__ + 1790 0a62 9108      		sbc r9,__zero_reg__ + 1791               	.LM174: + 1792 0a64 88A9      		ldd r24,Y+48 + 1793 0a66 622D      		mov r22,r2 + 1794 0a68 432D      		mov r20,r3 + 1795 0a6a 0E94 0000 		call font_getbitmappixel + 1796 0a6e 8823      		tst r24 + 1797 0a70 01F0      		breq .L119 + 1798               	.LM175: + 1799 0a72 8BA1      		ldd r24,Y+35 + 1800 0a74 9CA1      		ldd r25,Y+36 + 1801 0a76 892B      		or r24,r25 + 1802 0a78 01F4      		brne .L120 + 1803               	.LM176: + 1804 0a7a F701      		movw r30,r14 + 1805 0a7c 00C0      		rjmp .L145 + 1806               	.L120: + 1807               	.LM177: + 1808 0a7e F601      		movw r30,r12 + 1809               	.L145: + 1810 0a80 6081      		ld r22,Z + 1811 0a82 C401      		movw r24,r8 + 1812 0a84 70E0      		ldi r23,lo8(0) + 1813 0a86 A501      		movw r20,r10 + 1814 0a88 0E94 0000 		call setvoxel + 1815               	.L119: + 1816 0a8c 0F5F      		subi r16,lo8(-(1)) + 1817 0a8e 1F4F      		sbci r17,hi8(-(1)) + 1818 0a90 3A94      		dec r3 + 1819 0a92 0894      		sec + 1820 0a94 C108      		sbc r12,__zero_reg__ + 1821 0a96 D108      		sbc r13,__zero_reg__ + 1822 0a98 0894      		sec + 1823 0a9a E11C      		adc r14,__zero_reg__ + 1824 0a9c F11C      		adc r15,__zero_reg__ + 1825               	.LM178: + 1826 0a9e FFEF      		ldi r31,lo8(-1) + 1827 0aa0 3F16      		cp r3,r31 + 1828 0aa2 01F4      		brne .L121 + 1829               	.LM179: + 1830 0aa4 0894      		sec + 1831 0aa6 A11C      		adc r10,__zero_reg__ + 1832 0aa8 B11C      		adc r11,__zero_reg__ + 1833 0aaa 2A94      		dec r2 + 1834 0aac 2F16      		cp r2,r31 + 1835 0aae 01F0      		breq .L122 + 1836               	.L118: + 1837 0ab0 6201      		movw r12,r4 + 1838 0ab2 EDA8      		ldd r14,Y+53 + 1839 0ab4 FEA8      		ldd r15,Y+54 + 1840 0ab6 01E0      		ldi r16,lo8(1) + 1841 0ab8 10E0      		ldi r17,hi8(1) + 1842 0aba 87E0      		ldi r24,lo8(7) + 1843 0abc 382E      		mov r3,r24 + 1844 0abe 00C0      		rjmp .L121 + 1845               	.L122: + 1846               	.LM180: + 1847 0ac0 89A9      		ldd r24,Y+49 + 1848 0ac2 9AA9      		ldd r25,Y+50 + 1849 0ac4 0E94 0000 		call delay_ms + 1850               	.LM181: + 1851 0ac8 80E0      		ldi r24,lo8(0) + 1852 0aca 0E94 0000 		call fill + 1853               	.LM182: + 1854 0ace 2AA5      		ldd r18,Y+42 + 1855 0ad0 3BA5      		ldd r19,Y+43 + 1856 0ad2 2F5F      		subi r18,lo8(-(1)) + 1857 0ad4 3F4F      		sbci r19,hi8(-(1)) + 1858 0ad6 3BA7      		std Y+43,r19 + 1859 0ad8 2AA7      		std Y+42,r18 + 1860               	.LVL149: + 1861 0ada 2730      		cpi r18,7 + 1862 0adc 3105      		cpc r19,__zero_reg__ + 1863 0ade 01F0      		breq .+2 + 1864 0ae0 00C0      		rjmp .L123 + 1865 0ae2 1AA2      		std Y+34,__zero_reg__ + 1866 0ae4 19A2      		std Y+33,__zero_reg__ + 1867               	.LVL150: + 1868 0ae6 6624      		clr r6 + 1869 0ae8 7724      		clr r7 + 1870               	.LVL151: + 1871 0aea 2224      		clr r2 + 1872 0aec 3324      		clr r3 + 1873               	.LVL152: + 1874               	.L131: + 1875 0aee C301      		movw r24,r6 + 1876 0af0 0196      		adiw r24,1 + 1877               	.LVL153: + 1878               	.LBE6: + 1879               	.LBB7: + 1880               	.LM183: + 1881 0af2 E9A1      		ldd r30,Y+33 + 1882 0af4 FAA1      		ldd r31,Y+34 + 1883 0af6 EF2B      		or r30,r31 + 1884 0af8 01F4      		brne .L124 + 1885               	.LM184: + 1886 0afa 3C01      		movw r6,r24 + 1887               	.LM185: + 1888 0afc 8430      		cpi r24,4 + 1889 0afe 9105      		cpc r25,__zero_reg__ + 1890 0b00 01F4      		brne .L125 + 1891 0b02 21E0      		ldi r18,lo8(1) + 1892 0b04 30E0      		ldi r19,hi8(1) + 1893 0b06 3AA3      		std Y+34,r19 + 1894 0b08 29A3      		std Y+33,r18 + 1895               	.LVL154: + 1896 0b0a 6624      		clr r6 + 1897 0b0c 7724      		clr r7 + 1898               	.LVL155: + 1899 0b0e 00C0      		rjmp .L125 + 1900               	.LVL156: + 1901               	.L124: + 1902               	.LM186: + 1903 0b10 3C01      		movw r6,r24 + 1904               	.LVL157: + 1905               	.L125: + 1906               	.LM187: + 1907 0b12 C301      		movw r24,r6 + 1908 0b14 B3E0      		ldi r27,3 + 1909 0b16 880F      	1:	lsl r24 + 1910 0b18 991F      		rol r25 + 1911 0b1a BA95      		dec r27 + 1912 0b1c 01F4      		brne 1b + 1913               	.LM188: + 1914 0b1e 4BAC      		ldd r4,Y+59 + 1915 0b20 5CAC      		ldd r5,Y+60 + 1916 0b22 481A      		sub r4,r24 + 1917 0b24 590A      		sbc r5,r25 + 1918 0b26 8824      		clr r8 + 1919 0b28 9924      		clr r9 + 1920               	.LVL158: + 1921 0b2a 37E0      		ldi r19,lo8(7) + 1922 0b2c 39A7      		std Y+41,r19 + 1923               	.LM189: + 1924 0b2e EFE1      		ldi r30,lo8(31) + 1925 0b30 F0E0      		ldi r31,hi8(31) + 1926 0b32 4E0E      		add r4,r30 + 1927 0b34 5F1E      		adc r5,r31 + 1928 0b36 21E0      		ldi r18,lo8(1) + 1929 0b38 30E0      		ldi r19,hi8(1) + 1930 0b3a 2C0F      		add r18,r28 + 1931 0b3c 3D1F      		adc r19,r29 + 1932 0b3e 280F      		add r18,r24 + 1933 0b40 391F      		adc r19,r25 + 1934 0b42 3CAB      		std Y+52,r19 + 1935 0b44 2BAB      		std Y+51,r18 + 1936 0b46 00C0      		rjmp .L126 + 1937               	.L129: + 1938               	.LM190: + 1939 0b48 88A9      		ldd r24,Y+48 + 1940 0b4a 69A5      		ldd r22,Y+41 + 1941 0b4c 402F      		mov r20,r16 + 1942 0b4e 0E94 0000 		call font_getbitmappixel + 1943 0b52 8823      		tst r24 + 1944 0b54 01F0      		breq .L127 + 1945               	.LM191: + 1946 0b56 89A1      		ldd r24,Y+33 + 1947 0b58 9AA1      		ldd r25,Y+34 + 1948 0b5a 892B      		or r24,r25 + 1949 0b5c 01F4      		brne .L128 + 1950               	.LM192: + 1951 0b5e F601      		movw r30,r12 + 1952 0b60 00C0      		rjmp .L146 + 1953               	.L128: + 1954               	.LM193: + 1955 0b62 F501      		movw r30,r10 + 1956               	.L146: + 1957 0b64 8081      		ld r24,Z + 1958 0b66 90E0      		ldi r25,lo8(0) + 1959 0b68 B801      		movw r22,r16 + 1960 0b6a A401      		movw r20,r8 + 1961 0b6c 0E94 0000 		call setvoxel + 1962               	.L127: + 1963 0b70 0894      		sec + 1964 0b72 E11C      		adc r14,__zero_reg__ + 1965 0b74 F11C      		adc r15,__zero_reg__ + 1966 0b76 0150      		subi r16,lo8(-(-1)) + 1967 0b78 1040      		sbci r17,hi8(-(-1)) + 1968 0b7a 0894      		sec + 1969 0b7c A108      		sbc r10,__zero_reg__ + 1970 0b7e B108      		sbc r11,__zero_reg__ + 1971 0b80 0894      		sec + 1972 0b82 C11C      		adc r12,__zero_reg__ + 1973 0b84 D11C      		adc r13,__zero_reg__ + 1974               	.LM194: + 1975 0b86 F9E0      		ldi r31,lo8(9) + 1976 0b88 EF16      		cp r14,r31 + 1977 0b8a F104      		cpc r15,__zero_reg__ + 1978 0b8c 01F4      		brne .L129 + 1979               	.LM195: + 1980 0b8e 0894      		sec + 1981 0b90 811C      		adc r8,__zero_reg__ + 1982 0b92 911C      		adc r9,__zero_reg__ + 1983 0b94 29A5      		ldd r18,Y+41 + 1984 0b96 2150      		subi r18,lo8(-(-1)) + 1985 0b98 29A7      		std Y+41,r18 + 1986 0b9a 2F3F      		cpi r18,lo8(-1) + 1987 0b9c 01F0      		breq .L130 + 1988               	.L126: + 1989 0b9e 5201      		movw r10,r4 + 1990 0ba0 CBA8      		ldd r12,Y+51 + 1991 0ba2 DCA8      		ldd r13,Y+52 + 1992 0ba4 A1E0      		ldi r26,lo8(1) + 1993 0ba6 EA2E      		mov r14,r26 + 1994 0ba8 F12C      		mov r15,__zero_reg__ + 1995 0baa 07E0      		ldi r16,lo8(7) + 1996 0bac 10E0      		ldi r17,hi8(7) + 1997 0bae 00C0      		rjmp .L129 + 1998               	.L130: + 1999               	.LM196: + 2000 0bb0 89A9      		ldd r24,Y+49 + 2001 0bb2 9AA9      		ldd r25,Y+50 + 2002 0bb4 0E94 0000 		call delay_ms + 2003               	.LM197: + 2004 0bb8 80E0      		ldi r24,lo8(0) + 2005 0bba 0E94 0000 		call fill + 2006               	.LM198: + 2007 0bbe 0894      		sec + 2008 0bc0 211C      		adc r2,__zero_reg__ + 2009 0bc2 311C      		adc r3,__zero_reg__ + 2010 0bc4 37E0      		ldi r19,lo8(7) + 2011 0bc6 2316      		cp r2,r19 + 2012 0bc8 3104      		cpc r3,__zero_reg__ + 2013 0bca 01F0      		breq .+2 + 2014 0bcc 00C0      		rjmp .L131 + 2015               	.LBE7: + 2016               	.LM199: + 2017 0bce 8CA5      		ldd r24,Y+44 + 2018 0bd0 9DA5      		ldd r25,Y+45 + 2019 0bd2 0196      		adiw r24,1 + 2020 0bd4 9DA7      		std Y+45,r25 + 2021 0bd6 8CA7      		std Y+44,r24 + 2022               	.LVL159: + 2023               	.L99: + 2024 0bd8 ECA5      		ldd r30,Y+44 + 2025 0bda FDA5      		ldd r31,Y+45 + 2026 0bdc 2EA5      		ldd r18,Y+46 + 2027 0bde 3FA5      		ldd r19,Y+47 + 2028 0be0 E217      		cp r30,r18 + 2029 0be2 F307      		cpc r31,r19 + 2030 0be4 04F4      		brge .+2 + 2031 0be6 00C0      		rjmp .L132 + 2032               	/* epilogue start */ + 2033               	.LBE8: + 2034               	.LM200: + 2035 0be8 EC96      		adiw r28,60 + 2036 0bea 0FB6      		in __tmp_reg__,__SREG__ + 2037 0bec F894      		cli + 2038 0bee DEBF      		out __SP_H__,r29 + 2039 0bf0 0FBE      		out __SREG__,__tmp_reg__ + 2040 0bf2 CDBF      		out __SP_L__,r28 + 2041 0bf4 CF91      		pop r28 + 2042 0bf6 DF91      		pop r29 + 2043 0bf8 1F91      		pop r17 + 2044 0bfa 0F91      		pop r16 + 2045 0bfc FF90      		pop r15 + 2046 0bfe EF90      		pop r14 + 2047 0c00 DF90      		pop r13 + 2048 0c02 CF90      		pop r12 + 2049 0c04 BF90      		pop r11 + 2050 0c06 AF90      		pop r10 + 2051 0c08 9F90      		pop r9 + 2052 0c0a 8F90      		pop r8 + 2053               	.LVL160: + 2054 0c0c 7F90      		pop r7 + 2055 0c0e 6F90      		pop r6 + 2056               	.LVL161: + 2057 0c10 5F90      		pop r5 + 2058 0c12 4F90      		pop r4 + 2059 0c14 3F90      		pop r3 + 2060 0c16 2F90      		pop r2 + 2061               	.LVL162: + 2062 0c18 0895      		ret + 2063               	.LFE27: + 2065               	.global	effect_random_sparkle_flash + 2067               	effect_random_sparkle_flash: + 2068               	.LFB22: + 2069               	.LM201: + 2070               	.LVL163: + 2071 0c1a 6F92      		push r6 + 2072 0c1c 7F92      		push r7 + 2073 0c1e 8F92      		push r8 + 2074 0c20 9F92      		push r9 + 2075 0c22 AF92      		push r10 + 2076 0c24 BF92      		push r11 + 2077 0c26 CF92      		push r12 + 2078 0c28 DF92      		push r13 + 2079 0c2a EF92      		push r14 + 2080 0c2c FF92      		push r15 + 2081 0c2e 0F93      		push r16 + 2082 0c30 1F93      		push r17 + 2083 0c32 CF93      		push r28 + 2084 0c34 DF93      		push r29 + 2085               	/* prologue: function */ + 2086               	/* frame size = 0 */ + 2087 0c36 3C01      		movw r6,r24 + 2088 0c38 4B01      		movw r8,r22 + 2089 0c3a 5A01      		movw r10,r20 + 2090               	.LM202: + 2091 0c3c CC24      		clr r12 + 2092 0c3e DD24      		clr r13 + 2093               	.LVL164: + 2094 0c40 00C0      		rjmp .L148 + 2095               	.LVL165: + 2096               	.L149: + 2097               	.LM203: + 2098 0c42 0E94 0000 		call rand + 2099 0c46 8C01      		movw r16,r24 + 2100 0c48 0E94 0000 		call rand + 2101 0c4c 7C01      		movw r14,r24 + 2102 0c4e 0E94 0000 		call rand + 2103 0c52 FC01      		movw r30,r24 + 2104 0c54 C801      		movw r24,r16 + 2105 0c56 68E0      		ldi r22,lo8(8) + 2106 0c58 70E0      		ldi r23,hi8(8) + 2107 0c5a 0E94 0000 		call __divmodhi4 + 2108 0c5e 8C01      		movw r16,r24 + 2109 0c60 C701      		movw r24,r14 + 2110 0c62 68E0      		ldi r22,lo8(8) + 2111 0c64 70E0      		ldi r23,hi8(8) + 2112 0c66 0E94 0000 		call __divmodhi4 + 2113 0c6a 9C01      		movw r18,r24 + 2114 0c6c CF01      		movw r24,r30 + 2115 0c6e 68E0      		ldi r22,lo8(8) + 2116 0c70 70E0      		ldi r23,hi8(8) + 2117 0c72 0E94 0000 		call __divmodhi4 + 2118 0c76 AC01      		movw r20,r24 + 2119 0c78 C801      		movw r24,r16 + 2120 0c7a B901      		movw r22,r18 + 2121 0c7c 0E94 0000 		call setvoxel + 2122               	.LM204: + 2123 0c80 2196      		adiw r28,1 + 2124               	.LVL166: + 2125               	.L151: + 2126 0c82 8C16      		cp r8,r28 + 2127 0c84 9D06      		cpc r9,r29 + 2128 0c86 04F4      		brge .L149 + 2129               	.LM205: + 2130 0c88 C501      		movw r24,r10 + 2131 0c8a 0E94 0000 		call delay_ms + 2132               	.LM206: + 2133 0c8e 80E0      		ldi r24,lo8(0) + 2134 0c90 0E94 0000 		call fill + 2135               	.LM207: + 2136 0c94 0894      		sec + 2137 0c96 C11C      		adc r12,__zero_reg__ + 2138 0c98 D11C      		adc r13,__zero_reg__ + 2139               	.LVL167: + 2140               	.L148: + 2141 0c9a C614      		cp r12,r6 + 2142 0c9c D704      		cpc r13,r7 + 2143 0c9e 04F4      		brge .L152 + 2144 0ca0 C0E0      		ldi r28,lo8(0) + 2145 0ca2 D0E0      		ldi r29,hi8(0) + 2146 0ca4 00C0      		rjmp .L151 + 2147               	.L152: + 2148               	/* epilogue start */ + 2149               	.LM208: + 2150 0ca6 DF91      		pop r29 + 2151 0ca8 CF91      		pop r28 + 2152               	.LVL168: + 2153 0caa 1F91      		pop r17 + 2154 0cac 0F91      		pop r16 + 2155 0cae FF90      		pop r15 + 2156 0cb0 EF90      		pop r14 + 2157 0cb2 DF90      		pop r13 + 2158 0cb4 CF90      		pop r12 + 2159               	.LVL169: + 2160 0cb6 BF90      		pop r11 + 2161 0cb8 AF90      		pop r10 + 2162               	.LVL170: + 2163 0cba 9F90      		pop r9 + 2164 0cbc 8F90      		pop r8 + 2165               	.LVL171: + 2166 0cbe 7F90      		pop r7 + 2167 0cc0 6F90      		pop r6 + 2168               	.LVL172: + 2169 0cc2 0895      		ret + 2170               	.LFE22: + 2172               	.global	effect_random_sparkle + 2174               	effect_random_sparkle: + 2175               	.LFB23: + 2176               	.LM209: + 2177 0cc4 CF93      		push r28 + 2178 0cc6 DF93      		push r29 + 2179               	/* prologue: function */ + 2180               	/* frame size = 0 */ + 2181               	.LM210: + 2182 0cc8 C1E0      		ldi r28,lo8(1) + 2183 0cca D0E0      		ldi r29,hi8(1) + 2184               	.LVL173: + 2185               	.L154: + 2186               	.LM211: + 2187 0ccc 85E0      		ldi r24,lo8(5) + 2188 0cce 90E0      		ldi r25,hi8(5) + 2189 0cd0 BE01      		movw r22,r28 + 2190 0cd2 48EC      		ldi r20,lo8(200) + 2191 0cd4 50E0      		ldi r21,hi8(200) + 2192 0cd6 0E94 0000 		call effect_random_sparkle_flash + 2193               	.LM212: + 2194 0cda 2196      		adiw r28,1 + 2195 0cdc C431      		cpi r28,20 + 2196 0cde D105      		cpc r29,__zero_reg__ + 2197 0ce0 01F4      		brne .L154 + 2198               	.L157: + 2199               	.LM213: + 2200 0ce2 85E0      		ldi r24,lo8(5) + 2201 0ce4 90E0      		ldi r25,hi8(5) + 2202 0ce6 BE01      		movw r22,r28 + 2203 0ce8 48EC      		ldi r20,lo8(200) + 2204 0cea 50E0      		ldi r21,hi8(200) + 2205 0cec 0E94 0000 		call effect_random_sparkle_flash + 2206               	.LM214: + 2207 0cf0 2197      		sbiw r28,1 + 2208 0cf2 01F4      		brne .L157 + 2209               	/* epilogue start */ + 2210               	.LM215: + 2211 0cf4 DF91      		pop r29 + 2212 0cf6 CF91      		pop r28 + 2213               	.LVL174: + 2214 0cf8 0895      		ret + 2215               	.LFE23: + 2217               	.global	effect_loadbar + 2219               	effect_loadbar: + 2220               	.LFB21: + 2221               	.LM216: + 2222               	.LVL175: + 2223 0cfa DF92      		push r13 + 2224 0cfc EF92      		push r14 + 2225 0cfe FF92      		push r15 + 2226 0d00 0F93      		push r16 + 2227 0d02 1F93      		push r17 + 2228 0d04 CF93      		push r28 + 2229 0d06 DF93      		push r29 + 2230               	/* prologue: function */ + 2231               	/* frame size = 0 */ + 2232 0d08 8C01      		movw r16,r24 + 2233               	.LM217: + 2234 0d0a 80E0      		ldi r24,lo8(0) + 2235               	.LVL176: + 2236 0d0c 0E94 0000 		call fill + 2237 0d10 C0E0      		ldi r28,lo8(0) + 2238 0d12 D0E0      		ldi r29,hi8(0) + 2239               	.LVL177: + 2240               	.LM218: + 2241 0d14 DD24      		clr r13 + 2242 0d16 DA94      		dec r13 + 2243               	.LM219: + 2244 0d18 7801      		movw r14,r16 + 2245               	.LVL178: + 2246 0d1a 00C0      		rjmp .L161 + 2247               	.LVL179: + 2248               	.L162: + 2249               	.LM220: + 2250 0d1c F901      		movw r30,r18 + 2251 0d1e E80F      		add r30,r24 + 2252 0d20 F91F      		adc r31,r25 + 2253 0d22 E050      		subi r30,lo8(-(cube)) + 2254 0d24 F040      		sbci r31,hi8(-(cube)) + 2255 0d26 D082      		st Z,r13 + 2256               	.LM221: + 2257 0d28 0196      		adiw r24,1 + 2258 0d2a 8830      		cpi r24,8 + 2259 0d2c 9105      		cpc r25,__zero_reg__ + 2260 0d2e 01F4      		brne .L162 + 2261               	.LM222: + 2262 0d30 C701      		movw r24,r14 + 2263               	.LVL180: + 2264 0d32 0E94 0000 		call delay_ms + 2265               	.LM223: + 2266 0d36 2196      		adiw r28,1 + 2267 0d38 C830      		cpi r28,8 + 2268 0d3a D105      		cpc r29,__zero_reg__ + 2269 0d3c 01F0      		breq .L163 + 2270               	.L161: + 2271 0d3e 80E0      		ldi r24,lo8(0) + 2272 0d40 90E0      		ldi r25,hi8(0) + 2273               	.LVL181: + 2274               	.LM224: + 2275 0d42 9E01      		movw r18,r28 + 2276 0d44 A3E0      		ldi r26,3 + 2277 0d46 220F      	1:	lsl r18 + 2278 0d48 331F      		rol r19 + 2279 0d4a AA95      		dec r26 + 2280 0d4c 01F4      		brne 1b + 2281 0d4e 00C0      		rjmp .L162 + 2282               	.LVL182: + 2283               	.L163: + 2284               	.LM225: + 2285 0d50 C801      		movw r24,r16 + 2286               	.LVL183: + 2287 0d52 880F      		lsl r24 + 2288 0d54 991F      		rol r25 + 2289 0d56 800F      		add r24,r16 + 2290 0d58 911F      		adc r25,r17 + 2291 0d5a 0E94 0000 		call delay_ms + 2292 0d5e C0E0      		ldi r28,lo8(0) + 2293 0d60 D0E0      		ldi r29,hi8(0) + 2294               	.LVL184: + 2295 0d62 00C0      		rjmp .L164 + 2296               	.LVL185: + 2297               	.L165: + 2298               	.LM226: + 2299 0d64 F901      		movw r30,r18 + 2300 0d66 E80F      		add r30,r24 + 2301 0d68 F91F      		adc r31,r25 + 2302 0d6a E050      		subi r30,lo8(-(cube)) + 2303 0d6c F040      		sbci r31,hi8(-(cube)) + 2304 0d6e 1082      		st Z,__zero_reg__ + 2305               	.LM227: + 2306 0d70 0196      		adiw r24,1 + 2307 0d72 8830      		cpi r24,8 + 2308 0d74 9105      		cpc r25,__zero_reg__ + 2309 0d76 01F4      		brne .L165 + 2310               	.LM228: + 2311 0d78 C701      		movw r24,r14 + 2312               	.LVL186: + 2313 0d7a 0E94 0000 		call delay_ms + 2314               	.LM229: + 2315 0d7e 2196      		adiw r28,1 + 2316 0d80 C830      		cpi r28,8 + 2317 0d82 D105      		cpc r29,__zero_reg__ + 2318 0d84 01F0      		breq .L167 + 2319               	.L164: + 2320 0d86 80E0      		ldi r24,lo8(0) + 2321 0d88 90E0      		ldi r25,hi8(0) + 2322               	.LVL187: + 2323               	.LM230: + 2324 0d8a 9E01      		movw r18,r28 + 2325 0d8c E3E0      		ldi r30,3 + 2326 0d8e 220F      	1:	lsl r18 + 2327 0d90 331F      		rol r19 + 2328 0d92 EA95      		dec r30 + 2329 0d94 01F4      		brne 1b + 2330 0d96 00C0      		rjmp .L165 + 2331               	.LVL188: + 2332               	.L167: + 2333               	/* epilogue start */ + 2334               	.LM231: + 2335 0d98 DF91      		pop r29 + 2336 0d9a CF91      		pop r28 + 2337               	.LVL189: + 2338 0d9c 1F91      		pop r17 + 2339 0d9e 0F91      		pop r16 + 2340               	.LVL190: + 2341 0da0 FF90      		pop r15 + 2342 0da2 EF90      		pop r14 + 2343 0da4 DF90      		pop r13 + 2344 0da6 0895      		ret + 2345               	.LFE21: + 2347               	.global	draw_positions_axis + 2349               	draw_positions_axis: + 2350               	.LFB19: + 2351               	.LM232: + 2352               	.LVL191: + 2353 0da8 4F92      		push r4 + 2354 0daa 5F92      		push r5 + 2355 0dac 6F92      		push r6 + 2356 0dae 7F92      		push r7 + 2357 0db0 9F92      		push r9 + 2358 0db2 AF92      		push r10 + 2359 0db4 BF92      		push r11 + 2360 0db6 CF92      		push r12 + 2361 0db8 DF92      		push r13 + 2362 0dba EF92      		push r14 + 2363 0dbc FF92      		push r15 + 2364 0dbe 0F93      		push r16 + 2365 0dc0 1F93      		push r17 + 2366 0dc2 CF93      		push r28 + 2367 0dc4 DF93      		push r29 + 2368               	/* prologue: function */ + 2369               	/* frame size = 0 */ + 2370 0dc6 982E      		mov r9,r24 + 2371 0dc8 162F      		mov r17,r22 + 2372 0dca 072F      		mov r16,r23 + 2373               	.LVL192: + 2374 0dcc 3A01      		movw r6,r20 + 2375               	.LM233: + 2376 0dce 80E0      		ldi r24,lo8(0) + 2377               	.LVL193: + 2378 0dd0 0E94 0000 		call fill + 2379               	.LVL194: + 2380 0dd4 212F      		mov r18,r17 + 2381 0dd6 302F      		mov r19,r16 + 2382 0dd8 C901      		movw r24,r18 + 2383 0dda 6C01      		movw r12,r24 + 2384 0ddc C0E0      		ldi r28,lo8(0) + 2385 0dde D0E0      		ldi r29,hi8(0) + 2386               	.LVL195: + 2387               	.LM234: + 2388 0de0 B7E0      		ldi r27,lo8(7) + 2389 0de2 4B2E      		mov r4,r27 + 2390 0de4 512C      		mov r5,__zero_reg__ + 2391 0de6 00C0      		rjmp .L171 + 2392               	.LVL196: + 2393               	.L177: + 2394               	.LM235: + 2395 0de8 6114      		cp r6,__zero_reg__ + 2396 0dea 7104      		cpc r7,__zero_reg__ + 2397 0dec 01F0      		breq .L172 + 2398               	.LM236: + 2399 0dee F501      		movw r30,r10 + 2400 0df0 8081      		ld r24,Z + 2401 0df2 A201      		movw r20,r4 + 2402               	.LVL197: + 2403 0df4 481B      		sub r20,r24 + 2404 0df6 5109      		sbc r21,__zero_reg__ + 2405 0df8 00C0      		rjmp .L173 + 2406               	.L172: + 2407               	.LM237: + 2408 0dfa F701      		movw r30,r14 + 2409 0dfc 8081      		ld r24,Z + 2410 0dfe 482F      		mov r20,r24 + 2411 0e00 50E0      		ldi r21,lo8(0) + 2412               	.L173: + 2413               	.LM238: + 2414 0e02 FAE7      		ldi r31,lo8(122) + 2415 0e04 9F16      		cp r9,r31 + 2416 0e06 01F4      		brne .L174 + 2417               	.LM239: + 2418 0e08 CE01      		movw r24,r28 + 2419 0e0a B801      		movw r22,r16 + 2420 0e0c 00C0      		rjmp .L181 + 2421               	.L174: + 2422               	.LM240: + 2423 0e0e 89E7      		ldi r24,lo8(121) + 2424 0e10 9816      		cp r9,r24 + 2425 0e12 01F4      		brne .L176 + 2426               	.LM241: + 2427 0e14 CE01      		movw r24,r28 + 2428 0e16 BA01      		movw r22,r20 + 2429 0e18 A801      		movw r20,r16 + 2430               	.LVL198: + 2431 0e1a 00C0      		rjmp .L181 + 2432               	.LVL199: + 2433               	.L176: + 2434               	.LM242: + 2435 0e1c 98E7      		ldi r25,lo8(120) + 2436 0e1e 9916      		cp r9,r25 + 2437 0e20 01F4      		brne .L175 + 2438               	.LM243: + 2439 0e22 CA01      		movw r24,r20 + 2440 0e24 B801      		movw r22,r16 + 2441 0e26 AE01      		movw r20,r28 + 2442               	.LVL200: + 2443               	.L181: + 2444 0e28 0E94 0000 		call setvoxel + 2445               	.LVL201: + 2446               	.L175: + 2447               	.LM244: + 2448 0e2c 0F5F      		subi r16,lo8(-(1)) + 2449 0e2e 1F4F      		sbci r17,hi8(-(1)) + 2450 0e30 0894      		sec + 2451 0e32 A11C      		adc r10,__zero_reg__ + 2452 0e34 B11C      		adc r11,__zero_reg__ + 2453 0e36 0894      		sec + 2454 0e38 E11C      		adc r14,__zero_reg__ + 2455 0e3a F11C      		adc r15,__zero_reg__ + 2456 0e3c 0830      		cpi r16,8 + 2457 0e3e 1105      		cpc r17,__zero_reg__ + 2458 0e40 01F4      		brne .L177 + 2459               	.LM245: + 2460 0e42 2196      		adiw r28,1 + 2461 0e44 E8E0      		ldi r30,lo8(8) + 2462 0e46 F0E0      		ldi r31,hi8(8) + 2463 0e48 CE0E      		add r12,r30 + 2464 0e4a DF1E      		adc r13,r31 + 2465 0e4c C830      		cpi r28,8 + 2466 0e4e D105      		cpc r29,__zero_reg__ + 2467 0e50 01F0      		breq .L179 + 2468               	.LVL202: + 2469               	.L171: + 2470 0e52 5601      		movw r10,r12 + 2471 0e54 7601      		movw r14,r12 + 2472 0e56 00E0      		ldi r16,lo8(0) + 2473 0e58 10E0      		ldi r17,hi8(0) + 2474               	.LVL203: + 2475 0e5a 00C0      		rjmp .L177 + 2476               	.L179: + 2477               	/* epilogue start */ + 2478               	.LM246: + 2479 0e5c DF91      		pop r29 + 2480 0e5e CF91      		pop r28 + 2481               	.LVL204: + 2482 0e60 1F91      		pop r17 + 2483               	.LVL205: + 2484 0e62 0F91      		pop r16 + 2485               	.LVL206: + 2486 0e64 FF90      		pop r15 + 2487 0e66 EF90      		pop r14 + 2488 0e68 DF90      		pop r13 + 2489 0e6a CF90      		pop r12 + 2490 0e6c BF90      		pop r11 + 2491 0e6e AF90      		pop r10 + 2492 0e70 9F90      		pop r9 + 2493               	.LVL207: + 2494 0e72 7F90      		pop r7 + 2495 0e74 6F90      		pop r6 + 2496               	.LVL208: + 2497 0e76 5F90      		pop r5 + 2498 0e78 4F90      		pop r4 + 2499 0e7a 0895      		ret + 2500               	.LFE19: + 2502               	.global	effect_boxside_randsend_parallel + 2504               	effect_boxside_randsend_parallel: + 2505               	.LFB20: + 2506               	.LM247: + 2507               	.LVL209: + 2508 0e7c 2F92      		push r2 + 2509 0e7e 3F92      		push r3 + 2510 0e80 4F92      		push r4 + 2511 0e82 5F92      		push r5 + 2512 0e84 6F92      		push r6 + 2513 0e86 7F92      		push r7 + 2514 0e88 8F92      		push r8 + 2515 0e8a 9F92      		push r9 + 2516 0e8c AF92      		push r10 + 2517 0e8e BF92      		push r11 + 2518 0e90 CF92      		push r12 + 2519 0e92 DF92      		push r13 + 2520 0e94 EF92      		push r14 + 2521 0e96 FF92      		push r15 + 2522 0e98 0F93      		push r16 + 2523 0e9a 1F93      		push r17 + 2524 0e9c DF93      		push r29 + 2525 0e9e CF93      		push r28 + 2526 0ea0 CDB7      		in r28,__SP_L__ + 2527 0ea2 DEB7      		in r29,__SP_H__ + 2528 0ea4 C158      		subi r28,lo8(-(-129)) + 2529 0ea6 D040      		sbci r29,hi8(-(-129)) + 2530 0ea8 0FB6      		in __tmp_reg__,__SREG__ + 2531 0eaa F894      		cli + 2532 0eac DEBF      		out __SP_H__,r29 + 2533 0eae 0FBE      		out __SREG__,__tmp_reg__ + 2534 0eb0 CDBF      		out __SP_L__,r28 + 2535               	/* prologue: function */ + 2536               	/* frame size = 129 */ + 2537 0eb2 CF57      		subi r28,lo8(-129) + 2538 0eb4 DF4F      		sbci r29,hi8(-129) + 2539 0eb6 8883      		st Y,r24 + 2540 0eb8 C158      		subi r28,lo8(129) + 2541 0eba D040      		sbci r29,hi8(129) + 2542 0ebc 2B01      		movw r4,r22 + 2543 0ebe 3A01      		movw r6,r20 + 2544 0ec0 4901      		movw r8,r18 + 2545               	.LM248: + 2546 0ec2 01E4      		ldi r16,lo8(65) + 2547 0ec4 A02E      		mov r10,r16 + 2548 0ec6 B12C      		mov r11,__zero_reg__ + 2549 0ec8 AC0E      		add r10,r28 + 2550 0eca BD1E      		adc r11,r29 + 2551 0ecc F501      		movw r30,r10 + 2552 0ece 11E8      		ldi r17,lo8(129) + 2553 0ed0 C12E      		mov r12,r17 + 2554 0ed2 D12C      		mov r13,__zero_reg__ + 2555 0ed4 CC0E      		add r12,r28 + 2556 0ed6 DD1E      		adc r13,r29 + 2557               	.LVL210: + 2558               	.L183: + 2559               	.LM249: + 2560 0ed8 1192      		st Z+,__zero_reg__ + 2561               	.LM250: + 2562 0eda EC15      		cp r30,r12 + 2563 0edc FD05      		cpc r31,r13 + 2564 0ede 01F4      		brne .L183 + 2565 0ee0 00E0      		ldi r16,lo8(0) + 2566 0ee2 10E0      		ldi r17,hi8(0) + 2567               	.LVL211: + 2568               	.LM251: + 2569 0ee4 1E01      		movw r2,r28 + 2570 0ee6 0894      		sec + 2571 0ee8 211C      		adc r2,__zero_reg__ + 2572 0eea 311C      		adc r3,__zero_reg__ + 2573               	.LVL212: + 2574               	.L194: + 2575               	.LM252: + 2576 0eec 81E0      		ldi r24,lo8(1) + 2577 0eee 8816      		cp r8,r24 + 2578 0ef0 9104      		cpc r9,__zero_reg__ + 2579 0ef2 01F4      		brne .L202 + 2580 0ef4 00C0      		rjmp .L204 + 2581               	.L196: + 2582               	.LM253: + 2583 0ef6 0E94 0000 		call rand + 2584 0efa 60E4      		ldi r22,lo8(64) + 2585 0efc 70E0      		ldi r23,hi8(64) + 2586 0efe 0E94 0000 		call __divmodhi4 + 2587               	.LM254: + 2588 0f02 E1E4      		ldi r30,lo8(65) + 2589 0f04 F0E0      		ldi r31,hi8(65) + 2590 0f06 EC0F      		add r30,r28 + 2591 0f08 FD1F      		adc r31,r29 + 2592 0f0a E80F      		add r30,r24 + 2593 0f0c F91F      		adc r31,r25 + 2594               	.LVL213: + 2595 0f0e 8081      		ld r24,Z + 2596               	.LVL214: + 2597 0f10 8823      		tst r24 + 2598 0f12 01F4      		brne .L196 + 2599               	.LM255: + 2600 0f14 0F5F      		subi r16,lo8(-(1)) + 2601 0f16 1F4F      		sbci r17,hi8(-(1)) + 2602               	.LM256: + 2603 0f18 91E0      		ldi r25,lo8(1) + 2604 0f1a 9083      		st Z,r25 + 2605 0f1c 00C0      		rjmp .L187 + 2606               	.LVL215: + 2607               	.L204: + 2608               	.LM257: + 2609 0f1e 0034      		cpi r16,64 + 2610 0f20 1105      		cpc r17,__zero_reg__ + 2611 0f22 04F0      		brlt .L196 + 2612 0f24 00C0      		rjmp .L187 + 2613               	.L202: + 2614               	.LM258: + 2615 0f26 82E0      		ldi r24,lo8(2) + 2616 0f28 8816      		cp r8,r24 + 2617 0f2a 9104      		cpc r9,__zero_reg__ + 2618 0f2c 01F4      		brne .L187 + 2619               	.LM259: + 2620 0f2e 0034      		cpi r16,64 + 2621 0f30 1105      		cpc r17,__zero_reg__ + 2622 0f32 04F4      		brge .L187 + 2623               	.LM260: + 2624 0f34 E1E4      		ldi r30,lo8(65) + 2625 0f36 F0E0      		ldi r31,hi8(65) + 2626 0f38 EC0F      		add r30,r28 + 2627 0f3a FD1F      		adc r31,r29 + 2628 0f3c E00F      		add r30,r16 + 2629 0f3e F11F      		adc r31,r17 + 2630 0f40 8081      		ld r24,Z + 2631 0f42 8F5F      		subi r24,lo8(-(1)) + 2632 0f44 8083      		st Z,r24 + 2633               	.LM261: + 2634 0f46 0F5F      		subi r16,lo8(-(1)) + 2635 0f48 1F4F      		sbci r17,hi8(-(1)) + 2636               	.L187: + 2637 0f4a F501      		movw r30,r10 + 2638 0f4c EE24      		clr r14 + 2639 0f4e FF24      		clr r15 + 2640               	.L190: + 2641               	.LM262: + 2642 0f50 9081      		ld r25,Z + 2643 0f52 892F      		mov r24,r25 + 2644 0f54 8150      		subi r24,lo8(-(-1)) + 2645 0f56 8630      		cpi r24,lo8(6) + 2646 0f58 00F4      		brsh .L188 + 2647               	.LM263: + 2648 0f5a 9F5F      		subi r25,lo8(-(1)) + 2649 0f5c 9083      		st Z,r25 + 2650               	.L188: + 2651               	.LM264: + 2652 0f5e 8081      		ld r24,Z + 2653 0f60 8730      		cpi r24,lo8(7) + 2654 0f62 01F4      		brne .L189 + 2655               	.LM265: + 2656 0f64 0894      		sec + 2657 0f66 E11C      		adc r14,__zero_reg__ + 2658 0f68 F11C      		adc r15,__zero_reg__ + 2659               	.L189: + 2660 0f6a 3196      		adiw r30,1 + 2661               	.LM266: + 2662 0f6c EC15      		cp r30,r12 + 2663 0f6e FD05      		cpc r31,r13 + 2664 0f70 01F4      		brne .L190 + 2665 0f72 D101      		movw r26,r2 + 2666 0f74 F501      		movw r30,r10 + 2667               	.L193: + 2668 0f76 8081      		ld r24,Z + 2669               	.LM267: + 2670 0f78 4114      		cp r4,__zero_reg__ + 2671 0f7a 5104      		cpc r5,__zero_reg__ + 2672 0f7c 01F0      		breq .L203 + 2673               	.L191: + 2674               	.LM268: + 2675 0f7e 97E0      		ldi r25,lo8(7) + 2676 0f80 981B      		sub r25,r24 + 2677 0f82 892F      		mov r24,r25 + 2678               	.L203: + 2679 0f84 8C93      		st X,r24 + 2680 0f86 3196      		adiw r30,1 + 2681 0f88 1196      		adiw r26,1 + 2682               	.LM269: + 2683 0f8a EC15      		cp r30,r12 + 2684 0f8c FD05      		cpc r31,r13 + 2685 0f8e 01F4      		brne .L193 + 2686               	.LM270: + 2687 0f90 C301      		movw r24,r6 + 2688 0f92 0E94 0000 		call delay_ms + 2689               	.LM271: + 2690 0f96 CF57      		subi r28,lo8(-129) + 2691 0f98 DF4F      		sbci r29,hi8(-129) + 2692 0f9a 8881      		ld r24,Y + 2693 0f9c C158      		subi r28,lo8(129) + 2694 0f9e D040      		sbci r29,hi8(129) + 2695 0fa0 B101      		movw r22,r2 + 2696 0fa2 40E0      		ldi r20,lo8(0) + 2697 0fa4 50E0      		ldi r21,hi8(0) + 2698 0fa6 0E94 0000 		call draw_positions_axis + 2699               	.LM272: + 2700 0faa 82B3      		in r24,50-32 + 2701 0fac 94E0      		ldi r25,lo8(4) + 2702 0fae 8927      		eor r24,r25 + 2703 0fb0 82BB      		out 50-32,r24 + 2704               	.LM273: + 2705 0fb2 80E4      		ldi r24,lo8(64) + 2706 0fb4 E816      		cp r14,r24 + 2707 0fb6 F104      		cpc r15,__zero_reg__ + 2708 0fb8 01F0      		breq .+2 + 2709 0fba 00C0      		rjmp .L194 + 2710               	/* epilogue start */ + 2711               	.LM274: + 2712 0fbc CF57      		subi r28,lo8(-(129)) + 2713 0fbe DF4F      		sbci r29,hi8(-(129)) + 2714 0fc0 0FB6      		in __tmp_reg__,__SREG__ + 2715 0fc2 F894      		cli + 2716 0fc4 DEBF      		out __SP_H__,r29 + 2717 0fc6 0FBE      		out __SREG__,__tmp_reg__ + 2718 0fc8 CDBF      		out __SP_L__,r28 + 2719 0fca CF91      		pop r28 + 2720 0fcc DF91      		pop r29 + 2721 0fce 1F91      		pop r17 + 2722 0fd0 0F91      		pop r16 + 2723               	.LVL216: + 2724 0fd2 FF90      		pop r15 + 2725 0fd4 EF90      		pop r14 + 2726               	.LVL217: + 2727 0fd6 DF90      		pop r13 + 2728 0fd8 CF90      		pop r12 + 2729 0fda BF90      		pop r11 + 2730 0fdc AF90      		pop r10 + 2731 0fde 9F90      		pop r9 + 2732 0fe0 8F90      		pop r8 + 2733               	.LVL218: + 2734 0fe2 7F90      		pop r7 + 2735 0fe4 6F90      		pop r6 + 2736               	.LVL219: + 2737 0fe6 5F90      		pop r5 + 2738 0fe8 4F90      		pop r4 + 2739               	.LVL220: + 2740 0fea 3F90      		pop r3 + 2741 0fec 2F90      		pop r2 + 2742 0fee 0895      		ret + 2743               	.LFE20: + 2745               	.global	effect_axis_updown_randsuspend + 2747               	effect_axis_updown_randsuspend: + 2748               	.LFB18: + 2749               	.LM275: + 2750               	.LVL221: + 2751 0ff0 3F92      		push r3 + 2752 0ff2 4F92      		push r4 + 2753 0ff4 5F92      		push r5 + 2754 0ff6 6F92      		push r6 + 2755 0ff8 7F92      		push r7 + 2756 0ffa 8F92      		push r8 + 2757 0ffc 9F92      		push r9 + 2758 0ffe AF92      		push r10 + 2759 1000 BF92      		push r11 + 2760 1002 CF92      		push r12 + 2761 1004 DF92      		push r13 + 2762 1006 EF92      		push r14 + 2763 1008 FF92      		push r15 + 2764 100a 0F93      		push r16 + 2765 100c 1F93      		push r17 + 2766 100e DF93      		push r29 + 2767 1010 CF93      		push r28 + 2768 1012 CDB7      		in r28,__SP_L__ + 2769 1014 DEB7      		in r29,__SP_H__ + 2770 1016 C058      		subi r28,lo8(-(-128)) + 2771 1018 D040      		sbci r29,hi8(-(-128)) + 2772 101a 0FB6      		in __tmp_reg__,__SREG__ + 2773 101c F894      		cli + 2774 101e DEBF      		out __SP_H__,r29 + 2775 1020 0FBE      		out __SREG__,__tmp_reg__ + 2776 1022 CDBF      		out __SP_L__,r28 + 2777               	/* prologue: function */ + 2778               	/* frame size = 128 */ + 2779 1024 382E      		mov r3,r24 + 2780 1026 2B01      		movw r4,r22 + 2781               	.LVL222: + 2782 1028 4A01      		movw r8,r20 + 2783 102a 3901      		movw r6,r18 + 2784               	.LM276: + 2785 102c 00E0      		ldi r16,lo8(0) + 2786 102e 10E0      		ldi r17,hi8(0) + 2787               	.LVL223: + 2788               	.LM277: + 2789 1030 6E01      		movw r12,r28 + 2790 1032 0894      		sec + 2791 1034 C11C      		adc r12,__zero_reg__ + 2792 1036 D11C      		adc r13,__zero_reg__ + 2793               	.LM278: + 2794 1038 91E4      		ldi r25,lo8(65) + 2795 103a E92E      		mov r14,r25 + 2796 103c F12C      		mov r15,__zero_reg__ + 2797 103e EC0E      		add r14,r28 + 2798 1040 FD1E      		adc r15,r29 + 2799               	.LVL224: + 2800               	.L206: + 2801               	.LM279: + 2802 1042 F601      		movw r30,r12 + 2803 1044 E00F      		add r30,r16 + 2804 1046 F11F      		adc r31,r17 + 2805 1048 1082      		st Z,__zero_reg__ + 2806               	.LM280: + 2807 104a 0E94 0000 		call rand + 2808 104e F701      		movw r30,r14 + 2809 1050 E00F      		add r30,r16 + 2810 1052 F11F      		adc r31,r17 + 2811 1054 68E0      		ldi r22,lo8(8) + 2812 1056 70E0      		ldi r23,hi8(8) + 2813 1058 0E94 0000 		call __divmodhi4 + 2814 105c 8083      		st Z,r24 + 2815               	.LM281: + 2816 105e 0F5F      		subi r16,lo8(-(1)) + 2817 1060 1F4F      		sbci r17,hi8(-(1)) + 2818 1062 0034      		cpi r16,64 + 2819 1064 1105      		cpc r17,__zero_reg__ + 2820 1066 01F4      		brne .L206 + 2821 1068 EE24      		clr r14 + 2822 106a FF24      		clr r15 + 2823               	.LVL225: + 2824               	.LM282: + 2825 106c 5E01      		movw r10,r28 + 2826 106e 0894      		sec + 2827 1070 A11C      		adc r10,__zero_reg__ + 2828 1072 B11C      		adc r11,__zero_reg__ + 2829 1074 81E4      		ldi r24,lo8(65) + 2830 1076 C82E      		mov r12,r24 + 2831 1078 D12C      		mov r13,__zero_reg__ + 2832 107a CC0E      		add r12,r28 + 2833 107c DD1E      		adc r13,r29 + 2834 107e 00C0      		rjmp .L207 + 2835               	.L210: + 2836               	.LM283: + 2837 1080 D801      		movw r26,r16 + 2838 1082 8C91      		ld r24,X + 2839 1084 9081      		ld r25,Z + 2840 1086 8917      		cp r24,r25 + 2841 1088 00F4      		brsh .L208 + 2842               	.LM284: + 2843 108a 8F5F      		subi r24,lo8(-(1)) + 2844 108c 8C93      		st X,r24 + 2845               	.L208: + 2846               	.LM285: + 2847 108e D801      		movw r26,r16 + 2848 1090 8C91      		ld r24,X + 2849 1092 9817      		cp r25,r24 + 2850 1094 00F4      		brsh .L209 + 2851               	.LM286: + 2852 1096 8150      		subi r24,lo8(-(-1)) + 2853 1098 8C93      		st X,r24 + 2854               	.L209: + 2855 109a 0F5F      		subi r16,lo8(-(1)) + 2856 109c 1F4F      		sbci r17,hi8(-(1)) + 2857 109e 3196      		adiw r30,1 + 2858               	.LM287: + 2859 10a0 0C15      		cp r16,r12 + 2860 10a2 1D05      		cpc r17,r13 + 2861 10a4 01F4      		brne .L210 + 2862               	.LM288: + 2863 10a6 832D      		mov r24,r3 + 2864 10a8 B501      		movw r22,r10 + 2865 10aa A301      		movw r20,r6 + 2866 10ac 0E94 0000 		call draw_positions_axis + 2867               	.LM289: + 2868 10b0 C201      		movw r24,r4 + 2869 10b2 0E94 0000 		call delay_ms + 2870               	.LM290: + 2871 10b6 0894      		sec + 2872 10b8 E11C      		adc r14,__zero_reg__ + 2873 10ba F11C      		adc r15,__zero_reg__ + 2874 10bc B8E0      		ldi r27,lo8(8) + 2875 10be EB16      		cp r14,r27 + 2876 10c0 F104      		cpc r15,__zero_reg__ + 2877 10c2 01F0      		breq .L211 + 2878               	.L207: + 2879 10c4 8501      		movw r16,r10 + 2880 10c6 F601      		movw r30,r12 + 2881 10c8 00C0      		rjmp .L210 + 2882               	.L211: + 2883 10ca F801      		movw r30,r16 + 2884               	.LM291: + 2885 10cc 27E0      		ldi r18,lo8(7) + 2886               	.LM292: + 2887 10ce CE01      		movw r24,r28 + 2888 10d0 8F57      		subi r24,lo8(-(129)) + 2889 10d2 9F4F      		sbci r25,hi8(-(129)) + 2890               	.L212: + 2891               	.LM293: + 2892 10d4 2193      		st Z+,r18 + 2893               	.LM294: + 2894 10d6 E817      		cp r30,r24 + 2895 10d8 F907      		cpc r31,r25 + 2896 10da 01F4      		brne .L212 + 2897               	.LM295: + 2898 10dc C401      		movw r24,r8 + 2899 10de 0E94 0000 		call delay_ms + 2900 10e2 EE24      		clr r14 + 2901 10e4 FF24      		clr r15 + 2902               	.LVL226: + 2903               	.LM296: + 2904 10e6 4E01      		movw r8,r28 + 2905               	.LVL227: + 2906 10e8 0894      		sec + 2907 10ea 811C      		adc r8,__zero_reg__ + 2908 10ec 911C      		adc r9,__zero_reg__ + 2909 10ee 00C0      		rjmp .L213 + 2910               	.L216: + 2911               	.LM297: + 2912 10f0 8081      		ld r24,Z + 2913 10f2 9C91      		ld r25,X + 2914 10f4 8917      		cp r24,r25 + 2915 10f6 00F4      		brsh .L214 + 2916               	.LM298: + 2917 10f8 8F5F      		subi r24,lo8(-(1)) + 2918 10fa 8083      		st Z,r24 + 2919               	.L214: + 2920               	.LM299: + 2921 10fc 8081      		ld r24,Z + 2922 10fe 9817      		cp r25,r24 + 2923 1100 00F4      		brsh .L215 + 2924               	.LM300: + 2925 1102 8150      		subi r24,lo8(-(-1)) + 2926 1104 8083      		st Z,r24 + 2927               	.L215: + 2928 1106 3196      		adiw r30,1 + 2929 1108 1196      		adiw r26,1 + 2930               	.LM301: + 2931 110a E017      		cp r30,r16 + 2932 110c F107      		cpc r31,r17 + 2933 110e 01F4      		brne .L216 + 2934               	.LM302: + 2935 1110 832D      		mov r24,r3 + 2936 1112 B401      		movw r22,r8 + 2937 1114 A301      		movw r20,r6 + 2938 1116 0E94 0000 		call draw_positions_axis + 2939               	.LM303: + 2940 111a C201      		movw r24,r4 + 2941 111c 0E94 0000 		call delay_ms + 2942               	.LM304: + 2943 1120 0894      		sec + 2944 1122 E11C      		adc r14,__zero_reg__ + 2945 1124 F11C      		adc r15,__zero_reg__ + 2946 1126 88E0      		ldi r24,lo8(8) + 2947 1128 E816      		cp r14,r24 + 2948 112a F104      		cpc r15,__zero_reg__ + 2949 112c 01F0      		breq .L218 + 2950               	.L213: + 2951 112e F501      		movw r30,r10 + 2952 1130 D601      		movw r26,r12 + 2953 1132 00C0      		rjmp .L216 + 2954               	.L218: + 2955               	/* epilogue start */ + 2956               	.LM305: + 2957 1134 C058      		subi r28,lo8(-(128)) + 2958 1136 DF4F      		sbci r29,hi8(-(128)) + 2959 1138 0FB6      		in __tmp_reg__,__SREG__ + 2960 113a F894      		cli + 2961 113c DEBF      		out __SP_H__,r29 + 2962 113e 0FBE      		out __SREG__,__tmp_reg__ + 2963 1140 CDBF      		out __SP_L__,r28 + 2964 1142 CF91      		pop r28 + 2965 1144 DF91      		pop r29 + 2966 1146 1F91      		pop r17 + 2967 1148 0F91      		pop r16 + 2968 114a FF90      		pop r15 + 2969 114c EF90      		pop r14 + 2970               	.LVL228: + 2971 114e DF90      		pop r13 + 2972 1150 CF90      		pop r12 + 2973 1152 BF90      		pop r11 + 2974 1154 AF90      		pop r10 + 2975 1156 9F90      		pop r9 + 2976 1158 8F90      		pop r8 + 2977 115a 7F90      		pop r7 + 2978 115c 6F90      		pop r6 + 2979               	.LVL229: + 2980 115e 5F90      		pop r5 + 2981 1160 4F90      		pop r4 + 2982 1162 3F90      		pop r3 + 2983               	.LVL230: + 2984 1164 0895      		ret + 2985               	.LFE18: + 2987               	.global	effect_z_updown_move + 2989               	effect_z_updown_move: + 2990               	.LFB17: + 2991               	.LM306: + 2992               	.LVL231: + 2993               	/* prologue: function */ + 2994               	/* frame size = 0 */ + 2995 1166 AC01      		movw r20,r24 + 2996               	.LVL232: + 2997               	.LM307: + 2998 1168 DC01      		movw r26,r24 + 2999 116a FB01      		movw r30,r22 + 3000               	.LVL233: + 3001 116c 20E0      		ldi r18,lo8(0) + 3002 116e 30E0      		ldi r19,hi8(0) + 3003               	.LVL234: + 3004               	.L226: + 3005               	.LM308: + 3006 1170 9C91      		ld r25,X + 3007 1172 8081      		ld r24,Z + 3008 1174 9817      		cp r25,r24 + 3009 1176 00F4      		brsh .L224 + 3010               	.LM309: + 3011 1178 9F5F      		subi r25,lo8(-(1)) + 3012 117a 9C93      		st X,r25 + 3013               	.L224: + 3014               	.LM310: + 3015 117c 9C91      		ld r25,X + 3016 117e 8081      		ld r24,Z + 3017 1180 8917      		cp r24,r25 + 3018 1182 00F4      		brsh .L225 + 3019               	.LM311: + 3020 1184 9150      		subi r25,lo8(-(-1)) + 3021 1186 9C93      		st X,r25 + 3022               	.L225: + 3023               	.LM312: + 3024 1188 2F5F      		subi r18,lo8(-(1)) + 3025 118a 3F4F      		sbci r19,hi8(-(1)) + 3026 118c 1196      		adiw r26,1 + 3027 118e 3196      		adiw r30,1 + 3028 1190 2034      		cpi r18,64 + 3029 1192 3105      		cpc r19,__zero_reg__ + 3030 1194 01F4      		brne .L226 + 3031               	.LM313: + 3032 1196 8AE7      		ldi r24,lo8(122) + 3033 1198 BA01      		movw r22,r20 + 3034 119a 40E0      		ldi r20,lo8(0) + 3035 119c 50E0      		ldi r21,hi8(0) + 3036 119e 0E94 0000 		call draw_positions_axis + 3037               	.LVL235: + 3038               	/* epilogue start */ + 3039               	.LM314: + 3040 11a2 0895      		ret + 3041               	.LFE17: + 3043               	.global	effect_z_updown + 3045               	effect_z_updown: + 3046               	.LFB16: + 3047               	.LM315: + 3048               	.LVL236: + 3049 11a4 2F92      		push r2 + 3050 11a6 3F92      		push r3 + 3051 11a8 4F92      		push r4 + 3052 11aa 5F92      		push r5 + 3053 11ac 6F92      		push r6 + 3054 11ae 7F92      		push r7 + 3055 11b0 8F92      		push r8 + 3056 11b2 9F92      		push r9 + 3057 11b4 AF92      		push r10 + 3058 11b6 BF92      		push r11 + 3059 11b8 CF92      		push r12 + 3060 11ba DF92      		push r13 + 3061 11bc EF92      		push r14 + 3062 11be FF92      		push r15 + 3063 11c0 0F93      		push r16 + 3064 11c2 1F93      		push r17 + 3065 11c4 DF93      		push r29 + 3066 11c6 CF93      		push r28 + 3067 11c8 CDB7      		in r28,__SP_L__ + 3068 11ca DEB7      		in r29,__SP_H__ + 3069 11cc C058      		subi r28,lo8(-(-128)) + 3070 11ce D040      		sbci r29,hi8(-(-128)) + 3071 11d0 0FB6      		in __tmp_reg__,__SREG__ + 3072 11d2 F894      		cli + 3073 11d4 DEBF      		out __SP_H__,r29 + 3074 11d6 0FBE      		out __SREG__,__tmp_reg__ + 3075 11d8 CDBF      		out __SP_L__,r28 + 3076               	/* prologue: function */ + 3077               	/* frame size = 128 */ + 3078 11da 2C01      		movw r4,r24 + 3079 11dc 7B01      		movw r14,r22 + 3080               	.LM316: + 3081 11de 00E0      		ldi r16,lo8(0) + 3082 11e0 10E0      		ldi r17,hi8(0) + 3083               	.LVL237: + 3084               	.LM317: + 3085 11e2 5E01      		movw r10,r28 + 3086 11e4 0894      		sec + 3087 11e6 A11C      		adc r10,__zero_reg__ + 3088 11e8 B11C      		adc r11,__zero_reg__ + 3089 11ea 64E0      		ldi r22,lo8(4) + 3090 11ec 962E      		mov r9,r22 + 3091               	.LVL238: + 3092               	.LM318: + 3093 11ee 51E4      		ldi r21,lo8(65) + 3094 11f0 C52E      		mov r12,r21 + 3095 11f2 D12C      		mov r13,__zero_reg__ + 3096 11f4 CC0E      		add r12,r28 + 3097 11f6 DD1E      		adc r13,r29 + 3098               	.LVL239: + 3099               	.L230: + 3100               	.LM319: + 3101 11f8 F501      		movw r30,r10 + 3102 11fa E00F      		add r30,r16 + 3103 11fc F11F      		adc r31,r17 + 3104 11fe 9082      		st Z,r9 + 3105               	.LM320: + 3106 1200 0E94 0000 		call rand + 3107 1204 F601      		movw r30,r12 + 3108 1206 E00F      		add r30,r16 + 3109 1208 F11F      		adc r31,r17 + 3110 120a 68E0      		ldi r22,lo8(8) + 3111 120c 70E0      		ldi r23,hi8(8) + 3112 120e 0E94 0000 		call __divmodhi4 + 3113 1212 8083      		st Z,r24 + 3114               	.LM321: + 3115 1214 0F5F      		subi r16,lo8(-(1)) + 3116 1216 1F4F      		sbci r17,hi8(-(1)) + 3117 1218 0034      		cpi r16,64 + 3118 121a 1105      		cpc r17,__zero_reg__ + 3119 121c 01F4      		brne .L230 + 3120 121e 00E0      		ldi r16,lo8(0) + 3121 1220 10E0      		ldi r17,hi8(0) + 3122               	.LVL240: + 3123               	.LM322: + 3124 1222 41E4      		ldi r20,lo8(65) + 3125 1224 A42E      		mov r10,r20 + 3126 1226 B12C      		mov r11,__zero_reg__ + 3127 1228 AC0E      		add r10,r28 + 3128 122a BD1E      		adc r11,r29 + 3129 122c 6E01      		movw r12,r28 + 3130 122e 0894      		sec + 3131 1230 C11C      		adc r12,__zero_reg__ + 3132 1232 D11C      		adc r13,__zero_reg__ + 3133               	.LM323: + 3134 1234 3701      		movw r6,r14 + 3135               	.LVL241: + 3136               	.L231: + 3137               	.LM324: + 3138 1236 C601      		movw r24,r12 + 3139 1238 B501      		movw r22,r10 + 3140 123a 4AE7      		ldi r20,lo8(122) + 3141 123c 0E94 0000 		call effect_z_updown_move + 3142               	.LM325: + 3143 1240 C301      		movw r24,r6 + 3144 1242 0E94 0000 		call delay_ms + 3145               	.LM326: + 3146 1246 0F5F      		subi r16,lo8(-(1)) + 3147 1248 1F4F      		sbci r17,hi8(-(1)) + 3148 124a 0830      		cpi r16,8 + 3149 124c 1105      		cpc r17,__zero_reg__ + 3150 124e 01F4      		brne .L231 + 3151               	.LM327: + 3152 1250 5701      		movw r10,r14 + 3153               	.LVL242: + 3154 1252 AA0C      		lsl r10 + 3155 1254 BB1C      		rol r11 + 3156 1256 AA0C      		lsl r10 + 3157 1258 BB1C      		rol r11 + 3158 125a CC24      		clr r12 + 3159 125c DD24      		clr r13 + 3160               	.LVL243: + 3161               	.LM328: + 3162 125e 21E4      		ldi r18,lo8(65) + 3163 1260 822E      		mov r8,r18 + 3164 1262 912C      		mov r9,__zero_reg__ + 3165 1264 8C0E      		add r8,r28 + 3166 1266 9D1E      		adc r9,r29 + 3167 1268 1E01      		movw r2,r28 + 3168 126a 0894      		sec + 3169 126c 211C      		adc r2,__zero_reg__ + 3170 126e 311C      		adc r3,__zero_reg__ + 3171 1270 00C0      		rjmp .L232 + 3172               	.LVL244: + 3173               	.L235: + 3174               	.LM329: + 3175 1272 00E0      		ldi r16,lo8(0) + 3176 1274 10E0      		ldi r17,hi8(0) + 3177               	.LVL245: + 3178               	.L233: + 3179               	.LM330: + 3180 1276 C101      		movw r24,r2 + 3181 1278 B401      		movw r22,r8 + 3182 127a 4AE7      		ldi r20,lo8(122) + 3183 127c 0E94 0000 		call effect_z_updown_move + 3184               	.LM331: + 3185 1280 C301      		movw r24,r6 + 3186 1282 0E94 0000 		call delay_ms + 3187               	.LM332: + 3188 1286 0F5F      		subi r16,lo8(-(1)) + 3189 1288 1F4F      		sbci r17,hi8(-(1)) + 3190 128a 0830      		cpi r16,8 + 3191 128c 1105      		cpc r17,__zero_reg__ + 3192 128e 01F4      		brne .L233 + 3193               	.LM333: + 3194 1290 C501      		movw r24,r10 + 3195 1292 0E94 0000 		call delay_ms + 3196 1296 EE24      		clr r14 + 3197 1298 FF24      		clr r15 + 3198               	.LVL246: + 3199               	.L234: + 3200               	.LM334: + 3201 129a 0E94 0000 		call rand + 3202 129e 8C01      		movw r16,r24 + 3203               	.LVL247: + 3204 12a0 0E94 0000 		call rand + 3205 12a4 9C01      		movw r18,r24 + 3206 12a6 C801      		movw r24,r16 + 3207 12a8 60E4      		ldi r22,lo8(64) + 3208 12aa 70E0      		ldi r23,hi8(64) + 3209 12ac 0E94 0000 		call __divmodhi4 + 3210 12b0 F401      		movw r30,r8 + 3211 12b2 E80F      		add r30,r24 + 3212 12b4 F91F      		adc r31,r25 + 3213 12b6 C901      		movw r24,r18 + 3214 12b8 68E0      		ldi r22,lo8(8) + 3215 12ba 70E0      		ldi r23,hi8(8) + 3216 12bc 0E94 0000 		call __divmodhi4 + 3217 12c0 8083      		st Z,r24 + 3218               	.LM335: + 3219 12c2 0894      		sec + 3220 12c4 E11C      		adc r14,__zero_reg__ + 3221 12c6 F11C      		adc r15,__zero_reg__ + 3222 12c8 8AE0      		ldi r24,lo8(10) + 3223 12ca E816      		cp r14,r24 + 3224 12cc F104      		cpc r15,__zero_reg__ + 3225 12ce 01F4      		brne .L234 + 3226               	.LM336: + 3227 12d0 0894      		sec + 3228 12d2 C11C      		adc r12,__zero_reg__ + 3229 12d4 D11C      		adc r13,__zero_reg__ + 3230               	.LVL248: + 3231               	.L232: + 3232 12d6 C414      		cp r12,r4 + 3233 12d8 D504      		cpc r13,r5 + 3234 12da 04F0      		brlt .L235 + 3235               	/* epilogue start */ + 3236               	.LM337: + 3237 12dc C058      		subi r28,lo8(-(128)) + 3238 12de DF4F      		sbci r29,hi8(-(128)) + 3239 12e0 0FB6      		in __tmp_reg__,__SREG__ + 3240 12e2 F894      		cli + 3241 12e4 DEBF      		out __SP_H__,r29 + 3242 12e6 0FBE      		out __SREG__,__tmp_reg__ + 3243 12e8 CDBF      		out __SP_L__,r28 + 3244 12ea CF91      		pop r28 + 3245 12ec DF91      		pop r29 + 3246 12ee 1F91      		pop r17 + 3247 12f0 0F91      		pop r16 + 3248 12f2 FF90      		pop r15 + 3249 12f4 EF90      		pop r14 + 3250               	.LVL249: + 3251 12f6 DF90      		pop r13 + 3252 12f8 CF90      		pop r12 + 3253               	.LVL250: + 3254 12fa BF90      		pop r11 + 3255 12fc AF90      		pop r10 + 3256 12fe 9F90      		pop r9 + 3257 1300 8F90      		pop r8 + 3258 1302 7F90      		pop r7 + 3259 1304 6F90      		pop r6 + 3260 1306 5F90      		pop r5 + 3261 1308 4F90      		pop r4 + 3262               	.LVL251: + 3263 130a 3F90      		pop r3 + 3264 130c 2F90      		pop r2 + 3265 130e 0895      		ret + 3266               	.LFE16: + 3268               	.global	effect_random_filler + 3270               	effect_random_filler: + 3271               	.LFB14: + 3272               	.LM338: + 3273               	.LVL252: + 3274 1310 8F92      		push r8 + 3275 1312 9F92      		push r9 + 3276 1314 AF92      		push r10 + 3277 1316 BF92      		push r11 + 3278 1318 CF92      		push r12 + 3279 131a DF92      		push r13 + 3280 131c EF92      		push r14 + 3281 131e FF92      		push r15 + 3282 1320 0F93      		push r16 + 3283 1322 1F93      		push r17 + 3284 1324 CF93      		push r28 + 3285 1326 DF93      		push r29 + 3286               	/* prologue: function */ + 3287               	/* frame size = 0 */ + 3288 1328 4C01      		movw r8,r24 + 3289 132a 8B01      		movw r16,r22 + 3290               	.LM339: + 3291 132c 6130      		cpi r22,1 + 3292 132e 7105      		cpc r23,__zero_reg__ + 3293 1330 01F4      		brne .L242 + 3294               	.LVL253: + 3295               	.LM340: + 3296 1332 80E0      		ldi r24,lo8(0) + 3297 1334 00C0      		rjmp .L250 + 3298               	.LVL254: + 3299               	.L242: + 3300               	.LM341: + 3301 1336 8FEF      		ldi r24,lo8(-1) + 3302               	.L250: + 3303 1338 0E94 0000 		call fill + 3304               	.LVL255: + 3305 133c C0E0      		ldi r28,lo8(0) + 3306 133e D0E0      		ldi r29,hi8(0) + 3307               	.LVL256: + 3308               	.L248: + 3309               	.LM342: + 3310 1340 0E94 0000 		call rand + 3311 1344 68E0      		ldi r22,lo8(8) + 3312 1346 70E0      		ldi r23,hi8(8) + 3313 1348 0E94 0000 		call __divmodhi4 + 3314 134c B82E      		mov r11,r24 + 3315 134e A92E      		mov r10,r25 + 3316               	.LM343: + 3317 1350 0E94 0000 		call rand + 3318 1354 68E0      		ldi r22,lo8(8) + 3319 1356 70E0      		ldi r23,hi8(8) + 3320 1358 0E94 0000 		call __divmodhi4 + 3321 135c D82E      		mov r13,r24 + 3322 135e C92E      		mov r12,r25 + 3323               	.LM344: + 3324 1360 0E94 0000 		call rand + 3325 1364 68E0      		ldi r22,lo8(8) + 3326 1366 70E0      		ldi r23,hi8(8) + 3327 1368 0E94 0000 		call __divmodhi4 + 3328 136c F82E      		mov r15,r24 + 3329 136e E92E      		mov r14,r25 + 3330               	.LM345: + 3331 1370 0115      		cp r16,__zero_reg__ + 3332 1372 1105      		cpc r17,__zero_reg__ + 3333 1374 01F4      		brne .L244 + 3334 1376 8B2D      		mov r24,r11 + 3335 1378 9A2D      		mov r25,r10 + 3336 137a 6D2D      		mov r22,r13 + 3337 137c 7C2D      		mov r23,r12 + 3338 137e 4F2D      		mov r20,r15 + 3339 1380 5E2D      		mov r21,r14 + 3340 1382 0E94 0000 		call getvoxel + 3341 1386 8130      		cpi r24,lo8(1) + 3342 1388 01F4      		brne .L246 + 3343 138a 00C0      		rjmp .L245 + 3344               	.L244: + 3345 138c 0130      		cpi r16,1 + 3346 138e 1105      		cpc r17,__zero_reg__ + 3347 1390 01F4      		brne .L246 + 3348 1392 8B2D      		mov r24,r11 + 3349 1394 9A2D      		mov r25,r10 + 3350 1396 6D2D      		mov r22,r13 + 3351 1398 7C2D      		mov r23,r12 + 3352 139a 4F2D      		mov r20,r15 + 3353 139c 5E2D      		mov r21,r14 + 3354 139e 0E94 0000 		call getvoxel + 3355 13a2 8823      		tst r24 + 3356 13a4 01F4      		brne .L246 + 3357               	.L245: + 3358               	.LM346: + 3359 13a6 8B2D      		mov r24,r11 + 3360 13a8 9A2D      		mov r25,r10 + 3361 13aa 6D2D      		mov r22,r13 + 3362 13ac 7C2D      		mov r23,r12 + 3363 13ae 4F2D      		mov r20,r15 + 3364 13b0 5E2D      		mov r21,r14 + 3365 13b2 9801      		movw r18,r16 + 3366 13b4 0E94 0000 		call altervoxel + 3367               	.LM347: + 3368 13b8 C401      		movw r24,r8 + 3369 13ba 0E94 0000 		call delay_ms + 3370               	.LM348: + 3371 13be 2196      		adiw r28,1 + 3372               	.L246: + 3373               	.LM349: + 3374 13c0 81E0      		ldi r24,hi8(511) + 3375 13c2 CF3F      		cpi r28,lo8(511) + 3376 13c4 D807      		cpc r29,r24 + 3377 13c6 04F4      		brge .+2 + 3378 13c8 00C0      		rjmp .L248 + 3379               	/* epilogue start */ + 3380               	.LM350: + 3381 13ca DF91      		pop r29 + 3382 13cc CF91      		pop r28 + 3383               	.LVL257: + 3384 13ce 1F91      		pop r17 + 3385 13d0 0F91      		pop r16 + 3386               	.LVL258: + 3387 13d2 FF90      		pop r15 + 3388 13d4 EF90      		pop r14 + 3389 13d6 DF90      		pop r13 + 3390 13d8 CF90      		pop r12 + 3391 13da BF90      		pop r11 + 3392 13dc AF90      		pop r10 + 3393 13de 9F90      		pop r9 + 3394 13e0 8F90      		pop r8 + 3395               	.LVL259: + 3396 13e2 0895      		ret + 3397               	.LFE14: + 3399               	.global	sendvoxels_rand_z + 3401               	sendvoxels_rand_z: + 3402               	.LFB12: + 3403               	.LM351: + 3404               	.LVL260: + 3405 13e4 6F92      		push r6 + 3406 13e6 7F92      		push r7 + 3407 13e8 8F92      		push r8 + 3408 13ea 9F92      		push r9 + 3409 13ec AF92      		push r10 + 3410 13ee BF92      		push r11 + 3411 13f0 DF92      		push r13 + 3412 13f2 EF92      		push r14 + 3413 13f4 FF92      		push r15 + 3414 13f6 0F93      		push r16 + 3415 13f8 1F93      		push r17 + 3416 13fa CF93      		push r28 + 3417 13fc DF93      		push r29 + 3418               	/* prologue: function */ + 3419               	/* frame size = 0 */ + 3420 13fe 3C01      		movw r6,r24 + 3421 1400 5B01      		movw r10,r22 + 3422 1402 4A01      		movw r8,r20 + 3423               	.LM352: + 3424 1404 80E0      		ldi r24,lo8(0) + 3425               	.LVL261: + 3426 1406 0E94 0000 		call fill + 3427               	.LVL262: + 3428 140a 00E0      		ldi r16,lo8(0) + 3429 140c 10E0      		ldi r17,hi8(0) + 3430 140e 00C0      		rjmp .L252 + 3431               	.L255: + 3432               	.LM353: + 3433 1410 0E94 0000 		call rand + 3434 1414 80FD      		sbrc r24,0 + 3435 1416 00C0      		rjmp .L253 + 3436               	.LM354: + 3437 1418 C801      		movw r24,r16 + 3438 141a BE01      		movw r22,r28 + 3439 141c 40E0      		ldi r20,lo8(0) + 3440 141e 50E0      		ldi r21,hi8(0) + 3441 1420 00C0      		rjmp .L264 + 3442               	.L253: + 3443               	.LM355: + 3444 1422 C801      		movw r24,r16 + 3445 1424 BE01      		movw r22,r28 + 3446 1426 47E0      		ldi r20,lo8(7) + 3447 1428 50E0      		ldi r21,hi8(7) + 3448               	.L264: + 3449 142a 0E94 0000 		call setvoxel + 3450 142e 2196      		adiw r28,1 + 3451               	.LM356: + 3452 1430 C830      		cpi r28,8 + 3453 1432 D105      		cpc r29,__zero_reg__ + 3454 1434 01F4      		brne .L255 + 3455 1436 0F5F      		subi r16,lo8(-(1)) + 3456 1438 1F4F      		sbci r17,hi8(-(1)) + 3457               	.LM357: + 3458 143a 0830      		cpi r16,8 + 3459 143c 1105      		cpc r17,__zero_reg__ + 3460 143e 01F4      		brne .L252 + 3461 1440 DD24      		clr r13 + 3462               	.LVL263: + 3463 1442 EE24      		clr r14 + 3464               	.LVL264: + 3465 1444 FF24      		clr r15 + 3466               	.LVL265: + 3467 1446 00C0      		rjmp .L256 + 3468               	.LVL266: + 3469               	.L252: + 3470 1448 C0E0      		ldi r28,lo8(0) + 3471 144a D0E0      		ldi r29,hi8(0) + 3472 144c 00C0      		rjmp .L255 + 3473               	.LVL267: + 3474               	.L260: + 3475               	.LM358: + 3476 144e 0E94 0000 		call rand + 3477               	.LVL268: + 3478 1452 EC01      		movw r28,r24 + 3479               	.LM359: + 3480 1454 0E94 0000 		call rand + 3481 1458 68E0      		ldi r22,lo8(8) + 3482 145a 70E0      		ldi r23,hi8(8) + 3483 145c 0E94 0000 		call __divmodhi4 + 3484 1460 082F      		mov r16,r24 + 3485               	.LM360: + 3486 1462 8E15      		cp r24,r14 + 3487 1464 01F0      		breq .L257 + 3488               	.LVL269: + 3489               	.LM361: + 3490 1466 CE01      		movw r24,r28 + 3491               	.LVL270: + 3492 1468 68E0      		ldi r22,lo8(8) + 3493 146a 70E0      		ldi r23,hi8(8) + 3494 146c 0E94 0000 		call __divmodhi4 + 3495 1470 182F      		mov r17,r24 + 3496               	.LM362: + 3497 1472 8D15      		cp r24,r13 + 3498 1474 01F0      		breq .L257 + 3499               	.LVL271: + 3500               	.LM363: + 3501 1476 90E0      		ldi r25,lo8(0) + 3502 1478 602F      		mov r22,r16 + 3503 147a 70E0      		ldi r23,lo8(0) + 3504 147c 40E0      		ldi r20,lo8(0) + 3505 147e 50E0      		ldi r21,hi8(0) + 3506 1480 0E94 0000 		call getvoxel + 3507               	.LVL272: + 3508 1484 8823      		tst r24 + 3509 1486 01F0      		breq .L258 + 3510               	.LM364: + 3511 1488 812F      		mov r24,r17 + 3512 148a 602F      		mov r22,r16 + 3513 148c 40E0      		ldi r20,lo8(0) + 3514 148e 00C0      		rjmp .L265 + 3515               	.L258: + 3516               	.LM365: + 3517 1490 812F      		mov r24,r17 + 3518 1492 602F      		mov r22,r16 + 3519 1494 47E0      		ldi r20,lo8(7) + 3520               	.L265: + 3521 1496 9501      		movw r18,r10 + 3522 1498 0E94 0000 		call sendvoxel_z + 3523               	.LM366: + 3524 149c C401      		movw r24,r8 + 3525 149e 0E94 0000 		call delay_ms + 3526 14a2 D12E      		mov r13,r17 + 3527 14a4 E02E      		mov r14,r16 + 3528               	.LVL273: + 3529               	.L257: + 3530               	.LM367: + 3531 14a6 F394      		inc r15 + 3532               	.L256: + 3533 14a8 8F2D      		mov r24,r15 + 3534 14aa 90E0      		ldi r25,lo8(0) + 3535               	.LVL274: + 3536 14ac 8615      		cp r24,r6 + 3537 14ae 9705      		cpc r25,r7 + 3538 14b0 04F0      		brlt .L260 + 3539               	.LVL275: + 3540               	/* epilogue start */ + 3541               	.LM368: + 3542 14b2 DF91      		pop r29 + 3543 14b4 CF91      		pop r28 + 3544 14b6 1F91      		pop r17 + 3545               	.LVL276: + 3546 14b8 0F91      		pop r16 + 3547               	.LVL277: + 3548 14ba FF90      		pop r15 + 3549 14bc EF90      		pop r14 + 3550               	.LVL278: + 3551 14be DF90      		pop r13 + 3552               	.LVL279: + 3553 14c0 BF90      		pop r11 + 3554 14c2 AF90      		pop r10 + 3555               	.LVL280: + 3556 14c4 9F90      		pop r9 + 3557 14c6 8F90      		pop r8 + 3558               	.LVL281: + 3559 14c8 7F90      		pop r7 + 3560 14ca 6F90      		pop r6 + 3561               	.LVL282: + 3562 14cc 0895      		ret + 3563               	.LFE12: + 3565               	.global	effect_blinky2 + 3567               	effect_blinky2: + 3568               	.LFB7: + 3569               	.LM369: + 3570 14ce EF92      		push r14 + 3571 14d0 FF92      		push r15 + 3572 14d2 0F93      		push r16 + 3573 14d4 1F93      		push r17 + 3574 14d6 CF93      		push r28 + 3575 14d8 DF93      		push r29 + 3576               	/* prologue: function */ + 3577               	/* frame size = 0 */ + 3578               	.LM370: + 3579 14da 80E0      		ldi r24,lo8(0) + 3580 14dc 0E94 0000 		call fill + 3581 14e0 00E0      		ldi r16,lo8(0) + 3582 14e2 10E0      		ldi r17,hi8(0) + 3583               	.LVL283: + 3584               	.LM371: + 3585 14e4 7FEE      		ldi r23,lo8(751) + 3586 14e6 E72E      		mov r14,r23 + 3587 14e8 72E0      		ldi r23,hi8(751) + 3588 14ea F72E      		mov r15,r23 + 3589 14ec 00C0      		rjmp .L267 + 3590               	.LVL284: + 3591               	.L268: + 3592               	.LM372: + 3593 14ee 80E0      		ldi r24,lo8(0) + 3594 14f0 0E94 0000 		call fill + 3595               	.LM373: + 3596 14f4 CE01      		movw r24,r28 + 3597 14f6 0E94 0000 		call delay_ms + 3598               	.LM374: + 3599 14fa 8FEF      		ldi r24,lo8(-1) + 3600 14fc 0E94 0000 		call fill + 3601               	.LM375: + 3602 1500 84E6      		ldi r24,lo8(100) + 3603 1502 90E0      		ldi r25,hi8(100) + 3604 1504 0E94 0000 		call delay_ms + 3605               	.LM376: + 3606 1508 CE01      		movw r24,r28 + 3607 150a 66EF      		ldi r22,lo8(-10) + 3608 150c 7FEF      		ldi r23,hi8(-10) + 3609 150e 0E94 0000 		call __divmodhi4 + 3610 1512 88EE      		ldi r24,lo8(1000) + 3611 1514 93E0      		ldi r25,hi8(1000) + 3612 1516 0E94 0000 		call __divmodhi4 + 3613 151a 6F50      		subi r22,lo8(-(-15)) + 3614 151c 7040      		sbci r23,hi8(-(-15)) + 3615 151e C60F      		add r28,r22 + 3616 1520 D71F      		adc r29,r23 + 3617               	.LM377: + 3618 1522 1C16      		cp __zero_reg__,r28 + 3619 1524 1D06      		cpc __zero_reg__,r29 + 3620 1526 04F0      		brlt .L268 + 3621               	.LM378: + 3622 1528 88EE      		ldi r24,lo8(1000) + 3623 152a 93E0      		ldi r25,hi8(1000) + 3624 152c 0E94 0000 		call delay_ms + 3625 1530 CEEE      		ldi r28,lo8(750) + 3626 1532 D2E0      		ldi r29,hi8(750) + 3627               	.LVL285: + 3628               	.L269: + 3629               	.LM379: + 3630 1534 80E0      		ldi r24,lo8(0) + 3631 1536 0E94 0000 		call fill + 3632               	.LM380: + 3633 153a C701      		movw r24,r14 + 3634 153c 8C1B      		sub r24,r28 + 3635 153e 9D0B      		sbc r25,r29 + 3636 1540 0E94 0000 		call delay_ms + 3637               	.LM381: + 3638 1544 8FEF      		ldi r24,lo8(-1) + 3639 1546 0E94 0000 		call fill + 3640               	.LM382: + 3641 154a 84E6      		ldi r24,lo8(100) + 3642 154c 90E0      		ldi r25,hi8(100) + 3643 154e 0E94 0000 		call delay_ms + 3644               	.LM383: + 3645 1552 CE01      		movw r24,r28 + 3646 1554 66EF      		ldi r22,lo8(-10) + 3647 1556 7FEF      		ldi r23,hi8(-10) + 3648 1558 0E94 0000 		call __divmodhi4 + 3649 155c 88EE      		ldi r24,lo8(1000) + 3650 155e 93E0      		ldi r25,hi8(1000) + 3651 1560 0E94 0000 		call __divmodhi4 + 3652 1564 6F50      		subi r22,lo8(-(-15)) + 3653 1566 7040      		sbci r23,hi8(-(-15)) + 3654 1568 C60F      		add r28,r22 + 3655 156a D71F      		adc r29,r23 + 3656               	.LM384: + 3657 156c 1C16      		cp __zero_reg__,r28 + 3658 156e 1D06      		cpc __zero_reg__,r29 + 3659 1570 04F0      		brlt .L269 + 3660               	.LM385: + 3661 1572 0F5F      		subi r16,lo8(-(1)) + 3662 1574 1F4F      		sbci r17,hi8(-(1)) + 3663 1576 0230      		cpi r16,2 + 3664 1578 1105      		cpc r17,__zero_reg__ + 3665 157a 01F0      		breq .L271 + 3666               	.L267: + 3667 157c CEEE      		ldi r28,lo8(750) + 3668 157e D2E0      		ldi r29,hi8(750) + 3669               	.LVL286: + 3670 1580 00C0      		rjmp .L268 + 3671               	.L271: + 3672               	/* epilogue start */ + 3673               	.LM386: + 3674 1582 DF91      		pop r29 + 3675 1584 CF91      		pop r28 + 3676               	.LVL287: + 3677 1586 1F91      		pop r17 + 3678 1588 0F91      		pop r16 + 3679               	.LVL288: + 3680 158a FF90      		pop r15 + 3681 158c EF90      		pop r14 + 3682 158e 0895      		ret + 3683               	.LFE7: + 3685               	.global	effect_wormsqueeze + 3687               	effect_wormsqueeze: + 3688               	.LFB26: + 3689               	.LM387: + 3690               	.LVL289: + 3691 1590 2F92      		push r2 + 3692 1592 3F92      		push r3 + 3693 1594 4F92      		push r4 + 3694 1596 5F92      		push r5 + 3695 1598 6F92      		push r6 + 3696 159a 7F92      		push r7 + 3697 159c 8F92      		push r8 + 3698 159e 9F92      		push r9 + 3699 15a0 AF92      		push r10 + 3700 15a2 BF92      		push r11 + 3701 15a4 CF92      		push r12 + 3702 15a6 DF92      		push r13 + 3703 15a8 EF92      		push r14 + 3704 15aa FF92      		push r15 + 3705 15ac 0F93      		push r16 + 3706               	.LVL290: + 3707 15ae 1F93      		push r17 + 3708 15b0 DF93      		push r29 + 3709 15b2 CF93      		push r28 + 3710 15b4 CDB7      		in r28,__SP_L__ + 3711 15b6 DEB7      		in r29,__SP_H__ + 3712 15b8 2E97      		sbiw r28,14 + 3713 15ba 0FB6      		in __tmp_reg__,__SREG__ + 3714 15bc F894      		cli + 3715 15be DEBF      		out __SP_H__,r29 + 3716 15c0 0FBE      		out __SREG__,__tmp_reg__ + 3717 15c2 CDBF      		out __SP_L__,r28 + 3718               	/* prologue: function */ + 3719               	/* frame size = 14 */ + 3720 15c4 9A83      		std Y+2,r25 + 3721 15c6 8983      		std Y+1,r24 + 3722 15c8 7C83      		std Y+4,r23 + 3723 15ca 6B83      		std Y+3,r22 + 3724 15cc 5E83      		std Y+6,r21 + 3725 15ce 4D83      		std Y+5,r20 + 3726 15d0 3887      		std Y+8,r19 + 3727 15d2 2F83      		std Y+7,r18 + 3728 15d4 1A87      		std Y+10,r17 + 3729 15d6 0987      		std Y+9,r16 + 3730               	.LVL291: + 3731               	.LM388: + 3732 15d8 4F5F      		subi r20,lo8(-1) + 3733 15da 5F4F      		sbci r21,hi8(-1) + 3734               	.LVL292: + 3735 15dc 01F4      		brne .L275 + 3736               	.LVL293: + 3737 15de F7E0      		ldi r31,lo8(7) + 3738 15e0 2F2E      		mov r2,r31 + 3739 15e2 312C      		mov r3,__zero_reg__ + 3740               	.LVL294: + 3741 15e4 00C0      		rjmp .L276 + 3742               	.LVL295: + 3743               	.L275: + 3744 15e6 2224      		clr r2 + 3745 15e8 3324      		clr r3 + 3746               	.LVL296: + 3747               	.L276: + 3748               	.LM389: + 3749 15ea E9E0      		ldi r30,lo8(9) + 3750 15ec 6E2E      		mov r6,r30 + 3751 15ee 712C      		mov r7,__zero_reg__ + 3752               	.LVL297: + 3753 15f0 8981      		ldd r24,Y+1 + 3754 15f2 9A81      		ldd r25,Y+2 + 3755 15f4 681A      		sub r6,r24 + 3756 15f6 790A      		sbc r7,r25 + 3757               	.LM390: + 3758 15f8 0E94 0000 		call rand + 3759               	.LVL298: + 3760 15fc B301      		movw r22,r6 + 3761 15fe 0E94 0000 		call __divmodhi4 + 3762 1602 6C01      		movw r12,r24 + 3763               	.LVL299: + 3764               	.LM391: + 3765 1604 0E94 0000 		call rand + 3766               	.LVL300: + 3767 1608 B301      		movw r22,r6 + 3768 160a 0E94 0000 		call __divmodhi4 + 3769 160e 7C01      		movw r14,r24 + 3770               	.LVL301: + 3771 1610 4424      		clr r4 + 3772 1612 5524      		clr r5 + 3773               	.LVL302: + 3774 1614 00C0      		rjmp .L277 + 3775               	.LVL303: + 3776               	.L289: + 3777               	.LM392: + 3778 1616 0E94 0000 		call rand + 3779 161a 8C01      		movw r16,r24 + 3780               	.LM393: + 3781 161c 0E94 0000 		call rand + 3782 1620 9C01      		movw r18,r24 + 3783               	.LM394: + 3784 1622 C801      		movw r24,r16 + 3785 1624 63E0      		ldi r22,lo8(3) + 3786 1626 70E0      		ldi r23,hi8(3) + 3787 1628 0E94 0000 		call __divmodhi4 + 3788 162c 0197      		sbiw r24,1 + 3789 162e 8C0D      		add r24,r12 + 3790 1630 9D1D      		adc r25,r13 + 3791 1632 9E87      		std Y+14,r25 + 3792 1634 8D87      		std Y+13,r24 + 3793               	.LVL304: + 3794 1636 1816      		cp __zero_reg__,r24 + 3795 1638 1906      		cpc __zero_reg__,r25 + 3796 163a 04F4      		brge .L278 + 3797 163c 8615      		cp r24,r6 + 3798 163e 9705      		cpc r25,r7 + 3799 1640 04F0      		brlt .L279 + 3800               	.L278: + 3801 1642 DE86      		std Y+14,r13 + 3802 1644 CD86      		std Y+13,r12 + 3803               	.L279: + 3804               	.LM395: + 3805 1646 C901      		movw r24,r18 + 3806 1648 63E0      		ldi r22,lo8(3) + 3807 164a 70E0      		ldi r23,hi8(3) + 3808 164c 0E94 0000 		call __divmodhi4 + 3809 1650 8C01      		movw r16,r24 + 3810               	.LVL305: + 3811 1652 0150      		subi r16,lo8(-(-1)) + 3812 1654 1040      		sbci r17,hi8(-(-1)) + 3813 1656 0E0D      		add r16,r14 + 3814 1658 1F1D      		adc r17,r15 + 3815 165a 1016      		cp __zero_reg__,r16 + 3816 165c 1106      		cpc __zero_reg__,r17 + 3817 165e 04F4      		brge .L280 + 3818 1660 0615      		cp r16,r6 + 3819 1662 1705      		cpc r17,r7 + 3820 1664 04F0      		brlt .L281 + 3821               	.L280: + 3822 1666 8701      		movw r16,r14 + 3823               	.L281: + 3824               	.LM396: + 3825 1668 8B81      		ldd r24,Y+3 + 3826 166a 6D81      		ldd r22,Y+5 + 3827 166c 7E81      		ldd r23,Y+6 + 3828 166e 0E94 0000 		call shift + 3829 1672 8D84      		ldd r8,Y+13 + 3830 1674 9E84      		ldd r9,Y+14 + 3831 1676 AA24      		clr r10 + 3832 1678 BB24      		clr r11 + 3833 167a 00C0      		rjmp .L282 + 3834               	.LVL306: + 3835               	.L286: + 3836               	.LM397: + 3837 167c EB81      		ldd r30,Y+3 + 3838 167e FC81      		ldd r31,Y+4 + 3839 1680 EA37      		cpi r30,122 + 3840 1682 F105      		cpc r31,__zero_reg__ + 3841 1684 01F4      		brne .L283 + 3842               	.LVL307: + 3843               	.LM398: + 3844 1686 C401      		movw r24,r8 + 3845 1688 B601      		movw r22,r12 + 3846 168a A101      		movw r20,r2 + 3847 168c 00C0      		rjmp .L291 + 3848               	.L283: + 3849               	.LM399: + 3850 168e 8B81      		ldd r24,Y+3 + 3851 1690 9C81      		ldd r25,Y+4 + 3852 1692 8937      		cpi r24,121 + 3853 1694 9105      		cpc r25,__zero_reg__ + 3854 1696 01F4      		brne .L285 + 3855               	.LM400: + 3856 1698 C401      		movw r24,r8 + 3857 169a B101      		movw r22,r2 + 3858 169c A601      		movw r20,r12 + 3859 169e 00C0      		rjmp .L291 + 3860               	.L285: + 3861               	.LM401: + 3862 16a0 EB81      		ldd r30,Y+3 + 3863 16a2 FC81      		ldd r31,Y+4 + 3864 16a4 E837      		cpi r30,120 + 3865 16a6 F105      		cpc r31,__zero_reg__ + 3866 16a8 01F4      		brne .L284 + 3867               	.LM402: + 3868 16aa 4D85      		ldd r20,Y+13 + 3869 16ac 5E85      		ldd r21,Y+14 + 3870 16ae 4E0D      		add r20,r14 + 3871 16b0 5F1D      		adc r21,r15 + 3872 16b2 C101      		movw r24,r2 + 3873 16b4 6B85      		ldd r22,Y+11 + 3874 16b6 7C85      		ldd r23,Y+12 + 3875               	.L291: + 3876 16b8 0E94 0000 		call setvoxel + 3877               	.L284: + 3878               	.LM403: + 3879 16bc 0894      		sec + 3880 16be E11C      		adc r14,__zero_reg__ + 3881 16c0 F11C      		adc r15,__zero_reg__ + 3882 16c2 0894      		sec + 3883 16c4 C11C      		adc r12,__zero_reg__ + 3884 16c6 D11C      		adc r13,__zero_reg__ + 3885               	.L288: + 3886 16c8 8981      		ldd r24,Y+1 + 3887 16ca 9A81      		ldd r25,Y+2 + 3888 16cc E816      		cp r14,r24 + 3889 16ce F906      		cpc r15,r25 + 3890 16d0 04F0      		brlt .L286 + 3891               	.LVL308: + 3892               	.LM404: + 3893 16d2 0894      		sec + 3894 16d4 A11C      		adc r10,__zero_reg__ + 3895 16d6 B11C      		adc r11,__zero_reg__ + 3896 16d8 0894      		sec + 3897 16da 811C      		adc r8,__zero_reg__ + 3898 16dc 911C      		adc r9,__zero_reg__ + 3899               	.LVL309: + 3900               	.L282: + 3901 16de E981      		ldd r30,Y+1 + 3902 16e0 FA81      		ldd r31,Y+2 + 3903 16e2 AE16      		cp r10,r30 + 3904 16e4 BF06      		cpc r11,r31 + 3905 16e6 04F4      		brge .L287 + 3906 16e8 6801      		movw r12,r16 + 3907 16ea EE24      		clr r14 + 3908 16ec FF24      		clr r15 + 3909               	.LM405: + 3910 16ee C501      		movw r24,r10 + 3911 16f0 800F      		add r24,r16 + 3912 16f2 911F      		adc r25,r17 + 3913 16f4 9C87      		std Y+12,r25 + 3914 16f6 8B87      		std Y+11,r24 + 3915 16f8 00C0      		rjmp .L288 + 3916               	.LVL310: + 3917               	.L287: + 3918               	.LM406: + 3919 16fa 8985      		ldd r24,Y+9 + 3920 16fc 9A85      		ldd r25,Y+10 + 3921 16fe 0E94 0000 		call delay_ms + 3922               	.LM407: + 3923 1702 0894      		sec + 3924 1704 411C      		adc r4,__zero_reg__ + 3925 1706 511C      		adc r5,__zero_reg__ + 3926 1708 CD84      		ldd r12,Y+13 + 3927 170a DE84      		ldd r13,Y+14 + 3928 170c 7801      		movw r14,r16 + 3929               	.LVL311: + 3930               	.L277: + 3931 170e EF81      		ldd r30,Y+7 + 3932 1710 F885      		ldd r31,Y+8 + 3933 1712 4E16      		cp r4,r30 + 3934 1714 5F06      		cpc r5,r31 + 3935 1716 04F4      		brge .+2 + 3936 1718 00C0      		rjmp .L289 + 3937               	/* epilogue start */ + 3938               	.LM408: + 3939 171a 2E96      		adiw r28,14 + 3940 171c 0FB6      		in __tmp_reg__,__SREG__ + 3941 171e F894      		cli + 3942 1720 DEBF      		out __SP_H__,r29 + 3943 1722 0FBE      		out __SREG__,__tmp_reg__ + 3944 1724 CDBF      		out __SP_L__,r28 + 3945 1726 CF91      		pop r28 + 3946 1728 DF91      		pop r29 + 3947 172a 1F91      		pop r17 + 3948 172c 0F91      		pop r16 + 3949 172e FF90      		pop r15 + 3950 1730 EF90      		pop r14 + 3951               	.LVL312: + 3952 1732 DF90      		pop r13 + 3953 1734 CF90      		pop r12 + 3954               	.LVL313: + 3955 1736 BF90      		pop r11 + 3956 1738 AF90      		pop r10 + 3957               	.LVL314: + 3958 173a 9F90      		pop r9 + 3959 173c 8F90      		pop r8 + 3960 173e 7F90      		pop r7 + 3961 1740 6F90      		pop r6 + 3962               	.LVL315: + 3963 1742 5F90      		pop r5 + 3964 1744 4F90      		pop r4 + 3965               	.LVL316: + 3966 1746 3F90      		pop r3 + 3967 1748 2F90      		pop r2 + 3968               	.LVL317: + 3969 174a 0895      		ret + 3970               	.LFE26: + 3972               	.global	effect_rain + 3974               	effect_rain: + 3975               	.LFB15: + 3976               	.LM409: + 3977               	.LVL318: + 3978 174c AF92      		push r10 + 3979 174e BF92      		push r11 + 3980 1750 CF92      		push r12 + 3981 1752 DF92      		push r13 + 3982 1754 EF92      		push r14 + 3983 1756 FF92      		push r15 + 3984 1758 0F93      		push r16 + 3985 175a 1F93      		push r17 + 3986 175c CF93      		push r28 + 3987 175e DF93      		push r29 + 3988               	/* prologue: function */ + 3989               	/* frame size = 0 */ + 3990 1760 5C01      		movw r10,r24 + 3991               	.LM410: + 3992 1762 CC24      		clr r12 + 3993 1764 DD24      		clr r13 + 3994               	.LVL319: + 3995 1766 00C0      		rjmp .L293 + 3996               	.LVL320: + 3997               	.L296: + 3998               	.LM411: + 3999 1768 0E94 0000 		call rand + 4000 176c 64E0      		ldi r22,lo8(4) + 4001 176e 70E0      		ldi r23,hi8(4) + 4002 1770 0E94 0000 		call __divmodhi4 + 4003 1774 EC01      		movw r28,r24 + 4004               	.LVL321: + 4005 1776 EE24      		clr r14 + 4006 1778 FF24      		clr r15 + 4007 177a 00C0      		rjmp .L294 + 4008               	.LVL322: + 4009               	.L295: + 4010               	.LM412: + 4011 177c 0E94 0000 		call rand + 4012 1780 8C01      		movw r16,r24 + 4013               	.LM413: + 4014 1782 0E94 0000 		call rand + 4015 1786 9C01      		movw r18,r24 + 4016               	.LM414: + 4017 1788 C801      		movw r24,r16 + 4018 178a 68E0      		ldi r22,lo8(8) + 4019 178c 70E0      		ldi r23,hi8(8) + 4020 178e 0E94 0000 		call __divmodhi4 + 4021 1792 FC01      		movw r30,r24 + 4022 1794 C901      		movw r24,r18 + 4023 1796 68E0      		ldi r22,lo8(8) + 4024 1798 70E0      		ldi r23,hi8(8) + 4025 179a 0E94 0000 		call __divmodhi4 + 4026 179e BC01      		movw r22,r24 + 4027 17a0 CF01      		movw r24,r30 + 4028 17a2 47E0      		ldi r20,lo8(7) + 4029 17a4 50E0      		ldi r21,hi8(7) + 4030 17a6 0E94 0000 		call setvoxel + 4031               	.LM415: + 4032 17aa 0894      		sec + 4033 17ac E11C      		adc r14,__zero_reg__ + 4034 17ae F11C      		adc r15,__zero_reg__ + 4035               	.L294: + 4036 17b0 EC16      		cp r14,r28 + 4037 17b2 FD06      		cpc r15,r29 + 4038 17b4 04F0      		brlt .L295 + 4039               	.LM416: + 4040 17b6 88EE      		ldi r24,lo8(1000) + 4041 17b8 93E0      		ldi r25,hi8(1000) + 4042 17ba 0E94 0000 		call delay_ms + 4043               	.LM417: + 4044 17be 8AE7      		ldi r24,lo8(122) + 4045 17c0 6FEF      		ldi r22,lo8(-1) + 4046 17c2 7FEF      		ldi r23,hi8(-1) + 4047 17c4 0E94 0000 		call shift + 4048               	.LM418: + 4049 17c8 0894      		sec + 4050 17ca C11C      		adc r12,__zero_reg__ + 4051 17cc D11C      		adc r13,__zero_reg__ + 4052               	.LVL323: + 4053               	.L293: + 4054 17ce CA14      		cp r12,r10 + 4055 17d0 DB04      		cpc r13,r11 + 4056 17d2 04F0      		brlt .L296 + 4057               	/* epilogue start */ + 4058               	.LM419: + 4059 17d4 DF91      		pop r29 + 4060 17d6 CF91      		pop r28 + 4061               	.LVL324: + 4062 17d8 1F91      		pop r17 + 4063 17da 0F91      		pop r16 + 4064 17dc FF90      		pop r15 + 4065 17de EF90      		pop r14 + 4066               	.LVL325: + 4067 17e0 DF90      		pop r13 + 4068 17e2 CF90      		pop r12 + 4069               	.LVL326: + 4070 17e4 BF90      		pop r11 + 4071 17e6 AF90      		pop r10 + 4072               	.LVL327: + 4073 17e8 0895      		ret + 4074               	.LFE15: + 4076               	.global	boingboing + 4078               	boingboing: + 4079               	.LFB13: + 4080               	.LM420: + 4081               	.LVL328: + 4082 17ea 2F92      		push r2 + 4083 17ec 3F92      		push r3 + 4084 17ee 4F92      		push r4 + 4085 17f0 5F92      		push r5 + 4086 17f2 6F92      		push r6 + 4087 17f4 7F92      		push r7 + 4088 17f6 8F92      		push r8 + 4089 17f8 9F92      		push r9 + 4090 17fa AF92      		push r10 + 4091 17fc BF92      		push r11 + 4092 17fe CF92      		push r12 + 4093 1800 DF92      		push r13 + 4094 1802 EF92      		push r14 + 4095 1804 FF92      		push r15 + 4096 1806 0F93      		push r16 + 4097 1808 1F93      		push r17 + 4098 180a DF93      		push r29 + 4099 180c CF93      		push r28 + 4100 180e CDB7      		in r28,__SP_L__ + 4101 1810 DEB7      		in r29,__SP_H__ + 4102 1812 E897      		sbiw r28,56 + 4103 1814 0FB6      		in __tmp_reg__,__SREG__ + 4104 1816 F894      		cli + 4105 1818 DEBF      		out __SP_H__,r29 + 4106 181a 0FBE      		out __SREG__,__tmp_reg__ + 4107 181c CDBF      		out __SP_L__,r28 + 4108               	/* prologue: function */ + 4109               	/* frame size = 56 */ + 4110 181e 9AAB      		std Y+50,r25 + 4111 1820 89AB      		std Y+49,r24 + 4112 1822 7CAB      		std Y+52,r23 + 4113 1824 6BAB      		std Y+51,r22 + 4114 1826 222E      		mov r2,r18 + 4115               	.LM421: + 4116 1828 80E0      		ldi r24,lo8(0) + 4117               	.LVL329: + 4118 182a 0E94 0000 		call fill + 4119               	.LVL330: + 4120 182e FE01      		movw r30,r28 + 4121 1830 3196      		adiw r30,1 + 4122               	.LM422: + 4123 1832 84E0      		ldi r24,lo8(4) + 4124 1834 90E0      		ldi r25,hi8(4) + 4125               	.LM423: + 4126 1836 9E01      		movw r18,r28 + 4127 1838 2F5C      		subi r18,lo8(-(49)) + 4128 183a 3F4F      		sbci r19,hi8(-(49)) + 4129 183c 3EAB      		std Y+54,r19 + 4130 183e 2DAB      		std Y+53,r18 + 4131               	.L299: + 4132               	.LM424: + 4133 1840 9183      		std Z+1,r25 + 4134 1842 8083      		st Z,r24 + 4135               	.LM425: + 4136 1844 9383      		std Z+3,r25 + 4137 1846 8283      		std Z+2,r24 + 4138               	.LM426: + 4139 1848 9583      		std Z+5,r25 + 4140 184a 8483      		std Z+4,r24 + 4141 184c 3696      		adiw r30,6 + 4142               	.LM427: + 4143 184e 2DA9      		ldd r18,Y+53 + 4144 1850 3EA9      		ldd r19,Y+54 + 4145 1852 E217      		cp r30,r18 + 4146 1854 F307      		cpc r31,r19 + 4147 1856 01F4      		brne .L299 + 4148               	.LM428: + 4149 1858 0E94 0000 		call rand + 4150 185c 68E0      		ldi r22,lo8(8) + 4151 185e 70E0      		ldi r23,hi8(8) + 4152 1860 0E94 0000 		call __divmodhi4 + 4153 1864 3C01      		movw r6,r24 + 4154               	.LVL331: + 4155               	.LM429: + 4156 1866 0E94 0000 		call rand + 4157               	.LVL332: + 4158 186a 68E0      		ldi r22,lo8(8) + 4159 186c 70E0      		ldi r23,hi8(8) + 4160 186e 0E94 0000 		call __divmodhi4 + 4161 1872 2C01      		movw r4,r24 + 4162               	.LVL333: + 4163               	.LM430: + 4164 1874 0E94 0000 		call rand + 4165               	.LVL334: + 4166 1878 68E0      		ldi r22,lo8(8) + 4167 187a 70E0      		ldi r23,hi8(8) + 4168 187c 0E94 0000 		call __divmodhi4 + 4169 1880 7C01      		movw r14,r24 + 4170               	.LVL335: + 4171 1882 E1E0      		ldi r30,lo8(1) + 4172 1884 CE2E      		mov r12,r30 + 4173 1886 D12C      		mov r13,__zero_reg__ + 4174               	.LVL336: + 4175 1888 71E0      		ldi r23,lo8(1) + 4176 188a 872E      		mov r8,r23 + 4177 188c 912C      		mov r9,__zero_reg__ + 4178               	.LVL337: + 4179 188e 61E0      		ldi r22,lo8(1) + 4180 1890 A62E      		mov r10,r22 + 4181 1892 B12C      		mov r11,__zero_reg__ + 4182               	.LVL338: + 4183               	.LM431: + 4184 1894 CE01      		movw r24,r28 + 4185               	.LVL339: + 4186 1896 0B97      		sbiw r24,11 + 4187 1898 98AF      		std Y+56,r25 + 4188 189a 8FAB      		std Y+55,r24 + 4189 189c 00C0      		rjmp .L300 + 4190               	.LVL340: + 4191               	.L353: + 4192               	.LM432: + 4193 189e 0E94 0000 		call rand + 4194 18a2 63E0      		ldi r22,lo8(3) + 4195 18a4 70E0      		ldi r23,hi8(3) + 4196 18a6 0E94 0000 		call __divmodhi4 + 4197 18aa 892B      		or r24,r25 + 4198 18ac 01F4      		brne .L301 + 4199               	.LM433: + 4200 18ae 0E94 0000 		call rand + 4201 18b2 63E0      		ldi r22,lo8(3) + 4202 18b4 70E0      		ldi r23,hi8(3) + 4203 18b6 0E94 0000 		call __divmodhi4 + 4204               	.LM434: + 4205 18ba 0097      		sbiw r24,0 + 4206               	.LVL341: + 4207 18bc 01F4      		brne .L302 + 4208               	.LM435: + 4209 18be 0E94 0000 		call rand + 4210               	.LVL342: + 4211 18c2 63E0      		ldi r22,lo8(3) + 4212 18c4 70E0      		ldi r23,hi8(3) + 4213 18c6 0E94 0000 		call __divmodhi4 + 4214 18ca 6C01      		movw r12,r24 + 4215 18cc 0894      		sec + 4216 18ce C108      		sbc r12,__zero_reg__ + 4217 18d0 D108      		sbc r13,__zero_reg__ + 4218 18d2 00C0      		rjmp .L301 + 4219               	.LVL343: + 4220               	.L302: + 4221               	.LM436: + 4222 18d4 8130      		cpi r24,1 + 4223 18d6 9105      		cpc r25,__zero_reg__ + 4224 18d8 01F4      		brne .L303 + 4225               	.LM437: + 4226 18da 0E94 0000 		call rand + 4227               	.LVL344: + 4228 18de 63E0      		ldi r22,lo8(3) + 4229 18e0 70E0      		ldi r23,hi8(3) + 4230 18e2 0E94 0000 		call __divmodhi4 + 4231 18e6 4C01      		movw r8,r24 + 4232 18e8 0894      		sec + 4233 18ea 8108      		sbc r8,__zero_reg__ + 4234 18ec 9108      		sbc r9,__zero_reg__ + 4235 18ee 00C0      		rjmp .L301 + 4236               	.LVL345: + 4237               	.L303: + 4238               	.LM438: + 4239 18f0 8230      		cpi r24,2 + 4240 18f2 9105      		cpc r25,__zero_reg__ + 4241 18f4 01F4      		brne .L301 + 4242               	.LM439: + 4243 18f6 0E94 0000 		call rand + 4244               	.LVL346: + 4245 18fa 63E0      		ldi r22,lo8(3) + 4246 18fc 70E0      		ldi r23,hi8(3) + 4247 18fe 0E94 0000 		call __divmodhi4 + 4248 1902 5C01      		movw r10,r24 + 4249 1904 0894      		sec + 4250 1906 A108      		sbc r10,__zero_reg__ + 4251 1908 B108      		sbc r11,__zero_reg__ + 4252               	.LVL347: + 4253               	.L301: + 4254               	.LM440: + 4255 190a 9FEF      		ldi r25,lo8(-1) + 4256 190c C916      		cp r12,r25 + 4257 190e 9FEF      		ldi r25,hi8(-1) + 4258 1910 D906      		cpc r13,r25 + 4259 1912 01F4      		brne .L304 + 4260 1914 4114      		cp r4,__zero_reg__ + 4261 1916 5104      		cpc r5,__zero_reg__ + 4262 1918 01F4      		brne .L304 + 4263               	.LM441: + 4264 191a 0E94 0000 		call rand + 4265               	.LVL348: + 4266 191e 63E0      		ldi r22,lo8(3) + 4267 1920 70E0      		ldi r23,hi8(3) + 4268 1922 0E94 0000 		call __divmodhi4 + 4269 1926 0197      		sbiw r24,1 + 4270 1928 01F0      		breq .L305 + 4271 192a CC24      		clr r12 + 4272 192c DD24      		clr r13 + 4273 192e 00C0      		rjmp .L360 + 4274               	.L305: + 4275 1930 51E0      		ldi r21,lo8(1) + 4276 1932 C52E      		mov r12,r21 + 4277 1934 D12C      		mov r13,__zero_reg__ + 4278               	.L360: + 4279 1936 11E0      		ldi r17,lo8(1) + 4280 1938 00C0      		rjmp .L306 + 4281               	.LVL349: + 4282               	.L304: + 4283 193a 10E0      		ldi r17,lo8(0) + 4284               	.L306: + 4285               	.LM442: + 4286 193c EFEF      		ldi r30,lo8(-1) + 4287 193e 8E16      		cp r8,r30 + 4288 1940 EFEF      		ldi r30,hi8(-1) + 4289 1942 9E06      		cpc r9,r30 + 4290 1944 01F4      		brne .L307 + 4291 1946 6114      		cp r6,__zero_reg__ + 4292 1948 7104      		cpc r7,__zero_reg__ + 4293 194a 01F4      		brne .L307 + 4294               	.LM443: + 4295 194c 0E94 0000 		call rand + 4296               	.LVL350: + 4297 1950 63E0      		ldi r22,lo8(3) + 4298 1952 70E0      		ldi r23,hi8(3) + 4299 1954 0E94 0000 		call __divmodhi4 + 4300 1958 0197      		sbiw r24,1 + 4301 195a 01F0      		breq .L308 + 4302 195c 8824      		clr r8 + 4303 195e 9924      		clr r9 + 4304 1960 00C0      		rjmp .L361 + 4305               	.L308: + 4306 1962 41E0      		ldi r20,lo8(1) + 4307 1964 842E      		mov r8,r20 + 4308 1966 912C      		mov r9,__zero_reg__ + 4309               	.L361: + 4310 1968 01E0      		ldi r16,lo8(1) + 4311 196a 00C0      		rjmp .L309 + 4312               	.LVL351: + 4313               	.L307: + 4314 196c 00E0      		ldi r16,lo8(0) + 4315               	.L309: + 4316               	.LM444: + 4317 196e FFEF      		ldi r31,lo8(-1) + 4318 1970 AF16      		cp r10,r31 + 4319 1972 FFEF      		ldi r31,hi8(-1) + 4320 1974 BF06      		cpc r11,r31 + 4321 1976 01F4      		brne .L310 + 4322 1978 E114      		cp r14,__zero_reg__ + 4323 197a F104      		cpc r15,__zero_reg__ + 4324 197c 01F4      		brne .L310 + 4325               	.LM445: + 4326 197e 0E94 0000 		call rand + 4327               	.LVL352: + 4328 1982 63E0      		ldi r22,lo8(3) + 4329 1984 70E0      		ldi r23,hi8(3) + 4330 1986 0E94 0000 		call __divmodhi4 + 4331 198a 0197      		sbiw r24,1 + 4332 198c 01F0      		breq .L311 + 4333 198e AA24      		clr r10 + 4334 1990 BB24      		clr r11 + 4335 1992 00C0      		rjmp .L362 + 4336               	.L311: + 4337 1994 31E0      		ldi r19,lo8(1) + 4338 1996 A32E      		mov r10,r19 + 4339 1998 B12C      		mov r11,__zero_reg__ + 4340               	.L362: + 4341 199a 3324      		clr r3 + 4342 199c 3394      		inc r3 + 4343 199e 00C0      		rjmp .L312 + 4344               	.LVL353: + 4345               	.L310: + 4346 19a0 3324      		clr r3 + 4347               	.L312: + 4348               	.LM446: + 4349 19a2 21E0      		ldi r18,lo8(1) + 4350 19a4 C216      		cp r12,r18 + 4351 19a6 D104      		cpc r13,__zero_reg__ + 4352 19a8 01F4      		brne .L313 + 4353 19aa 37E0      		ldi r19,lo8(7) + 4354 19ac 4316      		cp r4,r19 + 4355 19ae 5104      		cpc r5,__zero_reg__ + 4356 19b0 01F4      		brne .L313 + 4357               	.LM447: + 4358 19b2 0E94 0000 		call rand + 4359               	.LVL354: + 4360 19b6 63E0      		ldi r22,lo8(3) + 4361 19b8 70E0      		ldi r23,hi8(3) + 4362 19ba 0E94 0000 		call __divmodhi4 + 4363 19be 0197      		sbiw r24,1 + 4364 19c0 01F0      		breq .L314 + 4365 19c2 CC24      		clr r12 + 4366 19c4 DD24      		clr r13 + 4367 19c6 00C0      		rjmp .L363 + 4368               	.L314: + 4369 19c8 CC24      		clr r12 + 4370 19ca CA94      		dec r12 + 4371 19cc DC2C      		mov r13,r12 + 4372               	.L363: + 4373 19ce 11E0      		ldi r17,lo8(1) + 4374               	.LVL355: + 4375               	.L313: + 4376               	.LM448: + 4377 19d0 81E0      		ldi r24,lo8(1) + 4378 19d2 8816      		cp r8,r24 + 4379 19d4 9104      		cpc r9,__zero_reg__ + 4380               	.LVL356: + 4381 19d6 01F4      		brne .L315 + 4382 19d8 97E0      		ldi r25,lo8(7) + 4383 19da 6916      		cp r6,r25 + 4384 19dc 7104      		cpc r7,__zero_reg__ + 4385 19de 01F4      		brne .L315 + 4386               	.LM449: + 4387 19e0 0E94 0000 		call rand + 4388 19e4 63E0      		ldi r22,lo8(3) + 4389 19e6 70E0      		ldi r23,hi8(3) + 4390 19e8 0E94 0000 		call __divmodhi4 + 4391 19ec 0197      		sbiw r24,1 + 4392 19ee 01F0      		breq .L316 + 4393 19f0 8824      		clr r8 + 4394 19f2 9924      		clr r9 + 4395 19f4 00C0      		rjmp .L364 + 4396               	.L316: + 4397 19f6 8824      		clr r8 + 4398 19f8 8A94      		dec r8 + 4399 19fa 982C      		mov r9,r8 + 4400               	.L364: + 4401 19fc 01E0      		ldi r16,lo8(1) + 4402               	.L315: + 4403               	.LM450: + 4404 19fe E1E0      		ldi r30,lo8(1) + 4405 1a00 AE16      		cp r10,r30 + 4406 1a02 B104      		cpc r11,__zero_reg__ + 4407 1a04 01F4      		brne .L317 + 4408 1a06 F7E0      		ldi r31,lo8(7) + 4409 1a08 EF16      		cp r14,r31 + 4410 1a0a F104      		cpc r15,__zero_reg__ + 4411 1a0c 01F4      		brne .L317 + 4412               	.LM451: + 4413 1a0e 0E94 0000 		call rand + 4414 1a12 63E0      		ldi r22,lo8(3) + 4415 1a14 70E0      		ldi r23,hi8(3) + 4416 1a16 0E94 0000 		call __divmodhi4 + 4417 1a1a 0197      		sbiw r24,1 + 4418 1a1c 01F0      		breq .L318 + 4419 1a1e AA24      		clr r10 + 4420 1a20 BB24      		clr r11 + 4421 1a22 00C0      		rjmp .L365 + 4422               	.L318: + 4423 1a24 AA24      		clr r10 + 4424 1a26 AA94      		dec r10 + 4425 1a28 BA2C      		mov r11,r10 + 4426               	.L365: + 4427 1a2a 3324      		clr r3 + 4428 1a2c 3394      		inc r3 + 4429               	.L317: + 4430               	.LM452: + 4431 1a2e 1123      		tst r17 + 4432 1a30 01F0      		breq .L319 + 4433               	.LM453: + 4434 1a32 8114      		cp r8,__zero_reg__ + 4435 1a34 9104      		cpc r9,__zero_reg__ + 4436 1a36 01F4      		brne .L320 + 4437               	.LM454: + 4438 1a38 27E0      		ldi r18,lo8(7) + 4439 1a3a 6216      		cp r6,r18 + 4440 1a3c 7104      		cpc r7,__zero_reg__ + 4441 1a3e 01F0      		breq .L321 + 4442               	.LM455: + 4443 1a40 6114      		cp r6,__zero_reg__ + 4444 1a42 7104      		cpc r7,__zero_reg__ + 4445 1a44 01F0      		breq .L322 + 4446               	.LM456: + 4447 1a46 0E94 0000 		call rand + 4448 1a4a 80FD      		sbrc r24,0 + 4449 1a4c 00C0      		rjmp .L322 + 4450               	.L321: + 4451 1a4e 8824      		clr r8 + 4452 1a50 8A94      		dec r8 + 4453 1a52 982C      		mov r9,r8 + 4454 1a54 00C0      		rjmp .L320 + 4455               	.L322: + 4456 1a56 21E0      		ldi r18,lo8(1) + 4457 1a58 822E      		mov r8,r18 + 4458 1a5a 912C      		mov r9,__zero_reg__ + 4459               	.L320: + 4460               	.LM457: + 4461 1a5c A114      		cp r10,__zero_reg__ + 4462 1a5e B104      		cpc r11,__zero_reg__ + 4463 1a60 01F4      		brne .L319 + 4464               	.LM458: + 4465 1a62 37E0      		ldi r19,lo8(7) + 4466 1a64 E316      		cp r14,r19 + 4467 1a66 F104      		cpc r15,__zero_reg__ + 4468 1a68 01F0      		breq .L323 + 4469               	.LM459: + 4470 1a6a E114      		cp r14,__zero_reg__ + 4471 1a6c F104      		cpc r15,__zero_reg__ + 4472 1a6e 01F0      		breq .L324 + 4473               	.LM460: + 4474 1a70 0E94 0000 		call rand + 4475 1a74 80FD      		sbrc r24,0 + 4476 1a76 00C0      		rjmp .L324 + 4477               	.L323: + 4478 1a78 AA24      		clr r10 + 4479 1a7a AA94      		dec r10 + 4480 1a7c BA2C      		mov r11,r10 + 4481 1a7e 00C0      		rjmp .L319 + 4482               	.L324: + 4483 1a80 91E0      		ldi r25,lo8(1) + 4484 1a82 A92E      		mov r10,r25 + 4485 1a84 B12C      		mov r11,__zero_reg__ + 4486               	.L319: + 4487               	.LM461: + 4488 1a86 0023      		tst r16 + 4489 1a88 01F0      		breq .L325 + 4490               	.LM462: + 4491 1a8a C114      		cp r12,__zero_reg__ + 4492 1a8c D104      		cpc r13,__zero_reg__ + 4493 1a8e 01F4      		brne .L326 + 4494               	.LM463: + 4495 1a90 87E0      		ldi r24,lo8(7) + 4496 1a92 4816      		cp r4,r24 + 4497 1a94 5104      		cpc r5,__zero_reg__ + 4498 1a96 01F0      		breq .L327 + 4499               	.LM464: + 4500 1a98 4114      		cp r4,__zero_reg__ + 4501 1a9a 5104      		cpc r5,__zero_reg__ + 4502 1a9c 01F0      		breq .L328 + 4503               	.LM465: + 4504 1a9e 0E94 0000 		call rand + 4505 1aa2 80FD      		sbrc r24,0 + 4506 1aa4 00C0      		rjmp .L328 + 4507               	.L327: + 4508 1aa6 CC24      		clr r12 + 4509 1aa8 CA94      		dec r12 + 4510 1aaa DC2C      		mov r13,r12 + 4511 1aac 00C0      		rjmp .L326 + 4512               	.L328: + 4513 1aae 81E0      		ldi r24,lo8(1) + 4514 1ab0 C82E      		mov r12,r24 + 4515 1ab2 D12C      		mov r13,__zero_reg__ + 4516               	.L326: + 4517               	.LM466: + 4518 1ab4 A114      		cp r10,__zero_reg__ + 4519 1ab6 B104      		cpc r11,__zero_reg__ + 4520 1ab8 01F4      		brne .L325 + 4521               	.LM467: + 4522 1aba 93E0      		ldi r25,lo8(3) + 4523 1abc E916      		cp r14,r25 + 4524 1abe F104      		cpc r15,__zero_reg__ + 4525 1ac0 01F0      		breq .L329 + 4526               	.LM468: + 4527 1ac2 E114      		cp r14,__zero_reg__ + 4528 1ac4 F104      		cpc r15,__zero_reg__ + 4529 1ac6 01F0      		breq .L330 + 4530               	.LM469: + 4531 1ac8 0E94 0000 		call rand + 4532 1acc 80FD      		sbrc r24,0 + 4533 1ace 00C0      		rjmp .L330 + 4534               	.L329: + 4535 1ad0 AA24      		clr r10 + 4536 1ad2 AA94      		dec r10 + 4537 1ad4 BA2C      		mov r11,r10 + 4538 1ad6 00C0      		rjmp .L325 + 4539               	.L330: + 4540 1ad8 01E0      		ldi r16,lo8(1) + 4541 1ada A02E      		mov r10,r16 + 4542 1adc B12C      		mov r11,__zero_reg__ + 4543               	.LVL357: + 4544               	.L325: + 4545               	.LM470: + 4546 1ade 3320      		tst r3 + 4547 1ae0 01F0      		breq .L331 + 4548               	.LM471: + 4549 1ae2 8114      		cp r8,__zero_reg__ + 4550 1ae4 9104      		cpc r9,__zero_reg__ + 4551 1ae6 01F4      		brne .L332 + 4552               	.LM472: + 4553 1ae8 E7E0      		ldi r30,lo8(7) + 4554 1aea 6E16      		cp r6,r30 + 4555 1aec 7104      		cpc r7,__zero_reg__ + 4556 1aee 01F0      		breq .L333 + 4557               	.LM473: + 4558 1af0 6114      		cp r6,__zero_reg__ + 4559 1af2 7104      		cpc r7,__zero_reg__ + 4560 1af4 01F0      		breq .L334 + 4561               	.LM474: + 4562 1af6 0E94 0000 		call rand + 4563 1afa 80FD      		sbrc r24,0 + 4564 1afc 00C0      		rjmp .L334 + 4565               	.L333: + 4566 1afe 8824      		clr r8 + 4567 1b00 8A94      		dec r8 + 4568 1b02 982C      		mov r9,r8 + 4569 1b04 00C0      		rjmp .L332 + 4570               	.L334: + 4571 1b06 11E0      		ldi r17,lo8(1) + 4572 1b08 812E      		mov r8,r17 + 4573 1b0a 912C      		mov r9,__zero_reg__ + 4574               	.LVL358: + 4575               	.L332: + 4576               	.LM475: + 4577 1b0c C114      		cp r12,__zero_reg__ + 4578 1b0e D104      		cpc r13,__zero_reg__ + 4579 1b10 01F4      		brne .L331 + 4580               	.LM476: + 4581 1b12 F7E0      		ldi r31,lo8(7) + 4582 1b14 4F16      		cp r4,r31 + 4583 1b16 5104      		cpc r5,__zero_reg__ + 4584 1b18 01F4      		brne .L335 + 4585 1b1a CC24      		clr r12 + 4586 1b1c CA94      		dec r12 + 4587 1b1e DC2C      		mov r13,r12 + 4588 1b20 00C0      		rjmp .L336 + 4589               	.L335: + 4590               	.LM477: + 4591 1b22 4114      		cp r4,__zero_reg__ + 4592 1b24 5104      		cpc r5,__zero_reg__ + 4593 1b26 01F4      		brne .L337 + 4594 1b28 B1E0      		ldi r27,lo8(1) + 4595 1b2a CB2E      		mov r12,r27 + 4596 1b2c D12C      		mov r13,__zero_reg__ + 4597 1b2e 00C0      		rjmp .L338 + 4598               	.L337: + 4599               	.LM478: + 4600 1b30 0E94 0000 		call rand + 4601 1b34 80FF      		sbrs r24,0 + 4602 1b36 00C0      		rjmp .L339 + 4603 1b38 A1E0      		ldi r26,lo8(1) + 4604 1b3a CA2E      		mov r12,r26 + 4605 1b3c D12C      		mov r13,__zero_reg__ + 4606 1b3e 00C0      		rjmp .L340 + 4607               	.L331: + 4608               	.LM479: + 4609 1b40 4114      		cp r4,__zero_reg__ + 4610 1b42 5104      		cpc r5,__zero_reg__ + 4611 1b44 01F4      		brne .L341 + 4612               	.L338: + 4613 1b46 6114      		cp r6,__zero_reg__ + 4614 1b48 7104      		cpc r7,__zero_reg__ + 4615 1b4a 01F4      		brne .L342 + 4616 1b4c E114      		cp r14,__zero_reg__ + 4617 1b4e F104      		cpc r15,__zero_reg__ + 4618 1b50 01F0      		breq .L343 + 4619 1b52 27E0      		ldi r18,lo8(7) + 4620 1b54 E216      		cp r14,r18 + 4621 1b56 F104      		cpc r15,__zero_reg__ + 4622 1b58 01F4      		brne .L341 + 4623 1b5a 00C0      		rjmp .L343 + 4624               	.L342: + 4625 1b5c 37E0      		ldi r19,lo8(7) + 4626 1b5e 6316      		cp r6,r19 + 4627 1b60 7104      		cpc r7,__zero_reg__ + 4628 1b62 01F4      		brne .L341 + 4629 1b64 E114      		cp r14,__zero_reg__ + 4630 1b66 F104      		cpc r15,__zero_reg__ + 4631 1b68 01F0      		breq .L343 + 4632 1b6a 87E0      		ldi r24,lo8(7) + 4633 1b6c E816      		cp r14,r24 + 4634 1b6e F104      		cpc r15,__zero_reg__ + 4635 1b70 01F0      		breq .L343 + 4636               	.L341: + 4637 1b72 97E0      		ldi r25,lo8(7) + 4638 1b74 4916      		cp r4,r25 + 4639 1b76 5104      		cpc r5,__zero_reg__ + 4640 1b78 01F4      		brne .L340 + 4641               	.L336: + 4642 1b7a 6114      		cp r6,__zero_reg__ + 4643 1b7c 7104      		cpc r7,__zero_reg__ + 4644 1b7e 01F4      		brne .L344 + 4645 1b80 E114      		cp r14,__zero_reg__ + 4646 1b82 F104      		cpc r15,__zero_reg__ + 4647 1b84 01F0      		breq .L343 + 4648 1b86 E7E0      		ldi r30,lo8(7) + 4649 1b88 EE16      		cp r14,r30 + 4650 1b8a F104      		cpc r15,__zero_reg__ + 4651 1b8c 01F4      		brne .L340 + 4652 1b8e 00C0      		rjmp .L343 + 4653               	.L344: + 4654 1b90 F7E0      		ldi r31,lo8(7) + 4655 1b92 6F16      		cp r6,r31 + 4656 1b94 7104      		cpc r7,__zero_reg__ + 4657 1b96 01F4      		brne .L340 + 4658 1b98 E114      		cp r14,__zero_reg__ + 4659 1b9a F104      		cpc r15,__zero_reg__ + 4660 1b9c 01F0      		breq .L343 + 4661 1b9e 27E0      		ldi r18,lo8(7) + 4662 1ba0 E216      		cp r14,r18 + 4663 1ba2 F104      		cpc r15,__zero_reg__ + 4664 1ba4 01F4      		brne .L340 + 4665               	.L343: + 4666               	.LM480: + 4667 1ba6 0E94 0000 		call rand + 4668 1baa 63E0      		ldi r22,lo8(3) + 4669 1bac 70E0      		ldi r23,hi8(3) + 4670 1bae 0E94 0000 		call __divmodhi4 + 4671               	.LM481: + 4672 1bb2 0097      		sbiw r24,0 + 4673               	.LVL359: + 4674 1bb4 01F4      		brne .L345 + 4675 1bb6 CC24      		clr r12 + 4676 1bb8 DD24      		clr r13 + 4677 1bba 00C0      		rjmp .L340 + 4678               	.L345: + 4679               	.LM482: + 4680 1bbc 8130      		cpi r24,1 + 4681 1bbe 9105      		cpc r25,__zero_reg__ + 4682 1bc0 01F4      		brne .L346 + 4683 1bc2 8824      		clr r8 + 4684 1bc4 9924      		clr r9 + 4685 1bc6 00C0      		rjmp .L340 + 4686               	.L346: + 4687               	.LM483: + 4688 1bc8 8230      		cpi r24,2 + 4689 1bca 9105      		cpc r25,__zero_reg__ + 4690 1bcc 01F4      		brne .L340 + 4691 1bce AA24      		clr r10 + 4692 1bd0 BB24      		clr r11 + 4693               	.L340: + 4694               	.LM484: + 4695 1bd2 4C0C      		add r4,r12 + 4696 1bd4 5D1C      		adc r5,r13 + 4697               	.LM485: + 4698 1bd6 680C      		add r6,r8 + 4699 1bd8 791C      		adc r7,r9 + 4700               	.LM486: + 4701 1bda EA0C      		add r14,r10 + 4702 1bdc FB1C      		adc r15,r11 + 4703               	.LM487: + 4704 1bde 31E0      		ldi r19,lo8(1) + 4705 1be0 2316      		cp r2,r19 + 4706 1be2 01F4      		brne .L347 + 4707               	.LM488: + 4708 1be4 C201      		movw r24,r4 + 4709               	.LVL360: + 4710 1be6 B301      		movw r22,r6 + 4711 1be8 A701      		movw r20,r14 + 4712 1bea 0E94 0000 		call setvoxel + 4713               	.LM489: + 4714 1bee 8BA9      		ldd r24,Y+51 + 4715 1bf0 9CA9      		ldd r25,Y+52 + 4716 1bf2 0E94 0000 		call delay_ms + 4717               	.LM490: + 4718 1bf6 C201      		movw r24,r4 + 4719 1bf8 B301      		movw r22,r6 + 4720 1bfa A701      		movw r20,r14 + 4721 1bfc 0E94 0000 		call clrvoxel + 4722 1c00 00C0      		rjmp .L348 + 4723               	.LVL361: + 4724               	.L347: + 4725               	.LM491: + 4726 1c02 82E0      		ldi r24,lo8(2) + 4727               	.LVL362: + 4728 1c04 2816      		cp r2,r24 + 4729 1c06 01F4      		brne .L349 + 4730               	.LM492: + 4731 1c08 C201      		movw r24,r4 + 4732 1c0a B301      		movw r22,r6 + 4733 1c0c A701      		movw r20,r14 + 4734 1c0e 0E94 0000 		call flpvoxel + 4735               	.LM493: + 4736 1c12 8BA9      		ldd r24,Y+51 + 4737 1c14 9CA9      		ldd r25,Y+52 + 4738 1c16 0E94 0000 		call delay_ms + 4739 1c1a 00C0      		rjmp .L348 + 4740               	.L349: + 4741               	.LM494: + 4742 1c1c 93E0      		ldi r25,lo8(3) + 4743 1c1e 2916      		cp r2,r25 + 4744 1c20 01F0      		breq .+2 + 4745 1c22 00C0      		rjmp .L348 + 4746 1c24 FE01      		movw r30,r28 + 4747 1c26 B596      		adiw r30,37 + 4748               	.L350: + 4749               	.LM495: + 4750 1c28 8081      		ld r24,Z + 4751 1c2a 9181      		ldd r25,Z+1 + 4752 1c2c 9783      		std Z+7,r25 + 4753 1c2e 8683      		std Z+6,r24 + 4754               	.LM496: + 4755 1c30 8281      		ldd r24,Z+2 + 4756 1c32 9381      		ldd r25,Z+3 + 4757 1c34 9187      		std Z+9,r25 + 4758 1c36 8087      		std Z+8,r24 + 4759               	.LM497: + 4760 1c38 8481      		ldd r24,Z+4 + 4761 1c3a 9581      		ldd r25,Z+5 + 4762 1c3c 9387      		std Z+11,r25 + 4763 1c3e 8287      		std Z+10,r24 + 4764 1c40 3697      		sbiw r30,6 + 4765               	.LM498: + 4766 1c42 2FA9      		ldd r18,Y+55 + 4767 1c44 38AD      		ldd r19,Y+56 + 4768 1c46 E217      		cp r30,r18 + 4769 1c48 F307      		cpc r31,r19 + 4770 1c4a 01F4      		brne .L350 + 4771               	.LM499: + 4772 1c4c 5A82      		std Y+2,r5 + 4773 1c4e 4982      		std Y+1,r4 + 4774               	.LM500: + 4775 1c50 7C82      		std Y+4,r7 + 4776 1c52 6B82      		std Y+3,r6 + 4777               	.LM501: + 4778 1c54 FE82      		std Y+6,r15 + 4779 1c56 ED82      		std Y+5,r14 + 4780 1c58 8E01      		movw r16,r28 + 4781               	.LVL363: + 4782 1c5a 0F5F      		subi r16,lo8(-(1)) + 4783 1c5c 1F4F      		sbci r17,hi8(-(1)) + 4784               	.L351: + 4785               	.LM502: + 4786 1c5e F801      		movw r30,r16 + 4787 1c60 6281      		ldd r22,Z+2 + 4788 1c62 7381      		ldd r23,Z+3 + 4789 1c64 4481      		ldd r20,Z+4 + 4790 1c66 5581      		ldd r21,Z+5 + 4791 1c68 8081      		ld r24,Z + 4792 1c6a 9181      		ldd r25,Z+1 + 4793 1c6c 0E94 0000 		call setvoxel + 4794 1c70 0A5F      		subi r16,lo8(-(6)) + 4795 1c72 1F4F      		sbci r17,hi8(-(6)) + 4796               	.LM503: + 4797 1c74 2DA9      		ldd r18,Y+53 + 4798 1c76 3EA9      		ldd r19,Y+54 + 4799 1c78 0217      		cp r16,r18 + 4800 1c7a 1307      		cpc r17,r19 + 4801 1c7c 01F4      		brne .L351 + 4802               	.LM504: + 4803 1c7e 8BA9      		ldd r24,Y+51 + 4804 1c80 9CA9      		ldd r25,Y+52 + 4805 1c82 0E94 0000 		call delay_ms + 4806 1c86 8E01      		movw r16,r28 + 4807 1c88 0F5F      		subi r16,lo8(-(1)) + 4808 1c8a 1F4F      		sbci r17,hi8(-(1)) + 4809               	.L352: + 4810               	.LM505: + 4811 1c8c F801      		movw r30,r16 + 4812 1c8e 6281      		ldd r22,Z+2 + 4813 1c90 7381      		ldd r23,Z+3 + 4814 1c92 4481      		ldd r20,Z+4 + 4815 1c94 5581      		ldd r21,Z+5 + 4816 1c96 8081      		ld r24,Z + 4817 1c98 9181      		ldd r25,Z+1 + 4818 1c9a 0E94 0000 		call clrvoxel + 4819 1c9e 0A5F      		subi r16,lo8(-(6)) + 4820 1ca0 1F4F      		sbci r17,hi8(-(6)) + 4821               	.LM506: + 4822 1ca2 2DA9      		ldd r18,Y+53 + 4823 1ca4 3EA9      		ldd r19,Y+54 + 4824 1ca6 0217      		cp r16,r18 + 4825 1ca8 1307      		cpc r17,r19 + 4826 1caa 01F4      		brne .L352 + 4827               	.LVL364: + 4828               	.L348: + 4829               	.LM507: + 4830 1cac 89A9      		ldd r24,Y+49 + 4831 1cae 9AA9      		ldd r25,Y+50 + 4832 1cb0 0197      		sbiw r24,1 + 4833 1cb2 9AAB      		std Y+50,r25 + 4834 1cb4 89AB      		std Y+49,r24 + 4835               	.LVL365: + 4836               	.L300: + 4837               	.LM508: + 4838 1cb6 E9A9      		ldd r30,Y+49 + 4839 1cb8 FAA9      		ldd r31,Y+50 + 4840 1cba EF2B      		or r30,r31 + 4841 1cbc 01F0      		breq .+2 + 4842 1cbe 00C0      		rjmp .L353 + 4843 1cc0 00C0      		rjmp .L366 + 4844               	.L339: + 4845               	.LM509: + 4846 1cc2 CC24      		clr r12 + 4847 1cc4 CA94      		dec r12 + 4848 1cc6 DC2C      		mov r13,r12 + 4849 1cc8 00C0      		rjmp .L340 + 4850               	.L366: + 4851               	/* epilogue start */ + 4852 1cca E896      		adiw r28,56 + 4853 1ccc 0FB6      		in __tmp_reg__,__SREG__ + 4854 1cce F894      		cli + 4855 1cd0 DEBF      		out __SP_H__,r29 + 4856 1cd2 0FBE      		out __SREG__,__tmp_reg__ + 4857 1cd4 CDBF      		out __SP_L__,r28 + 4858 1cd6 CF91      		pop r28 + 4859 1cd8 DF91      		pop r29 + 4860 1cda 1F91      		pop r17 + 4861               	.LVL366: + 4862 1cdc 0F91      		pop r16 + 4863               	.LVL367: + 4864 1cde FF90      		pop r15 + 4865 1ce0 EF90      		pop r14 + 4866               	.LVL368: + 4867 1ce2 DF90      		pop r13 + 4868 1ce4 CF90      		pop r12 + 4869               	.LVL369: + 4870 1ce6 BF90      		pop r11 + 4871 1ce8 AF90      		pop r10 + 4872               	.LVL370: + 4873 1cea 9F90      		pop r9 + 4874 1cec 8F90      		pop r8 + 4875               	.LVL371: + 4876 1cee 7F90      		pop r7 + 4877 1cf0 6F90      		pop r6 + 4878               	.LVL372: + 4879 1cf2 5F90      		pop r5 + 4880 1cf4 4F90      		pop r4 + 4881               	.LVL373: + 4882 1cf6 3F90      		pop r3 + 4883               	.LVL374: + 4884 1cf8 2F90      		pop r2 + 4885               	.LVL375: + 4886 1cfa 0895      		ret + 4887               	.LFE13: + 4889               	.global	sendplane_rand_z + 4891               	sendplane_rand_z: + 4892               	.LFB11: + 4893               	.LM510: + 4894               	.LVL376: + 4895 1cfc CF92      		push r12 + 4896 1cfe DF92      		push r13 + 4897 1d00 EF92      		push r14 + 4898 1d02 FF92      		push r15 + 4899 1d04 0F93      		push r16 + 4900 1d06 1F93      		push r17 + 4901 1d08 CF93      		push r28 + 4902 1d0a DF93      		push r29 + 4903               	/* prologue: function */ + 4904               	/* frame size = 0 */ + 4905 1d0c F82E      		mov r15,r24 + 4906 1d0e 6B01      		movw r12,r22 + 4907 1d10 EA01      		movw r28,r20 + 4908               	.LM511: + 4909 1d12 80E0      		ldi r24,lo8(0) + 4910               	.LVL377: + 4911 1d14 0E94 0000 		call fill + 4912               	.LVL378: + 4913               	.LM512: + 4914 1d18 8F2D      		mov r24,r15 + 4915 1d1a 90E0      		ldi r25,lo8(0) + 4916 1d1c 0E94 0000 		call setplane_z + 4917 1d20 10E1      		ldi r17,lo8(16) + 4918               	.LVL379: + 4919               	.L372: + 4920               	.LM513: + 4921 1d22 0E94 0000 		call rand + 4922 1d26 64E0      		ldi r22,lo8(4) + 4923 1d28 70E0      		ldi r23,hi8(4) + 4924 1d2a 0E94 0000 		call __divmodhi4 + 4925 1d2e E82E      		mov r14,r24 + 4926               	.LM514: + 4927 1d30 0E94 0000 		call rand + 4928 1d34 64E0      		ldi r22,lo8(4) + 4929 1d36 70E0      		ldi r23,hi8(4) + 4930 1d38 0E94 0000 		call __divmodhi4 + 4931 1d3c 082F      		mov r16,r24 + 4932               	.LM515: + 4933 1d3e 8E2D      		mov r24,r14 + 4934 1d40 90E0      		ldi r25,lo8(0) + 4935 1d42 602F      		mov r22,r16 + 4936 1d44 70E0      		ldi r23,lo8(0) + 4937 1d46 4F2D      		mov r20,r15 + 4938 1d48 50E0      		ldi r21,lo8(0) + 4939 1d4a 0E94 0000 		call getvoxel + 4940 1d4e 8823      		tst r24 + 4941 1d50 01F0      		breq .L372 + 4942               	.LM516: + 4943 1d52 8E2D      		mov r24,r14 + 4944 1d54 602F      		mov r22,r16 + 4945 1d56 4F2D      		mov r20,r15 + 4946 1d58 9601      		movw r18,r12 + 4947 1d5a 0E94 0000 		call sendvoxel_z + 4948               	.LM517: + 4949 1d5e CE01      		movw r24,r28 + 4950 1d60 0E94 0000 		call delay_ms + 4951               	.LM518: + 4952 1d64 1150      		subi r17,lo8(-(-1)) + 4953               	.LM519: + 4954 1d66 01F4      		brne .L372 + 4955               	/* epilogue start */ + 4956               	.LM520: + 4957 1d68 DF91      		pop r29 + 4958 1d6a CF91      		pop r28 + 4959               	.LVL380: + 4960 1d6c 1F91      		pop r17 + 4961               	.LVL381: + 4962 1d6e 0F91      		pop r16 + 4963 1d70 FF90      		pop r15 + 4964               	.LVL382: + 4965 1d72 EF90      		pop r14 + 4966 1d74 DF90      		pop r13 + 4967 1d76 CF90      		pop r12 + 4968               	.LVL383: + 4969 1d78 0895      		ret + 4970               	.LFE11: + 4972               	.global	effect_box_woopwoop + 4974               	effect_box_woopwoop: + 4975               	.LFB9: + 4976               	.LM521: + 4977               	.LVL384: + 4978 1d7a AF92      		push r10 + 4979 1d7c BF92      		push r11 + 4980 1d7e CF92      		push r12 + 4981 1d80 DF92      		push r13 + 4982 1d82 EF92      		push r14 + 4983 1d84 FF92      		push r15 + 4984 1d86 0F93      		push r16 + 4985 1d88 1F93      		push r17 + 4986 1d8a CF93      		push r28 + 4987 1d8c DF93      		push r29 + 4988               	/* prologue: function */ + 4989               	/* frame size = 0 */ + 4990 1d8e 6C01      		movw r12,r24 + 4991 1d90 8B01      		movw r16,r22 + 4992               	.LM522: + 4993 1d92 80E0      		ldi r24,lo8(0) + 4994               	.LVL385: + 4995 1d94 0E94 0000 		call fill + 4996               	.LVL386: + 4997               	.LM523: + 4998 1d98 0130      		cpi r16,1 + 4999 1d9a 1105      		cpc r17,__zero_reg__ + 5000 1d9c 01F4      		brne .L374 + 5001 1d9e C3E0      		ldi r28,lo8(3) + 5002 1da0 D0E0      		ldi r29,hi8(3) + 5003 1da2 A7E0      		ldi r26,lo8(7) + 5004 1da4 AA2E      		mov r10,r26 + 5005 1da6 B12C      		mov r11,__zero_reg__ + 5006               	.L375: + 5007 1da8 A501      		movw r20,r10 + 5008 1daa 4C1B      		sub r20,r28 + 5009 1dac 5D0B      		sbc r21,r29 + 5010               	.LM524: + 5011 1dae CA01      		movw r24,r20 + 5012 1db0 BA01      		movw r22,r20 + 5013 1db2 9E01      		movw r18,r28 + 5014 1db4 8E01      		movw r16,r28 + 5015               	.LVL387: + 5016 1db6 7E01      		movw r14,r28 + 5017 1db8 0E94 0000 		call box_wireframe + 5018               	.LM525: + 5019 1dbc C601      		movw r24,r12 + 5020 1dbe 0E94 0000 		call delay_ms + 5021               	.LM526: + 5022 1dc2 80E0      		ldi r24,lo8(0) + 5023 1dc4 0E94 0000 		call fill + 5024 1dc8 2197      		sbiw r28,1 + 5025               	.LM527: + 5026 1dca 8FEF      		ldi r24,hi8(-1) + 5027 1dcc CF3F      		cpi r28,lo8(-1) + 5028 1dce D807      		cpc r29,r24 + 5029 1dd0 01F4      		brne .L375 + 5030 1dd2 00C0      		rjmp .L378 + 5031               	.LVL388: + 5032               	.L374: + 5033 1dd4 C0E0      		ldi r28,lo8(0) + 5034 1dd6 D0E0      		ldi r29,hi8(0) + 5035 1dd8 F7E0      		ldi r31,lo8(7) + 5036 1dda AF2E      		mov r10,r31 + 5037 1ddc B12C      		mov r11,__zero_reg__ + 5038               	.L377: + 5039 1dde A501      		movw r20,r10 + 5040 1de0 4C1B      		sub r20,r28 + 5041 1de2 5D0B      		sbc r21,r29 + 5042               	.LM528: + 5043 1de4 CA01      		movw r24,r20 + 5044 1de6 BA01      		movw r22,r20 + 5045 1de8 9E01      		movw r18,r28 + 5046 1dea 8E01      		movw r16,r28 + 5047               	.LVL389: + 5048 1dec 7E01      		movw r14,r28 + 5049 1dee 0E94 0000 		call box_wireframe + 5050               	.LM529: + 5051 1df2 C601      		movw r24,r12 + 5052 1df4 0E94 0000 		call delay_ms + 5053               	.LM530: + 5054 1df8 80E0      		ldi r24,lo8(0) + 5055 1dfa 0E94 0000 		call fill + 5056 1dfe 2196      		adiw r28,1 + 5057               	.LM531: + 5058 1e00 C430      		cpi r28,4 + 5059 1e02 D105      		cpc r29,__zero_reg__ + 5060 1e04 01F4      		brne .L377 + 5061               	.L378: + 5062               	/* epilogue start */ + 5063               	.LM532: + 5064 1e06 DF91      		pop r29 + 5065 1e08 CF91      		pop r28 + 5066 1e0a 1F91      		pop r17 + 5067 1e0c 0F91      		pop r16 + 5068 1e0e FF90      		pop r15 + 5069 1e10 EF90      		pop r14 + 5070 1e12 DF90      		pop r13 + 5071 1e14 CF90      		pop r12 + 5072               	.LVL390: + 5073 1e16 BF90      		pop r11 + 5074 1e18 AF90      		pop r10 + 5075 1e1a 0895      		ret + 5076               	.LFE9: + 5078               	.global	effect_box_shrink_grow + 5080               	effect_box_shrink_grow: + 5081               	.LFB8: + 5082               	.LM533: + 5083               	.LVL391: + 5084 1e1c 2F92      		push r2 + 5085 1e1e 3F92      		push r3 + 5086 1e20 4F92      		push r4 + 5087 1e22 5F92      		push r5 + 5088 1e24 6F92      		push r6 + 5089 1e26 7F92      		push r7 + 5090 1e28 8F92      		push r8 + 5091 1e2a 9F92      		push r9 + 5092 1e2c AF92      		push r10 + 5093 1e2e BF92      		push r11 + 5094 1e30 CF92      		push r12 + 5095 1e32 DF92      		push r13 + 5096 1e34 EF92      		push r14 + 5097 1e36 FF92      		push r15 + 5098 1e38 0F93      		push r16 + 5099 1e3a 1F93      		push r17 + 5100 1e3c DF93      		push r29 + 5101 1e3e CF93      		push r28 + 5102 1e40 CDB7      		in r28,__SP_L__ + 5103 1e42 DEB7      		in r29,__SP_H__ + 5104 1e44 2C97      		sbiw r28,12 + 5105 1e46 0FB6      		in __tmp_reg__,__SREG__ + 5106 1e48 F894      		cli + 5107 1e4a DEBF      		out __SP_H__,r29 + 5108 1e4c 0FBE      		out __SREG__,__tmp_reg__ + 5109 1e4e CDBF      		out __SP_L__,r28 + 5110               	/* prologue: function */ + 5111               	/* frame size = 12 */ + 5112 1e50 9C83      		std Y+4,r25 + 5113 1e52 8B83      		std Y+3,r24 + 5114 1e54 7E83      		std Y+6,r23 + 5115 1e56 6D83      		std Y+5,r22 + 5116 1e58 5887      		std Y+8,r21 + 5117 1e5a 4F83      		std Y+7,r20 + 5118 1e5c 3A87      		std Y+10,r19 + 5119 1e5e 2987      		std Y+9,r18 + 5120               	.LM534: + 5121 1e60 1A82      		std Y+2,__zero_reg__ + 5122 1e62 1982      		std Y+1,__zero_reg__ + 5123               	.LVL392: + 5124 1e64 8824      		clr r8 + 5125 1e66 9924      		clr r9 + 5126               	.LVL393: + 5127 1e68 AA24      		clr r10 + 5128 1e6a BB24      		clr r11 + 5129               	.LVL394: + 5130 1e6c CC24      		clr r12 + 5131 1e6e DD24      		clr r13 + 5132               	.LVL395: + 5133 1e70 2224      		clr r2 + 5134 1e72 3324      		clr r3 + 5135               	.LVL396: + 5136 1e74 4424      		clr r4 + 5137 1e76 5524      		clr r5 + 5138               	.LVL397: + 5139 1e78 6624      		clr r6 + 5140 1e7a 7724      		clr r7 + 5141               	.LVL398: + 5142 1e7c 00C0      		rjmp .L382 + 5143               	.LVL399: + 5144               	.L409: + 5145               	.LM535: + 5146 1e7e 1C86      		std Y+12,__zero_reg__ + 5147 1e80 1B86      		std Y+11,__zero_reg__ + 5148               	.L395: + 5149 1e82 87E0      		ldi r24,lo8(7) + 5150 1e84 90E0      		ldi r25,hi8(7) + 5151               	.LVL400: + 5152 1e86 2B85      		ldd r18,Y+11 + 5153 1e88 3C85      		ldd r19,Y+12 + 5154 1e8a 821B      		sub r24,r18 + 5155 1e8c 930B      		sbc r25,r19 + 5156               	.LM536: + 5157 1e8e EF81      		ldd r30,Y+7 + 5158 1e90 F885      		ldd r31,Y+8 + 5159 1e92 3097      		sbiw r30,0 + 5160 1e94 01F4      		brne .+2 + 5161 1e96 00C0      		rjmp .L383 + 5162               	.LM537: + 5163 1e98 3197      		sbiw r30,1 + 5164 1e9a 01F4      		brne .L384 + 5165 1e9c 6901      		movw r12,r18 + 5166 1e9e 47E0      		ldi r20,lo8(7) + 5167 1ea0 642E      		mov r6,r20 + 5168 1ea2 712C      		mov r7,__zero_reg__ + 5169 1ea4 00C0      		rjmp .L385 + 5170               	.LVL401: + 5171               	.L384: + 5172               	.LM538: + 5173 1ea6 2F81      		ldd r18,Y+7 + 5174 1ea8 3885      		ldd r19,Y+8 + 5175 1eaa 2230      		cpi r18,2 + 5176 1eac 3105      		cpc r19,__zero_reg__ + 5177 1eae 01F4      		brne .L386 + 5178 1eb0 4B84      		ldd r4,Y+11 + 5179 1eb2 5C84      		ldd r5,Y+12 + 5180 1eb4 1C01      		movw r2,r24 + 5181 1eb6 3C01      		movw r6,r24 + 5182 1eb8 8824      		clr r8 + 5183 1eba 9924      		clr r9 + 5184 1ebc 37E0      		ldi r19,lo8(7) + 5185 1ebe A32E      		mov r10,r19 + 5186 1ec0 B12C      		mov r11,__zero_reg__ + 5187 1ec2 CC24      		clr r12 + 5188 1ec4 DD24      		clr r13 + 5189 1ec6 00C0      		rjmp .L387 + 5190               	.LVL402: + 5191               	.L386: + 5192               	.LM539: + 5193 1ec8 EF81      		ldd r30,Y+7 + 5194 1eca F885      		ldd r31,Y+8 + 5195 1ecc 3397      		sbiw r30,3 + 5196 1ece 01F4      		brne .L388 + 5197 1ed0 4B84      		ldd r4,Y+11 + 5198 1ed2 5C84      		ldd r5,Y+12 + 5199 1ed4 1C01      		movw r2,r24 + 5200 1ed6 3201      		movw r6,r4 + 5201 1ed8 8824      		clr r8 + 5202 1eda 9924      		clr r9 + 5203 1edc 27E0      		ldi r18,lo8(7) + 5204 1ede A22E      		mov r10,r18 + 5205 1ee0 B12C      		mov r11,__zero_reg__ + 5206 1ee2 97E0      		ldi r25,lo8(7) + 5207 1ee4 C92E      		mov r12,r25 + 5208 1ee6 D12C      		mov r13,__zero_reg__ + 5209 1ee8 00C0      		rjmp .L389 + 5210               	.LVL403: + 5211               	.L388: + 5212               	.LM540: + 5213 1eea 2F81      		ldd r18,Y+7 + 5214 1eec 3885      		ldd r19,Y+8 + 5215 1eee 2430      		cpi r18,4 + 5216 1ef0 3105      		cpc r19,__zero_reg__ + 5217 1ef2 01F4      		brne .L390 + 5218 1ef4 2B84      		ldd r2,Y+11 + 5219 1ef6 3C84      		ldd r3,Y+12 + 5220 1ef8 2C01      		movw r4,r24 + 5221 1efa 3C01      		movw r6,r24 + 5222 1efc 87E0      		ldi r24,lo8(7) + 5223 1efe 882E      		mov r8,r24 + 5224 1f00 912C      		mov r9,__zero_reg__ + 5225               	.LVL404: + 5226 1f02 AA24      		clr r10 + 5227 1f04 BB24      		clr r11 + 5228 1f06 00C0      		rjmp .L415 + 5229               	.LVL405: + 5230               	.L390: + 5231               	.LM541: + 5232 1f08 EF81      		ldd r30,Y+7 + 5233 1f0a F885      		ldd r31,Y+8 + 5234 1f0c 3597      		sbiw r30,5 + 5235 1f0e 01F4      		brne .L387 + 5236 1f10 2B84      		ldd r2,Y+11 + 5237 1f12 3C84      		ldd r3,Y+12 + 5238 1f14 2C01      		movw r4,r24 + 5239 1f16 3101      		movw r6,r2 + 5240 1f18 07E0      		ldi r16,lo8(7) + 5241 1f1a 802E      		mov r8,r16 + 5242 1f1c 912C      		mov r9,__zero_reg__ + 5243 1f1e AA24      		clr r10 + 5244 1f20 BB24      		clr r11 + 5245 1f22 00C0      		rjmp .L414 + 5246               	.LVL406: + 5247               	.L387: + 5248               	.LM542: + 5249 1f24 2F81      		ldd r18,Y+7 + 5250 1f26 3885      		ldd r19,Y+8 + 5251 1f28 2630      		cpi r18,6 + 5252 1f2a 3105      		cpc r19,__zero_reg__ + 5253 1f2c 01F4      		brne .L389 + 5254 1f2e 2B84      		ldd r2,Y+11 + 5255 1f30 3C84      		ldd r3,Y+12 + 5256 1f32 2101      		movw r4,r2 + 5257 1f34 3C01      		movw r6,r24 + 5258 1f36 17E0      		ldi r17,lo8(7) + 5259 1f38 812E      		mov r8,r17 + 5260 1f3a 912C      		mov r9,__zero_reg__ + 5261 1f3c B7E0      		ldi r27,lo8(7) + 5262 1f3e AB2E      		mov r10,r27 + 5263 1f40 B12C      		mov r11,__zero_reg__ + 5264               	.L415: + 5265 1f42 CC24      		clr r12 + 5266 1f44 DD24      		clr r13 + 5267 1f46 00C0      		rjmp .L391 + 5268               	.LVL407: + 5269               	.L389: + 5270               	.LM543: + 5271 1f48 8F81      		ldd r24,Y+7 + 5272 1f4a 9885      		ldd r25,Y+8 + 5273               	.LVL408: + 5274 1f4c 0797      		sbiw r24,7 + 5275 1f4e 01F4      		brne .L391 + 5276 1f50 2B84      		ldd r2,Y+11 + 5277 1f52 3C84      		ldd r3,Y+12 + 5278 1f54 2101      		movw r4,r2 + 5279 1f56 3101      		movw r6,r2 + 5280 1f58 A7E0      		ldi r26,lo8(7) + 5281 1f5a 8A2E      		mov r8,r26 + 5282 1f5c 912C      		mov r9,__zero_reg__ + 5283 1f5e F7E0      		ldi r31,lo8(7) + 5284 1f60 AF2E      		mov r10,r31 + 5285 1f62 B12C      		mov r11,__zero_reg__ + 5286               	.LVL409: + 5287               	.L414: + 5288 1f64 E7E0      		ldi r30,lo8(7) + 5289 1f66 CE2E      		mov r12,r30 + 5290 1f68 D12C      		mov r13,__zero_reg__ + 5291               	.L391: + 5292               	.LM544: + 5293 1f6a ED81      		ldd r30,Y+5 + 5294 1f6c FE81      		ldd r31,Y+6 + 5295 1f6e 3397      		sbiw r30,3 + 5296 1f70 01F4      		brne .L392 + 5297               	.LM545: + 5298 1f72 C401      		movw r24,r8 + 5299               	.LVL410: + 5300 1f74 B501      		movw r22,r10 + 5301 1f76 A601      		movw r20,r12 + 5302 1f78 9101      		movw r18,r2 + 5303 1f7a 8201      		movw r16,r4 + 5304 1f7c 7301      		movw r14,r6 + 5305 1f7e 0E94 0000 		call box_filled + 5306 1f82 00C0      		rjmp .L393 + 5307               	.LVL411: + 5308               	.L392: + 5309               	.LM546: + 5310 1f84 2D81      		ldd r18,Y+5 + 5311 1f86 3E81      		ldd r19,Y+6 + 5312 1f88 2230      		cpi r18,2 + 5313 1f8a 3105      		cpc r19,__zero_reg__ + 5314 1f8c 01F4      		brne .L394 + 5315               	.LM547: + 5316 1f8e C401      		movw r24,r8 + 5317               	.LVL412: + 5318 1f90 B501      		movw r22,r10 + 5319 1f92 A601      		movw r20,r12 + 5320 1f94 9101      		movw r18,r2 + 5321 1f96 8201      		movw r16,r4 + 5322 1f98 7301      		movw r14,r6 + 5323 1f9a 0E94 0000 		call box_walls + 5324 1f9e 00C0      		rjmp .L393 + 5325               	.LVL413: + 5326               	.L394: + 5327               	.LM548: + 5328 1fa0 C401      		movw r24,r8 + 5329               	.LVL414: + 5330 1fa2 B501      		movw r22,r10 + 5331 1fa4 A601      		movw r20,r12 + 5332 1fa6 9101      		movw r18,r2 + 5333 1fa8 8201      		movw r16,r4 + 5334 1faa 7301      		movw r14,r6 + 5335 1fac 0E94 0000 		call box_wireframe + 5336               	.L393: + 5337               	.LM549: + 5338 1fb0 8985      		ldd r24,Y+9 + 5339 1fb2 9A85      		ldd r25,Y+10 + 5340 1fb4 0E94 0000 		call delay_ms + 5341               	.LM550: + 5342 1fb8 80E0      		ldi r24,lo8(0) + 5343 1fba 0E94 0000 		call fill + 5344 1fbe 8B85      		ldd r24,Y+11 + 5345 1fc0 9C85      		ldd r25,Y+12 + 5346 1fc2 0196      		adiw r24,1 + 5347 1fc4 9C87      		std Y+12,r25 + 5348 1fc6 8B87      		std Y+11,r24 + 5349               	.LM551: + 5350 1fc8 0897      		sbiw r24,8 + 5351 1fca 01F0      		breq .+2 + 5352 1fcc 00C0      		rjmp .L395 + 5353 1fce E7E0      		ldi r30,lo8(7) + 5354 1fd0 F0E0      		ldi r31,hi8(7) + 5355 1fd2 FC87      		std Y+12,r31 + 5356 1fd4 EB87      		std Y+11,r30 + 5357               	.L408: + 5358 1fd6 87E0      		ldi r24,lo8(7) + 5359 1fd8 90E0      		ldi r25,hi8(7) + 5360               	.LVL415: + 5361 1fda 2B85      		ldd r18,Y+11 + 5362 1fdc 3C85      		ldd r19,Y+12 + 5363 1fde 821B      		sub r24,r18 + 5364 1fe0 930B      		sbc r25,r19 + 5365               	.LM552: + 5366 1fe2 EF81      		ldd r30,Y+7 + 5367 1fe4 F885      		ldd r31,Y+8 + 5368 1fe6 3097      		sbiw r30,0 + 5369 1fe8 01F4      		brne .+2 + 5370 1fea 00C0      		rjmp .L396 + 5371               	.LM553: + 5372 1fec 3197      		sbiw r30,1 + 5373 1fee 01F4      		brne .L397 + 5374 1ff0 6901      		movw r12,r18 + 5375 1ff2 77E0      		ldi r23,lo8(7) + 5376 1ff4 672E      		mov r6,r23 + 5377 1ff6 712C      		mov r7,__zero_reg__ + 5378 1ff8 00C0      		rjmp .L398 + 5379               	.L397: + 5380               	.LM554: + 5381 1ffa 2F81      		ldd r18,Y+7 + 5382 1ffc 3885      		ldd r19,Y+8 + 5383 1ffe 2230      		cpi r18,2 + 5384 2000 3105      		cpc r19,__zero_reg__ + 5385 2002 01F4      		brne .L399 + 5386 2004 4B84      		ldd r4,Y+11 + 5387 2006 5C84      		ldd r5,Y+12 + 5388 2008 1C01      		movw r2,r24 + 5389 200a 3C01      		movw r6,r24 + 5390 200c 8824      		clr r8 + 5391 200e 9924      		clr r9 + 5392 2010 67E0      		ldi r22,lo8(7) + 5393 2012 A62E      		mov r10,r22 + 5394 2014 B12C      		mov r11,__zero_reg__ + 5395 2016 CC24      		clr r12 + 5396 2018 DD24      		clr r13 + 5397 201a 00C0      		rjmp .L400 + 5398               	.LVL416: + 5399               	.L399: + 5400               	.LM555: + 5401 201c EF81      		ldd r30,Y+7 + 5402 201e F885      		ldd r31,Y+8 + 5403 2020 3397      		sbiw r30,3 + 5404 2022 01F4      		brne .L401 + 5405 2024 4B84      		ldd r4,Y+11 + 5406 2026 5C84      		ldd r5,Y+12 + 5407 2028 1C01      		movw r2,r24 + 5408 202a 3201      		movw r6,r4 + 5409 202c 8824      		clr r8 + 5410 202e 9924      		clr r9 + 5411 2030 57E0      		ldi r21,lo8(7) + 5412 2032 A52E      		mov r10,r21 + 5413 2034 B12C      		mov r11,__zero_reg__ + 5414 2036 47E0      		ldi r20,lo8(7) + 5415 2038 C42E      		mov r12,r20 + 5416 203a D12C      		mov r13,__zero_reg__ + 5417 203c 00C0      		rjmp .L402 + 5418               	.LVL417: + 5419               	.L401: + 5420               	.LM556: + 5421 203e 2F81      		ldd r18,Y+7 + 5422 2040 3885      		ldd r19,Y+8 + 5423 2042 2430      		cpi r18,4 + 5424 2044 3105      		cpc r19,__zero_reg__ + 5425 2046 01F4      		brne .L403 + 5426 2048 2B84      		ldd r2,Y+11 + 5427 204a 3C84      		ldd r3,Y+12 + 5428 204c 2C01      		movw r4,r24 + 5429 204e 3C01      		movw r6,r24 + 5430 2050 37E0      		ldi r19,lo8(7) + 5431 2052 832E      		mov r8,r19 + 5432 2054 912C      		mov r9,__zero_reg__ + 5433 2056 AA24      		clr r10 + 5434 2058 BB24      		clr r11 + 5435 205a 00C0      		rjmp .L417 + 5436               	.LVL418: + 5437               	.L403: + 5438               	.LM557: + 5439 205c EF81      		ldd r30,Y+7 + 5440 205e F885      		ldd r31,Y+8 + 5441 2060 3597      		sbiw r30,5 + 5442 2062 01F4      		brne .L400 + 5443 2064 2B84      		ldd r2,Y+11 + 5444 2066 3C84      		ldd r3,Y+12 + 5445 2068 2C01      		movw r4,r24 + 5446 206a 3101      		movw r6,r2 + 5447 206c 27E0      		ldi r18,lo8(7) + 5448 206e 822E      		mov r8,r18 + 5449 2070 912C      		mov r9,__zero_reg__ + 5450 2072 AA24      		clr r10 + 5451 2074 BB24      		clr r11 + 5452 2076 00C0      		rjmp .L416 + 5453               	.LVL419: + 5454               	.L400: + 5455               	.LM558: + 5456 2078 2F81      		ldd r18,Y+7 + 5457 207a 3885      		ldd r19,Y+8 + 5458 207c 2630      		cpi r18,6 + 5459 207e 3105      		cpc r19,__zero_reg__ + 5460 2080 01F4      		brne .L402 + 5461 2082 2B84      		ldd r2,Y+11 + 5462 2084 3C84      		ldd r3,Y+12 + 5463 2086 2101      		movw r4,r2 + 5464 2088 3C01      		movw r6,r24 + 5465 208a 97E0      		ldi r25,lo8(7) + 5466 208c 892E      		mov r8,r25 + 5467 208e 912C      		mov r9,__zero_reg__ + 5468 2090 87E0      		ldi r24,lo8(7) + 5469 2092 A82E      		mov r10,r24 + 5470 2094 B12C      		mov r11,__zero_reg__ + 5471               	.LVL420: + 5472               	.L417: + 5473 2096 CC24      		clr r12 + 5474 2098 DD24      		clr r13 + 5475 209a 00C0      		rjmp .L404 + 5476               	.LVL421: + 5477               	.L402: + 5478               	.LM559: + 5479 209c 8F81      		ldd r24,Y+7 + 5480 209e 9885      		ldd r25,Y+8 + 5481               	.LVL422: + 5482 20a0 0797      		sbiw r24,7 + 5483 20a2 01F4      		brne .L404 + 5484 20a4 2B84      		ldd r2,Y+11 + 5485 20a6 3C84      		ldd r3,Y+12 + 5486 20a8 2101      		movw r4,r2 + 5487 20aa 3101      		movw r6,r2 + 5488 20ac 07E0      		ldi r16,lo8(7) + 5489 20ae 802E      		mov r8,r16 + 5490 20b0 912C      		mov r9,__zero_reg__ + 5491 20b2 17E0      		ldi r17,lo8(7) + 5492 20b4 A12E      		mov r10,r17 + 5493 20b6 B12C      		mov r11,__zero_reg__ + 5494               	.LVL423: + 5495               	.L416: + 5496 20b8 B7E0      		ldi r27,lo8(7) + 5497 20ba CB2E      		mov r12,r27 + 5498 20bc D12C      		mov r13,__zero_reg__ + 5499               	.LVL424: + 5500               	.L404: + 5501               	.LM560: + 5502 20be ED81      		ldd r30,Y+5 + 5503 20c0 FE81      		ldd r31,Y+6 + 5504 20c2 3397      		sbiw r30,3 + 5505 20c4 01F4      		brne .L405 + 5506               	.LM561: + 5507 20c6 C401      		movw r24,r8 + 5508               	.LVL425: + 5509 20c8 B501      		movw r22,r10 + 5510 20ca A601      		movw r20,r12 + 5511 20cc 9101      		movw r18,r2 + 5512 20ce 8201      		movw r16,r4 + 5513 20d0 7301      		movw r14,r6 + 5514 20d2 0E94 0000 		call box_filled + 5515 20d6 00C0      		rjmp .L406 + 5516               	.LVL426: + 5517               	.L405: + 5518               	.LM562: + 5519 20d8 2D81      		ldd r18,Y+5 + 5520 20da 3E81      		ldd r19,Y+6 + 5521 20dc 2230      		cpi r18,2 + 5522 20de 3105      		cpc r19,__zero_reg__ + 5523 20e0 01F4      		brne .L407 + 5524               	.LM563: + 5525 20e2 C401      		movw r24,r8 + 5526               	.LVL427: + 5527 20e4 B501      		movw r22,r10 + 5528 20e6 A601      		movw r20,r12 + 5529 20e8 9101      		movw r18,r2 + 5530 20ea 8201      		movw r16,r4 + 5531 20ec 7301      		movw r14,r6 + 5532 20ee 0E94 0000 		call box_walls + 5533 20f2 00C0      		rjmp .L406 + 5534               	.LVL428: + 5535               	.L407: + 5536               	.LM564: + 5537 20f4 C401      		movw r24,r8 + 5538               	.LVL429: + 5539 20f6 B501      		movw r22,r10 + 5540 20f8 A601      		movw r20,r12 + 5541 20fa 9101      		movw r18,r2 + 5542 20fc 8201      		movw r16,r4 + 5543 20fe 7301      		movw r14,r6 + 5544 2100 0E94 0000 		call box_wireframe + 5545               	.L406: + 5546               	.LM565: + 5547 2104 8985      		ldd r24,Y+9 + 5548 2106 9A85      		ldd r25,Y+10 + 5549 2108 0E94 0000 		call delay_ms + 5550               	.LM566: + 5551 210c 80E0      		ldi r24,lo8(0) + 5552 210e 0E94 0000 		call fill + 5553 2112 8B85      		ldd r24,Y+11 + 5554 2114 9C85      		ldd r25,Y+12 + 5555 2116 0197      		sbiw r24,1 + 5556 2118 9C87      		std Y+12,r25 + 5557 211a 8B87      		std Y+11,r24 + 5558               	.LM567: + 5559 211c 8F5F      		subi r24,lo8(-1) + 5560 211e 9F4F      		sbci r25,hi8(-1) + 5561 2120 01F0      		breq .+2 + 5562 2122 00C0      		rjmp .L408 + 5563               	.LM568: + 5564 2124 2981      		ldd r18,Y+1 + 5565 2126 3A81      		ldd r19,Y+2 + 5566 2128 2F5F      		subi r18,lo8(-(1)) + 5567 212a 3F4F      		sbci r19,hi8(-(1)) + 5568 212c 3A83      		std Y+2,r19 + 5569 212e 2983      		std Y+1,r18 + 5570               	.LVL430: + 5571               	.L382: + 5572 2130 8981      		ldd r24,Y+1 + 5573 2132 9A81      		ldd r25,Y+2 + 5574 2134 EB81      		ldd r30,Y+3 + 5575 2136 FC81      		ldd r31,Y+4 + 5576 2138 8E17      		cp r24,r30 + 5577 213a 9F07      		cpc r25,r31 + 5578 213c 04F4      		brge .+2 + 5579 213e 00C0      		rjmp .L409 + 5580 2140 00C0      		rjmp .L418 + 5581               	.LVL431: + 5582               	.L383: + 5583               	.LM569: + 5584 2142 3C01      		movw r6,r24 + 5585 2144 CC24      		clr r12 + 5586 2146 DD24      		clr r13 + 5587               	.L385: + 5588 2148 1C01      		movw r2,r24 + 5589 214a 2C01      		movw r4,r24 + 5590 214c 8824      		clr r8 + 5591 214e 9924      		clr r9 + 5592 2150 AA24      		clr r10 + 5593 2152 BB24      		clr r11 + 5594 2154 00C0      		rjmp .L390 + 5595               	.LVL432: + 5596               	.L396: + 5597 2156 3C01      		movw r6,r24 + 5598 2158 CC24      		clr r12 + 5599 215a DD24      		clr r13 + 5600               	.L398: + 5601 215c 1C01      		movw r2,r24 + 5602 215e 2C01      		movw r4,r24 + 5603 2160 8824      		clr r8 + 5604 2162 9924      		clr r9 + 5605 2164 AA24      		clr r10 + 5606 2166 BB24      		clr r11 + 5607 2168 00C0      		rjmp .L403 + 5608               	.LVL433: + 5609               	.L418: + 5610               	/* epilogue start */ + 5611 216a 2C96      		adiw r28,12 + 5612 216c 0FB6      		in __tmp_reg__,__SREG__ + 5613 216e F894      		cli + 5614 2170 DEBF      		out __SP_H__,r29 + 5615 2172 0FBE      		out __SREG__,__tmp_reg__ + 5616 2174 CDBF      		out __SP_L__,r28 + 5617 2176 CF91      		pop r28 + 5618 2178 DF91      		pop r29 + 5619 217a 1F91      		pop r17 + 5620 217c 0F91      		pop r16 + 5621 217e FF90      		pop r15 + 5622 2180 EF90      		pop r14 + 5623 2182 DF90      		pop r13 + 5624 2184 CF90      		pop r12 + 5625               	.LVL434: + 5626 2186 BF90      		pop r11 + 5627 2188 AF90      		pop r10 + 5628               	.LVL435: + 5629 218a 9F90      		pop r9 + 5630 218c 8F90      		pop r8 + 5631               	.LVL436: + 5632 218e 7F90      		pop r7 + 5633 2190 6F90      		pop r6 + 5634               	.LVL437: + 5635 2192 5F90      		pop r5 + 5636 2194 4F90      		pop r4 + 5637               	.LVL438: + 5638 2196 3F90      		pop r3 + 5639 2198 2F90      		pop r2 + 5640               	.LVL439: + 5641 219a 0895      		ret + 5642               	.LFE8: + 5644               	.global	effect_planboing + 5646               	effect_planboing: + 5647               	.LFB6: + 5648               	.LM570: + 5649               	.LVL440: + 5650 219c EF92      		push r14 + 5651 219e FF92      		push r15 + 5652 21a0 0F93      		push r16 + 5653 21a2 1F93      		push r17 + 5654 21a4 CF93      		push r28 + 5655 21a6 DF93      		push r29 + 5656               	/* prologue: function */ + 5657               	/* frame size = 0 */ + 5658 21a8 8C01      		movw r16,r24 + 5659 21aa 7B01      		movw r14,r22 + 5660               	.LVL441: + 5661               	.LM571: + 5662 21ac C0E0      		ldi r28,lo8(0) + 5663 21ae D0E0      		ldi r29,hi8(0) + 5664               	.LVL442: + 5665               	.L423: + 5666               	.LM572: + 5667 21b0 80E0      		ldi r24,lo8(0) + 5668 21b2 0E94 0000 		call fill + 5669               	.LM573: + 5670 21b6 0A37      		cpi r16,122 + 5671 21b8 1105      		cpc r17,__zero_reg__ + 5672 21ba 01F4      		brne .L420 + 5673               	.LM574: + 5674 21bc CE01      		movw r24,r28 + 5675 21be 0E94 0000 		call setplane_z + 5676 21c2 00C0      		rjmp .L421 + 5677               	.L420: + 5678               	.LM575: + 5679 21c4 0837      		cpi r16,120 + 5680 21c6 1105      		cpc r17,__zero_reg__ + 5681 21c8 01F4      		brne .L422 + 5682               	.LM576: + 5683 21ca CE01      		movw r24,r28 + 5684 21cc 0E94 0000 		call setplane_x + 5685 21d0 00C0      		rjmp .L421 + 5686               	.L422: + 5687               	.LM577: + 5688 21d2 0937      		cpi r16,121 + 5689 21d4 1105      		cpc r17,__zero_reg__ + 5690 21d6 01F4      		brne .L421 + 5691               	.LM578: + 5692 21d8 CE01      		movw r24,r28 + 5693 21da 0E94 0000 		call setplane_y + 5694               	.L421: + 5695               	.LM579: + 5696 21de C701      		movw r24,r14 + 5697 21e0 0E94 0000 		call delay_ms + 5698               	.LM580: + 5699 21e4 2196      		adiw r28,1 + 5700 21e6 C830      		cpi r28,8 + 5701 21e8 D105      		cpc r29,__zero_reg__ + 5702 21ea 01F4      		brne .L423 + 5703 21ec C7E0      		ldi r28,lo8(7) + 5704 21ee D0E0      		ldi r29,hi8(7) + 5705               	.LVL443: + 5706               	.L427: + 5707               	.LM581: + 5708 21f0 80E0      		ldi r24,lo8(0) + 5709 21f2 0E94 0000 		call fill + 5710               	.LM582: + 5711 21f6 0A37      		cpi r16,122 + 5712 21f8 1105      		cpc r17,__zero_reg__ + 5713 21fa 01F4      		brne .L424 + 5714               	.LM583: + 5715 21fc CE01      		movw r24,r28 + 5716 21fe 0E94 0000 		call setplane_z + 5717 2202 00C0      		rjmp .L425 + 5718               	.L424: + 5719               	.LM584: + 5720 2204 0837      		cpi r16,120 + 5721 2206 1105      		cpc r17,__zero_reg__ + 5722 2208 01F4      		brne .L426 + 5723               	.LM585: + 5724 220a CE01      		movw r24,r28 + 5725 220c 0E94 0000 		call setplane_x + 5726 2210 00C0      		rjmp .L425 + 5727               	.L426: + 5728               	.LM586: + 5729 2212 0937      		cpi r16,121 + 5730 2214 1105      		cpc r17,__zero_reg__ + 5731 2216 01F4      		brne .L425 + 5732               	.LM587: + 5733 2218 CE01      		movw r24,r28 + 5734 221a 0E94 0000 		call setplane_y + 5735               	.L425: + 5736               	.LM588: + 5737 221e C701      		movw r24,r14 + 5738 2220 0E94 0000 		call delay_ms + 5739               	.LM589: + 5740 2224 2197      		sbiw r28,1 + 5741 2226 8FEF      		ldi r24,hi8(-1) + 5742 2228 CF3F      		cpi r28,lo8(-1) + 5743 222a D807      		cpc r29,r24 + 5744 222c 01F4      		brne .L427 + 5745               	/* epilogue start */ + 5746               	.LM590: + 5747 222e DF91      		pop r29 + 5748 2230 CF91      		pop r28 + 5749               	.LVL444: + 5750 2232 1F91      		pop r17 + 5751 2234 0F91      		pop r16 + 5752               	.LVL445: + 5753 2236 FF90      		pop r15 + 5754 2238 EF90      		pop r14 + 5755 223a 0895      		ret + 5756               	.LFE6: + 5758               	.global	effect_test + 5760               	effect_test: + 5761               	.LFB4: + 5762               	.LM591: + 5763 223c AF92      		push r10 + 5764 223e BF92      		push r11 + 5765 2240 CF92      		push r12 + 5766 2242 DF92      		push r13 + 5767 2244 EF92      		push r14 + 5768 2246 FF92      		push r15 + 5769 2248 0F93      		push r16 + 5770 224a 1F93      		push r17 + 5771 224c CF93      		push r28 + 5772 224e DF93      		push r29 + 5773               	/* prologue: function */ + 5774               	/* frame size = 0 */ + 5775               	.LM592: + 5776 2250 C0E0      		ldi r28,lo8(0) + 5777 2252 D0E0      		ldi r29,hi8(0) + 5778               	.LVL446: + 5779               	.L432: + 5780               	.LM593: + 5781 2254 BE01      		movw r22,r28 + 5782 2256 53E0      		ldi r21,3 + 5783 2258 7595      	1:	asr r23 + 5784 225a 6795      		ror r22 + 5785 225c 5A95      		dec r21 + 5786 225e 01F4      		brne 1b + 5787 2260 8827      		clr r24 + 5788 2262 77FD      		sbrc r23,7 + 5789 2264 8095      		com r24 + 5790 2266 982F      		mov r25,r24 + 5791 2268 0E94 0000 		call __floatsisf + 5792 226c 7B01      		movw r14,r22 + 5793 226e 8C01      		movw r16,r24 + 5794 2270 0E94 0000 		call sin + 5795 2274 9B01      		movw r18,r22 + 5796 2276 AC01      		movw r20,r24 + 5797 2278 0E94 0000 		call __addsf3 + 5798 227c 20E0      		ldi r18,lo8(0x40600000) + 5799 227e 30E0      		ldi r19,hi8(0x40600000) + 5800 2280 40E6      		ldi r20,hlo8(0x40600000) + 5801 2282 50E4      		ldi r21,hhi8(0x40600000) + 5802 2284 0E94 0000 		call __addsf3 + 5803 2288 0E94 0000 		call __fixsfsi + 5804 228c 5B01      		movw r10,r22 + 5805 228e 6C01      		movw r12,r24 + 5806               	.LM594: + 5807 2290 C801      		movw r24,r16 + 5808 2292 B701      		movw r22,r14 + 5809 2294 0E94 0000 		call cos + 5810 2298 9B01      		movw r18,r22 + 5811 229a AC01      		movw r20,r24 + 5812 229c 0E94 0000 		call __addsf3 + 5813 22a0 20E0      		ldi r18,lo8(0x40600000) + 5814 22a2 30E0      		ldi r19,hi8(0x40600000) + 5815 22a4 40E6      		ldi r20,hlo8(0x40600000) + 5816 22a6 50E4      		ldi r21,hhi8(0x40600000) + 5817 22a8 0E94 0000 		call __addsf3 + 5818 22ac 0E94 0000 		call __fixsfsi + 5819 22b0 7B01      		movw r14,r22 + 5820 22b2 8C01      		movw r16,r24 + 5821               	.LM595: + 5822 22b4 C501      		movw r24,r10 + 5823 22b6 B701      		movw r22,r14 + 5824 22b8 41E0      		ldi r20,lo8(1) + 5825 22ba 50E0      		ldi r21,hi8(1) + 5826 22bc 0E94 0000 		call setvoxel + 5827               	.LM596: + 5828 22c0 C501      		movw r24,r10 + 5829 22c2 B701      		movw r22,r14 + 5830 22c4 41E0      		ldi r20,lo8(1) + 5831 22c6 50E0      		ldi r21,hi8(1) + 5832 22c8 0E94 0000 		call setvoxel + 5833               	.LM597: + 5834 22cc 88EE      		ldi r24,lo8(1000) + 5835 22ce 93E0      		ldi r25,hi8(1000) + 5836 22d0 0E94 0000 		call delay_ms + 5837               	.LM598: + 5838 22d4 80E0      		ldi r24,lo8(0) + 5839 22d6 0E94 0000 		call fill + 5840               	.LM599: + 5841 22da 2196      		adiw r28,1 + 5842 22dc 83E0      		ldi r24,hi8(1000) + 5843 22de C83E      		cpi r28,lo8(1000) + 5844 22e0 D807      		cpc r29,r24 + 5845 22e2 01F0      		breq .+2 + 5846 22e4 00C0      		rjmp .L432 + 5847               	/* epilogue start */ + 5848               	.LM600: + 5849 22e6 DF91      		pop r29 + 5850 22e8 CF91      		pop r28 + 5851               	.LVL447: + 5852 22ea 1F91      		pop r17 + 5853 22ec 0F91      		pop r16 + 5854 22ee FF90      		pop r15 + 5855 22f0 EF90      		pop r14 + 5856 22f2 DF90      		pop r13 + 5857 22f4 CF90      		pop r12 + 5858 22f6 BF90      		pop r11 + 5859 22f8 AF90      		pop r10 + 5860 22fa 0895      		ret + 5861               	.LFE4: + 5863               		.data + 5866               	C.30.2453: + 5867 0000 00        		.byte	0 + 5868 0001 01        		.byte	1 + 5869 0002 02        		.byte	2 + 5870 0003 03        		.byte	3 + 5871 0004 04        		.byte	4 + 5872 0005 05        		.byte	5 + 5873 0006 06        		.byte	6 + 5874 0007 07        		.byte	7 + 5875 0008 01        		.byte	1 + 5876 0009 01        		.byte	1 + 5877 000a 02        		.byte	2 + 5878 000b 03        		.byte	3 + 5879 000c 04        		.byte	4 + 5880 000d 05        		.byte	5 + 5881 000e 06        		.byte	6 + 5882 000f 06        		.byte	6 + 5883 0010 02        		.byte	2 + 5884 0011 02        		.byte	2 + 5885 0012 03        		.byte	3 + 5886 0013 03        		.byte	3 + 5887 0014 04        		.byte	4 + 5888 0015 04        		.byte	4 + 5889 0016 05        		.byte	5 + 5890 0017 05        		.byte	5 + 5891 0018 03        		.byte	3 + 5892 0019 03        		.byte	3 + 5893 001a 03        		.byte	3 + 5894 001b 03        		.byte	3 + 5895 001c 04        		.byte	4 + 5896 001d 04        		.byte	4 + 5897 001e 04        		.byte	4 + 5898 001f 04        		.byte	4 + 5899               		.comm cube,64,1 + 5900               		.comm fb,64,1 + 6149               	.Letext0: +DEFINED SYMBOLS +                            *ABS*:0000000000000000 effect.c +     /tmp/ccaJZNIL.s:2      *ABS*:000000000000003f __SREG__ +     /tmp/ccaJZNIL.s:3      *ABS*:000000000000003e __SP_H__ +     /tmp/ccaJZNIL.s:4      *ABS*:000000000000003d __SP_L__ +     /tmp/ccaJZNIL.s:5      *ABS*:0000000000000034 __CCP__ +     /tmp/ccaJZNIL.s:6      *ABS*:0000000000000000 __tmp_reg__ +     /tmp/ccaJZNIL.s:7      *ABS*:0000000000000001 __zero_reg__ +     /tmp/ccaJZNIL.s:20     .text:0000000000000000 effect_telcstairs_do +                            *COM*:0000000000000040 cube +     /tmp/ccaJZNIL.s:84     .text:000000000000004a effect_telcstairs +     /tmp/ccaJZNIL.s:146    .text:000000000000008c sendvoxel_z +     /tmp/ccaJZNIL.s:255    .text:000000000000012a effect_pathmove +     /tmp/ccaJZNIL.s:374    .text:00000000000001d6 effect_path_bitmap +     /tmp/ccaJZNIL.s:562    .text:00000000000002fe effect_path_text +     /tmp/ccaJZNIL.s:762    .text:0000000000000442 effect_pathspiral +     /tmp/ccaJZNIL.s:861    .text:00000000000004dc effect_rand_patharound +     /tmp/ccaJZNIL.s:994    .text:00000000000005ae effect_stringfly2 +     /tmp/ccaJZNIL.s:1348   .text:00000000000007d0 effect_smileyspin +     /tmp/ccaJZNIL.s:5866   .data:0000000000000000 C.30.2453 +     /tmp/ccaJZNIL.s:2067   .text:0000000000000c1a effect_random_sparkle_flash +     /tmp/ccaJZNIL.s:2174   .text:0000000000000cc4 effect_random_sparkle +     /tmp/ccaJZNIL.s:2219   .text:0000000000000cfa effect_loadbar +     /tmp/ccaJZNIL.s:2349   .text:0000000000000da8 draw_positions_axis +     /tmp/ccaJZNIL.s:2504   .text:0000000000000e7c effect_boxside_randsend_parallel +     /tmp/ccaJZNIL.s:2747   .text:0000000000000ff0 effect_axis_updown_randsuspend +     /tmp/ccaJZNIL.s:2989   .text:0000000000001166 effect_z_updown_move +     /tmp/ccaJZNIL.s:3045   .text:00000000000011a4 effect_z_updown +     /tmp/ccaJZNIL.s:3270   .text:0000000000001310 effect_random_filler +     /tmp/ccaJZNIL.s:3401   .text:00000000000013e4 sendvoxels_rand_z +     /tmp/ccaJZNIL.s:3567   .text:00000000000014ce effect_blinky2 +     /tmp/ccaJZNIL.s:3687   .text:0000000000001590 effect_wormsqueeze +     /tmp/ccaJZNIL.s:3974   .text:000000000000174c effect_rain +     /tmp/ccaJZNIL.s:4078   .text:00000000000017ea boingboing +     /tmp/ccaJZNIL.s:4891   .text:0000000000001cfc sendplane_rand_z +     /tmp/ccaJZNIL.s:4974   .text:0000000000001d7a effect_box_woopwoop +     /tmp/ccaJZNIL.s:5080   .text:0000000000001e1c effect_box_shrink_grow +     /tmp/ccaJZNIL.s:5646   .text:000000000000219c effect_planboing +     /tmp/ccaJZNIL.s:5760   .text:000000000000223c effect_test +                            *COM*:0000000000000040 fb + +UNDEFINED SYMBOLS +__do_copy_data +__do_clear_bss +delay_ms +clrvoxel +setvoxel +getvoxel +altervoxel +font_getpath +font_getbitmappixel +font_getchar +rand +__divmodhi4 +fill +shift +flpvoxel +setplane_z +box_wireframe +box_filled +box_walls +setplane_x +setplane_y +__floatsisf +sin +__addsf3 +__fixsfsi +cos diff --git a/instructables/cube_pc/font.c b/instructables/cube_pc/font.c new file mode 100644 index 0000000..9868e9a --- /dev/null +++ b/instructables/cube_pc/font.c @@ -0,0 +1,158 @@ +#include "font.h" +//#include <avr/eeprom.h> + +#define EEMEM +#define PROGMEM + +volatile const unsigned char font[455] = { +	0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x5f,0x00,0x00,	//  ! +	0x00,0x03,0x00,0x03,0x00,0x14,0x7f,0x14,0x7f,0x14,	// "# +	0x24,0x2a,0x7f,0x2a,0x12,0x23,0x13,0x08,0x64,0x62,	// $% +	0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00,	// &' +	0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00,	// () +	0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,	// *+ +	0x00,0x50,0x30,0x00,0x00,0x08,0x08,0x08,0x08,0x08,	// ,- +	0x00,0x60,0x60,0x00,0x00,0x20,0x10,0x08,0x04,0x02,	// ./ +	0x3e,0x51,0x49,0x45,0x3e,0x00,0x42,0x7f,0x40,0x00,	// 01 +	0x42,0x61,0x51,0x49,0x46,0x21,0x41,0x45,0x4b,0x31,	// 23 +	0x18,0x14,0x12,0x7f,0x10,0x27,0x45,0x45,0x45,0x39,	// 45 +	0x3c,0x4a,0x49,0x49,0x30,0x01,0x71,0x09,0x05,0x03,	// 67 +	0x36,0x49,0x49,0x49,0x36,0x06,0x49,0x49,0x29,0x1e,	// 89 +	0x00,0x36,0x36,0x00,0x00,0x00,0x56,0x36,0x00,0x00,	// :; +	0x08,0x14,0x22,0x41,0x00,0x14,0x14,0x14,0x14,0x14,	// <= +	0x00,0x41,0x22,0x14,0x08,0x02,0x01,0x51,0x09,0x06,	// >? +	0x32,0x49,0x79,0x41,0x3e,0x7e,0x11,0x11,0x11,0x7e,	// @A +	0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22,	// BC +	0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41,	// DE +	0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a,	// FG +	0x7f,0x08,0x08,0x08,0x7f,0x00,0x41,0x7f,0x41,0x00,	// HI +	0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41,	// JK +	0x7f,0x40,0x40,0x40,0x40,0x7f,0x02,0x0c,0x02,0x7f,	// LM +	0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e,	// NO +	0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,	// PQ +	0x7f,0x09,0x19,0x29,0x46,0x46,0x49,0x49,0x49,0x31,	// RS +	0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,	// TU +	0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x38,0x40,0x3f,	// VW +	0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07,	// XY +	0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00,	// Z[ +	0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00,	// \] +	0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40,	// ^_ +	0x00,0x01,0x02,0x04,0x00,0x20,0x54,0x54,0x54,0x78,	// `a +	0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20,	// bc +	0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18,	// de +	0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e,	// fg +	0x7f,0x08,0x04,0x04,0x78,0x00,0x44,0x7d,0x40,0x00,	// hi +	0x20,0x40,0x44,0x3d,0x00,0x7f,0x10,0x28,0x44,0x00,	// jk +	0x00,0x41,0x7f,0x40,0x00,0x7c,0x04,0x18,0x04,0x78,	// lm +	0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38,	// no +	0x7c,0x14,0x14,0x14,0x08,0x08,0x14,0x14,0x18,0x7c,	// pq +	0x7c,0x08,0x04,0x04,0x08,0x48,0x54,0x54,0x54,0x20,	// rs +	0x04,0x3f,0x44,0x40,0x20,0x3c,0x40,0x40,0x20,0x7c,	// tu +	0x1c,0x20,0x40,0x20,0x1c,0x3c,0x40,0x30,0x40,0x3c,	// vw +	0x44,0x28,0x10,0x28,0x44,0x0c,0x50,0x50,0x50,0x3c,	// xy +	0x44,0x64,0x54,0x4c,0x44				// z +}; + + +volatile const unsigned char bitmaps[6][8] EEMEM = { +	{0xc3,0xc3,0x00,0x18,0x18,0x81,0xff,0x7e}, // smiley 3 small +	{0x3c,0x42,0x81,0x81,0xc3,0x24,0xa5,0xe7}, // Omega +	{0x00,0x04,0x06,0xff,0xff,0x06,0x04,0x00},  // Arrow +	{0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81}, // X +	{0xBD,0xA1,0xA1,0xB9,0xA1,0xA1,0xA1,0x00}, // ifi +	{0xEF,0x48,0x4B,0x49,0x4F,0x00,0x00,0x00} // TG +}; + +const unsigned char paths[44] PROGMEM = {0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x67,0x57,0x47,0x37,0x27,0x17, +0x04,0x03,0x12,0x21,0x30,0x40,0x51,0x62,0x73,0x74,0x65,0x56,0x47,0x37,0x26,0x15}; // circle, len 16, offset 28 + +void font_getpath (unsigned char path, unsigned char *destination, int length) +{ +	int i; +	int offset = 0; +	 +	if (path == 1) +		offset=28; +	 +	//for (i = 0; i < length; i++) +	//	destination[i] = pgm_read_byte(&paths[i+offset]); +} + +void font_getchar (char chr, unsigned char dst[5]) +{ +	int i; +	chr -= 32; + +    unsigned char font[455] = { +	0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x5f,0x00,0x00,	//  ! +	0x00,0x03,0x00,0x03,0x00,0x14,0x7f,0x14,0x7f,0x14,	// "# +	0x24,0x2a,0x7f,0x2a,0x12,0x23,0x13,0x08,0x64,0x62,	// $% +	0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00,	// &' +	0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00,	// () +	0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,	// *+ +	0x00,0x50,0x30,0x00,0x00,0x08,0x08,0x08,0x08,0x08,	// ,- +	0x00,0x60,0x60,0x00,0x00,0x20,0x10,0x08,0x04,0x02,	// ./ +	0x3e,0x51,0x49,0x45,0x3e,0x00,0x42,0x7f,0x40,0x00,	// 01 +	0x42,0x61,0x51,0x49,0x46,0x21,0x41,0x45,0x4b,0x31,	// 23 +	0x18,0x14,0x12,0x7f,0x10,0x27,0x45,0x45,0x45,0x39,	// 45 +	0x3c,0x4a,0x49,0x49,0x30,0x01,0x71,0x09,0x05,0x03,	// 67 +	0x36,0x49,0x49,0x49,0x36,0x06,0x49,0x49,0x29,0x1e,	// 89 +	0x00,0x36,0x36,0x00,0x00,0x00,0x56,0x36,0x00,0x00,	// :; +	0x08,0x14,0x22,0x41,0x00,0x14,0x14,0x14,0x14,0x14,	// <= +	0x00,0x41,0x22,0x14,0x08,0x02,0x01,0x51,0x09,0x06,	// >? +	0x32,0x49,0x79,0x41,0x3e,0x7e,0x11,0x11,0x11,0x7e,	// @A +	0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22,	// BC +	0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41,	// DE +	0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a,	// FG +	0x7f,0x08,0x08,0x08,0x7f,0x00,0x41,0x7f,0x41,0x00,	// HI +	0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41,	// JK +	0x7f,0x40,0x40,0x40,0x40,0x7f,0x02,0x0c,0x02,0x7f,	// LM +	0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e,	// NO +	0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,	// PQ +	0x7f,0x09,0x19,0x29,0x46,0x46,0x49,0x49,0x49,0x31,	// RS +	0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,	// TU +	0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x38,0x40,0x3f,	// VW +	0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07,	// XY +	0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00,	// Z[ +	0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00,	// \] +	0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40,	// ^_ +	0x00,0x01,0x02,0x04,0x00,0x20,0x54,0x54,0x54,0x78,	// `a +	0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20,	// bc +	0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18,	// de +	0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e,	// fg +	0x7f,0x08,0x04,0x04,0x78,0x00,0x44,0x7d,0x40,0x00,	// hi +	0x20,0x40,0x44,0x3d,0x00,0x7f,0x10,0x28,0x44,0x00,	// jk +	0x00,0x41,0x7f,0x40,0x00,0x7c,0x04,0x18,0x04,0x78,	// lm +	0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38,	// no +	0x7c,0x14,0x14,0x14,0x08,0x08,0x14,0x14,0x18,0x7c,	// pq +	0x7c,0x08,0x04,0x04,0x08,0x48,0x54,0x54,0x54,0x20,	// rs +	0x04,0x3f,0x44,0x40,0x20,0x3c,0x40,0x40,0x20,0x7c,	// tu +	0x1c,0x20,0x40,0x20,0x1c,0x3c,0x40,0x30,0x40,0x3c,	// vw +	0x44,0x28,0x10,0x28,0x44,0x0c,0x50,0x50,0x50,0x3c,	// xy +	0x44,0x64,0x54,0x4c,0x44				// z +    }; +    for (i = 0; i < 5; i++) +    { +		dst[i] = font[(chr*5)+i]; +	} +	 +} + +void font_getbitmap (char bitmap, unsigned char dst[8]) +{ +	int i; +	 +        //for (i = 0; i < 8; i++) +	//	dst[i] = eeprom_read_byte(&bitmaps[bitmap][i]); +	 +} + +unsigned char font_getbitmappixel ( char bitmap, char x, char y) +{ +	//unsigned char tmp = eeprom_read_byte(&bitmaps[bitmap][x]); +	//return (tmp >> y) & 0x01; +} + + + + diff --git a/instructables/cube_pc/font.h b/instructables/cube_pc/font.h new file mode 100644 index 0000000..1558204 --- /dev/null +++ b/instructables/cube_pc/font.h @@ -0,0 +1,13 @@ +#ifndef FONT_H +#define FONT_H + +//#include <avr/pgmspace.h> + +void font_getchar (char chr, unsigned char dst[5]); +void font_getpath (unsigned char path, unsigned char *destination, int length); +void font_getbitmap (char bitmap, unsigned char dst[8]); +unsigned char font_getbitmappixel ( char bitmap, char x, char y); + + + +#endif diff --git a/instructables/cube_pc/gameoflife.c b/instructables/cube_pc/gameoflife.c new file mode 100644 index 0000000..52d630b --- /dev/null +++ b/instructables/cube_pc/gameoflife.c @@ -0,0 +1,148 @@ +#include "gameoflife.h" +#include "cube.h" +#include "draw.h" + +// Game of Life for the 4x4x4 and 8x8x8 led cube + +// Original rules: +// live cells: +//  fewer than two neighbour: die +//  two or three neighbours: live +//  more than three neighbours: die +// dead cells: +//  exactly three live neighbours becomes alive + +// This is 3d space, so the cell can have life on two more sides. +// We have to tweak the rules a bit to make it work: + +// Create life in a dead cell if neighbours == 4 +#define GOL_CREATE_MIN 4 +#define GOL_CREATE_MAX 4 + +// Underpopulation +#define GOL_TERMINATE_LONELY 3 +// Overpopulation +#define GOL_TERMINATE_CROWDED 5 + +#define GOL_X 8 +#define GOL_Y 8 +#define GOL_Z 8 + +#define GOL_WRAP 0 + + + +void gol_play (int iterations, int delay) +{ +	int i; +	 +	for (i = 0; i < iterations; i++) +	{ +		LED_PORT ^= LED_GREEN; +	 +		gol_nextgen(); +		 +		if (gol_count_changes() == 0) +			return; +		 +		tmp2cube(); +		 +		delay_ms(delay); +		 +		//led_red(1); +	} +} + +void gol_nextgen (void) +{ +	int x,y,z; +	unsigned char neigh; +	 +	tmpfill(0x00); +	 +	for (x = 0; x < GOL_X; x++) +	{ +		for (y = 0; y < GOL_Y; y++) +		{ +			for (z = 0; z < GOL_Z; z++) +			{ +				neigh = gol_count_neighbors(x, y, z); +				 +				// Current voxel is alive. +				if (getvoxel(x,y,z) == 0x01) +				{ +					if (neigh <= GOL_TERMINATE_LONELY) +					{ +						tmpclrvoxel(x,y,z); +					} else if(neigh >= GOL_TERMINATE_CROWDED) +					{ +						tmpclrvoxel(x,y,z); +					} else +					{ +						tmpsetvoxel(x,y,z); +					} +				// Current voxel is dead. +				} else +				{ +					if (neigh >= GOL_CREATE_MIN && neigh <= GOL_CREATE_MAX) +						tmpsetvoxel(x,y,z); +				} +			} +		} +	} +} + +unsigned char gol_count_neighbors (int x, int y, int z) +{ +	int ix, iy, iz; // offset 1 in each direction in each dimension +	int nx, ny, nz; // neighbours address. +	 +	unsigned char neigh = 0; // number of alive neighbours. +	 +	for (ix = -1; ix < 2; ix++) +	{ +		for (iy = -1; iy < 2; iy++) +		{ +			for (iz = -1; iz < 2; iz++) +			{ +				// Your not your own neighbour, exclude 0,0,0, offset. +				if ( !(ix == 0 && iy == 0 && iz == 0) ) +				{ +					if (GOL_WRAP == 0x01) +					{ +						nx = (x+ix)%GOL_X; +						ny = (y+iy)%GOL_Y; +						nz = (z+iz)%GOL_Z; +					} else +					{ +						nx = x+ix; +						ny = y+iy; +						nz = z+iz; +					} +					 +					if ( getvoxel(nx, ny, nz) ) +						neigh++; +				} +			} +		} +	} +	return neigh; +} + +int gol_count_changes (void) +{ +	int x,y; +	int i = 0; +	 +	for (x = 0; x < GOL_X; x++) +	{ +		for (y = 0; y < GOL_Y; y++) +		{ +			if (fb[x][y] != cube[x][y]) +				i++; +		} +	} +	 +	return i; +} + diff --git a/instructables/cube_pc/gameoflife.h b/instructables/cube_pc/gameoflife.h new file mode 100644 index 0000000..8e88be6 --- /dev/null +++ b/instructables/cube_pc/gameoflife.h @@ -0,0 +1,9 @@ +#ifndef GOL_H +#define GOL_H + +void gol_play (int iterations, int delay); +unsigned char gol_count_neighbors (int x, int y, int z); +void gol_nextgen (void); +int gol_count_changes (void); + +#endif diff --git a/instructables/cube_pc/launch_effect.c b/instructables/cube_pc/launch_effect.c new file mode 100644 index 0000000..b49b4af --- /dev/null +++ b/instructables/cube_pc/launch_effect.c @@ -0,0 +1,182 @@ +#include "launch_effect.h" +#include "effect.h" +#include "draw.h" +#include "gameoflife.h" + +void launch_effect (int effect) +{ +	int i; +    unsigned char ii; + +	fill(0x00); + +	switch (effect) +	{ +		case 0x00: +			effect_rain(100); +			break; + + +		case 1: +			sendvoxels_rand_z(20,220,2000); +			break; + +		case 2: +			effect_random_filler(5,1); +			effect_random_filler(5,0); +			effect_random_filler(5,1); +			effect_random_filler(5,0); +			break; + +		case 3: +			effect_z_updown(20,1000); +			break; + +		case 4: +			effect_wormsqueeze (2, AXIS_Z, -1, 100, 1000); +			break; + +		case 5: +			effect_blinky2(); +			break; + +		case 6: +            for (ii=0;ii<8;ii++) +			{ +				effect_box_shrink_grow (1, ii%4, ii & 0x04, 450); +			} + +			effect_box_woopwoop(800,0); +			effect_box_woopwoop(800,1); +			effect_box_woopwoop(800,0); +			effect_box_woopwoop(800,1); +			break; + +		case 7: +			effect_planboing (AXIS_Z, 400); +			effect_planboing (AXIS_X, 400); +			effect_planboing (AXIS_Y, 400); +			effect_planboing (AXIS_Z, 400); +			effect_planboing (AXIS_X, 400); +			effect_planboing (AXIS_Y, 400); +			fill(0x00); +			break; + +		case 8: +			fill(0x00); +			effect_telcstairs(0,800,0xff); +			effect_telcstairs(0,800,0x00); +			effect_telcstairs(1,800,0xff); +			effect_telcstairs(1,800,0xff); +			break; + +		case 9: +			effect_axis_updown_randsuspend(AXIS_Z, 550,5000,0); +			effect_axis_updown_randsuspend(AXIS_Z, 550,5000,1); +			effect_axis_updown_randsuspend(AXIS_Z, 550,5000,0); +			effect_axis_updown_randsuspend(AXIS_Z, 550,5000,1); +			effect_axis_updown_randsuspend(AXIS_X, 550,5000,0); +			effect_axis_updown_randsuspend(AXIS_X, 550,5000,1); +			effect_axis_updown_randsuspend(AXIS_Y, 550,5000,0); +			effect_axis_updown_randsuspend(AXIS_Y, 550,5000,1); +			break; + +		case 10: +			effect_loadbar(700); +			break; + +		case 11: +			effect_wormsqueeze (1, AXIS_Z, 1, 100, 1000); +			break; + + +		case 12: +			effect_stringfly2("Boo !!!!"); +			break; + +		case 13: +			fill(0x00); +            // Create a random starting point for the Game of Life effect. +			for (i = 0; i < 20;i++) +			{ +				setvoxel(rand()%4,rand()%4,rand()%4); +			} + +			gol_play(20, 400); +			break; + +		case 14: +			effect_boxside_randsend_parallel (AXIS_Z, 0 , 200,1); +			delay_ms(1500); +			effect_boxside_randsend_parallel (AXIS_Z, 1 , 200,1); +			delay_ms(1500); + +			effect_boxside_randsend_parallel (AXIS_Z, 0 , 200,2); +			delay_ms(1500); +			effect_boxside_randsend_parallel (AXIS_Z, 1 , 200,2); +			delay_ms(1500); + +			effect_boxside_randsend_parallel (AXIS_Y, 0 , 200,1); +			delay_ms(1500); +			effect_boxside_randsend_parallel (AXIS_Y, 1 , 200,1); +			delay_ms(1500); +			break; + +		case 15: +			boingboing(250, 600, 0x01, 0x02); +			break; + +		case 16: +			effect_smileyspin(2,1000,0); +			break; + +		case 17: +			effect_pathspiral(100,500); +			break; + +		case 18: +			effect_path_bitmap(700,2,3); +			break; + +		case 19: +			effect_smileyspin(2,1000,1); +			break; + +		case 20: +			effect_path_text(1000,"TG"); +			break; + +		case 21: +			effect_rand_patharound(200,500); +			break; + +		case 22: +			effect_wormsqueeze (1, AXIS_Z, -1, 100, 1000); +			break; + +		case 23: +			effect_smileyspin(2,1000,2); +			break; + +		case 24: +			effect_random_sparkle(); +			break; + +		case 25: +			effect_wormsqueeze (1, AXIS_Z, -1, 100, 1000); +			break; + +		case 26: +			boingboing(250, 600, 0x01, 0x03); +			break; + +		// In case the effect number is out of range: +		default: +			effect_stringfly2("FAIL"); +			break; + + + +	} +} + diff --git a/instructables/cube_pc/launch_effect.h b/instructables/cube_pc/launch_effect.h new file mode 100644 index 0000000..072822a --- /dev/null +++ b/instructables/cube_pc/launch_effect.h @@ -0,0 +1,15 @@ +#ifndef LAUNCH_H +#define LAUNCH_H + +#include "cube.h" + +// Total number of effects +// Used in the main loop to loop through all the effects one by bone. +// Set this number one higher than the highest number inside switch() +// in launch_effect() in launch_effect.c +#define EFFECTS_TOTAL 27 + +void launch_effect (int effect); + +#endif + diff --git a/instructables/cube_pc/lisence.txt b/instructables/cube_pc/lisence.txt new file mode 100644 index 0000000..812dab5 --- /dev/null +++ b/instructables/cube_pc/lisence.txt @@ -0,0 +1,5 @@ +Created by Christian Moen (christian@lynet.no) and StÃ¥le Kristoffersen (staalekb@ifi.uio.no) 2011. + +Lisence:  http://creativecommons.org/licenses/by-nc-sa/3.0/ + +Happy hacking!! :D diff --git a/instructables/cube_pc/main.c b/instructables/cube_pc/main.c new file mode 100644 index 0000000..61e4f9a --- /dev/null +++ b/instructables/cube_pc/main.c @@ -0,0 +1,81 @@ +#include <stdio.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include "cube.h" +#include "draw.h" +#include "draw_3d.h" +#include "effect.h" +#include "gameoflife.h" +#include "launch_effect.h" + +void *cube_updater (unsigned char rs232_cube[8][8]); + +int main (int argc, char **argv) +{ + +    if (argc < 2) { +        fprintf(stderr, "Please indicate device to use.\n"); +        return 1; +    } + +	cube_init(argv[1]); + +	pthread_t cube_thread; +	int iret, i, x; + +	iret = pthread_create (&cube_thread, NULL, cube_updater, rs232_cube); + + +	while (1) +	{ +        for (i = 0; i < 0; i++) { +			effect_blinky2(); +        } +		for (i=0; i<EFFECTS_TOTAL; i++) +			launch_effect(i); + +		printf("Effect: sidewaves\n"); +		sidewaves(2000,50); + +		printf("Effect: ripples\n"); +		ripples(2000,50); + +		printf("Effect: linespin\n"); +		linespin(2000,50); + +		printf("Effect: sinelines\n"); +		sinelines(2000,50); + +		printf("Effect: spheremove\n"); +		spheremove(1500,50); + +		printf("Effect: fireworks\n"); +		fireworks(7,50,600); + +        printf("Effect: gol_play\n"); +        for (i=0; i<10; i++) +        { +            for (x=0; x<20; x++) +                setvoxel(rand()%4,rand()%4,rand()%4); + +            gol_play(50,1000); + +        } +	} + +} + +void *cube_updater (unsigned char rs232_cube[8][8]) +{ +    unsigned char pushcube[8][8]; + + +	while (1) +    { +        memcpy(pushcube, rs232_cube, 64); +		cube_push(pushcube); +    } +} + + diff --git a/instructables/cube_pc/main.h b/instructables/cube_pc/main.h new file mode 100644 index 0000000..f19cd4d --- /dev/null +++ b/instructables/cube_pc/main.h @@ -0,0 +1,4 @@ + +#include "cube.h" + + | 
