Index: branches/colonetmk2/code/projects/hunter_prey/hunter_prey.h
===================================================================
--- branches/colonetmk2/code/projects/hunter_prey/hunter_prey.h	(revision 1455)
+++ branches/colonetmk2/code/projects/hunter_prey/hunter_prey.h	(nonexistent)
@@ -1,17 +0,0 @@
-#ifndef _HUNTER_PREY_H
-#define _HUNTER_PREY_H
-
-#include <inttypes.h>
-
-/*
- * The packet structure is 2 bytes
- * byte 0 is the action, which is one of the values below
- * byte 1 is the robot id
- */
-
-#define HUNTER_PREY_ACTION_TAG 'T'
-#define HUNTER_PREY_ACTION_ACK 'A'
-
-uint8_t hunter_prey_tagged(int max_bom, int front_rangefinder);
-
-#endif
Index: branches/colonetmk2/code/projects/hunter_prey/smart_run_around_fsm.h
===================================================================
--- branches/colonetmk2/code/projects/hunter_prey/smart_run_around_fsm.h	(revision 1455)
+++ branches/colonetmk2/code/projects/hunter_prey/smart_run_around_fsm.h	(nonexistent)
@@ -1,40 +0,0 @@
-// smart_run_around_fsm.h
-// required to run Smart Run Around functions
-// declare functions and global variables
-
-#ifndef _RUN_AROUND_FSM_H_
-#define _RUN_AROUND_FSM_H_
-
-// states (robot shall never move in reverse)
-// these constants may be changed (but can't overlap) without effect
-#define SRA_FORWARD 0   // drive straight forward
-#define SRA_LEFT 1	// drive forward and to the left
-#define SRA_RIGHT 2	// drive forward and to the right
-#define SRA_SPIN 3	// turn without traveling (last resort if otherwise stuck)
-
-/* conditions on rangefinders (in mm) informing state changes
- * distances are 50 greater than in real life, cannot be smaller than 100
- * naming format: SENSOR_URGENCY
- * changing these constants affects robot operation
- */
-#define IR2_DANGER 150	// 10 cm: dangerously close to front
-#define IR13_DANGER 200 // 15 cm: dangerously close to sides (looking ahead)
-#define IR2_INTEREST 300    // 25 cm: notably close to front
-#define IR45_DANGER 150	// dangerously close to side (looking sideways)
-
-uint8_t state;	// current state of FSM: SRA_FORWARD, SRA_LEFT, SRA_RIGHT, SRA_SPIN
-int16_t d1, d2, d3, d4, d5; // values returned by rangefinders
-
-// initialize rangefinders and global variables
-void run_around_init(void);
-
-/* evaluate rangefinder input and update state
- * call this function as often as possible to avoid collisions
- */
-void run_around_FSM(void);
-
-// behave according to current state
-void evaluate_state(void);
-
-#endif
-

Property changes on: branches/colonetmk2/code/projects/hunter_prey/smart_run_around_fsm.h
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/hunter_prey/Makefile
===================================================================
--- branches/colonetmk2/code/projects/hunter_prey/Makefile	(revision 1455)
+++ branches/colonetmk2/code/projects/hunter_prey/Makefile	(nonexistent)
@@ -1,520 +0,0 @@
-########Update This Section########
-#
-#
-
-# Relative path to the root directory (containing lib directory)
-ifndef COLONYROOT
-COLONYROOT = ../../..
-endif
-
-# Target file name (without extension).
-TARGET = main
-
-# Uncomment this to use the wireless library
-USE_WIRELESS = 1
-
-# com1 = serial port. Use lpt1 to connect to parallel port.
-AVRDUDE_PORT = $(shell if uname -s |grep -i w32 >/dev/null; then echo 'COM4:'; else echo '/dev/ttyUSB0'; fi)
-
-#
-###################################
-
-# Hey Emacs, this is a -*- makefile -*-
-#----------------------------------------------------------------------------
-# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
-#
-# Released to the Public Domain
-#
-# Additional material for this makefile was written by:
-# Peter Fleury
-# Tim Henigan
-# Colin O'Flynn
-# Reiner Patommel
-# Markus Pfaff
-# Sander Pool
-# Frederik Rouleau
-#
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make coff = Convert ELF to AVR COFF.
-#
-# make extcoff = Convert ELF to AVR Extended COFF.
-#
-# make program = Download the hex file to the device, using avrdude.
-#                Please customize the avrdude settings below first!
-#
-# make debug = Start either simulavr or avarice as specified for debugging,
-#              with avr-gdb or avr-insight as the front end for debugging.
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
-#if you want your code to work on the Firefly++ and not Firefly+
-#then add the -DFFPP line to CDEFS
-CDEFS =
-#-DFFPP
-
-# MCU name
-MCU = atmega128
-
-# Processor frequency.
-#     This will define a symbol, F_CPU, in all source code files equal to the
-#     processor frequency. You can then use this symbol in your source code to
-#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-#     automatically to create a 32-bit value in your source code.
-F_CPU = 8000000
-
-# Output format. (can be srec, ihex, binary)
-FORMAT = ihex
-
-# List C source files here. (C dependencies are automatically generated.)
-SRC = $(wildcard *.c)
-
-# List Assembler source files here.
-#     Make them always end in a capital .S.  Files ending in a lowercase .s
-#     will not be considered source files but generated files (assembler
-#     output from the compiler), and will be deleted upon "make clean"!
-#     Even though the DOS/Win* filesystem matches both .s and .S the same,
-#     it will preserve the spelling of the filenames, and gcc itself does
-#     care about how the name is spelled on its command-line.
-ASRC =
-
-# Optimization level, can be [0, 1, 2, 3, s].
-#     0 = turn off optimization. s = optimize for size.
-#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
-OPT = s
-
-# Debugging format.
-#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
-#     AVR Studio 4.10 requires dwarf-2.
-#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
-DEBUG =
-
-# Compiler flag to set the C Standard level.
-#     c89   = "ANSI" C
-#     gnu89 = c89 plus GCC extensions
-#     c99   = ISO C99 standard (not yet fully implemented)
-#     gnu99 = c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-
-# Place -D or -U options here
-CDEFS += -DF_CPU=$(F_CPU)UL
-CDEFS += -DFFP
-# for wireless library
-ifdef USE_WIRELESS
-	CDEFS += -DROBOT
-endif
-
-# Place -I, -L options here
-CINCS = -I$(COLONYROOT)/code/lib/include/libdragonfly
-CINCS += -L$(COLONYROOT)/code/lib/bin
-ifdef USE_WIRELESS
-	CINCS += -I$(COLONYROOT)/code/lib/include/libwireless
-endif
-
-#---------------- Compiler Options ----------------
-#  -g*:          generate debugging information
-#  -O*:          optimization level
-#  -f...:        tuning, see GCC manual and avr-libc documentation
-#  -Wall...:     warning level
-#  -Wa,...:      tell GCC to pass this to the assembler.
-#    -adhlns...: create assembler listing
-CFLAGS =
-# CFLAGS = -g$(DEBUG)
-CFLAGS += $(CDEFS) $(CINCS)
-CFLAGS += -O$(OPT)
-CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
-CFLAGS += -Wall -Wstrict-prototypes
-CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
-CFLAGS += $(CSTANDARD)
-
-#---------------- Assembler Options ----------------
-#  -Wa,...:   tell GCC to pass this to the assembler.
-#  -ahlms:    create listing
-#  -gstabs:   have the assembler create line number information; note that
-#             for use in COFF files, additional information about filenames
-#             and function names needs to be present in the assembler source
-#             files -- see avr-libc docs [FIXME: not yet described there]
-ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
-
-
-#---------------- Library Options ----------------
-# Minimalistic printf version
-PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
-
-# Floating point printf version (requires MATH_LIB = -lm below)
-PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
-
-# If this is left blank, then it will use the Standard printf version.
-#PRINTF_LIB =
-#PRINTF_LIB = $(PRINTF_LIB_MIN)
-PRINTF_LIB = $(PRINTF_LIB_FLOAT)
-
-
-# Minimalistic scanf version
-SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
-
-# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
-SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
-
-# If this is left blank, then it will use the Standard scanf version.
-SCANF_LIB =
-#SCANF_LIB = $(SCANF_LIB_MIN)
-#SCANF_LIB = $(SCANF_LIB_FLOAT)
-
-MATH_LIB = -lm
-
-#---------------- External Memory Options ----------------
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# used for variables (.data/.bss) and heap (malloc()).
-#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# only used for heap (malloc()).
-#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
-
-EXTMEMOPTS =
-
-#---------------- Linker Options ----------------
-#  -Wl,...:     tell GCC to pass this to linker.
-#    -Map:      create map file
-#    --cref:    add cross reference to  map file
-LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
-LDFLAGS += $(EXTMEMOPTS)
-LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
-ifdef USE_WIRELESS
-	LDFLAGS += -lwireless
-endif
-LDFLAGS += -ldragonfly
-
-
-
-#---------------- Programming Options (avrdude) ----------------
-
-# Programming hardware: alf avr910 avrisp bascom bsd
-# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
-#
-# Type: avrdude -c ?
-# to get a full listing.
-#
-AVRDUDE_PROGRAMMER = avrisp
-
-# programmer connected to serial device
-
-AVRDUDE_WRITE_FLASH = -b 57600 -U flash:w:$(TARGET).hex
-#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
-
-
-# Uncomment the following if you want avrdude's erase cycle counter.
-# Note that this counter needs to be initialized first using -Yn,
-# see avrdude manual.
-#AVRDUDE_ERASE_COUNTER = -y
-
-# Uncomment the following if you do /not/ wish a verification to be
-# performed after programming the device.
-#AVRDUDE_NO_VERIFY = -V
-
-# Increase verbosity level.  Please use this when submitting bug
-# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
-# to submit bug reports.
-#AVRDUDE_VERBOSE = -v -v
-
-AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
-AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
-AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
-AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
-
-#don't check for device signature
-AVRDUDE_FLAGS += -F
-
-
-
-#---------------- Debugging Options ----------------
-
-# For simulavr only - target MCU frequency.
-DEBUG_MFREQ = $(F_CPU)
-
-# Set the DEBUG_UI to either gdb or insight.
-# DEBUG_UI = gdb
-DEBUG_UI = insight
-
-# Set the debugging back-end to either avarice, simulavr.
-DEBUG_BACKEND = avarice
-#DEBUG_BACKEND = simulavr
-
-# GDB Init Filename.
-GDBINIT_FILE = __avr_gdbinit
-
-# When using avarice settings for the JTAG
-JTAG_DEV = /dev/com1
-
-# Debugging port used to communicate between GDB / avarice / simulavr.
-DEBUG_PORT = 4242
-
-# Debugging host used to communicate between GDB / avarice / simulavr, normally
-#     just set to localhost unless doing some sort of crazy debugging when
-#     avarice is running on a different computer.
-DEBUG_HOST = localhost
-
-
-
-#============================================================================
-
-
-# Define programs and commands.
-SHELL = sh
-CC = avr-gcc
-OBJCOPY = avr-objcopy
-OBJDUMP = avr-objdump
-SIZE = avr-size
-NM = avr-nm
-AVRDUDE = avrdude
-REMOVE = rm -f
-REMOVEDIR = rm -rf
-COPY = cp
-WINSHELL = cmd
-
-
-# Define Messages
-# English
-MSG_ERRORS_NONE = Errors: none
-MSG_BEGIN = -------- begin --------
-MSG_END = --------  end  --------
-MSG_SIZE_BEFORE = Size before:
-MSG_SIZE_AFTER = Size after:
-MSG_COFF = Converting to AVR COFF:
-MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
-MSG_FLASH = Creating load file for Flash:
-MSG_EEPROM = Creating load file for EEPROM:
-MSG_EXTENDED_LISTING = Creating Extended Listing:
-MSG_SYMBOL_TABLE = Creating Symbol Table:
-MSG_LINKING = Linking:
-MSG_COMPILING = Compiling:
-MSG_ASSEMBLING = Assembling:
-MSG_CLEANING = Cleaning project:
-
-
-
-
-# Define all object files.
-OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
-
-# Define all listing files.
-LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)
-
-
-# Compiler flags to generate dependency files.
-GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
-
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-
-
-
-# Default target.
-all: begin gccversion sizebefore build sizeafter end
-
-build: elf hex eep lss sym
-
-elf: $(TARGET).elf
-hex: $(TARGET).hex
-eep: $(TARGET).eep
-lss: $(TARGET).lss
-sym: $(TARGET).sym
-
-
-
-# Eye candy.
-# AVR Studio 3.x does not check make's exit code but relies on
-# the following magic strings to be generated by the compile job.
-begin:
-	@echo
-	@echo $(MSG_BEGIN)
-
-end:
-	@echo $(MSG_END)
-	@echo
-
-
-# Display size of file.
-HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
-ELFSIZE = $(SIZE) -A $(TARGET).elf
-AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
-
-sizebefore:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-sizeafter:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-
-
-# Display compiler version information.
-gccversion :
-	@$(CC) --version
-
-
-
-# Program the device.
-program: $(TARGET).hex $(TARGET).eep
-	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
-
-
-# Generate avr-gdb config/init file which does the following:
-#     define the reset signal, load the target file, connect to target, and set
-#     a breakpoint at main().
-gdb-config:
-	@$(REMOVE) $(GDBINIT_FILE)
-	@echo define reset >> $(GDBINIT_FILE)
-	@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
-	@echo end >> $(GDBINIT_FILE)
-	@echo file $(TARGET).elf >> $(GDBINIT_FILE)
-	@echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
-ifeq ($(DEBUG_BACKEND),simulavr)
-	@echo load  >> $(GDBINIT_FILE)
-endif
-	@echo break main >> $(GDBINIT_FILE)
-
-debug: gdb-config $(TARGET).elf
-ifeq ($(DEBUG_BACKEND), avarice)
-	@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
-	@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
-	$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
-	@$(WINSHELL) /c pause
-
-else
-	@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
-	$(DEBUG_MFREQ) --port $(DEBUG_PORT)
-endif
-	@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
-
-
-
-
-# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
-COFFCONVERT=$(OBJCOPY) --debugging \
---change-section-address .data-0x800000 \
---change-section-address .bss-0x800000 \
---change-section-address .noinit-0x800000 \
---change-section-address .eeprom-0x810000
-
-
-coff: $(TARGET).elf
-	@echo
-	@echo $(MSG_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
-
-
-extcoff: $(TARGET).elf
-	@echo
-	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
-
-
-
-# Create final output files (.hex, .eep) from ELF output file.
-%.hex: %.elf
-	@echo
-	@echo $(MSG_FLASH) $@
-	$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
-
-%.eep: %.elf
-	@echo
-	@echo $(MSG_EEPROM) $@
-	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
-	--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
-
-# Create extended listing file from ELF output file.
-%.lss: %.elf
-	@echo
-	@echo $(MSG_EXTENDED_LISTING) $@
-	$(OBJDUMP) -h -S $< > $@
-
-# Create a symbol table from ELF output file.
-%.sym: %.elf
-	@echo
-	@echo $(MSG_SYMBOL_TABLE) $@
-	$(NM) -n $< > $@
-
-
-
-# Link: create ELF output file from object files.
-.SECONDARY : $(TARGET).elf
-.PRECIOUS : $(OBJ)
-%.elf: $(OBJ)
-	@echo
-	@echo $(MSG_LINKING) $@
-	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
-
-
-# Compile: create object files from C source files.
-%.o : %.c
-	@echo
-	@echo $(MSG_COMPILING) $<
-	$(CC) -c $(ALL_CFLAGS) $< -o $@
-
-
-# Compile: create assembler files from C source files.
-%.s : %.c
-	$(CC) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files.
-%.o : %.S
-	@echo
-	@echo $(MSG_ASSEMBLING) $<
-	$(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-# Create preprocessed source for use in sending a bug report.
-%.i : %.c
-	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
-
-
-# Target: clean project.
-clean: begin clean_list end
-
-clean_list :
-	@echo
-	@echo $(MSG_CLEANING)
-	$(REMOVE) $(TARGET).hex
-	$(REMOVE) $(TARGET).eep
-	$(REMOVE) $(TARGET).cof
-	$(REMOVE) $(TARGET).elf
-	$(REMOVE) $(TARGET).map
-	$(REMOVE) $(TARGET).sym
-	$(REMOVE) $(TARGET).lss
-	$(REMOVE) $(OBJ)
-	$(REMOVE) $(LST)
-	$(REMOVE) $(SRC:.c=.s)
-	$(REMOVE) $(SRC:.c=.d)
-	$(REMOVEDIR) .dep
-
-
-
-# Include the dependency files.
--include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
-
-
-# Listing of phony targets.
-.PHONY : all begin finish end sizebefore sizeafter gccversion \
-build elf hex eep lss sym coff extcoff \
-clean clean_list program debug gdb-config
-
Index: branches/colonetmk2/code/projects/hunter_prey/testbench/main.c
===================================================================
--- branches/colonetmk2/code/projects/hunter_prey/testbench/main.c	(revision 1455)
+++ branches/colonetmk2/code/projects/hunter_prey/testbench/main.c	(nonexistent)
@@ -1,176 +0,0 @@
-/* testbench for Lab 2 first checkpoint
- * determine whether robot under test complies with communication standard
- * to be conducted using XBee USB dongle
- */
-
-/* The tests shall be as follows
- * 1. Receive a TAG, send an ACK
- * - Robot passes if it sends a tag and changes to prey state
- * 2. Send a TAG, receive an ACK
- * - Pass if sends ACK, changes to wait state, then hunter state
- * 3. Receive TAG, send slightly delayed (< 1s) ACK
- * - Pass if sends one and only one TAG packet (and changes state appropriately)
- * 4. Receive TAG, do not send ACK
- * - Pass if sends one and only one TAG packet (and does not change state)
- * 5. Receive TAG, send ACK to incorrect robot
- * - Pass if goes to wait state, then back to hunter state
- * 6. Simulate TAG from robot A to B, ACK from B to A
- * - Pass if ignores TAG, goes to wait then hunter in response to ACK
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include "../../libwireless/lib/wl_basic.h"
-#include "../../libwireless/lib/wireless.h"
-#include "hunter_prey.h"
-
-#define CHANNEL 0xF // channel for wireless communication
-#define TYPE 42	// packet type for wireless communication
-#define ROBOTID 255 // make up a robot id because the PC doesn't have one
-
-int main(int argc, char *argv[])
-{
-    char send_buffer[2];    // holds data to send
-    int data_length;	// length of data received
-    unsigned char *packet_data;	// data received
-
-    // set up wireless
-    wl_basic_init_default();
-    wl_set_channel(CHANNEL);
-    wl_set_com_port("/dev/ttyUSB0");
-
-    printf("Testing communications\n\n");
-
-    // Receive TAG, send ACK
-    printf("Receive TAG, send ACK... ");
-    fflush(stdout);
-    // Wait until we receive a packet
-    while (!(packet_data = wl_basic_do_default(&data_length)));
-
-    if (data_length > 2)
-    {
-	printf("Excessive TAG packet length... ");
-	fflush(stdout);
-    }
-
-    if (data_length >= 2 && packet_data[0] == HUNTER_PREY_ACTION_TAG)
-    {
-	// send back an ACK
-	send_buffer[0] = HUNTER_PREY_ACTION_ACK;
-	send_buffer[1] = packet_data[1];
-	wl_basic_send_global_packet(TYPE, send_buffer, 2);
-
-	printf("PASSED\n");
-    }
-    else
-	printf("FAILED\n");
-
-    // Send a TAG, receive an ACK
-    printf("Send TAG, wait for ACK... ");
-    fflush(stdout);
-
-    send_buffer[0] = HUNTER_PREY_ACTION_TAG;
-    send_buffer[1] = ROBOTID;
-    // robot number stays the same
-    wl_basic_send_global_packet(TYPE, send_buffer, 2);
-
-    // Wait for an ACK
-    usleep(800000);  // wait for 800 ms before sending ACK
-    packet_data = wl_basic_do_default(&data_length);
-
-    // Check ACK for presence and correctness
-    if (!packet_data || data_length < 2 ||
-	    packet_data[0] != HUNTER_PREY_ACTION_ACK ||
-	    packet_data[1] != ROBOTID)
-	printf("FAILED\n");
-    else
-	printf("PASSED\n");
-
-    // Receive a TAG, send a delayed ACK
-    printf("Receive a TAG, send a delayed ACK... ");
-    fflush(stdout);
-
-    while (!(packet_data = wl_basic_do_default(&data_length)));
-
-    if (data_length >= 2 && packet_data[0] == HUNTER_PREY_ACTION_TAG)
-    {
-	// wait before sending ACK back
-	usleep(900000);
-
-	if (wl_basic_do_default(&data_length))
-	    printf("FAILED\n");
-	else
-	{
-	    // send packet
-	    send_buffer[0] = HUNTER_PREY_ACTION_ACK;
-	    send_buffer[1] = packet_data[1];
-	    wl_basic_send_global_packet(TYPE, send_buffer, 2);
-
-	    printf("PASSED\n");
-	}
-    }
-
-    else
-	printf("FAILED\n");
-
-    // Receive a TAG, never send an ACK
-    printf("Receive TAG, never send ACK... ");
-    fflush(stdout);
-
-    while (!(packet_data = wl_basic_do_default(&data_length)));
-
-    if (data_length >= 2 && packet_data[0] == HUNTER_PREY_ACTION_TAG)
-    {
-	usleep(5000000);    // wait 5 seconds to see if they TAG again
-
-	if (wl_basic_do_default(&data_length))
-	    printf("FAILED\n");
-	else
-	    printf("PASSED\n");
-    }
-
-    else
-	printf("FAILED\n");
-
-    // Receive TAG, send ACK to incorrect robot
-    printf("Receive TAG, send ACK to incorrect robot... ");
-    fflush(stdout);
-
-    // Wait until we receive a packet
-    while (!(packet_data = wl_basic_do_default(&data_length)));
-
-    if (data_length >= 2 && packet_data[0] == HUNTER_PREY_ACTION_TAG)
-    {
-	// send back an ACK
-	send_buffer[0] = HUNTER_PREY_ACTION_ACK;
-	send_buffer[1] = packet_data[1] + 1;
-	wl_basic_send_global_packet(TYPE, send_buffer, 2);
-
-	printf("PASSED\n");
-    }
-    else
-	printf("FAILED\n");
-
-    // Simulate TAG from robot A to B, ACK from robot B to A
-    printf("Send TAG from robot A to B, ACK from B to A... ");
-    fflush(stdout);
-
-    // TAG
-    send_buffer[0] = HUNTER_PREY_ACTION_TAG;
-    send_buffer[1] = packet_data[1] - 1;    // robot other than testee
-    wl_basic_send_global_packet(TYPE, send_buffer, 2);
-
-    // ACK
-    send_buffer[0] = HUNTER_PREY_ACTION_ACK;
-    // send_buffer[1] stays the same
-    wl_basic_send_global_packet(TYPE, send_buffer, 2);
-
-    if (wl_basic_do_default(&data_length))
-	printf("FAILED\n");
-    else
-	printf("PASSED\n");
-
-    return 0;
-}
-
Index: branches/colonetmk2/code/projects/hunter_prey/testbench/hunter_prey.c
===================================================================
--- branches/colonetmk2/code/projects/hunter_prey/testbench/hunter_prey.c	(revision 1455)
+++ branches/colonetmk2/code/projects/hunter_prey/testbench/hunter_prey.c	(nonexistent)
@@ -1,43 +0,0 @@
-#include "hunter_prey.h"
-#include <dragonfly_lib.h>
-
-#define TAG_TIME 3
-#define TAG_RANGE 200
-
-/**** This file should not be edited! ****/
-
-
-/*
- * The criteria for tagging are the following:
- *   * The max bom is betweed 1 and 7
- *   * The front rangefinder reads less than TAG_RANGE
- *   * -1 values from the rangefinder are ignored
- *   * These conditions are met across TAG_TIME calls to this function
- */
-
-uint8_t hunter_prey_tagged(int max_bom, int frontRange) {
-
-  static int onTarget = 0;
-
-  if(max_bom < 7 && max_bom > 1 && frontRange > 0 && frontRange < TAG_RANGE) {
-    if(onTarget == 0) {
-      onTarget = TAG_TIME;
-      usb_puts("On target!\n");
-    }
-    else {
-      if(--onTarget <= 0) {
-	onTarget = 0;
-	usb_puts("TAG!\n");
-	return 1;
-      }
-    }
-  }
-  else{
-    //don't reset onTarget because the robot got too close
-    if(frontRange > 0)
-      onTarget = 0;
-  }
-
-  return 0;
-
-}
Index: branches/colonetmk2/code/projects/hunter_prey/testbench/hunter_prey.h
===================================================================
--- branches/colonetmk2/code/projects/hunter_prey/testbench/hunter_prey.h	(revision 1455)
+++ branches/colonetmk2/code/projects/hunter_prey/testbench/hunter_prey.h	(nonexistent)
@@ -1,17 +0,0 @@
-#ifndef _HUNTER_PREY_H
-#define _HUNTER_PREY_H
-
-#include <inttypes.h>
-
-/*
- * The packet structure is 2 bytes
- * byte 0 is the action, which is one of the values below
- * byte 1 is the robot id
- */
-
-#define HUNTER_PREY_ACTION_TAG 'T'
-#define HUNTER_PREY_ACTION_ACK 'A'
-
-uint8_t hunter_prey_tagged(int max_bom, int front_rangefinder);
-
-#endif
Index: branches/colonetmk2/code/projects/hunter_prey/testbench/Makefile
===================================================================
--- branches/colonetmk2/code/projects/hunter_prey/testbench/Makefile	(revision 1455)
+++ branches/colonetmk2/code/projects/hunter_prey/testbench/Makefile	(nonexistent)
@@ -1,11 +0,0 @@
-CC = gcc
-CFLAGS = -Wall -g
-
-all: testbench
-
-testbench: *.c ../../libwireless/lib/*.c 
-	$(CC) $(CFLAGS) *.c -L../../libwireless/lib -o testbench -DWL_DEBUG -lwireless -lpthread -ggdb
-
-clean:
-	rm -f *.o testbench ../lib/*.o
-
Index: branches/colonetmk2/code/projects/hunter_prey/main.c
===================================================================
--- branches/colonetmk2/code/projects/hunter_prey/main.c	(revision 1455)
+++ branches/colonetmk2/code/projects/hunter_prey/main.c	(nonexistent)
@@ -1,258 +0,0 @@
-#include <dragonfly_lib.h>
-#include <wireless.h>
-#include <wl_basic.h>
-#include "smart_run_around_fsm.h"
-#include "hunter_prey.h"
-
-#define CHAN 0xF
-#define TAG_PAUSE 2000
-
-#define ROBOT_HUNTER 0
-#define ROBOT_PREY 1
-#define ROBOT_TAGGED 2
-
-void packet_receive(char type, int source, unsigned char* packet, int length);
-
-volatile uint8_t robotState = ROBOT_HUNTER;
-volatile uint8_t color1, color2;
-volatile uint8_t tagAck;
-volatile uint8_t tagger;
-uint8_t id;
-
-void test_bom(void) {
-  int i;
-  int val;
-
-  while(1) {
-    bom_refresh(BOM_ALL);
-
-    for(i=0; i<16; i++) {
-      val = bom_get(i);
-      usb_puti(val);
-      usb_putc(' ');
-    }
-
-    usb_puts("| ");
-
-    usb_puti(range_read_distance (IR1));
-    usb_putc(' ');
-    usb_puti(range_read_distance (IR2));
-    usb_putc(' ');
-    usb_puti(range_read_distance (IR3));
-    usb_putc(' ');
-    usb_puti(range_read_distance (IR4));
-    usb_putc(' ');
-    usb_puti(range_read_distance (IR5));
-
-    usb_putc('\n');
-    delay_ms(500);
-  }
-
-}
-
-void chase(uint8_t angle) {
-
-  int omega = angle - 4;
-
-  if(angle > 16)
-    return;
-
-  if(omega >  8)
-    omega = omega - 16;
-
-  omega *= 255/8;
-
-/*   usb_puti(omega); */
-/*   usb_putc('\n'); */
-
-  move(140, omega);
-
-}
-
-int main(void) {
-
-  int frontRange;
-  uint8_t angle;
-  unsigned char packet[2];
-  
-  //intialize the robot and wireless
-  dragonfly_init(ALL_ON);
-
-  //  test_bom();
-
-  id = get_robotid();
-  packet[1] = id;
-  usb_puts("hello, I am robot \n");
-  usb_puti(id);
-  usb_putc('\n');
-
-  usb_puts("wireless.\n");
-
-  wl_basic_init(&packet_receive);
-
-  usb_puts("run around.\n");
-
-  run_around_init();
-
-  usb_puts("channel\n");
-
-  //use a specific channel to avoid interfering with other tasks
-  wl_set_channel(CHAN);
-
-  usb_puts("orb set\n");
-
-  orb_set_color(BLUE);
-  color1 = BLUE;
-  color2 = BLUE;
-
-  //if button 2 is held, you are prey
-  if(button2_read()) {
-    robotState = ROBOT_PREY;
-    bom_on();
-  }
-
-
-  while(1) {
-
-    if(robotState==ROBOT_TAGGED) {
-      usb_puts("tagged, waiting to send ACK\n");
-      delay_ms(TAG_PAUSE);
-      move(0,0);
-      usb_puts("sending ACK to ");
-      usb_puti(tagger);
-      usb_putc('\n');
-      packet[0] = HUNTER_PREY_ACTION_ACK;
-      packet[1] = tagger;
-      wl_basic_send_global_packet (0, &packet, 2);
-      usb_puts("sent\n");
-      robotState = ROBOT_HUNTER; //no longer prey
-    }
-
-    else if(robotState == ROBOT_PREY) {
-      run_around_FSM();
-    }
-
-    else { //ROBOT_HUNTER
-
-      bom_refresh(BOM_ALL);
-
-      delay_ms(100);
-
-      frontRange = range_read_distance (IR2);
-
-/*       usb_puti(frontRange); */
-/*       usb_putc(','); */
-
-      //BUG: when get_max_bom is called, the rangefinder seems to stop
-      //working
-      angle = bom_get_max();
-/*       usb_puti(angle); */
-/*       usb_putc('\n'); */
-
-      chase(angle);
-
-      //debugging to determine tagging conditions
-      if(angle < 7 && angle > 1) {
-	if(color1 != RED) {
-	  color1 = RED;
-	  orb1_set_color(RED);
-	}
-      }
-      else {
-	if(color1 != BLUE) {
-	  color1 = BLUE;
-	  orb1_set_color(BLUE);
-	}
-      }
-
-
-      usb_puti(frontRange);
-      usb_putc('\n');
-
-/*       if(frontRange > 0 && frontRange < TAG_RANGE) { */
-/* 	if(color2 != RED) { */
-/* 	  color2 = RED; */
-/* 	  orb2_set_color(RED); */
-/* 	} */
-/*       } */
-/*       else { */
-/* 	if(color2 != BLUE) { */
-/* 	  color2 = BLUE; */
-/* 	  orb2_set_color(BLUE); */
-/* 	} */
-/*       } */
-
-
-
-      if(hunter_prey_tagged(angle, frontRange)) {
-	orb_set_color(YELLOW);
-	color1 = YELLOW;
-	color2 = YELLOW;
-	usb_puts("TAG!\n");
-	tagAck = 0;
-	packet[0] = HUNTER_PREY_ACTION_TAG;
-	packet[1] = id;
-	wl_basic_send_global_packet (0, &packet, 2);
-	move(0,0);
-	while(!tagAck)
-	  wl_do();
-
-	if(tagAck == id) { //if the ack was for us
-	  usb_puts("ACK!\n");
-	      
-	  move(-230,0); //back up to give the new prey some room
-	  delay_ms(TAG_PAUSE/2);
-	  move(0,0);
-
-	  robotState = ROBOT_PREY;
-	  bom_on();
-	}
-	else {
-	  usb_puts("ACK failed!\n");
-	}
-      }
-    }
-
-    wl_do();
-  }
-  
-  return 0;
-}
-
-void packet_receive(char type, int source, unsigned char* packet, int length)
-{
-
-  if(type==0 && length>=2){
-    if(packet[0] == HUNTER_PREY_ACTION_TAG) {
-      if(robotState == ROBOT_PREY) {
-	robotState = ROBOT_TAGGED;
-	bom_off();
-	color1 = BLUE;
-	color2 = BLUE;
-	orb_set_color(BLUE);
-	tagger = packet[1];
-      }
-      else {
-	usb_puts("tagged, but I'm not it!\n");
-      }
-    }
-    else if(packet[0] == HUNTER_PREY_ACTION_ACK && robotState == ROBOT_HUNTER) {
-      tagAck = packet[1];
-    }
-    else {
-      usb_puts("got '");
-      usb_putc(packet[0]);
-      usb_puti(packet[1]);
-      usb_puts("'\n");
-    }
-  }
-  else {
-    usb_puts("got unkown packet! type=");
-    usb_puti(type);
-    usb_puts(" length=");
-    usb_puti(length);
-    usb_putc('\n');
-  }
-}
-
-#define HP_BUF_IDX_ACTION 0
Index: branches/colonetmk2/code/projects/hunter_prey/hunter_prey.c
===================================================================
--- branches/colonetmk2/code/projects/hunter_prey/hunter_prey.c	(revision 1455)
+++ branches/colonetmk2/code/projects/hunter_prey/hunter_prey.c	(nonexistent)
@@ -1,43 +0,0 @@
-#include "hunter_prey.h"
-#include <dragonfly_lib.h>
-
-#define TAG_TIME 3
-#define TAG_RANGE 200
-
-/**** This file should not be edited! ****/
-
-
-/*
- * The criteria for tagging are the following:
- *   * The max bom is betweed 1 and 7
- *   * The front rangefinder reads less than TAG_RANGE
- *   * -1 values from the rangefinder are ignored
- *   * These conditions are met across TAG_TIME calls to this function
- */
-
-uint8_t hunter_prey_tagged(int max_bom, int frontRange) {
-
-  static int onTarget = 0;
-
-  if(max_bom < 7 && max_bom > 1 && frontRange > 0 && frontRange < TAG_RANGE) {
-    if(onTarget == 0) {
-      onTarget = TAG_TIME;
-      usb_puts("On target!\n");
-    }
-    else {
-      if(--onTarget <= 0) {
-	onTarget = 0;
-	usb_puts("TAG!\n");
-	return 1;
-      }
-    }
-  }
-  else{
-    //don't reset onTarget because the robot got too close
-    if(frontRange > 0)
-      onTarget = 0;
-  }
-
-  return 0;
-
-}
Index: branches/colonetmk2/code/projects/hunter_prey/smart_run_around_fsm.c
===================================================================
--- branches/colonetmk2/code/projects/hunter_prey/smart_run_around_fsm.c	(revision 1455)
+++ branches/colonetmk2/code/projects/hunter_prey/smart_run_around_fsm.c	(nonexistent)
@@ -1,109 +0,0 @@
-#include <dragonfly_lib.h>
-#include "smart_run_around_fsm.h"
-
-void run_around_init(void)
-{
-  range_init();
-  orb_init();
- 
-  state = SRA_FORWARD;  // start out moving forward
-  // initialize rangefinder values to 0
-  d1 = 0, d2 = 0, d3 = 0, d4 = 0, d5 = 0;
-}
-
-/* evaluate rangefinder input and update state
- * call this function as often as possible to avoid collisions
- */
-void run_around_FSM(void)
-{
-    /* TODO: find a better way to handle rangefinder input
-     * robot should deal with -1s (obstacles too close or too far to detect)
-     * in a way that keeps it from crashing or driving in circles
-     */
-    // do not update distances when rangefinders return -1
-    // otherwise update distances with new rangefinder values
-    int16_t temp;
-
-    temp = range_read_distance(IR1);
-    d1 = (temp == -1) ? d1 : temp;
-
-    temp = range_read_distance(IR2);
-    d2 = (temp == -1) ? d2 : temp;
-
-    temp = range_read_distance(IR3);
-    d3 = (temp == -1) ? d3 : temp;
-
-    temp = range_read_distance(IR4);
-    d4 = (temp == -1) ? d4 : temp;
-
-    temp = range_read_distance(IR5);
-    d5 = (temp == -1) ? d5 : temp;
-
-    // update state based on rangefinder input
-    if (d2 < IR2_DANGER)    // avoid frontal collision by turning in place
-	state = SRA_SPIN;
-    /* nowhere to turn, so don't
-     * will probably need to turn around soon, but not yet
-     */
-    else if (d1 < IR13_DANGER && d3 < IR13_DANGER)
-	state = SRA_FORWARD;
-    // avoid left-side collision by turning right
-    else if (d1 < IR13_DANGER || d5 < IR45_DANGER)
-	state = SRA_RIGHT;
-    // avoid right-side collision by turning left
-    else if (d3 < IR13_DANGER || d4 < IR45_DANGER)
-	state = SRA_LEFT;
-    else if (d2 < IR2_INTEREST)	// should turn to avoid obstacle up ahead
-    {
-	if (d3 >= d1)	// more room on right
-	    state = SRA_RIGHT;
-	else	// more room on left
-	    state = SRA_LEFT;
-    }
-    else    // no obstacles close by, so keep going straight
-	state = SRA_FORWARD;
-
-    /* Debugging via USB output */
-/*     usb_puts("IR1: "); */
-/*     usb_puti(d1); */
-/*     usb_puts(" IR2: "); */
-/*     usb_puti(d2); */
-/*     usb_puts(" IR3: "); */
-/*     usb_puti(d3); */
-/*     usb_puts(" IR4: "); */
-/*     usb_puti(d4); */
-/*     usb_puts(" IR5: "); */
-/*     usb_puti(d5); */
-/*     usb_puts("\n\r"); */
-
-    evaluate_state();	// take action on updated state
-}
-
-// behave according to current state
-// TODO: adjust speeds after testing
-void evaluate_state(void)
-{
-    switch (state)
-    {
-	case SRA_FORWARD:
-	    orb_set_color(GREEN);
-	    move(FULL_SPD, 0);	// drive straight forward
-	    break;
-	case SRA_LEFT:
-	    orbs_set_color(GREEN, YELLOW);  // green on left side
-	    move(HALF_SPD, NRML_TURN);	// drive forward and to the left
-	    break;
-	case SRA_RIGHT:
-	    orbs_set_color(YELLOW, GREEN);  // green on right side
-	    move(HALF_SPD, -NRML_TURN);	// drive forward and to the right
-	    break;
-	case SRA_SPIN:
-	    orb_set_color(RED);
-	    move(0, NRML_TURN);	// spin CCW without traveling
-	    break;
-	default:    // should never reach this
-	    orb_set_color(PURPLE);
-	    move(0, 0);	// stop completely
-    }
-}
-

Property changes on: branches/colonetmk2/code/projects/hunter_prey/smart_run_around_fsm.c
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/test/test_eeprom.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_eeprom.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_eeprom.c	(nonexistent)
@@ -1,89 +0,0 @@
-/** @file testeeprom.c
- *  @brief tests the eeprom code
- *
- *  stores and retrives a value, then sets it back to what it was
- */
-#include <dragonfly_lib.h>
-#include "eeprom.h"
-
-#define ADDR 0
-
-int testeeprom(void) {
-    unsigned char data, data2;
-    int ret;
-    int worked=1;
-
-    
-    /* read whats there */
-    ret = eeprom_get_byte(ADDR, &data);
-    
-    if(ret) {
-        usb_puts("Error reading intial value! return code: ");
-        usb_puti(ret);
-        usb_puts(" data: ");
-        usb_puti(data);
-        usb_puts("\r\n");
-        worked=0;
-    }
-    else {
-        usb_puts("data was: ");
-        usb_puti(data);
-        usb_puts("\r\n");
-    }
-    
-    /* write something new */
-    
-    ret = eeprom_put_byte(ADDR, 123);
-    if(ret) {
-        usb_puts("Error writing data! return code: ");
-        usb_puti(ret);
-        usb_puts("\r\n");
-        worked=0;
-    }
-    else {
-        usb_puts("wrote 123\r\n");
-    }
-    
-    
-    /* check if tis really there */
-    
-    ret = eeprom_get_byte(ADDR, &data2);
-    
-    if(ret) {
-        usb_puts("Error reading second value! return code: ");
-        usb_puti(ret);
-        usb_puts(" data: ");
-        usb_puti(data2);
-        usb_puts("\r\n");
-        worked=0;
-    }
-    else {
-        if(data2==123) {
-            usb_puts("data write and re-read worked!\r\n");
-        }
-        else {
-            usb_puts("data re-read returned 0 but data was ");
-            usb_puti(data2);
-            usb_puts("\r\n");
-            worked=0;
-        }
-    }
-    
-    
-    /* restore old value */
-    
-    ret = eeprom_put_byte(ADDR, 123);
-    if(ret) {
-        usb_puts("Error writing data the second time! return code: ");
-        usb_puti(ret);
-        usb_puts("\r\n");
-        worked=0;
-    }
-    else {
-        usb_puts("re-wrote original data: ");
-        usb_puti(data);
-        usb_puts("\r\n");
-    }
-    
-    return worked;
-}

Property changes on: branches/colonetmk2/code/projects/test/test_eeprom.c
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/test/test_usb.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_usb.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_usb.c	(nonexistent)
@@ -1,53 +0,0 @@
-#include <dragonfly_lib.h>
-
-/*
- * This function outputs to TeraTerm the following:
- *
- * Testing...
- * 1, 2, 3
- * 2A, 00F4, C8E1
- * done.
- * 
- */
-
-int testusb(void) {
-	
-	usb_init();
-	usb_puts("usb turned on, test starting:\r\n");
-  
-	usb_puts("\r\n\n");
-	delay_ms(1000);
-	
-	// print some values to usb
-  usb_puts("Testing...\r\n");
-  usb_puti(1);
-  usb_putc(',');
-  usb_putc(' ');
-  usb_puti(2);
-  usb_putc(',');
-  usb_putc(' ');
-  usb_puti(3);
-  usb_putc('\r');
-  usb_putc('\n');
-  usb_puth8(0x2A);  
-  usb_putc(',');
-  usb_putc(' ');
-  usb_puth16(0xF4);
-  usb_putc(',');
-  usb_putc(' ');
-  usb_puth(0xC8E1);
-  usb_putc('\r');
-  usb_putc('\n');
-  usb_puts("enter an 'a':");  
-
-  // test getting a value from usb
-  if (usb_getc() == 'a')
-    usb_puts("\r\ngetc() works\r\n");
-  else
-    usb_puts("\r\ngetc() fails\r\n");
-  
-  usb_puts("done.\r\n\r\n");
-  
-  
-	return 0;
-}
\ No newline at end of file

Property changes on: branches/colonetmk2/code/projects/test/test_usb.c
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/test/test_lights.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_lights.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_lights.c	(nonexistent)
@@ -1,362 +0,0 @@
-#include <dragonfly_lib.h>
-
-
-	
-int test_lights(void) {
-	 int i=0;
-		
-	//usb_init();
-    usb_puts("usb turned on\n");
-    delay_ms(1000);	
-	
-/** Test RGB color setting (both orbs) **/
-	for(i=0;i<256;i++){
-		orb_set(i,0,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_set(0,i,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_set(0,0,i);
-		delay_ms(10);
-	}
-		
-/** Test RBG color, two parameters with changing parameters (both orbs) **/
-	for(i=0;i<256;i++){
-		orb_set(i,i,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_set(0,i,i);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_set(i,0,i);
-		delay_ms(10);
-	}
-		
-/** Test RBG color, all parameters with changing parameters (both orbs) **/		
-	for(i=0;i<256;i++){
-		orb_set(i,i,i);
-		delay_ms(10);
-	}
-		
-/** Test RGB color setting (orb1) **/
-	for(i=0;i<256;i++){
-		orb1_set(i,0,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb1_set(0,i,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb1_set(0,0,i);
-		delay_ms(10);
-	}
-		
-/** Test RBG color, two parameters with changing parameters (orb1) **/
-	for(i=0;i<256;i++){
-		orb1_set(i,i,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb1_set(0,i,i);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb1_set(i,0,i);
-		delay_ms(10);
-	}
-		
-/** Test RBG color, all parameters with changing parameters (orb1) **/		
-	for(i=0;i<256;i++){
-		orb1_set(i,i,i);
-		delay_ms(10);
-	}
-
-/** Test RGB color setting (orb2) **/
-	for(i=0;i<256;i++){
-		orb2_set(i,0,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb2_set(0,i,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb2_set(0,0,i);
-		delay_ms(10);
-	}
-		
-/** Test RBG color, two parameters with changing parameters (orb2) **/
-	for(i=0;i<256;i++){
-		orb2_set(i,i,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb2_set(0,i,i);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb2_set(i,0,i);
-		delay_ms(10);
-	}
-		
-/** Test RBG color, all parameters with changing parameters (orb2) **/		
-	for(i=0;i<256;i++){
-		orb2_set(i,i,i);
-		delay_ms(10);
-	}
-	
-/** Test RGB color setting (n=1) **/
-	for(i=0;i<256;i++){
-		orb_n_set(1,i,0,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_n_set(1,0,i,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_n_set(1,0,0,i);
-		delay_ms(10);
-	}
-		
-/** Test RBG color, two parameters with two changing parameters (n=1) **/
-	for(i=0;i<256;i++){
-		orb_n_set(1,i,i,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_n_set(1,0,i,i);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_n_set(1,i,0,i);
-		delay_ms(10);
-	}
-		
-/** Test RBG color, all parameters with two changing parameters (n=1) **/		
-	for(i=0;i<256;i++){
-		orb_n_set(1,i,i,i);
-		delay_ms(10);
-	}
-
-/** Test RGB color setting (n=2) **/
-	for(i=0;i<256;i++){
-		orb_n_set(2,i,0,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_n_set(2,0,i,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_n_set(2,0,0,i);
-		delay_ms(10);
-	}
-		
-/** Test RBG color, two parameters with two changing parameters (n=2) **/
-	for(i=0;i<256;i++){
-		orb_n_set(2,i,i,0);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_n_set(2,0,i,i);
-		delay_ms(10);
-	}
-	for(i=0;i<256;i++){
-		orb_n_set(2,i,0,i);
-		delay_ms(10);
-	}
-		
-/** Test RBG color, all parameters with two changing parameters (n=2) **/		
-	for(i=0;i<256;i++){
-		orb_n_set(2,i,i,i);
-		delay_ms(10);
-	}
-
-/** Weird not even RGB color test for both orbs **/		
-	for(i=2;i<256;i++){
-		orbs_set (i,i-1,i-2,i-2,i-1,i);
-		delay_ms(10);
-	}
-
-/** Test all #define'd colors (both orbs) **/
-    orb_set_color(ORB_OFF);
-    delay_ms(1000);
-	orb_set_color(RED);
-    delay_ms(1000);
-    orb_set_color(ORANGE);
-    delay_ms(1000);
-    orb_set_color(YELLOW);
-    delay_ms(1000);
-	orb_set_color(LIME);
-    delay_ms(1000);
-    orb_set_color(GREEN);
-    delay_ms(1000);
-	orb_set_color(CYAN);
-    delay_ms(1000);
-    orb_set_color(BLUE);
-    delay_ms(1000);
-	orb_set_color(PINK);
-    delay_ms(1000);
-    orb_set_color(PURPLE);
-    delay_ms(1000);
-	orb_set_color(MAGENTA);
-    delay_ms(1000);
-	orb_set_color(WHITE);
-    delay_ms(1000);
-	orb_set_color(ORB_OFF);
-    delay_ms(1000);
-	
-/** Test all #define'd colors (orb1) **/
-    orb1_set_color(ORB_OFF);
-    delay_ms(1000);
-	orb1_set_color(RED);
-    delay_ms(1000);
-    orb1_set_color(ORANGE);
-    delay_ms(1000);
-    orb1_set_color(YELLOW);
-    delay_ms(1000);
-	orb1_set_color(LIME);
-    delay_ms(1000);
-    orb1_set_color(GREEN);
-    delay_ms(1000);
-	orb1_set_color(CYAN);
-    delay_ms(1000);
-    orb1_set_color(BLUE);
-    delay_ms(1000);
-	orb1_set_color(PINK);
-    delay_ms(1000);
-    orb1_set_color(PURPLE);
-    delay_ms(1000);
-	orb1_set_color(MAGENTA);
-    delay_ms(1000);
-	orb1_set_color(WHITE);
-    delay_ms(1000);
-	orb1_set_color(ORB_OFF);
-    delay_ms(1000);
-
-/** Test all #define'd colors (orb2) **/
-    orb2_set_color(ORB_OFF);
-    delay_ms(1000);
-	orb2_set_color(RED);
-    delay_ms(1000);
-    orb2_set_color(ORANGE);
-    delay_ms(1000);
-    orb2_set_color(YELLOW);
-    delay_ms(1000);
-	orb2_set_color(LIME);
-    delay_ms(1000);
-    orb2_set_color(GREEN);
-    delay_ms(1000);
-	orb2_set_color(CYAN);
-    delay_ms(1000);
-    orb2_set_color(BLUE);
-    delay_ms(1000);
-	orb2_set_color(PINK);
-    delay_ms(1000);
-    orb2_set_color(PURPLE);
-    delay_ms(1000);
-	orb2_set_color(MAGENTA);
-    delay_ms(1000);
-	orb2_set_color(WHITE);
-    delay_ms(1000);
-	orb2_set_color(ORB_OFF);
-    delay_ms(1000);
-	
-/** Test all #define'd colors (n=1) **/
-    orb_n_set_color(1,ORB_OFF);
-    delay_ms(1000);
-	orb_n_set_color(1,RED);
-    delay_ms(1000);
-    orb_n_set_color(1,ORANGE);
-    delay_ms(1000);
-    orb_n_set_color(1,YELLOW);
-    delay_ms(1000);
-	orb_n_set_color(1,LIME);
-    delay_ms(1000);
-    orb_n_set_color(1,GREEN);
-    delay_ms(1000);
-	orb_n_set_color(1,CYAN);
-    delay_ms(1000);
-    orb_n_set_color(1,BLUE);
-    delay_ms(1000);
-	orb_n_set_color(1,PINK);
-    delay_ms(1000);
-    orb_n_set_color(1,PURPLE);
-    delay_ms(1000);
-	orb_n_set_color(1,MAGENTA);
-    delay_ms(1000);
-	orb_n_set_color(1,WHITE);
-    delay_ms(1000);
-	orb_n_set_color(1,ORB_OFF);
-    delay_ms(1000);
-	
-/** Test all #define'd colors (n=2) **/
-    orb_n_set_color(2,ORB_OFF);
-    delay_ms(1000);
-	orb_n_set_color(2,RED);
-    delay_ms(1000);
-    orb_n_set_color(2,ORANGE);
-    delay_ms(1000);
-    orb_n_set_color(2,YELLOW);
-    delay_ms(1000);
-	orb_n_set_color(2,LIME);
-    delay_ms(1000);
-    orb_n_set_color(2,GREEN);
-    delay_ms(1000);
-	orb_n_set_color(2,CYAN);
-    delay_ms(1000);
-    orb_n_set_color(2,BLUE);
-    delay_ms(1000);
-	orb_n_set_color(2,PINK);
-    delay_ms(1000);
-    orb_n_set_color(2,PURPLE);
-    delay_ms(1000);
-	orb_n_set_color(2,MAGENTA);
-    delay_ms(1000);
-	orb_n_set_color(2,WHITE);
-    delay_ms(1000);
-	orb_n_set_color(2,ORB_OFF);
-    delay_ms(1000);
-	
-	/** Test all #define'd colors (both orbs) **/
-    orbs_set_color(ORB_OFF,ORB_OFF);
-    delay_ms(1000);
-	orbs_set_color(RED,RED);
-    delay_ms(1000);
-    orbs_set_color(ORANGE,ORANGE);
-    delay_ms(1000);
-    orbs_set_color(YELLOW,YELLOW);
-    delay_ms(1000);
-	orbs_set_color(LIME,LIME);
-    delay_ms(1000);
-    orbs_set_color(GREEN,GREEN);
-    delay_ms(1000);
-	orbs_set_color(CYAN,CYAN);
-    delay_ms(1000);
-    orbs_set_color(BLUE,BLUE);
-    delay_ms(1000);
-	orbs_set_color(PINK,PINK);
-    delay_ms(1000);
-    orbs_set_color(PURPLE,PURPLE);
-    delay_ms(1000);
-	orbs_set_color(MAGENTA,MAGENTA);
-    delay_ms(1000);
-	orbs_set_color(WHITE,WHITE);
-    delay_ms(1000);
-	orbs_set_color(ORB_OFF,ORB_OFF);
-    delay_ms(1000);
-	
-	orbs_set_color(RED,GREEN);
-	delay_ms(3000);
-	
-    return 0;
-}
-
-

Property changes on: branches/colonetmk2/code/projects/test/test_lights.c
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/test/test_dio.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_dio.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_dio.c	(nonexistent)
@@ -1,38 +0,0 @@
-#include <dragonfly_lib.h>
-
-int testdio(void) {
-   	
-	//test waits
-	orb_set_color(WHITE);
-	delay_ms(1000);
-	orb_set_color(ORB_OFF);
-	button1_wait();
-	orb_set_color(WHITE);
-	delay_ms(1000);
-	orb_set_color(ORB_OFF);
-	button2_wait();
-	
-	//test clicks
-	orb_set_color(WHITE);
-	delay_ms(1000);
-	orb_set_color(ORB_OFF);
-	while(!button1_click()){;}
-	orb_set_color(WHITE);
-	delay_ms(1000);
-	orb_set_color(ORB_OFF);
-	while(!button2_click()){;}
-	
-	//test reads
-	orb_set_color(WHITE);
-	delay_ms(1000);
-	orb_set_color(ORB_OFF);
-	while(!button1_read()){;}
-	orb_set_color(WHITE);
-	delay_ms(1000);
-	orb_set_color(ORB_OFF);
-	while(!button2_read()){;}
-	orb_set_color(WHITE);
-	delay_ms(1000);
-	orb_set_color(ORB_OFF);
-    return 0;
-}
Index: branches/colonetmk2/code/projects/test/test_wireless.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_wireless.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_wireless.c	(nonexistent)
@@ -1,114 +0,0 @@
-/**
- * Instructions:
- *  - wait for both robots to show ORB 1 RED and ORB 2 GREEN
- *  - press BUTTON 1 on robot to send first (ROBOT 1) - orbs should turn PURPLE
- *  - press BUTTON 2 on robot to receive first (ROBOT 2) - orbs should turn ORANGE
- *  - wait at least a second, then press BUTTON 1 on both robots SIMULTANEOUSLY
- *  - ROBOT 2 orbs should cycle ORANGE to RED to BLUE
- *  - then ROBOT 1 orbs should cycle PURPLE to RED to BLUE
- *  - then orbs on both robots should turn GREEN
- *  - test will reset to ORB 1 RED and ORB 2 CYAN
- *  - test should take ~7 seconds
- *
- * Depends on:
- *  - Orbs (Lights)
- *  - Serial (for debugging)
- **/
-
-#include <dragonfly_lib.h>
-#include <wl_basic.h>
-
-unsigned char* packet;
-int length;
-
-int testwireless(void) {
-    int count = 0;
-    int is_sender = 0;
-
-    wl_basic_init_default();
-    wl_set_channel(0x0E);
-
-    orb1_set_color(RED);
-    orb2_set_color(GREEN);
-    delay_ms(500);
-    while (count < 1) {
-        if (button1_click()) {
-            is_sender = 1;
-            orb_set_color(PURPLE);
-            count++;
-        }
-        if (button2_click()) {
-            is_sender = 0;
-            orb_set_color(ORANGE);
-            count++;
-        }
-    }
-    count = 0;
-
-    delay_ms(1000);
-
-    button1_wait();
-
-    delay_ms(500);
-
-    if (is_sender == 1) {
-        delay_ms(1000);
-        wl_basic_send_global_packet(1, "r", 2);
-        usb_puts("sent RED packet\r\n");
-        delay_ms(1000);
-        wl_basic_send_global_packet(1, "b", 2);
-        usb_puts("sent BLUE packet\r\n");
-        while(count < 2) {
-            packet = wl_basic_do_default(&length);
-            if (packet != 0) {
-                if (length > 0) {
-                    if (packet[0] == 'r') {
-                        orb_set_color(RED);
-                        usb_puts("received RED packet\r\n");
-                        count++;
-                    }
-                    else if (packet[0] == 'b') {
-                        orb_set_color(BLUE);
-                        usb_puts("received BLUE packet\r\n");
-                        count++;
-                    }
-                }
-            }
-        }
-    }
-    else {
-        while(count < 2) {
-            packet = wl_basic_do_default(&length);
-            if (packet != 0) {
-                if (length > 0) {
-                    if (packet[0] == 'r') {
-                        orb_set_color(RED);
-                        usb_puts("received RED packet\r\n");
-                        count++;
-                    }
-                    else if (packet[0] == 'b') {
-                        orb_set_color(BLUE);
-                        usb_puts("received BLUE packet\r\n");
-                        count++;
-                    }
-                }
-            }
-        }
-        delay_ms(1000);
-        wl_basic_send_global_packet(1, "r", 2);
-        usb_puts("sent RED packet\r\n");
-        delay_ms(1000);
-        wl_basic_send_global_packet(1, "b", 2);
-        usb_puts("sent BLUE packet\r\n");
-    }
-    delay_ms(1000);
-
-	wl_terminate();
-
-    orb_set_color(GREEN);
-
-    delay_ms(2000);
-
-    return 0;
-}
-
Index: branches/colonetmk2/code/projects/test/Makefile
===================================================================
--- branches/colonetmk2/code/projects/test/Makefile	(revision 1455)
+++ branches/colonetmk2/code/projects/test/Makefile	(nonexistent)
@@ -1,520 +0,0 @@
-########Update This Section########
-#
-#
-
-# Relative path to the root directory (containing lib directory)
-ifndef COLONYROOT
-COLONYROOT = ../../..
-endif
-
-# Target file name (without extension).
-TARGET = main
-
-# Uncomment this to use the wireless library
-USE_WIRELESS = 1
-
-# com1 = serial port. Use lpt1 to connect to parallel port.
-AVRDUDE_PORT = $(shell if uname -s |grep -i w32 >/dev/null; then echo 'COM4:'; else echo '/dev/ttyUSB0'; fi)
-#
-#
-###################################
-
-# Hey Emacs, this is a -*- makefile -*-
-#----------------------------------------------------------------------------
-# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
-#
-# Released to the Public Domain
-#
-# Additional material for this makefile was written by:
-# Peter Fleury
-# Tim Henigan
-# Colin O'Flynn
-# Reiner Patommel
-# Markus Pfaff
-# Sander Pool
-# Frederik Rouleau
-#
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make coff = Convert ELF to AVR COFF.
-#
-# make extcoff = Convert ELF to AVR Extended COFF.
-#
-# make program = Download the hex file to the device, using avrdude.
-#                Please customize the avrdude settings below first!
-#
-# make debug = Start either simulavr or avarice as specified for debugging,
-#              with avr-gdb or avr-insight as the front end for debugging.
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
-#if you want your code to work on the Firefly++ and not Firefly+
-#then add the -DFFPP line to CDEFS
-CDEFS =
-#-DFFPP
-
-# MCU name
-MCU = atmega128
-
-# Processor frequency.
-#     This will define a symbol, F_CPU, in all source code files equal to the
-#     processor frequency. You can then use this symbol in your source code to
-#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-#     automatically to create a 32-bit value in your source code.
-F_CPU = 8000000
-
-# Output format. (can be srec, ihex, binary)
-FORMAT = ihex
-
-# List C source files here. (C dependencies are automatically generated.)
-SRC = $(wildcard *.c)
-
-# List Assembler source files here.
-#     Make them always end in a capital .S.  Files ending in a lowercase .s
-#     will not be considered source files but generated files (assembler
-#     output from the compiler), and will be deleted upon "make clean"!
-#     Even though the DOS/Win* filesystem matches both .s and .S the same,
-#     it will preserve the spelling of the filenames, and gcc itself does
-#     care about how the name is spelled on its command-line.
-ASRC =
-
-# Optimization level, can be [0, 1, 2, 3, s].
-#     0 = turn off optimization. s = optimize for size.
-#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
-OPT = s
-
-# Debugging format.
-#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
-#     AVR Studio 4.10 requires dwarf-2.
-#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
-DEBUG =
-
-# Compiler flag to set the C Standard level.
-#     c89   = "ANSI" C
-#     gnu89 = c89 plus GCC extensions
-#     c99   = ISO C99 standard (not yet fully implemented)
-#     gnu99 = c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-
-# Place -D or -U options here
-CDEFS += -DF_CPU=$(F_CPU)UL
-CDEFS += -DFFP
-# for wireless library
-ifdef USE_WIRELESS
-	CDEFS += -DROBOT
-endif
-
-# Place -I, -L options here
-CINCS = -I$(COLONYROOT)/code/lib/include/libdragonfly
-CINCS += -L$(COLONYROOT)/code/lib/bin
-ifdef USE_WIRELESS
-	CINCS += -I$(COLONYROOT)/code/lib/include/libwireless
-endif
-
-#---------------- Compiler Options ----------------
-#  -g*:          generate debugging information
-#  -O*:          optimization level
-#  -f...:        tuning, see GCC manual and avr-libc documentation
-#  -Wall...:     warning level
-#  -Wa,...:      tell GCC to pass this to the assembler.
-#    -adhlns...: create assembler listing
-CFLAGS =
-# CFLAGS = -g$(DEBUG)
-CFLAGS += $(CDEFS) $(CINCS)
-CFLAGS += -O$(OPT)
-CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
-CFLAGS += -Wall -Wstrict-prototypes
-CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
-CFLAGS += $(CSTANDARD)
-
-#---------------- Assembler Options ----------------
-#  -Wa,...:   tell GCC to pass this to the assembler.
-#  -ahlms:    create listing
-#  -gstabs:   have the assembler create line number information; note that
-#             for use in COFF files, additional information about filenames
-#             and function names needs to be present in the assembler source
-#             files -- see avr-libc docs [FIXME: not yet described there]
-ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
-
-
-#---------------- Library Options ----------------
-# Minimalistic printf version
-PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
-
-# Floating point printf version (requires MATH_LIB = -lm below)
-PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
-
-# If this is left blank, then it will use the Standard printf version.
-PRINTF_LIB =
-#PRINTF_LIB = $(PRINTF_LIB_MIN)
-#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
-
-
-# Minimalistic scanf version
-SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
-
-# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
-SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
-
-# If this is left blank, then it will use the Standard scanf version.
-SCANF_LIB =
-#SCANF_LIB = $(SCANF_LIB_MIN)
-#SCANF_LIB = $(SCANF_LIB_FLOAT)
-
-MATH_LIB = -lm
-
-#---------------- External Memory Options ----------------
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# used for variables (.data/.bss) and heap (malloc()).
-#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# only used for heap (malloc()).
-#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
-
-EXTMEMOPTS =
-
-#---------------- Linker Options ----------------
-#  -Wl,...:     tell GCC to pass this to linker.
-#    -Map:      create map file
-#    --cref:    add cross reference to  map file
-LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
-LDFLAGS += $(EXTMEMOPTS)
-LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
-ifdef USE_WIRELESS
-	LDFLAGS += -lwireless
-endif
-LDFLAGS += -ldragonfly
-
-
-
-#---------------- Programming Options (avrdude) ----------------
-
-# Programming hardware: alf avr910 avrisp bascom bsd
-# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
-#
-# Type: avrdude -c ?
-# to get a full listing.
-#
-AVRDUDE_PROGRAMMER = avrisp
-
-# programmer connected to serial device
-
-AVRDUDE_WRITE_FLASH = -b 57600 -U flash:w:$(TARGET).hex
-#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
-
-
-# Uncomment the following if you want avrdude's erase cycle counter.
-# Note that this counter needs to be initialized first using -Yn,
-# see avrdude manual.
-#AVRDUDE_ERASE_COUNTER = -y
-
-# Uncomment the following if you do /not/ wish a verification to be
-# performed after programming the device.
-#AVRDUDE_NO_VERIFY = -V
-
-# Increase verbosity level.  Please use this when submitting bug
-# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
-# to submit bug reports.
-#AVRDUDE_VERBOSE = -v -v
-
-AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
-AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
-AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
-AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
-
-#don't check for device signature
-AVRDUDE_FLAGS += -F
-
-
-
-#---------------- Debugging Options ----------------
-
-# For simulavr only - target MCU frequency.
-DEBUG_MFREQ = $(F_CPU)
-
-# Set the DEBUG_UI to either gdb or insight.
-# DEBUG_UI = gdb
-DEBUG_UI = insight
-
-# Set the debugging back-end to either avarice, simulavr.
-DEBUG_BACKEND = avarice
-#DEBUG_BACKEND = simulavr
-
-# GDB Init Filename.
-GDBINIT_FILE = __avr_gdbinit
-
-# When using avarice settings for the JTAG
-JTAG_DEV = /dev/com1
-
-# Debugging port used to communicate between GDB / avarice / simulavr.
-DEBUG_PORT = 4242
-
-# Debugging host used to communicate between GDB / avarice / simulavr, normally
-#     just set to localhost unless doing some sort of crazy debugging when
-#     avarice is running on a different computer.
-DEBUG_HOST = localhost
-
-
-
-#============================================================================
-
-
-# Define programs and commands.
-SHELL = sh
-CC = avr-gcc
-OBJCOPY = avr-objcopy
-OBJDUMP = avr-objdump
-SIZE = avr-size
-NM = avr-nm
-AVRDUDE = avrdude
-REMOVE = rm -f
-REMOVEDIR = rm -rf
-COPY = cp
-WINSHELL = cmd
-
-
-# Define Messages
-# English
-MSG_ERRORS_NONE = Errors: none
-MSG_BEGIN = -------- begin --------
-MSG_END = --------  end  --------
-MSG_SIZE_BEFORE = Size before:
-MSG_SIZE_AFTER = Size after:
-MSG_COFF = Converting to AVR COFF:
-MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
-MSG_FLASH = Creating load file for Flash:
-MSG_EEPROM = Creating load file for EEPROM:
-MSG_EXTENDED_LISTING = Creating Extended Listing:
-MSG_SYMBOL_TABLE = Creating Symbol Table:
-MSG_LINKING = Linking:
-MSG_COMPILING = Compiling:
-MSG_ASSEMBLING = Assembling:
-MSG_CLEANING = Cleaning project:
-
-
-
-
-# Define all object files.
-OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
-
-# Define all listing files.
-LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)
-
-
-# Compiler flags to generate dependency files.
-GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
-
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-
-
-
-# Default target.
-all: begin gccversion sizebefore build sizeafter end
-
-build: elf hex eep lss sym
-
-elf: $(TARGET).elf
-hex: $(TARGET).hex
-eep: $(TARGET).eep
-lss: $(TARGET).lss
-sym: $(TARGET).sym
-
-
-
-# Eye candy.
-# AVR Studio 3.x does not check make's exit code but relies on
-# the following magic strings to be generated by the compile job.
-begin:
-	@echo
-	@echo $(MSG_BEGIN)
-
-end:
-	@echo $(MSG_END)
-	@echo
-
-
-# Display size of file.
-HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
-ELFSIZE = $(SIZE) -A $(TARGET).elf
-AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
-
-sizebefore:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-sizeafter:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-
-
-# Display compiler version information.
-gccversion :
-	@$(CC) --version
-
-
-
-# Program the device.
-program: $(TARGET).hex $(TARGET).eep
-	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
-
-
-# Generate avr-gdb config/init file which does the following:
-#     define the reset signal, load the target file, connect to target, and set
-#     a breakpoint at main().
-gdb-config:
-	@$(REMOVE) $(GDBINIT_FILE)
-	@echo define reset >> $(GDBINIT_FILE)
-	@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
-	@echo end >> $(GDBINIT_FILE)
-	@echo file $(TARGET).elf >> $(GDBINIT_FILE)
-	@echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
-ifeq ($(DEBUG_BACKEND),simulavr)
-	@echo load  >> $(GDBINIT_FILE)
-endif
-	@echo break main >> $(GDBINIT_FILE)
-
-debug: gdb-config $(TARGET).elf
-ifeq ($(DEBUG_BACKEND), avarice)
-	@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
-	@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
-	$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
-	@$(WINSHELL) /c pause
-
-else
-	@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
-	$(DEBUG_MFREQ) --port $(DEBUG_PORT)
-endif
-	@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
-
-
-
-
-# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
-COFFCONVERT=$(OBJCOPY) --debugging \
---change-section-address .data-0x800000 \
---change-section-address .bss-0x800000 \
---change-section-address .noinit-0x800000 \
---change-section-address .eeprom-0x810000
-
-
-coff: $(TARGET).elf
-	@echo
-	@echo $(MSG_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
-
-
-extcoff: $(TARGET).elf
-	@echo
-	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
-
-
-
-# Create final output files (.hex, .eep) from ELF output file.
-%.hex: %.elf
-	@echo
-	@echo $(MSG_FLASH) $@
-	$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
-
-%.eep: %.elf
-	@echo
-	@echo $(MSG_EEPROM) $@
-	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
-	--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
-
-# Create extended listing file from ELF output file.
-%.lss: %.elf
-	@echo
-	@echo $(MSG_EXTENDED_LISTING) $@
-	$(OBJDUMP) -h -S $< > $@
-
-# Create a symbol table from ELF output file.
-%.sym: %.elf
-	@echo
-	@echo $(MSG_SYMBOL_TABLE) $@
-	$(NM) -n $< > $@
-
-
-
-# Link: create ELF output file from object files.
-.SECONDARY : $(TARGET).elf
-.PRECIOUS : $(OBJ)
-%.elf: $(OBJ)
-	@echo
-	@echo $(MSG_LINKING) $@
-	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
-
-
-# Compile: create object files from C source files.
-%.o : %.c
-	@echo
-	@echo $(MSG_COMPILING) $<
-	$(CC) -c $(ALL_CFLAGS) $< -o $@
-
-
-# Compile: create assembler files from C source files.
-%.s : %.c
-	$(CC) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files.
-%.o : %.S
-	@echo
-	@echo $(MSG_ASSEMBLING) $<
-	$(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-# Create preprocessed source for use in sending a bug report.
-%.i : %.c
-	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
-
-
-# Target: clean project.
-clean: begin clean_list end
-
-clean_list :
-	@echo
-	@echo $(MSG_CLEANING)
-	$(REMOVE) $(TARGET).hex
-	$(REMOVE) $(TARGET).eep
-	$(REMOVE) $(TARGET).cof
-	$(REMOVE) $(TARGET).elf
-	$(REMOVE) $(TARGET).map
-	$(REMOVE) $(TARGET).sym
-	$(REMOVE) $(TARGET).lss
-	$(REMOVE) $(OBJ)
-	$(REMOVE) $(LST)
-	$(REMOVE) $(SRC:.c=.s)
-	$(REMOVE) $(SRC:.c=.d)
-	$(REMOVEDIR) .dep
-
-
-
-# Include the dependency files.
--include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
-
-
-# Listing of phony targets.
-.PHONY : all begin finish end sizebefore sizeafter gccversion \
-build elf hex eep lss sym coff extcoff \
-clean clean_list program debug gdb-config
-
Index: branches/colonetmk2/code/projects/test/test_tokenring.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_tokenring.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_tokenring.c	(nonexistent)
@@ -1,98 +0,0 @@
-#include <dragonfly_lib.h>
-#include <wireless.h>
-#include <wl_token_ring.h>
-
-
-/**
- * Tests the token ring and BOM
- * - prints table of bom values for every robot in token ring
- * - takes several seconds to initialize token ring
- */
- 
-#define MAX_ROBOTS 16
-
-// set a list of integers to 0
-void clearRobots(int* list) {
-  for(int i=0;i<MAX_ROBOTS;i++)
-    list[i] = 0;
-}
-
-int testtokenring(void) {
-  usb_init();
-	usb_puts("usb turned on\r\n");
-  wl_init();
-  usb_puts("wireless turned on\r\n");
-  wl_token_ring_register();
-  wl_token_ring_join(); // join token ring
-  usb_puts("token ring joined\r\n");
-  int* robotList = (int*)malloc(sizeof(int)*MAX_ROBOTS);
-  int numRobots = 0;
-  delay_ms(1000);
-  
-  // start testing wireless/token ring/BOM
-  int i=0;
-  while(1) {
-    wl_do();
-    // only print table every 200 loops
-    if (i%200==0) {
-      // get token ring size values
-      usb_puts("\r\nnumber of robots in token ring:");
-      usb_puti(wl_token_get_robots_in_ring());
-      usb_puts("\r\nnumber of robots in matrix:"); 
-      usb_puti(wl_token_get_num_robots());
-      
-      // get list of robots
-      numRobots = 0;
-      clearRobots(robotList);
-      wl_token_iterator_begin();
-      while(wl_token_iterator_has_next()) {
-        int tmp = wl_token_iterator_next();
-        if (tmp < 0)
-          break;
-        robotList[tmp] = 1;
-        numRobots++;
-      }
-      if (numRobots < 1) {
-        usb_puts("\r\nNo BOM table available.");
-        continue; // skip table printing
-      } else {
-        usb_puts("\r\nBOM table: (* indicates this robot)");
-      }
-      
-      // print table of bom readings between robots
-      usb_puts("\r\ns \\ d");
-      // print header
-      for(int j=0;j<MAX_ROBOTS;j++)
-        if (robotList[j]) {
-          usb_puts("\t|");
-          if (j == wl_get_xbee_id())
-            usb_puts("*"); // indicate that this is the current bot
-          usb_puti(j);
-        }
-      usb_puts("\r\n");
-      // print body
-      for(int l=0;l<MAX_ROBOTS;l++) 
-        if (robotList[l]) {        
-          if (l == wl_get_xbee_id())
-            usb_puts("*"); // indicate that this is the current bot
-          usb_puti(l); // print label col
-          for(int k=0;k<MAX_ROBOTS;k++) 
-            if (robotList[k]) {
-              usb_puts("\t|");
-              if (k != l) {
-                int bom = wl_token_get_sensor_reading(l,k);
-                if (bom >= 0 && bom <= 15)
-                  usb_puti(bom); // print bom value
-              }
-            }
-          usb_puts("\r\n");
-        }
-      usb_puts("\r\n");
-    }
-  }
-  
-  // end testing token ring and bom
-	return 0;
-}
-
-

Property changes on: branches/colonetmk2/code/projects/test/test_tokenring.c
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/test/test_analog.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_analog.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_analog.c	(nonexistent)
@@ -1,44 +0,0 @@
-#include <dragonfly_lib.h>
-
-/*
- * This function outputs to TeraTerm a table which displays the values currently
- * stored in the analog table
- */
-
-int testanalog(void) {
-
-	
-	usb_init();
-	usb_puts("usb turned on\r\n");
-	
-	range_init();
-	usb_puts("rangefinders initialized\r\n");
-	
-	usb_puts("\r\n\n");
-	delay_ms(1000);
-	
-	while (1) {
-	
-		for (int i = 0; i < 20; i++) {
-		
-			usb_puts("\r\n");
-		
-		}
-		
-		usb_puts("port# |\tvalue\r\n");
-		
-		for (int j = 1; j < 16; j++) {
-		
-			usb_puti(j);
-			usb_puts("\t");
-			usb_puti(analog10(j));
-			usb_puts("\r\n");
-		
-		}
-		
-		delay_ms(575);
-		
-	}
-	
-	return 0;
-}
\ No newline at end of file

Property changes on: branches/colonetmk2/code/projects/test/test_analog.c
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/test/test_encoders.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_encoders.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_encoders.c	(nonexistent)
@@ -1,64 +0,0 @@
-/**
- * @file encoders unit test
- */
-#include <dragonfly_lib.h>
-
-/**
- * @brief Test encoders by outputting values to usb
- *
- * @test  Tester should start a program to read data from the robot via usb
- *        (e.g. gtkterm). Turn on the robot on then turn each wheel manually.
- *        Make sure the output on the screen makes sense.
- *        Pressing button 1 resets total distance and time count
- * @pre   Depends on serial and dio to work correctly
- */
-
-int testencoders(void)
-{
-	int encoder_left,encoder_right;
-	int x_left, x_right;
-	int v_left, v_right;
-	int tc;
-	while(1) {
-		/* button1 is pressed */
-		if (button1_read()) {
-			/* reset dx and tc */
-			encoder_rst_dx(LEFT);
-			encoder_rst_dx(RIGHT);
-			encoder_rst_tc();
-		}
-
-		encoder_left = encoder_read(LEFT);
-		encoder_right = encoder_read(RIGHT);
-		usb_puts("Encoder values (left, right): ");
-		usb_puti(encoder_left); 
-		usb_puts(", ");
-		usb_puti(encoder_right); 
-		usb_puts("\n");
-
-		x_left = encoder_get_x(LEFT);
-		x_right = encoder_get_x(RIGHT);
-		usb_puts("Total Distance (left, right): ");
-		usb_puti(x_left);
-		usb_puts(", ");
-		usb_puti(x_right);
-		usb_puts("\n");
-
-		v_left = encoder_get_v(LEFT);
-		v_right = encoder_get_v(RIGHT);
-		usb_puts("Velocity (left, right): ");
-		usb_puti(v_left);
-		usb_puts(", ");
-		usb_puti(v_right);
-		usb_puts("\n");
-
-		tc = encoder_get_tc();
-		usb_puts("Time count: ");
-		usb_puti(tc);
-		usb_puts("\n\r");
-
-		delay_ms(500);
-	}
-	return 0;
-}
-

Property changes on: branches/colonetmk2/code/projects/test/test_encoders.c
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/test/test_lcd.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_lcd.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_lcd.c	(nonexistent)
@@ -1,45 +0,0 @@
-#include <dragonfly_lib.h>
-
-
-/**
- * LCD Rules
- * - when changing put formats (from string to int or back)
- *   the screen will clear and start printing at beginning
- * - when outputting again in same format, an append op is performed
- * - text wraps to next line, and to beginning
- *    - when wrapping to beginning, screen is not cleared
- * - puti only does signed ints
- */
-
-int testlcd(void) {
-  usb_init();
-	usb_puts("usb turned on\n");
-  lcd_init();
-  usb_puts("lcd turned on\n");
-  lcd_clear_screen();
-  usb_puts("lcd screen cleared\n");
-  delay_ms(1000);
-  
-  // start testing lcd
-  lcd_puts("this is a test, a really long test");
-  lcd_puts("this is a test, a really long test. this is a test, a really long test");
-  usb_puts("test writing string to lcd: 'this is a test, a really long test'\n");
-  delay_ms(10000);
-  
-  /*lcd_clear_screen();
-  usb_puts("lcd screen cleared\n");
-  lcd_puti(1000000);
-  lcd_puti(100000);
-  lcd_puti(10000);
-  lcd_puti(1000);
-  lcd_puti(100);
-  lcd_puti(10);
-  lcd_puti(1);
-  usb_puts("test writing int to lcd: 1000000,100000, 10000, 1000, 100, 10, 1\n");
-  delay_ms(10000);
-  */
-  // end testing lcd
-	return 0;
-}
-
-

Property changes on: branches/colonetmk2/code/projects/test/test_lcd.c
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/test/test_xbee.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_xbee.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_xbee.c	(nonexistent)
@@ -1,52 +0,0 @@
-#include <dragonfly_lib.h>
-#include <xbee.h>
-
-#define ROBOT
-#define WL_DEBUG
-#define WL_DEBUG_PRINT( s ) usb_puts( S )
-
-extern int xbee_send_read_at_command(char* command);
-extern int xbee_get_packet(unsigned char* dest);
-extern void xbee_terminate(void);
-
-/*
- * This function tests the xbee, returning the results to teraterm
- *
- * 
- */
- 
-int testxbee(void) {
-
-  unsigned char buf[100];
-  int i=0;
-	
-	usb_init();
-	usb_puts("usb turned on, test starting:\r\n");
-  
-  if (xbee_lib_init() != 0) {
-    usb_puts("xbee_lib_init() failed\r\n");
-    return -1;
-  } else {
-    usb_puts("xbee_lib__init successful\r\n");
-  }
- 
-	usb_puts("\r\n\n");
-	delay_ms(1000);
-	
-	// try getting xbee address
-  xbee_send_read_at_command("MY");
-  while(i++ < 10000) {
-    if(xbee_get_packet(buf) == 3) {
-      usb_puts("got response from xbee\r\n");
-      //usb_puts("packet:");
-      //usb_puts(buf);
-      //usb_puts("|end\r\n");
-      break; // got a response
-    }
-  }
-  
-  xbee_terminate();
-  usb_puts("testxbee done\r\n\r\n");
-    
-	return 0;
-}
\ No newline at end of file
Index: branches/colonetmk2/code/projects/test/test_motors.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_motors.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_motors.c	(nonexistent)
@@ -1,72 +0,0 @@
-#include <dragonfly_lib.h>
-
-#define OFF 	140
-#define SLOW 	160
-#define	GO		220
-
-int testmotors(void) {
-    //usb_init();
-    //usb_puts("usb turned on\n");
-    
-	//forward
-	orb_set_color(RED);
-	motors_off();
-    delay_ms(3000);
-    orb_set_color(YELLOW);
-	motor_l_set(1, SLOW);
-    motor_r_set(1, SLOW);
-    delay_ms(3000);
-    orb_set_color(GREEN);
-	motor_l_set(1, GO);
-    motor_r_set(1, GO);
-    delay_ms(3000);
-	
-	//backward
-    orb_set_color(RED);
-	motors_off();
-    delay_ms(3000);
-    orb_set_color(YELLOW);
-	motor_l_set(0, SLOW);
-    motor_r_set(0, SLOW);
-    delay_ms(3000);
-    orb_set_color(GREEN);
-	motor_l_set(0, GO);
-    motor_r_set(0, GO);
-    delay_ms(3000);
-	
-	//spin
-	orb_set_color(RED);
-	motors_off();
-    delay_ms(3000);
-    orb_set_color(YELLOW);
-	motor_l_set(1, SLOW);
-    motor_r_set(0, SLOW);
-    delay_ms(3000);
-    orb_set_color(GREEN);
-	motor_l_set(1, GO);
-    motor_r_set(0, GO);
-    delay_ms(3000);
-	
-	//spin other way
-	orb_set_color(RED);
-	motors_off();
-    delay_ms(3000);
-    orb_set_color(YELLOW);
-	motor_l_set(0, SLOW);
-    motor_r_set(1, SLOW);
-    delay_ms(3000);
-    orb_set_color(GREEN);
-	motor_l_set(0, GO);
-    motor_r_set(1, GO);
-    delay_ms(3000);
-	//while(1){;}
-
-    return 0;
-}
-
-
-/*test data
-left >154 forward
-right >150 forward
-both >152 backward
-*/
\ No newline at end of file

Property changes on: branches/colonetmk2/code/projects/test/test_motors.c
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/test/test_rangefinder.c
===================================================================
--- branches/colonetmk2/code/projects/test/test_rangefinder.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/test_rangefinder.c	(nonexistent)
@@ -1,65 +0,0 @@
-/**
- * @file test_rangefinder.c
- * @brief Contains unit test for rangefinder.c module of libdragonfly
- *
- * Contains a function allowing the user to test whether the rangefinder module
- * works correctly.
- *
- * @author Colony Project, CMU Robotics Club
- **/
-
-/* Testing Procedure
- * - Place hand in front of orbs in 4, 3, 2, 1, 5 order
- * - Observe orbs
- *
- * Expected Behavior:
- * - Orbs flash BLUE 3 times to signal start of test
- * - During test
- *  - Orb 1 changes to reflect which sensor is under test
- *  - Orb 2 stays RED until that sensor gets a usable reading, i.e. within visible distance
- * - Orbs flash PURPLE 3 times to signal end of test
- */
-
-#include <dragonfly_lib.h>
-
-#define TEST_TIME 500	// duration of success indicator (in ms)
-#define ON_DELAY 500	// duration of flashes at beginning and end (in ms)
-#define OFF_DELAY 250	// delay between flashes at beginning and end (in ms)
-
-int testrangefinder() {
-    int i;  // index
-    int sensor[5] = {IR4, IR3, IR2, IR1, IR5};
-    int color[5] = {RED, ORANGE, YELLOW, GREEN, BLUE};
-
-    // flash orbs BLUE 3 times
-    for (i = 0; i < 3; i++) {
-	orb_set_color(BLUE);
-	delay_ms(ON_DELAY);
-	orb_set_color(ORB_OFF);
-	delay_ms(OFF_DELAY);
-    }
-
-    for (i = 0; i < 5; i++) {
-	// indicate sensor under test
-	orb2_set_color(color[i]);
-
-	// wait for sensor interaction
-	while (range_read_distance(sensor[i]) == -1)
-	    // stay RED until IR4 sees something
-	    orb1_set_color(RED);
-
-	orb1_set_color(GREEN);
-	delay_ms(TEST_TIME);
-    }
-
-    // flash orbs PURPLE 3 times
-    for (i = 0; i < 3; i++) {
-	orb_set_color(PURPLE);
-	delay_ms(ON_DELAY);
-	orb_set_color(ORB_OFF);
-	delay_ms(OFF_DELAY);
-    }
-
-    return 0;
-}
-

Property changes on: branches/colonetmk2/code/projects/test/test_rangefinder.c
___________________________________________________________________
Deleted: svn:mergeinfo
## -0,0 +0,0 ##
Index: branches/colonetmk2/code/projects/test/xbee.c
===================================================================
--- branches/colonetmk2/code/projects/test/xbee.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/xbee.c	(nonexistent)
@@ -1,1029 +0,0 @@
-/**
- * Copyright (c) 2007 Colony Project
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- **/
-
-/**
- * @file xbee.c
- * @brief XBee Interface
- *
- * Implementation of low level communication with the XBee in API mode.
- *
- * @author Brian Coltin, Colony Project, CMU Robotics Club
- **/
-
-#include <xbee.h>
-#include <wl_defs.h>
-
-#define ROBOT
-#define WL_DEBUG
-#define WL_DEBUG_PRINT( s ) usb_puts( s )
-#define WL_DEBUG_PRINT_INT( i ) usb_puti(i)
-
-#ifndef ROBOT
-
-#include <fcntl.h>
-#include <unistd.h>
-#include <pthread.h>
-#include <errno.h>
-#include <termios.h>
-
-#else
-
-#include <serial.h>
-#include <avr/interrupt.h>
-
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define XBEE_FRAME_START 0x7E
-#define XBEE_GET_PACKET_TIMEOUT 1000
-
-/*Frame Types*/
-#define XBEE_FRAME_STATUS 0x8A
-#define XBEE_FRAME_AT_COMMAND 0x08
-#define XBEE_FRAME_AT_COMMAND_RESPONSE 0x88
-#define XBEE_FRAME_TX_REQUEST_64 0x00
-#define XBEE_FRAME_TX_REQUEST_16 0x01
-#define XBEE_FRAME_TX_STATUS XBEE_TX_STATUS
-#define XBEE_FRAME_RX_64 0x80
-#define XBEE_FRAME_RX_16 XBEE_RX
-
-/*Internal Function Prototypes*/
-
-/*I/O Functions*/
-static int xbee_send(char* buf, int size);
-static int xbee_send_string(char* c);
-
-#ifndef ROBOT
-static int xbee_read(char* buf, int size);
-#endif
-
-/*Command Mode Functions
- * Called during initialization.
- */
-static int xbee_enter_command_mode(void);
-static int xbee_exit_command_mode(void);
-static int xbee_enter_api_mode(void);
-static int xbee_exit_api_mode(void);
-static int xbee_wait_for_string(char* s, int len);
-static int xbee_wait_for_ok(void);
-
-/*API Mode Functions*/
-
-static int xbee_handle_packet(char* packet, int len);
-static void xbee_handle_at_command_response(char* command, char result, char* extra, int extraLen);
-static void xbee_handle_status(char status);
-static int xbee_verify_checksum(char* packet, int len);
-static char xbee_compute_checksum(char* packet, int len);
-static int xbee_send_frame(char* buf, int len);
-int xbee_send_read_at_command(char* command);
-static int xbee_send_modify_at_command(char* command, char* value);
-
-/*Global Variables*/
-
-#ifndef ROBOT
-static char* xbee_com_port = XBEE_PORT_DEFAULT;
-static int xbee_stream;
-static pthread_t* xbee_listen_thread;
-#endif
-
-// TODO: is this a good size?
-#define XBEE_BUFFER_SIZE	128
-#define PACKET_BUFFER_SIZE	108
-// a buffer for data received from the XBee
-char arrival_buf[XBEE_BUFFER_SIZE];
-// location of last unread byte in buffer
-volatile int buffer_last = 0;
-// first unread byte in buffer
-volatile int buffer_first = 0;
-
-
-//used to store packets as they are read
-static char xbee_buf[PACKET_BUFFER_SIZE];
-static int currentBufPos = 0;
-
-//XBee status
-static unsigned int xbee_panID = XBEE_PAN_DEFAULT;
-static unsigned int xbee_pending_panID = XBEE_PAN_DEFAULT;
-static int xbee_channel = XBEE_CHANNEL_DEFAULT;
-static int xbee_pending_channel = XBEE_CHANNEL_DEFAULT;
-static volatile unsigned int xbee_address = 0;
-
-/*Function Implementations*/
-
-#ifdef ROBOT
-
-/**
- * Interrupt for the robot. Adds bytes received from the xbee
- * to the buffer.
- **/
-#ifndef FIREFLY
-ISR(USART1_RX_vect)
-{
-	char c = UDR1;
-	arrival_buf[buffer_last] = c;
-	int t = buffer_last + 1;
-	if (t == XBEE_BUFFER_SIZE)
-		t = 0;
-	if (t == buffer_first)
-	{
-		WL_DEBUG_PRINT("\nOut of space in buffer.\n");
-	}
-	buffer_last = t;
-}
-#else
-SIGNAL(SIG_USART0_RECV)
-{
-	char c = UDR0;
-	arrival_buf[buffer_last] = c;
-	int t = buffer_last + 1;
-	if (t == XBEE_BUFFER_SIZE)
-		t = 0;
-	if (t == buffer_first)
-	{
-		WL_DEBUG_PRINT("Out of space in buffer.\n");
-	}
-	buffer_last = t;
-}
-#endif
-
-#else
-
-// Computer code
-
-/**
- * Thread that listens to the xbee.
- **/
-static void* listen_to_xbee(void* x)
-{
-	char c;
-	while (1)
-	{
-		if (xbee_read(&c, 1) != 0) {
-			WL_DEBUG_PRINT("xbee_read failed.\n");
-			return NULL;
-		}
-
-		arrival_buf[buffer_last] = c;
-		int t = buffer_last + 1;
-		if (t == XBEE_BUFFER_SIZE)
-			t = 0;
-		if (t == buffer_first)
-		{
-			WL_DEBUG_PRINT("Out of space in buffer.\n");
-		}
-		buffer_last = t;
-
-		usleep(1000);
-	}
-
-	return NULL;
-}
-
-#endif
-
-/**
- * Initializes the XBee library so that other functions may be used.
- **/
-int xbee_lib_init()
-{
-	WL_DEBUG_PRINT("in xbee_init\n");
-#ifdef ROBOT
-
-	//enable the receiving interrupt
-#ifdef FIREFLY
-	UCSR0B |= _BV(RXCIE) | _BV(RXEN);
-#else
-#ifdef BAYBOARD
-	UCSR1B |= _BV(RXCIE1);
-#else
-	UCSR1B |= _BV(RXCIE);
-#endif
-#endif
-	sei();
-#else
-	xbee_stream = open(xbee_com_port, O_RDWR);
-	if (xbee_stream == -1/* || lockf(xbee_stream, F_TEST, 0) != 0*/)
-	{
-		WL_DEBUG_PRINT("Failed to open connection to XBee on port ");
-		WL_DEBUG_PRINT_INT(xbee_com_port);
-		WL_DEBUG_PRINT(".\n");
-		return -1;
-	} else {
-	  WL_DEBUG_PRINT("Successfully opened connection to XBee on port ");
-		WL_DEBUG_PRINT_INT(xbee_com_port);
-		WL_DEBUG_PRINT(".\n");
-	}
-
-	// set baud rate, etc. correctly
-	struct termios options;
-
-	tcgetattr(xbee_stream, &options);
-	cfsetispeed(&options, B9600);
-	cfsetospeed(&options, B9600);
-	options.c_iflag &= ~ICRNL;
-	options.c_oflag &= ~OCRNL;
-	options.c_cflag |= (CLOCAL | CREAD);
-	options.c_cflag &= ~PARENB;
-	options.c_cflag &= ~CSTOPB;
-	options.c_cflag &= ~CSIZE;
-	options.c_cflag |= CS8;
-	options.c_lflag &= ~ICANON;
-	options.c_cc[VMIN] = 1;
-	options.c_cc[VTIME] = 50;
-
-	if (tcsetattr(xbee_stream, TCSANOW, &options))
-	{
-		WL_DEBUG_PRINT("Error setting attributes.\n");
-		return -1;
-	}
-
-	xbee_listen_thread = (pthread_t*)malloc(sizeof(pthread_t));
-	if (xbee_listen_thread == NULL)
-	{
-		WL_DEBUG_PRINT("Malloc failed.\n");
-		return -1;
-	}
-
-	int ret = pthread_create(xbee_listen_thread, NULL, listen_to_xbee, NULL);
-	if (ret)
-	{
-		WL_DEBUG_PRINT("Failed to create listener thread.\n");
-		return -1;
-	}
-#endif
-
-	WL_DEBUG_PRINT("Entering command mode.\n");
-
-	if (xbee_enter_command_mode() != 0) {
-		return -1;
-	}
-
-	WL_DEBUG_PRINT("Entered command mode.\n");
-
-	if (xbee_enter_api_mode() != 0) {
-		return -1;
-	}
-
-	WL_DEBUG_PRINT("Entered api mode.\n");
-
-	if (xbee_exit_command_mode() != 0) {
-	     return -1;
-	}
-	
-	WL_DEBUG_PRINT("Left command mode.\n");
-
-	if (xbee_send_read_at_command("MY")) {
-		return -1;
-	}
-	WL_DEBUG_PRINT("Getting ATMY address.\n");
-
-#ifndef ROBOT
-	int i;
-	for (i = 0; xbee_address == 0 && i < XBEE_GET_PACKET_TIMEOUT; i++) {
-	  ret = xbee_get_packet(NULL);
-
-	  usleep(1000);
-	  
-/* 	  if (ret == -1) { */
-/* 	    WL_DEBUG_PRINT("xbee_get_packet(NULL) failed.\n"); */
-/* 	    return -1; */
-/* 	  } */
-	}
-#else
-	//wait to return until the address is set
-  //TODO: this shouldn't wait indefinitely.  There should be some sort of reasonable timeout
-  // so if the address is never set right, an error can be returned instead of having the
-  // robot hang forever
-	while (xbee_address == 0) {
-	  xbee_get_packet(NULL);
-	}
-#endif
-	WL_DEBUG_PRINT("Got ATMY address.\n");
-
-#ifndef ROBOT
-	if (i == XBEE_GET_PACKET_TIMEOUT) { // We timed-out.
-
-	  WL_DEBUG_PRINT("xbee_get_packet timed out.\n");
-	  return -1;
-	} else {
-	  return 0;
-	}
-#else
-	return 0;
-#endif
-}
-
-/**
- * Call when finished using the XBee library. This releases
- * all sued resources.
- **/
-void xbee_terminate()
-{
-	#ifndef ROBOT
-	pthread_cancel(*xbee_listen_thread);
-    pthread_join(*xbee_listen_thread, NULL);
-	free(xbee_listen_thread);
-	lockf(xbee_stream, F_ULOCK, 0);
-	close(xbee_stream);
-  #else
-  xbee_exit_api_mode();
-	#endif
-}
-
-/**
- * Send a buffer buf of size bytes to the XBee.
- *
- * @param buf the buffer of data to send
- * @param size the number of bytes to send
- **/
-static int xbee_send(char* buf, int size)
-{
-#ifdef ROBOT
-	int i;
-	for (i = 0; i < size; i++) {
-		xbee_putc(buf[i]);
-	}
-
-	return 0;
-
-#else
-
-	int ret = write(xbee_stream, buf, size);
-	//success
-	if (ret == size)
-		return 0;
-	if (ret == -1)
-	{
-		//interrupted by system signal, probably timer interrupt.
-		//just try again
-		if (errno == 4)
-		{
-			return xbee_send(buf, size);
-		}
-		WL_DEBUG_PRINT("Failed to write to xbee\r\n");
-		return -1;
-	}
-
-	//write was interrupted after writing ret bytes
-	return xbee_send(buf + ret, size - ret);
-#endif
-}
-
-/**
- * Sends a string to the XBee.
- *
- * @param c the string to send to the XBEE
- **/
-static int xbee_send_string(char* c)
-{
-	return xbee_send(c, strlen(c));
-}
-
-#ifndef ROBOT
-static int xbee_read(char* buf, int size)
-{
-	if (read(xbee_stream, buf, size) == -1) {
-		WL_DEBUG_PRINT("Failed to read from xbee.\r\n");
-		return -1;
-	}
-
-	return 0;
-}
-#endif
-
-/**
- * Enter into command mode.
- **/
-static int xbee_enter_command_mode()
-{
-	if (xbee_send_string("+++") != 0) {
-		return -1;
-	}
-
-	if (xbee_wait_for_ok() != 0) {
-	  return -1;
-	}
-	  return 0;
-}
-
-/**
- * Exit from command mode.
- **/
-static int xbee_exit_command_mode()
-{
-	if (xbee_send_string("ATCN\r") != 0) {
-		return -1;
-	}
-
-	xbee_wait_for_ok();
-
-	return 0;
-}
-
-/**
- * Enter API mode.
- **/
-static int xbee_enter_api_mode()
-{
-	if (xbee_send_string("ATAP 1\r") != 0) {
-		return -1;
-	}
-	xbee_wait_for_ok();
-
-	return 0;
-}
-
-/**
- * Exit API mode.
- **/
-static int xbee_exit_api_mode()
-{
-	if (xbee_send_modify_at_command("AP","0") != 0) {
-		return -1;
-	}
-
-	return 0;
-}
-
-/**
- * Wait until the string "OK\r" is received from the XBee.
- **/
-static int xbee_wait_for_ok()
-{
-	return xbee_wait_for_string("OK\r", 3);
-}
-
-/**
- * Delay until the specified string is received from
- * the XBee. Discards all other XBee data.
- *
- * ********* Robot often hangs here ****************
- *
- * @param s the string to receive
- * @param len the length of the string
- **/
-static int xbee_wait_for_string(char* s, int len)
-{
-	char* curr = s;
-	while (curr - s < len) {
-    WL_DEBUG_PRINT("waiting for string\r\n");
-		// check if buffer is empty
-		if (buffer_last != buffer_first) {
-			char c = arrival_buf[buffer_first++];
-			if (buffer_first == XBEE_BUFFER_SIZE) {
-				buffer_first = 0;
-			}
-
-			if (c == *curr) {
-				curr++;
-			} else {
-#ifndef ROBOT
-			  //return -1; // Computer is less forgiving.
-			  curr = s;
-#else
-			  curr = s;
-#endif
-			}
-		} // else buffer is empty.
-
-#ifndef ROBOT
-		usleep(100);
-#endif
-	}
-
-	return 0;
-}
-
-/**
- * Verifies that the packets checksum is correct.
- * (If the checksum is correct, the sum of the bytes
- * is 0xFF.)
- *
- * @param packet the packet received. This includes the first
- * three bytes, which are header information from the XBee.
- *
- * @param len The length of the packet received from the XBee
- *
- * @return 0 if the checksum is incorrect, nonzero
- * otherwise
- **/
-int xbee_verify_checksum(char* packet, int len)
-{
-	unsigned char sum = 0;
-	int i;
-	for (i = 3; i < len; i++)
-		sum += (unsigned char)packet[i];
-	return sum == 0xFF;
-}
-
-/**
- * Returns the checksum of the given packet.
- *
- * @param buf the data for the packet to send
- * @param len the length of the packet in bytes
- *
- * @return the checksum of the packet, which will
- * become the last byte sent in the packet
- **/
-char xbee_compute_checksum(char* buf, int len)
-{
-	int i;
-	unsigned char sum = 0;
-	for (i = 0; i < len; i++)
-		sum += (unsigned char)buf[i];
-	return 0xFF - sum;
-}
-
-/**
- * Adds header information and checksum to the given
- * packet and sends it. Header information includes
- * XBEE_FRAME_START and the packet length, as two bytes.
- *
- * @param buf the packet data
- * @param len the size in bytes of the packet data
- *
- **/
-static int xbee_send_frame(char* buf, int len)
-{
-	char prefix[3];
-	prefix[0] = XBEE_FRAME_START;
-	prefix[1] = (len & 0xFF00) >> 8;
-	prefix[2] = len & 0xFF;
-	char checksum = xbee_compute_checksum(buf, len);
-
-	if (xbee_send(prefix, 3) != 0) {
-		return -1;
-	}
-
-	if (xbee_send(buf, len) != 0) {
-		return -1;
-	}
-
-	if (xbee_send(&checksum, 1) != 0) {
-		return -1;
-	}
-
-	return 0;
-}
-
-/**
- * Sends an AT command to read a parameter.
- *
- * @param command the AT command to send. For exmaple,
- * use ID to read the PAN ID and MY to return the XBee ID.
- * See the XBee reference guide for a complete listing.
- **/
-int xbee_send_read_at_command(char* command)
-{
-	return xbee_send_modify_at_command(command, NULL);
-}
-
-/**
- * Sends the given AT command.
- *
- * @param command the AT command to send (e.g., MY, ID)
- * @param value the value to pass as a parameter
- * (or NULL if there is no parameter)
- **/
-static int xbee_send_modify_at_command(char* command, char* value)
-{
-	char buf[16];
-	int i;
-
-	buf[0] = XBEE_FRAME_AT_COMMAND;
-	buf[1] = 1;
-	buf[2] = command[0];
-	buf[3] = command[1];
-	int valueLen = 0;
-	if (value != NULL)
-	{
-		valueLen = strlen(value);
-		if (valueLen > 8)
-		{
-			WL_DEBUG_PRINT("AT Command too large.\r\n");
-			return -1;
-		}
-
-		for (i = 0; i < valueLen; i++) {
-			buf[4 + i] = value[i];
-		}
-	}
-
-	return xbee_send_frame(buf, 4 + valueLen);
-}
-
-/**
- * Send the specified packet.
- *
- * @param packet the packet data to send
- * @param len the number of bytes in the packet
- *
- * @param dest the ID of the XBee to send the packet to,
- * or XBEE_BROADCAST to send the message to all robots
- * in the PAN.
- *
- * @param options a combination of the flags
- * XBEE_OPTIONS_NONE, XBEE_OPTIONS_DISABLE_RESPONSE and
- * XBEE_OPTIONS_BROADCAST_ALL_PANS
- *
- * @param frame the frame number to associate this packet
- * with. This will be used to identify the response when
- * the XBee alerts us as to whether or not our message
- * was received.
- **/
-int xbee_send_packet(char* packet, int len, int dest, char options, char frame)
-{
-	char buf[5];
-	char prefix[3];
-	int i;
-	unsigned char checksum = 0;
-
-	if (len > 100)
-	{
-		WL_DEBUG_PRINT("Packet is too large.\r\n");
-		return -1;
-	}
-
-	//data for sending request
-	buf[0] = XBEE_FRAME_TX_REQUEST_16;
-	buf[1] = frame;
-	buf[2] = (dest >> 8) & 0xFF;
-	buf[3] = dest & 0xFF;
-	buf[4] = options;
-
-	//packet prefix, do this here so we don't need an extra buffer
-	prefix[0] = XBEE_FRAME_START;
-	prefix[1] = ((5 + len) & 0xFF00) >> 8;
-	prefix[2] = (5 + len) & 0xFF;
-
-	for (i = 0; i < 5; i++)
-		checksum += (unsigned char)buf[i];
-	for (i = 0; i < len; i++)
-		checksum += (unsigned char)packet[i];
-	checksum = 0xFF - checksum;
-
-	if (xbee_send(prefix, 3) != 0) {
-		return -1;
-	}
-
-	if (xbee_send(buf, 5) != 0) {
-		return -1;
-	}
-
-	if (xbee_send(packet, len) != 0) {
-		return -1;
-	}
-
-	if (xbee_send((char*)&checksum, 1) != 0) {
-		return -1;
-	}
-
-	return 0;
-}
-
-/**
- * Reads a packet received from the XBee. This function
- * is non-blocking. The resulting packet is stored in dest.
- * Only returns transmission response packets and
- * received packets. The returned packet does not include
- * header information or the checksum. This method also
- * handles special packets dealt with by the XBee library,
- * and so should be called frequently while the XBee is in
- * use.<br><br>
- *
- * The first byte of the packet will be either
- * XBEE_TX_STATUS or XBEE_RX to indicated
- * a response to a sent message or a received message,
- * respectively.<br><br>
- *
- * For a status response packet:<br>
- * The first byte will be XBEE_TX_STATUS.<br>
- * The second byte will be the frame number.<br>
- * The third byte will be the result. 0 indicates success,
- * and nonzero indicates that an error ocurred in
- * transmitting the packet.<br><br>
- *
- * For a received packet:<br>
- * The first byte will be XBEE_RX.<br>
- * The second and third bytes will be the 16-bit
- * address of the packet's sender.<br>
- * The fourth byte is the signal strength.<br>
- * The fifth byte is 1 if the packet were sent to
- * a specific address, and 2 if it is a broadcast packet.<br><br>
- *
- * @param dest set to the packet data
- * @return the length of the packet, or -1 if no packet
- * is available
- **/
-int xbee_get_packet(unsigned char* dest)
-{
-     int ret;
-	//start reading a packet with XBEE_FRAME_START
-	if (currentBufPos == 0)
-	{
-		do
-		{
-			if (buffer_first == XBEE_BUFFER_SIZE)
-				buffer_first = 0;
-			// check if buffer is empty
-			if (buffer_first == buffer_last) {
-				return -1;
-			}
-		} while (arrival_buf[buffer_first++] != XBEE_FRAME_START);
-
-		if (buffer_first == XBEE_BUFFER_SIZE) {
-			buffer_first = 0;
-		}
-		xbee_buf[0] = XBEE_FRAME_START;
-		currentBufPos++;
-	}
-
-	int len = -1;
-	if (currentBufPos >= 3) {
-		len = (int)xbee_buf[2] + ((int)xbee_buf[1] << 8);
-	}
-
-	while (len == -1 //packet length has not been read yet
-		|| currentBufPos < len + 4)
-	{
-		if (currentBufPos == 3)
-		{
-			len = (int)xbee_buf[2] + ((int)xbee_buf[1] << 8);
-			if (len > 120)
-			{
-				WL_DEBUG_PRINT("Packet too large. Probably error in XBee transmission.\n");
-				currentBufPos = 0;
-				return -1;
-			}
-		}
-
-		// check if buffer is empty
-		if (buffer_first == buffer_last) {
-			return -1;
-		}
-		xbee_buf[currentBufPos++] = arrival_buf[buffer_first++];
-		if (buffer_first == XBEE_BUFFER_SIZE) {
-			buffer_first = 0;
-		}
-	}
-
-	currentBufPos = 0;
-
-	if (!xbee_verify_checksum(xbee_buf, len + 4))
-	{
-		WL_DEBUG_PRINT("XBee checksum failed.\r\n");
-		return -1;
-	}
-
-	//we will take care of the packet
-	
-	ret = xbee_handle_packet(xbee_buf+3, len);
-	if (ret == 1) {
-		return 3;
-	}
-	
-	if (dest == NULL) {
-		return -1;
-	}
-
-	int i;
-	for (i = 3; i < len + 3; i++) {
-		dest[i - 3] = xbee_buf[i];
-	}
-	return len;
-}
-
-/**
- * Handles modem status packets.
- *
- * @param status the type of status packet received.
- **/
-void xbee_handle_status(char status)
-{
-	switch (status)
-	{
-		case 0:
-			WL_DEBUG_PRINT("XBee hardware reset.\r\n");
-			break;
-		case 1:
-			WL_DEBUG_PRINT("Watchdog timer reset.\r\n");
-			break;
-		case 2:
-			WL_DEBUG_PRINT("Associated.\r\n");
-			break;
-		case 3:
-			WL_DEBUG_PRINT("Disassociated.\r\n");
-			break;
-		case 4:
-			WL_DEBUG_PRINT("Synchronization lost.\r\n");
-			break;
-		case 5:
-			WL_DEBUG_PRINT("Coordinator realignment.\r\n");
-			break;
-		case 6:
-			WL_DEBUG_PRINT("Coordinator started.\r\n");
-			break;
-	}
-}
-
-/**
- * Handles AT command response packets.
- * @param command the two character AT command, e.g. MY or ID
- * @param result 0 for success, 1 for an error
- * @param extra the hex value of the requested register
- * @param extraLen the length in bytes of extra
- **/
-static void xbee_handle_at_command_response(char* command, char result, char* extra, int extraLen)
-{
-	if (result == 1)
-	{
-		WL_DEBUG_PRINT("Error with AT");
-		WL_DEBUG_PRINT(command);
-		WL_DEBUG_PRINT(" packet.\r\n");
-	}
-	WL_DEBUG_PRINT("AT");
-	WL_DEBUG_PRINT(command);
-	WL_DEBUG_PRINT(" command was successful.\r\n");
-
-	if (command[0] == 'I' && command[1] == 'D')
-	{
-		xbee_panID = xbee_pending_panID;
-		WL_DEBUG_PRINT("PAN ID set to ");
-		WL_DEBUG_PRINT_INT(xbee_panID);
-		WL_DEBUG_PRINT(".\r\n");
-		return;
-	}
-
-	if (command[0] == 'C' && command[1] == 'H')
-	{
-		xbee_channel = xbee_pending_channel;
-		WL_DEBUG_PRINT("Channel set to ");
-		WL_DEBUG_PRINT_INT(xbee_channel);
-		WL_DEBUG_PRINT(".\r\n");
-		return;
-	}
-
-	if (command[0] == 'M' && command[1] == 'Y' && extraLen != 0)
-	{
-		xbee_address = 0;
-		int i;
-		for (i = 0; i < extraLen; i++) {
-			xbee_address = (xbee_address << 8) + extra[i];
-		}
-
-		WL_DEBUG_PRINT("XBee address is ");
-		WL_DEBUG_PRINT_INT(xbee_address);
-		WL_DEBUG_PRINT(".\r\n");
-
-		if (xbee_address == 0)
-		{
-			WL_DEBUG_PRINT("XBee 16-bit address must be set using ATMY.\r\n");
-			#ifndef ROBOT
-			exit(0);
-			#endif
-		}
-	}
-}
-
-/**
- * Attempts to handle the packet if it is dealt with
- * by the library.
- * We will handle the following packet types:
- *    Modem Status
- *    AT Command Response
- *
- * @param packet the packet to handle
- * @param len the length of the packet
- *
- * @return 1 if we have handled the packet, 0 otherwise
- */
-static int xbee_handle_packet(char* packet, int len)
-{
-
-	char command[3] = {1, 2, 3};
-	if (len <= 0) //this should not happend
-	{
-		WL_DEBUG_PRINT("Non-positive packet length.\r\n");
-		return 0;
-	}
-
-	switch ((unsigned char)packet[0]) //packet type
-	{
-		case XBEE_FRAME_STATUS:
-			xbee_handle_status(packet[1]);
-			return 1;
-		case XBEE_FRAME_AT_COMMAND_RESPONSE:
-			command[0] = packet[2];
-			command[1] = packet[3];
-			command[2] = 0;
-			xbee_handle_at_command_response(command, packet[4], packet + 5, len - 5);
-			return 1;
-	}
-	return 0;
-}
-
-/**
- * Sets the personal area network id.
- *
- * @param id the new personal area network (PAN) id
- **/
-int xbee_set_pan_id(int id)
-{
-	char s[3];
-	s[0] = (id >> 8) & 0xFF;
-	s[1] = id & 0xFF;
-	s[2] = 0;
-	xbee_pending_panID = id;
-	return xbee_send_modify_at_command("ID", s);
-}
-
-/**
- * Get the PAN ID for the XBee.
- *
- * @return the personal area network id, or
- * XBEE_PAN_DEFAULT if it has not yet been set.
- **/
-unsigned int xbee_get_pan_id()
-{
-	return xbee_panID;
-}
-
-/**
- * Set the channel the XBee is using.
- *
- * @param channel the channel the XBee will not use,
- * between 0x0B and 0x1A
- *
- * @see xbee_get_channel
- **/
-int xbee_set_channel(int channel)
-{
-	if (channel < 0x0B || channel > 0x1A)
-	{
-		WL_DEBUG_PRINT("Channel out of range.\r\n");
-		return -1;
-	}
-
-	char s[3];
-	s[0] = channel & 0xFF;
-	s[1] = 0;
-	xbee_pending_channel = channel;
-
-	return xbee_send_modify_at_command("CH", s);
-}
-
-/**
- * Returns the channel which the XBee is currently using.
- *
- * @return the channel the XBee is using
- *
- * @see xbee_set_channel
- **/
-int xbee_get_channel(void)
-{
-	return xbee_channel;
-}
-
-/**
- * Get the 16-bit address of the XBee.
- * This is used to specify who to send messages to
- * and who messages are from.
- *
- * @return the 16-bit address of the XBee.
- **/
-unsigned int xbee_get_address()
-{
-	return xbee_address;
-}
-
-#ifndef ROBOT
-void xbee_set_com_port(char* port)
-{
-	xbee_com_port = port;
-}
-#endif
Index: branches/colonetmk2/code/projects/test/main.c
===================================================================
--- branches/colonetmk2/code/projects/test/main.c	(revision 1455)
+++ branches/colonetmk2/code/projects/test/main.c	(nonexistent)
@@ -1,24 +0,0 @@
-#include <dragonfly_lib.h>
-
-#define RUN_TEST(f) extern int f(void); f();
-
-int main(void) {
-  dragonfly_init(ALL_ON);
-
-  while (1) {
-    // RUN_TEST(testusb);
-    // RUN_TEST(testanalog);
-    // RUN_TEST(testeeprom);
-    // RUN_TEST(testencoders);
-    // RUN_TEST(testlcd);
-    // RUN_TEST(testlights);
-    // RUN_TEST(testmotors);
-    // RUN_TEST(testrangefinder);
-    // RUN_TEST(testtokenring);
-    // RUN_TEST(testwireless);
-    RUN_TEST(testxbee);
-    delay_ms(1000);
-  }
-
-  return 0;
-}
Index: branches/colonetmk2/code/projects/i2c_charge_station/i2c_auto.c
===================================================================
--- branches/colonetmk2/code/projects/i2c_charge_station/i2c_auto.c	(revision 1455)
+++ branches/colonetmk2/code/projects/i2c_charge_station/i2c_auto.c	(nonexistent)
@@ -1,120 +0,0 @@
-/**
- * This is the API for i2c_autodetect used on the 
- * charging station. This block explains the high
- * level implementation. The functions below explain
- * the low level.
- * 
- ***** High Level *****
- * Since the charge stations are hooked up
- * via i2c lines, we must determine one master. We
- * decide that the one with the XBee is the master.
- * There should only be one Xbee in an i2c chain, though
- * in the case that there are two, the second one to detect
- * that they have an XBee must yeild the the older one.
- * All others are slaves. At startup, we check if we have an
- * XBee. If so, we poll for master, if there is none we declare
- * ourselves master. If you do not have an XBee, poll the line
- * asking for a master. If there is none, wait for a while and
- * then try again until the master assigns you an ID.
- * Once you have an ID, wait until the Master sends you commands.
- * Periodically check if you have an XBee, just in case.
- * The master must hand out IDs to the slaves. These IDs are
- * kept in a table that indicates the status of the station.
- * Occassionally poll the slaves to make sure they are not there and
- * update the table as needed. If a packet comes in over XBee,
- * forward to the correct charging station.
- * In the event that the master loses the XBee, broadcast a message
- * indicating that. Then poll for a new master. When one comes on,
- * pass it the table.
- **/
- 
- /**
-  * Sets up the needed states for i2c_autodetect
-  */
- void i2c_startup (void) {
- 
- }
- 
- /**
-  * Checks if an XBee is present.
-  *
-  * @return 0 if false, 1 if true
-  */
- char i2c_has_xbee(void) {
- 
- }
- 
- /**
-  * Acting as a temporary master, poll the master for an ID. If there
-  * is a master, he should respond with an ID in which case you should
-  * add that as your ID. Otherwise leave your ID blank.
-  *
-  * @return your ID, otherwise 0x00
-  */
-char i2c_request_id(void) {
-    
-}
-
-/**
- * This should be called on the reception of an ID request. Since this
- * will be called during an interrupt, make it as fast as possible.
- * Check for the next available ID in the allocation table ans assign it.
- * Send the ID back on the bus.
- **/
-void i2c_allocate_id(void) {
-    
-}
-
-/**
- * This is your handler function to be called by the i2c interrupt. You
- * should get only 1 byte at a time and it will not be buffered. Handle it
- * fast. You should analyze if the packet is a ID request, a poll, a transfer
- * ID table, or data and then call the correct function. Basically this is a
- * giant switch.
- *
- * @param data Data byte received from master
- */
-void i2c_receive_data(char data) {
-
-}
-
-/**
- * Called if a poll request has been received. Since this is in an interrupt make it
- * fast. Queues up a poll response message to the master.
- */
-void i2c_poll_respond(void) {
-
-}
-
-/**
- * This should be done periodically. The allocation table should have a time since
- * last poll field which counts down along with a poll send bit. 
- * If time reaches 0 after a  poll remove it. This function, when
- * called with a NULL should run through the table and send out request to all 
- * those who are not currently being polled and check if those who have polls
- * have reached 0 and remove them. If called with an ID, set the poll status
- * bit for that ID to 0.
- * 
- * @param ID ID of the slave who has responded. If NULL poll all those not being polled
- */
-void i2c_poll_slaves_send(char ID) {
-
-}
-
-/**
- * Call this if you have lost the XBee and a new master has arrived. You should 
- * transfer the entire table over to the new master.
- */
-void i2c_transfer_table(void) {
-
-}
-
-/**
- * Call this if you receive a transfer table request. You should accept it and 
- * merge it into your table.
- */
- void i2c_receive_table(void) {
- 
- }
-
-
Index: branches/colonetmk2/code/projects/template/Makefile
===================================================================
--- branches/colonetmk2/code/projects/template/Makefile	(revision 1455)
+++ branches/colonetmk2/code/projects/template/Makefile	(nonexistent)
@@ -1,520 +0,0 @@
-########Update This Section########
-#
-#
-
-# Relative path to the root directory (containing lib directory)
-ifndef COLONYROOT
-COLONYROOT = ../../..
-endif
-
-# Target file name (without extension).
-TARGET = template
-
-# Uncomment this to use the wireless library
-USE_WIRELESS = 1
-
-# com1 = serial port. Use lpt1 to connect to parallel port.
-AVRDUDE_PORT = $(shell if uname -s |grep -i w32 >/dev/null; then echo 'COM4:'; else echo '/dev/ttyUSB0'; fi)
-
-#
-###################################
-
-# Hey Emacs, this is a -*- makefile -*-
-#----------------------------------------------------------------------------
-# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
-#
-# Released to the Public Domain
-#
-# Additional material for this makefile was written by:
-# Peter Fleury
-# Tim Henigan
-# Colin O'Flynn
-# Reiner Patommel
-# Markus Pfaff
-# Sander Pool
-# Frederik Rouleau
-#
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make coff = Convert ELF to AVR COFF.
-#
-# make extcoff = Convert ELF to AVR Extended COFF.
-#
-# make program = Download the hex file to the device, using avrdude.
-#                Please customize the avrdude settings below first!
-#
-# make debug = Start either simulavr or avarice as specified for debugging,
-#              with avr-gdb or avr-insight as the front end for debugging.
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
-#if you want your code to work on the Firefly++ and not Firefly+
-#then add the -DFFPP line to CDEFS
-CDEFS =
-#-DFFPP
-
-# MCU name
-MCU = atmega128
-
-# Processor frequency.
-#     This will define a symbol, F_CPU, in all source code files equal to the
-#     processor frequency. You can then use this symbol in your source code to
-#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-#     automatically to create a 32-bit value in your source code.
-F_CPU = 8000000
-
-# Output format. (can be srec, ihex, binary)
-FORMAT = ihex
-
-# List C source files here. (C dependencies are automatically generated.)
-SRC = $(wildcard *.c)
-
-# List Assembler source files here.
-#     Make them always end in a capital .S.  Files ending in a lowercase .s
-#     will not be considered source files but generated files (assembler
-#     output from the compiler), and will be deleted upon "make clean"!
-#     Even though the DOS/Win* filesystem matches both .s and .S the same,
-#     it will preserve the spelling of the filenames, and gcc itself does
-#     care about how the name is spelled on its command-line.
-ASRC =
-
-# Optimization level, can be [0, 1, 2, 3, s].
-#     0 = turn off optimization. s = optimize for size.
-#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
-OPT = s
-
-# Debugging format.
-#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
-#     AVR Studio 4.10 requires dwarf-2.
-#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
-DEBUG =
-
-# Compiler flag to set the C Standard level.
-#     c89   = "ANSI" C
-#     gnu89 = c89 plus GCC extensions
-#     c99   = ISO C99 standard (not yet fully implemented)
-#     gnu99 = c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-
-# Place -D or -U options here
-CDEFS += -DF_CPU=$(F_CPU)UL
-CDEFS += -DFFP
-# for wireless library
-ifdef USE_WIRELESS
-	CDEFS += -DROBOT
-endif
-
-# Place -I, -L options here
-CINCS = -I$(COLONYROOT)/code/lib/include/libdragonfly
-CINCS += -L$(COLONYROOT)/code/lib/bin
-ifdef USE_WIRELESS
-	CINCS += -I$(COLONYROOT)/code/lib/include/libwireless
-endif
-
-#---------------- Compiler Options ----------------
-#  -g*:          generate debugging information
-#  -O*:          optimization level
-#  -f...:        tuning, see GCC manual and avr-libc documentation
-#  -Wall...:     warning level
-#  -Wa,...:      tell GCC to pass this to the assembler.
-#    -adhlns...: create assembler listing
-CFLAGS =
-# CFLAGS = -g$(DEBUG)
-CFLAGS += $(CDEFS) $(CINCS)
-CFLAGS += -O$(OPT)
-CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
-CFLAGS += -Wall -Wstrict-prototypes
-CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
-CFLAGS += $(CSTANDARD)
-
-#---------------- Assembler Options ----------------
-#  -Wa,...:   tell GCC to pass this to the assembler.
-#  -ahlms:    create listing
-#  -gstabs:   have the assembler create line number information; note that
-#             for use in COFF files, additional information about filenames
-#             and function names needs to be present in the assembler source
-#             files -- see avr-libc docs [FIXME: not yet described there]
-ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
-
-
-#---------------- Library Options ----------------
-# Minimalistic printf version
-PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
-
-# Floating point printf version (requires MATH_LIB = -lm below)
-PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
-
-# If this is left blank, then it will use the Standard printf version.
-#PRINTF_LIB =
-#PRINTF_LIB = $(PRINTF_LIB_MIN)
-PRINTF_LIB = $(PRINTF_LIB_FLOAT)
-
-
-# Minimalistic scanf version
-SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
-
-# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
-SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
-
-# If this is left blank, then it will use the Standard scanf version.
-SCANF_LIB =
-#SCANF_LIB = $(SCANF_LIB_MIN)
-#SCANF_LIB = $(SCANF_LIB_FLOAT)
-
-MATH_LIB = -lm
-
-#---------------- External Memory Options ----------------
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# used for variables (.data/.bss) and heap (malloc()).
-#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# only used for heap (malloc()).
-#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
-
-EXTMEMOPTS =
-
-#---------------- Linker Options ----------------
-#  -Wl,...:     tell GCC to pass this to linker.
-#    -Map:      create map file
-#    --cref:    add cross reference to  map file
-LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
-LDFLAGS += $(EXTMEMOPTS)
-LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
-ifdef USE_WIRELESS
-	LDFLAGS += -lwireless
-endif
-LDFLAGS += -ldragonfly
-
-
-
-#---------------- Programming Options (avrdude) ----------------
-
-# Programming hardware: alf avr910 avrisp bascom bsd
-# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
-#
-# Type: avrdude -c ?
-# to get a full listing.
-#
-AVRDUDE_PROGRAMMER = avrisp
-
-# programmer connected to serial device
-
-AVRDUDE_WRITE_FLASH = -b 57600 -U flash:w:$(TARGET).hex
-#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
-
-
-# Uncomment the following if you want avrdude's erase cycle counter.
-# Note that this counter needs to be initialized first using -Yn,
-# see avrdude manual.
-#AVRDUDE_ERASE_COUNTER = -y
-
-# Uncomment the following if you do /not/ wish a verification to be
-# performed after programming the device.
-#AVRDUDE_NO_VERIFY = -V
-
-# Increase verbosity level.  Please use this when submitting bug
-# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
-# to submit bug reports.
-#AVRDUDE_VERBOSE = -v -v
-
-AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
-AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
-AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
-AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
-
-#don't check for device signature
-AVRDUDE_FLAGS += -F
-
-
-
-#---------------- Debugging Options ----------------
-
-# For simulavr only - target MCU frequency.
-DEBUG_MFREQ = $(F_CPU)
-
-# Set the DEBUG_UI to either gdb or insight.
-# DEBUG_UI = gdb
-DEBUG_UI = insight
-
-# Set the debugging back-end to either avarice, simulavr.
-DEBUG_BACKEND = avarice
-#DEBUG_BACKEND = simulavr
-
-# GDB Init Filename.
-GDBINIT_FILE = __avr_gdbinit
-
-# When using avarice settings for the JTAG
-JTAG_DEV = /dev/com1
-
-# Debugging port used to communicate between GDB / avarice / simulavr.
-DEBUG_PORT = 4242
-
-# Debugging host used to communicate between GDB / avarice / simulavr, normally
-#     just set to localhost unless doing some sort of crazy debugging when
-#     avarice is running on a different computer.
-DEBUG_HOST = localhost
-
-
-
-#============================================================================
-
-
-# Define programs and commands.
-SHELL = sh
-CC = avr-gcc
-OBJCOPY = avr-objcopy
-OBJDUMP = avr-objdump
-SIZE = avr-size
-NM = avr-nm
-AVRDUDE = avrdude
-REMOVE = rm -f
-REMOVEDIR = rm -rf
-COPY = cp
-WINSHELL = cmd
-
-
-# Define Messages
-# English
-MSG_ERRORS_NONE = Errors: none
-MSG_BEGIN = -------- begin --------
-MSG_END = --------  end  --------
-MSG_SIZE_BEFORE = Size before:
-MSG_SIZE_AFTER = Size after:
-MSG_COFF = Converting to AVR COFF:
-MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
-MSG_FLASH = Creating load file for Flash:
-MSG_EEPROM = Creating load file for EEPROM:
-MSG_EXTENDED_LISTING = Creating Extended Listing:
-MSG_SYMBOL_TABLE = Creating Symbol Table:
-MSG_LINKING = Linking:
-MSG_COMPILING = Compiling:
-MSG_ASSEMBLING = Assembling:
-MSG_CLEANING = Cleaning project:
-
-
-
-
-# Define all object files.
-OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
-
-# Define all listing files.
-LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)
-
-
-# Compiler flags to generate dependency files.
-GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
-
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-
-
-
-# Default target.
-all: begin gccversion sizebefore build sizeafter end
-
-build: elf hex eep lss sym
-
-elf: $(TARGET).elf
-hex: $(TARGET).hex
-eep: $(TARGET).eep
-lss: $(TARGET).lss
-sym: $(TARGET).sym
-
-
-
-# Eye candy.
-# AVR Studio 3.x does not check make's exit code but relies on
-# the following magic strings to be generated by the compile job.
-begin:
-	@echo
-	@echo $(MSG_BEGIN)
-
-end:
-	@echo $(MSG_END)
-	@echo
-
-
-# Display size of file.
-HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
-ELFSIZE = $(SIZE) -A $(TARGET).elf
-AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
-
-sizebefore:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-sizeafter:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-
-
-# Display compiler version information.
-gccversion :
-	@$(CC) --version
-
-
-
-# Program the device.
-program: $(TARGET).hex $(TARGET).eep
-	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
-
-
-# Generate avr-gdb config/init file which does the following:
-#     define the reset signal, load the target file, connect to target, and set
-#     a breakpoint at main().
-gdb-config:
-	@$(REMOVE) $(GDBINIT_FILE)
-	@echo define reset >> $(GDBINIT_FILE)
-	@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
-	@echo end >> $(GDBINIT_FILE)
-	@echo file $(TARGET).elf >> $(GDBINIT_FILE)
-	@echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
-ifeq ($(DEBUG_BACKEND),simulavr)
-	@echo load  >> $(GDBINIT_FILE)
-endif
-	@echo break main >> $(GDBINIT_FILE)
-
-debug: gdb-config $(TARGET).elf
-ifeq ($(DEBUG_BACKEND), avarice)
-	@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
-	@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
-	$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
-	@$(WINSHELL) /c pause
-
-else
-	@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
-	$(DEBUG_MFREQ) --port $(DEBUG_PORT)
-endif
-	@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
-
-
-
-
-# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
-COFFCONVERT=$(OBJCOPY) --debugging \
---change-section-address .data-0x800000 \
---change-section-address .bss-0x800000 \
---change-section-address .noinit-0x800000 \
---change-section-address .eeprom-0x810000
-
-
-coff: $(TARGET).elf
-	@echo
-	@echo $(MSG_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
-
-
-extcoff: $(TARGET).elf
-	@echo
-	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
-
-
-
-# Create final output files (.hex, .eep) from ELF output file.
-%.hex: %.elf
-	@echo
-	@echo $(MSG_FLASH) $@
-	$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
-
-%.eep: %.elf
-	@echo
-	@echo $(MSG_EEPROM) $@
-	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
-	--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
-
-# Create extended listing file from ELF output file.
-%.lss: %.elf
-	@echo
-	@echo $(MSG_EXTENDED_LISTING) $@
-	$(OBJDUMP) -h -S $< > $@
-
-# Create a symbol table from ELF output file.
-%.sym: %.elf
-	@echo
-	@echo $(MSG_SYMBOL_TABLE) $@
-	$(NM) -n $< > $@
-
-
-
-# Link: create ELF output file from object files.
-.SECONDARY : $(TARGET).elf
-.PRECIOUS : $(OBJ)
-%.elf: $(OBJ)
-	@echo
-	@echo $(MSG_LINKING) $@
-	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
-
-
-# Compile: create object files from C source files.
-%.o : %.c
-	@echo
-	@echo $(MSG_COMPILING) $<
-	$(CC) -c $(ALL_CFLAGS) $< -o $@
-
-
-# Compile: create assembler files from C source files.
-%.s : %.c
-	$(CC) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files.
-%.o : %.S
-	@echo
-	@echo $(MSG_ASSEMBLING) $<
-	$(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-# Create preprocessed source for use in sending a bug report.
-%.i : %.c
-	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
-
-
-# Target: clean project.
-clean: begin clean_list end
-
-clean_list :
-	@echo
-	@echo $(MSG_CLEANING)
-	$(REMOVE) $(TARGET).hex
-	$(REMOVE) $(TARGET).eep
-	$(REMOVE) $(TARGET).cof
-	$(REMOVE) $(TARGET).elf
-	$(REMOVE) $(TARGET).map
-	$(REMOVE) $(TARGET).sym
-	$(REMOVE) $(TARGET).lss
-	$(REMOVE) $(OBJ)
-	$(REMOVE) $(LST)
-	$(REMOVE) $(SRC:.c=.s)
-	$(REMOVE) $(SRC:.c=.d)
-	$(REMOVEDIR) .dep
-
-
-
-# Include the dependency files.
--include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
-
-
-# Listing of phony targets.
-.PHONY : all begin finish end sizebefore sizeafter gccversion \
-build elf hex eep lss sym coff extcoff \
-clean clean_list program debug gdb-config
-
Index: branches/colonetmk2/code/projects/template/main.c
===================================================================
--- branches/colonetmk2/code/projects/template/main.c	(revision 1455)
+++ branches/colonetmk2/code/projects/template/main.c	(nonexistent)
@@ -1,25 +0,0 @@
-#include <dragonfly_lib.h>
-
-int main(void)
-{
-
-	/* initialize components, set wireless channel */
-	dragonfly_init(ALL_ON);
-	
-	int val;
-
-	while (1) {
-
-		usb_puts("Val: ");
-		bom_refresh(BOM_ALL);
-		usb_puti(bom_get_max());
-
-		usb_putc('\n');
-
-		delay_ms(200);
-
-	}
-
-	return 0;
-}
-
Index: branches/colonetmk2/code/projects/girlscouts/Makefile
===================================================================
--- branches/colonetmk2/code/projects/girlscouts/Makefile	(revision 1455)
+++ branches/colonetmk2/code/projects/girlscouts/Makefile	(nonexistent)
@@ -1,520 +0,0 @@
-########Update This Section########
-#
-#
-
-# Relative path to the root directory (containing lib directory)
-ifndef COLONYROOT
-COLONYROOT = ../../..
-endif
-
-# Target file name (without extension).
-TARGET = template
-
-# Uncomment this to use the wireless library
-# USE_WIRELESS = 1
-
-# com1 = serial port. Use lpt1 to connect to parallel port.
-AVRDUDE_PORT = $(shell if uname -s |grep -i w32 >/dev/null; then echo 'COM4:'; else echo '/dev/ttyUSB0'; fi)
-#
-#
-###################################
-
-# Hey Emacs, this is a -*- makefile -*-
-#----------------------------------------------------------------------------
-# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
-#
-# Released to the Public Domain
-#
-# Additional material for this makefile was written by:
-# Peter Fleury
-# Tim Henigan
-# Colin O'Flynn
-# Reiner Patommel
-# Markus Pfaff
-# Sander Pool
-# Frederik Rouleau
-#
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make coff = Convert ELF to AVR COFF.
-#
-# make extcoff = Convert ELF to AVR Extended COFF.
-#
-# make program = Download the hex file to the device, using avrdude.
-#                Please customize the avrdude settings below first!
-#
-# make debug = Start either simulavr or avarice as specified for debugging,
-#              with avr-gdb or avr-insight as the front end for debugging.
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
-#if you want your code to work on the Firefly++ and not Firefly+
-#then add the -DFFPP line to CDEFS
-CDEFS =
-#-DFFPP
-
-# MCU name
-MCU = atmega128
-
-# Processor frequency.
-#     This will define a symbol, F_CPU, in all source code files equal to the
-#     processor frequency. You can then use this symbol in your source code to
-#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-#     automatically to create a 32-bit value in your source code.
-F_CPU = 8000000
-
-# Output format. (can be srec, ihex, binary)
-FORMAT = ihex
-
-# List C source files here. (C dependencies are automatically generated.)
-SRC = $(wildcard *.c)
-
-# List Assembler source files here.
-#     Make them always end in a capital .S.  Files ending in a lowercase .s
-#     will not be considered source files but generated files (assembler
-#     output from the compiler), and will be deleted upon "make clean"!
-#     Even though the DOS/Win* filesystem matches both .s and .S the same,
-#     it will preserve the spelling of the filenames, and gcc itself does
-#     care about how the name is spelled on its command-line.
-ASRC =
-
-# Optimization level, can be [0, 1, 2, 3, s].
-#     0 = turn off optimization. s = optimize for size.
-#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
-OPT = s
-
-# Debugging format.
-#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
-#     AVR Studio 4.10 requires dwarf-2.
-#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
-DEBUG =
-
-# Compiler flag to set the C Standard level.
-#     c89   = "ANSI" C
-#     gnu89 = c89 plus GCC extensions
-#     c99   = ISO C99 standard (not yet fully implemented)
-#     gnu99 = c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-
-# Place -D or -U options here
-CDEFS += -DF_CPU=$(F_CPU)UL
-CDEFS += -DFFP
-# for wireless library
-ifdef USE_WIRELESS
-	CDEFS += -DROBOT
-endif
-
-# Place -I, -L options here
-CINCS = -I$(COLONYROOT)/code/lib/include/libdragonfly
-CINCS += -L$(COLONYROOT)/code/lib/bin
-ifdef USE_WIRELESS
-	CINCS += -I$(COLONYROOT)/code/lib/include/libwireless
-endif
-
-#---------------- Compiler Options ----------------
-#  -g*:          generate debugging information
-#  -O*:          optimization level
-#  -f...:        tuning, see GCC manual and avr-libc documentation
-#  -Wall...:     warning level
-#  -Wa,...:      tell GCC to pass this to the assembler.
-#    -adhlns...: create assembler listing
-CFLAGS =
-# CFLAGS = -g$(DEBUG)
-CFLAGS += $(CDEFS) $(CINCS)
-CFLAGS += -O$(OPT)
-CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
-CFLAGS += -Wall -Wstrict-prototypes
-CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
-CFLAGS += $(CSTANDARD)
-
-#---------------- Assembler Options ----------------
-#  -Wa,...:   tell GCC to pass this to the assembler.
-#  -ahlms:    create listing
-#  -gstabs:   have the assembler create line number information; note that
-#             for use in COFF files, additional information about filenames
-#             and function names needs to be present in the assembler source
-#             files -- see avr-libc docs [FIXME: not yet described there]
-ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
-
-
-#---------------- Library Options ----------------
-# Minimalistic printf version
-PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
-
-# Floating point printf version (requires MATH_LIB = -lm below)
-PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
-
-# If this is left blank, then it will use the Standard printf version.
-PRINTF_LIB =
-#PRINTF_LIB = $(PRINTF_LIB_MIN)
-#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
-
-
-# Minimalistic scanf version
-SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
-
-# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
-SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
-
-# If this is left blank, then it will use the Standard scanf version.
-SCANF_LIB =
-#SCANF_LIB = $(SCANF_LIB_MIN)
-#SCANF_LIB = $(SCANF_LIB_FLOAT)
-
-MATH_LIB = -lm
-
-#---------------- External Memory Options ----------------
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# used for variables (.data/.bss) and heap (malloc()).
-#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# only used for heap (malloc()).
-#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
-
-EXTMEMOPTS =
-
-#---------------- Linker Options ----------------
-#  -Wl,...:     tell GCC to pass this to linker.
-#    -Map:      create map file
-#    --cref:    add cross reference to  map file
-LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
-LDFLAGS += $(EXTMEMOPTS)
-LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
-ifdef USE_WIRELESS
-	LDFLAGS += -lwireless
-endif
-LDFLAGS += -ldragonfly
-
-
-
-#---------------- Programming Options (avrdude) ----------------
-
-# Programming hardware: alf avr910 avrisp bascom bsd
-# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
-#
-# Type: avrdude -c ?
-# to get a full listing.
-#
-AVRDUDE_PROGRAMMER = avrisp
-
-# programmer connected to serial device
-
-AVRDUDE_WRITE_FLASH = -b 57600 -U flash:w:$(TARGET).hex
-#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
-
-
-# Uncomment the following if you want avrdude's erase cycle counter.
-# Note that this counter needs to be initialized first using -Yn,
-# see avrdude manual.
-#AVRDUDE_ERASE_COUNTER = -y
-
-# Uncomment the following if you do /not/ wish a verification to be
-# performed after programming the device.
-#AVRDUDE_NO_VERIFY = -V
-
-# Increase verbosity level.  Please use this when submitting bug
-# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
-# to submit bug reports.
-#AVRDUDE_VERBOSE = -v -v
-
-AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
-AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
-AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
-AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
-
-#don't check for device signature
-AVRDUDE_FLAGS += -F
-
-
-
-#---------------- Debugging Options ----------------
-
-# For simulavr only - target MCU frequency.
-DEBUG_MFREQ = $(F_CPU)
-
-# Set the DEBUG_UI to either gdb or insight.
-# DEBUG_UI = gdb
-DEBUG_UI = insight
-
-# Set the debugging back-end to either avarice, simulavr.
-DEBUG_BACKEND = avarice
-#DEBUG_BACKEND = simulavr
-
-# GDB Init Filename.
-GDBINIT_FILE = __avr_gdbinit
-
-# When using avarice settings for the JTAG
-JTAG_DEV = /dev/com1
-
-# Debugging port used to communicate between GDB / avarice / simulavr.
-DEBUG_PORT = 4242
-
-# Debugging host used to communicate between GDB / avarice / simulavr, normally
-#     just set to localhost unless doing some sort of crazy debugging when
-#     avarice is running on a different computer.
-DEBUG_HOST = localhost
-
-
-
-#============================================================================
-
-
-# Define programs and commands.
-SHELL = sh
-CC = avr-gcc
-OBJCOPY = avr-objcopy
-OBJDUMP = avr-objdump
-SIZE = avr-size
-NM = avr-nm
-AVRDUDE = avrdude
-REMOVE = rm -f
-REMOVEDIR = rm -rf
-COPY = cp
-WINSHELL = cmd
-
-
-# Define Messages
-# English
-MSG_ERRORS_NONE = Errors: none
-MSG_BEGIN = -------- begin --------
-MSG_END = --------  end  --------
-MSG_SIZE_BEFORE = Size before:
-MSG_SIZE_AFTER = Size after:
-MSG_COFF = Converting to AVR COFF:
-MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
-MSG_FLASH = Creating load file for Flash:
-MSG_EEPROM = Creating load file for EEPROM:
-MSG_EXTENDED_LISTING = Creating Extended Listing:
-MSG_SYMBOL_TABLE = Creating Symbol Table:
-MSG_LINKING = Linking:
-MSG_COMPILING = Compiling:
-MSG_ASSEMBLING = Assembling:
-MSG_CLEANING = Cleaning project:
-
-
-
-
-# Define all object files.
-OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
-
-# Define all listing files.
-LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)
-
-
-# Compiler flags to generate dependency files.
-GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
-
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-
-
-
-# Default target.
-all: begin gccversion sizebefore build sizeafter end
-
-build: elf hex eep lss sym
-
-elf: $(TARGET).elf
-hex: $(TARGET).hex
-eep: $(TARGET).eep
-lss: $(TARGET).lss
-sym: $(TARGET).sym
-
-
-
-# Eye candy.
-# AVR Studio 3.x does not check make's exit code but relies on
-# the following magic strings to be generated by the compile job.
-begin:
-	@echo
-	@echo $(MSG_BEGIN)
-
-end:
-	@echo $(MSG_END)
-	@echo
-
-
-# Display size of file.
-HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
-ELFSIZE = $(SIZE) -A $(TARGET).elf
-AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
-
-sizebefore:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-sizeafter:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-
-
-# Display compiler version information.
-gccversion :
-	@$(CC) --version
-
-
-
-# Program the device.
-program: $(TARGET).hex $(TARGET).eep
-	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
-
-
-# Generate avr-gdb config/init file which does the following:
-#     define the reset signal, load the target file, connect to target, and set
-#     a breakpoint at main().
-gdb-config:
-	@$(REMOVE) $(GDBINIT_FILE)
-	@echo define reset >> $(GDBINIT_FILE)
-	@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
-	@echo end >> $(GDBINIT_FILE)
-	@echo file $(TARGET).elf >> $(GDBINIT_FILE)
-	@echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
-ifeq ($(DEBUG_BACKEND),simulavr)
-	@echo load  >> $(GDBINIT_FILE)
-endif
-	@echo break main >> $(GDBINIT_FILE)
-
-debug: gdb-config $(TARGET).elf
-ifeq ($(DEBUG_BACKEND), avarice)
-	@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
-	@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
-	$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
-	@$(WINSHELL) /c pause
-
-else
-	@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
-	$(DEBUG_MFREQ) --port $(DEBUG_PORT)
-endif
-	@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
-
-
-
-
-# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
-COFFCONVERT=$(OBJCOPY) --debugging \
---change-section-address .data-0x800000 \
---change-section-address .bss-0x800000 \
---change-section-address .noinit-0x800000 \
---change-section-address .eeprom-0x810000
-
-
-coff: $(TARGET).elf
-	@echo
-	@echo $(MSG_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
-
-
-extcoff: $(TARGET).elf
-	@echo
-	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
-
-
-
-# Create final output files (.hex, .eep) from ELF output file.
-%.hex: %.elf
-	@echo
-	@echo $(MSG_FLASH) $@
-	$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
-
-%.eep: %.elf
-	@echo
-	@echo $(MSG_EEPROM) $@
-	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
-	--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
-
-# Create extended listing file from ELF output file.
-%.lss: %.elf
-	@echo
-	@echo $(MSG_EXTENDED_LISTING) $@
-	$(OBJDUMP) -h -S $< > $@
-
-# Create a symbol table from ELF output file.
-%.sym: %.elf
-	@echo
-	@echo $(MSG_SYMBOL_TABLE) $@
-	$(NM) -n $< > $@
-
-
-
-# Link: create ELF output file from object files.
-.SECONDARY : $(TARGET).elf
-.PRECIOUS : $(OBJ)
-%.elf: $(OBJ)
-	@echo
-	@echo $(MSG_LINKING) $@
-	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
-
-
-# Compile: create object files from C source files.
-%.o : %.c
-	@echo
-	@echo $(MSG_COMPILING) $<
-	$(CC) -c $(ALL_CFLAGS) $< -o $@
-
-
-# Compile: create assembler files from C source files.
-%.s : %.c
-	$(CC) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files.
-%.o : %.S
-	@echo
-	@echo $(MSG_ASSEMBLING) $<
-	$(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-# Create preprocessed source for use in sending a bug report.
-%.i : %.c
-	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
-
-
-# Target: clean project.
-clean: begin clean_list end
-
-clean_list :
-	@echo
-	@echo $(MSG_CLEANING)
-	$(REMOVE) $(TARGET).hex
-	$(REMOVE) $(TARGET).eep
-	$(REMOVE) $(TARGET).cof
-	$(REMOVE) $(TARGET).elf
-	$(REMOVE) $(TARGET).map
-	$(REMOVE) $(TARGET).sym
-	$(REMOVE) $(TARGET).lss
-	$(REMOVE) $(OBJ)
-	$(REMOVE) $(LST)
-	$(REMOVE) $(SRC:.c=.s)
-	$(REMOVE) $(SRC:.c=.d)
-	$(REMOVEDIR) .dep
-
-
-
-# Include the dependency files.
--include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
-
-
-# Listing of phony targets.
-.PHONY : all begin finish end sizebefore sizeafter gccversion \
-build elf hex eep lss sym coff extcoff \
-clean clean_list program debug gdb-config
-
Index: branches/colonetmk2/code/projects/girlscouts/gs.h
===================================================================
--- branches/colonetmk2/code/projects/girlscouts/gs.h	(revision 1455)
+++ branches/colonetmk2/code/projects/girlscouts/gs.h	(nonexistent)
@@ -1,12 +0,0 @@
-#ifndef _GS_H_
-#define _GS_H_
-
-
-#define forward(t) move(175,0); delay_ms((t)); move(0,0); delay_ms(200);
-#define left(t) move(0,60); delay_ms((t)); move(0,0); delay_ms(200);
-#define right(t) move(0,-60); delay_ms((t)); move(0,0); delay_ms(200);
-
-#define START_PROGRAM int main(void){dragonfly_init(ALL_ON);
-#define END_PROGRAM  while(1); return 0; }
-
-#endif
Index: branches/colonetmk2/code/projects/girlscouts/main.c
===================================================================
--- branches/colonetmk2/code/projects/girlscouts/main.c	(revision 1455)
+++ branches/colonetmk2/code/projects/girlscouts/main.c	(nonexistent)
@@ -1,12 +0,0 @@
-#include <dragonfly_lib.h>
-#include <move.h>
-#include "gs.h"
-
-START_PROGRAM
-
-forward(1000)
-left(500)
-right(700)
-
-END_PROGRAM
-
Index: branches/colonetmk2/code/projects/targetPractice/targetBot/Makefile
===================================================================
--- branches/colonetmk2/code/projects/targetPractice/targetBot/Makefile	(revision 1455)
+++ branches/colonetmk2/code/projects/targetPractice/targetBot/Makefile	(nonexistent)
@@ -1,520 +0,0 @@
-########Update This Section########
-#
-#
-
-# Relative path to the root directory (containing lib directory)
-ifndef COLONYROOT
-COLONYROOT = ../../../..
-endif
-
-# Target file name (without extension).
-TARGET = template
-
-# Uncomment this to use the wireless library
-USE_WIRELESS = 1
-
-# com1 = serial port. Use lpt1 to connect to parallel port.
-AVRDUDE_PORT = $(shell if uname -s |grep -i w32 >/dev/null; then echo 'COM4:'; else echo '/dev/ttyUSB0'; fi)
-
-#
-###################################
-
-# Hey Emacs, this is a -*- makefile -*-
-#----------------------------------------------------------------------------
-# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
-#
-# Released to the Public Domain
-#
-# Additional material for this makefile was written by:
-# Peter Fleury
-# Tim Henigan
-# Colin O'Flynn
-# Reiner Patommel
-# Markus Pfaff
-# Sander Pool
-# Frederik Rouleau
-#
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make coff = Convert ELF to AVR COFF.
-#
-# make extcoff = Convert ELF to AVR Extended COFF.
-#
-# make program = Download the hex file to the device, using avrdude.
-#                Please customize the avrdude settings below first!
-#
-# make debug = Start either simulavr or avarice as specified for debugging,
-#              with avr-gdb or avr-insight as the front end for debugging.
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
-#if you want your code to work on the Firefly++ and not Firefly+
-#then add the -DFFPP line to CDEFS
-CDEFS =
-#-DFFPP
-
-# MCU name
-MCU = atmega128
-
-# Processor frequency.
-#     This will define a symbol, F_CPU, in all source code files equal to the
-#     processor frequency. You can then use this symbol in your source code to
-#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-#     automatically to create a 32-bit value in your source code.
-F_CPU = 8000000
-
-# Output format. (can be srec, ihex, binary)
-FORMAT = ihex
-
-# List C source files here. (C dependencies are automatically generated.)
-SRC = $(wildcard *.c)
-
-# List Assembler source files here.
-#     Make them always end in a capital .S.  Files ending in a lowercase .s
-#     will not be considered source files but generated files (assembler
-#     output from the compiler), and will be deleted upon "make clean"!
-#     Even though the DOS/Win* filesystem matches both .s and .S the same,
-#     it will preserve the spelling of the filenames, and gcc itself does
-#     care about how the name is spelled on its command-line.
-ASRC =
-
-# Optimization level, can be [0, 1, 2, 3, s].
-#     0 = turn off optimization. s = optimize for size.
-#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
-OPT = s
-
-# Debugging format.
-#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
-#     AVR Studio 4.10 requires dwarf-2.
-#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
-DEBUG =
-
-# Compiler flag to set the C Standard level.
-#     c89   = "ANSI" C
-#     gnu89 = c89 plus GCC extensions
-#     c99   = ISO C99 standard (not yet fully implemented)
-#     gnu99 = c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-
-# Place -D or -U options here
-CDEFS += -DF_CPU=$(F_CPU)UL
-CDEFS += -DFFP
-# for wireless library
-ifdef USE_WIRELESS
-	CDEFS += -DROBOT
-endif
-
-# Place -I, -L options here
-CINCS = -I$(COLONYROOT)/code/lib/include/libdragonfly
-CINCS += -L$(COLONYROOT)/code/lib/bin
-ifdef USE_WIRELESS
-	CINCS += -I$(COLONYROOT)/code/lib/include/libwireless
-endif
-
-#---------------- Compiler Options ----------------
-#  -g*:          generate debugging information
-#  -O*:          optimization level
-#  -f...:        tuning, see GCC manual and avr-libc documentation
-#  -Wall...:     warning level
-#  -Wa,...:      tell GCC to pass this to the assembler.
-#    -adhlns...: create assembler listing
-CFLAGS =
-# CFLAGS = -g$(DEBUG)
-CFLAGS += $(CDEFS) $(CINCS)
-CFLAGS += -O$(OPT)
-CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
-CFLAGS += -Wall -Wstrict-prototypes
-CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
-CFLAGS += $(CSTANDARD)
-
-#---------------- Assembler Options ----------------
-#  -Wa,...:   tell GCC to pass this to the assembler.
-#  -ahlms:    create listing
-#  -gstabs:   have the assembler create line number information; note that
-#             for use in COFF files, additional information about filenames
-#             and function names needs to be present in the assembler source
-#             files -- see avr-libc docs [FIXME: not yet described there]
-ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
-
-
-#---------------- Library Options ----------------
-# Minimalistic printf version
-PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
-
-# Floating point printf version (requires MATH_LIB = -lm below)
-PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
-
-# If this is left blank, then it will use the Standard printf version.
-#PRINTF_LIB =
-#PRINTF_LIB = $(PRINTF_LIB_MIN)
-PRINTF_LIB = $(PRINTF_LIB_FLOAT)
-
-
-# Minimalistic scanf version
-SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
-
-# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
-SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
-
-# If this is left blank, then it will use the Standard scanf version.
-SCANF_LIB =
-#SCANF_LIB = $(SCANF_LIB_MIN)
-#SCANF_LIB = $(SCANF_LIB_FLOAT)
-
-MATH_LIB = -lm
-
-#---------------- External Memory Options ----------------
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# used for variables (.data/.bss) and heap (malloc()).
-#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# only used for heap (malloc()).
-#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
-
-EXTMEMOPTS =
-
-#---------------- Linker Options ----------------
-#  -Wl,...:     tell GCC to pass this to linker.
-#    -Map:      create map file
-#    --cref:    add cross reference to  map file
-LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
-LDFLAGS += $(EXTMEMOPTS)
-LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
-ifdef USE_WIRELESS
-	LDFLAGS += -lwireless
-endif
-LDFLAGS += -ldragonfly
-
-
-
-#---------------- Programming Options (avrdude) ----------------
-
-# Programming hardware: alf avr910 avrisp bascom bsd
-# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
-#
-# Type: avrdude -c ?
-# to get a full listing.
-#
-AVRDUDE_PROGRAMMER = avrisp
-
-# programmer connected to serial device
-
-AVRDUDE_WRITE_FLASH = -b 57600 -U flash:w:$(TARGET).hex
-#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
-
-
-# Uncomment the following if you want avrdude's erase cycle counter.
-# Note that this counter needs to be initialized first using -Yn,
-# see avrdude manual.
-#AVRDUDE_ERASE_COUNTER = -y
-
-# Uncomment the following if you do /not/ wish a verification to be
-# performed after programming the device.
-#AVRDUDE_NO_VERIFY = -V
-
-# Increase verbosity level.  Please use this when submitting bug
-# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
-# to submit bug reports.
-#AVRDUDE_VERBOSE = -v -v
-
-AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
-AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
-AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
-AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
-
-#don't check for device signature
-AVRDUDE_FLAGS += -F
-
-
-
-#---------------- Debugging Options ----------------
-
-# For simulavr only - target MCU frequency.
-DEBUG_MFREQ = $(F_CPU)
-
-# Set the DEBUG_UI to either gdb or insight.
-# DEBUG_UI = gdb
-DEBUG_UI = insight
-
-# Set the debugging back-end to either avarice, simulavr.
-DEBUG_BACKEND = avarice
-#DEBUG_BACKEND = simulavr
-
-# GDB Init Filename.
-GDBINIT_FILE = __avr_gdbinit
-
-# When using avarice settings for the JTAG
-JTAG_DEV = /dev/com1
-
-# Debugging port used to communicate between GDB / avarice / simulavr.
-DEBUG_PORT = 4242
-
-# Debugging host used to communicate between GDB / avarice / simulavr, normally
-#     just set to localhost unless doing some sort of crazy debugging when
-#     avarice is running on a different computer.
-DEBUG_HOST = localhost
-
-
-
-#============================================================================
-
-
-# Define programs and commands.
-SHELL = sh
-CC = avr-gcc
-OBJCOPY = avr-objcopy
-OBJDUMP = avr-objdump
-SIZE = avr-size
-NM = avr-nm
-AVRDUDE = avrdude
-REMOVE = rm -f
-REMOVEDIR = rm -rf
-COPY = cp
-WINSHELL = cmd
-
-
-# Define Messages
-# English
-MSG_ERRORS_NONE = Errors: none
-MSG_BEGIN = -------- begin --------
-MSG_END = --------  end  --------
-MSG_SIZE_BEFORE = Size before:
-MSG_SIZE_AFTER = Size after:
-MSG_COFF = Converting to AVR COFF:
-MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
-MSG_FLASH = Creating load file for Flash:
-MSG_EEPROM = Creating load file for EEPROM:
-MSG_EXTENDED_LISTING = Creating Extended Listing:
-MSG_SYMBOL_TABLE = Creating Symbol Table:
-MSG_LINKING = Linking:
-MSG_COMPILING = Compiling:
-MSG_ASSEMBLING = Assembling:
-MSG_CLEANING = Cleaning project:
-
-
-
-
-# Define all object files.
-OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
-
-# Define all listing files.
-LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)
-
-
-# Compiler flags to generate dependency files.
-GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
-
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-
-
-
-# Default target.
-all: begin gccversion sizebefore build sizeafter end
-
-build: elf hex eep lss sym
-
-elf: $(TARGET).elf
-hex: $(TARGET).hex
-eep: $(TARGET).eep
-lss: $(TARGET).lss
-sym: $(TARGET).sym
-
-
-
-# Eye candy.
-# AVR Studio 3.x does not check make's exit code but relies on
-# the following magic strings to be generated by the compile job.
-begin:
-	@echo
-	@echo $(MSG_BEGIN)
-
-end:
-	@echo $(MSG_END)
-	@echo
-
-
-# Display size of file.
-HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
-ELFSIZE = $(SIZE) -A $(TARGET).elf
-AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
-
-sizebefore:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-sizeafter:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-
-
-# Display compiler version information.
-gccversion :
-	@$(CC) --version
-
-
-
-# Program the device.
-program: $(TARGET).hex $(TARGET).eep
-	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
-
-
-# Generate avr-gdb config/init file which does the following:
-#     define the reset signal, load the target file, connect to target, and set
-#     a breakpoint at main().
-gdb-config:
-	@$(REMOVE) $(GDBINIT_FILE)
-	@echo define reset >> $(GDBINIT_FILE)
-	@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
-	@echo end >> $(GDBINIT_FILE)
-	@echo file $(TARGET).elf >> $(GDBINIT_FILE)
-	@echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
-ifeq ($(DEBUG_BACKEND),simulavr)
-	@echo load  >> $(GDBINIT_FILE)
-endif
-	@echo break main >> $(GDBINIT_FILE)
-
-debug: gdb-config $(TARGET).elf
-ifeq ($(DEBUG_BACKEND), avarice)
-	@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
-	@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
-	$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
-	@$(WINSHELL) /c pause
-
-else
-	@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
-	$(DEBUG_MFREQ) --port $(DEBUG_PORT)
-endif
-	@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
-
-
-
-
-# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
-COFFCONVERT=$(OBJCOPY) --debugging \
---change-section-address .data-0x800000 \
---change-section-address .bss-0x800000 \
---change-section-address .noinit-0x800000 \
---change-section-address .eeprom-0x810000
-
-
-coff: $(TARGET).elf
-	@echo
-	@echo $(MSG_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
-
-
-extcoff: $(TARGET).elf
-	@echo
-	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
-
-
-
-# Create final output files (.hex, .eep) from ELF output file.
-%.hex: %.elf
-	@echo
-	@echo $(MSG_FLASH) $@
-	$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
-
-%.eep: %.elf
-	@echo
-	@echo $(MSG_EEPROM) $@
-	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
-	--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
-
-# Create extended listing file from ELF output file.
-%.lss: %.elf
-	@echo
-	@echo $(MSG_EXTENDED_LISTING) $@
-	$(OBJDUMP) -h -S $< > $@
-
-# Create a symbol table from ELF output file.
-%.sym: %.elf
-	@echo
-	@echo $(MSG_SYMBOL_TABLE) $@
-	$(NM) -n $< > $@
-
-
-
-# Link: create ELF output file from object files.
-.SECONDARY : $(TARGET).elf
-.PRECIOUS : $(OBJ)
-%.elf: $(OBJ)
-	@echo
-	@echo $(MSG_LINKING) $@
-	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
-
-
-# Compile: create object files from C source files.
-%.o : %.c
-	@echo
-	@echo $(MSG_COMPILING) $<
-	$(CC) -c $(ALL_CFLAGS) $< -o $@
-
-
-# Compile: create assembler files from C source files.
-%.s : %.c
-	$(CC) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files.
-%.o : %.S
-	@echo
-	@echo $(MSG_ASSEMBLING) $<
-	$(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-# Create preprocessed source for use in sending a bug report.
-%.i : %.c
-	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
-
-
-# Target: clean project.
-clean: begin clean_list end
-
-clean_list :
-	@echo
-	@echo $(MSG_CLEANING)
-	$(REMOVE) $(TARGET).hex
-	$(REMOVE) $(TARGET).eep
-	$(REMOVE) $(TARGET).cof
-	$(REMOVE) $(TARGET).elf
-	$(REMOVE) $(TARGET).map
-	$(REMOVE) $(TARGET).sym
-	$(REMOVE) $(TARGET).lss
-	$(REMOVE) $(OBJ)
-	$(REMOVE) $(LST)
-	$(REMOVE) $(SRC:.c=.s)
-	$(REMOVE) $(SRC:.c=.d)
-	$(REMOVEDIR) .dep
-
-
-
-# Include the dependency files.
--include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
-
-
-# Listing of phony targets.
-.PHONY : all begin finish end sizebefore sizeafter gccversion \
-build elf hex eep lss sym coff extcoff \
-clean clean_list program debug gdb-config
-
Index: branches/colonetmk2/code/projects/targetPractice/targetBot/main.c
===================================================================
--- branches/colonetmk2/code/projects/targetPractice/targetBot/main.c	(revision 1455)
+++ branches/colonetmk2/code/projects/targetPractice/targetBot/main.c	(nonexistent)
@@ -1,76 +0,0 @@
-#include <dragonfly_lib.h>
-#include <encoders.h>
-
-int main(void)
-{
-
-	int maxBOM, rangeVal;
-
-	dragonfly_init(ALL_ON);
-	encoders_init();
-	
-	orbs_set_color(GREEN, RED);
-	delay_ms(500);
-	orbs_set_color(RED, GREEN);
-	delay_ms(500);
-	orbs_set_color(GREEN, GREEN);
-
-	while (1) {
-		
-		bom_refresh(BOM_ALL);
-		delay_ms(100);
-		maxBOM = bom_get_max();
-		usb_puti(maxBOM);
-		usb_putc('\n');
-		if (maxBOM == 4) {
-			motors_off();
-			break;
-		}
-
-		motor_l_set(BACKWARD, 175);
-		motor_r_set(FORWARD, 175);
-
-	}
-
-	while (1) {
-
-		rangeVal = range_read_distance(IR2);
-		usb_puti(rangeVal);
-		usb_putc('\n');
-		if (rangeVal < 500 && rangeVal > 20) {
-			motors_off();
-			orbs_set_color(RED, RED);
-			break;
-		}
-
-		motor_l_set(FORWARD, 175);
-		motor_r_set(FORWARD, 175);
-
-	}
-
-	button2_wait();
-
-	motor_l_set(FORWARD, 175);
-	motor_r_set(FORWARD, 175);
-
-	while (1) {
-		if (encoder_get_x(LEFT) > 500) {
-			motors_off();
-			break;
-		}
-	}
-
-	while (1) {
-
-		orbs_set_color(BLUE, GREEN);
-		delay_ms(500);
-		orbs_set_color(GREEN, BLUE);
-		delay_ms(500);
-
-	}
-
-	while (1); /* END HERE */
-
-	return 0;
-}
-
Index: branches/colonetmk2/code/projects/targetPractice/beaconBot/main.c
===================================================================
--- branches/colonetmk2/code/projects/targetPractice/beaconBot/main.c	(revision 1455)
+++ branches/colonetmk2/code/projects/targetPractice/beaconBot/main.c	(nonexistent)
@@ -1,24 +0,0 @@
-#include <dragonfly_lib.h>
-
-int main(void)
-{
-
-	/* initialize components, set wireless channel */
-	dragonfly_init(ALL_ON);
-
-	bom_on();
-	
-	while (1) {
-
-		orbs_set_color(GREEN, BLUE);
-
-		delay_ms(1000);
-
-		orbs_set_color(BLUE, GREEN);
-
-		delay_ms(1000);
-
-	}
-
-	return 0;
-}
Index: branches/colonetmk2/code/projects/targetPractice/beaconBot/Makefile
===================================================================
--- branches/colonetmk2/code/projects/targetPractice/beaconBot/Makefile	(revision 1455)
+++ branches/colonetmk2/code/projects/targetPractice/beaconBot/Makefile	(nonexistent)
@@ -1,520 +0,0 @@
-########Update This Section########
-#
-#
-
-# Relative path to the root directory (containing lib directory)
-ifndef COLONYROOT
-COLONYROOT = ../../../..
-endif
-
-# Target file name (without extension).
-TARGET = template
-
-# Uncomment this to use the wireless library
-USE_WIRELESS = 1
-
-# com1 = serial port. Use lpt1 to connect to parallel port.
-AVRDUDE_PORT = $(shell if uname -s |grep -i w32 >/dev/null; then echo 'COM4:'; else echo '/dev/ttyUSB0'; fi)
-
-#
-###################################
-
-# Hey Emacs, this is a -*- makefile -*-
-#----------------------------------------------------------------------------
-# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
-#
-# Released to the Public Domain
-#
-# Additional material for this makefile was written by:
-# Peter Fleury
-# Tim Henigan
-# Colin O'Flynn
-# Reiner Patommel
-# Markus Pfaff
-# Sander Pool
-# Frederik Rouleau
-#
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make coff = Convert ELF to AVR COFF.
-#
-# make extcoff = Convert ELF to AVR Extended COFF.
-#
-# make program = Download the hex file to the device, using avrdude.
-#                Please customize the avrdude settings below first!
-#
-# make debug = Start either simulavr or avarice as specified for debugging,
-#              with avr-gdb or avr-insight as the front end for debugging.
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
-#if you want your code to work on the Firefly++ and not Firefly+
-#then add the -DFFPP line to CDEFS
-CDEFS =
-#-DFFPP
-
-# MCU name
-MCU = atmega128
-
-# Processor frequency.
-#     This will define a symbol, F_CPU, in all source code files equal to the
-#     processor frequency. You can then use this symbol in your source code to
-#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-#     automatically to create a 32-bit value in your source code.
-F_CPU = 8000000
-
-# Output format. (can be srec, ihex, binary)
-FORMAT = ihex
-
-# List C source files here. (C dependencies are automatically generated.)
-SRC = $(wildcard *.c)
-
-# List Assembler source files here.
-#     Make them always end in a capital .S.  Files ending in a lowercase .s
-#     will not be considered source files but generated files (assembler
-#     output from the compiler), and will be deleted upon "make clean"!
-#     Even though the DOS/Win* filesystem matches both .s and .S the same,
-#     it will preserve the spelling of the filenames, and gcc itself does
-#     care about how the name is spelled on its command-line.
-ASRC =
-
-# Optimization level, can be [0, 1, 2, 3, s].
-#     0 = turn off optimization. s = optimize for size.
-#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
-OPT = s
-
-# Debugging format.
-#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
-#     AVR Studio 4.10 requires dwarf-2.
-#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
-DEBUG =
-
-# Compiler flag to set the C Standard level.
-#     c89   = "ANSI" C
-#     gnu89 = c89 plus GCC extensions
-#     c99   = ISO C99 standard (not yet fully implemented)
-#     gnu99 = c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-
-# Place -D or -U options here
-CDEFS += -DF_CPU=$(F_CPU)UL
-CDEFS += -DFFP
-# for wireless library
-ifdef USE_WIRELESS
-	CDEFS += -DROBOT
-endif
-
-# Place -I, -L options here
-CINCS = -I$(COLONYROOT)/code/lib/include/libdragonfly
-CINCS += -L$(COLONYROOT)/code/lib/bin
-ifdef USE_WIRELESS
-	CINCS += -I$(COLONYROOT)/code/lib/include/libwireless
-endif
-
-#---------------- Compiler Options ----------------
-#  -g*:          generate debugging information
-#  -O*:          optimization level
-#  -f...:        tuning, see GCC manual and avr-libc documentation
-#  -Wall...:     warning level
-#  -Wa,...:      tell GCC to pass this to the assembler.
-#    -adhlns...: create assembler listing
-CFLAGS =
-# CFLAGS = -g$(DEBUG)
-CFLAGS += $(CDEFS) $(CINCS)
-CFLAGS += -O$(OPT)
-CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
-CFLAGS += -Wall -Wstrict-prototypes
-CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
-CFLAGS += $(CSTANDARD)
-
-#---------------- Assembler Options ----------------
-#  -Wa,...:   tell GCC to pass this to the assembler.
-#  -ahlms:    create listing
-#  -gstabs:   have the assembler create line number information; note that
-#             for use in COFF files, additional information about filenames
-#             and function names needs to be present in the assembler source
-#             files -- see avr-libc docs [FIXME: not yet described there]
-ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
-
-
-#---------------- Library Options ----------------
-# Minimalistic printf version
-PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
-
-# Floating point printf version (requires MATH_LIB = -lm below)
-PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
-
-# If this is left blank, then it will use the Standard printf version.
-#PRINTF_LIB =
-#PRINTF_LIB = $(PRINTF_LIB_MIN)
-PRINTF_LIB = $(PRINTF_LIB_FLOAT)
-
-
-# Minimalistic scanf version
-SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
-
-# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
-SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
-
-# If this is left blank, then it will use the Standard scanf version.
-SCANF_LIB =
-#SCANF_LIB = $(SCANF_LIB_MIN)
-#SCANF_LIB = $(SCANF_LIB_FLOAT)
-
-MATH_LIB = -lm
-
-#---------------- External Memory Options ----------------
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# used for variables (.data/.bss) and heap (malloc()).
-#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
-
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
-# only used for heap (malloc()).
-#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
-
-EXTMEMOPTS =
-
-#---------------- Linker Options ----------------
-#  -Wl,...:     tell GCC to pass this to linker.
-#    -Map:      create map file
-#    --cref:    add cross reference to  map file
-LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
-LDFLAGS += $(EXTMEMOPTS)
-LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
-ifdef USE_WIRELESS
-	LDFLAGS += -lwireless
-endif
-LDFLAGS += -ldragonfly
-
-
-
-#---------------- Programming Options (avrdude) ----------------
-
-# Programming hardware: alf avr910 avrisp bascom bsd
-# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
-#
-# Type: avrdude -c ?
-# to get a full listing.
-#
-AVRDUDE_PROGRAMMER = avrisp
-
-# programmer connected to serial device
-
-AVRDUDE_WRITE_FLASH = -b 57600 -U flash:w:$(TARGET).hex
-#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
-
-
-# Uncomment the following if you want avrdude's erase cycle counter.
-# Note that this counter needs to be initialized first using -Yn,
-# see avrdude manual.
-#AVRDUDE_ERASE_COUNTER = -y
-
-# Uncomment the following if you do /not/ wish a verification to be
-# performed after programming the device.
-#AVRDUDE_NO_VERIFY = -V
-
-# Increase verbosity level.  Please use this when submitting bug
-# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
-# to submit bug reports.
-#AVRDUDE_VERBOSE = -v -v
-
-AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
-AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
-AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
-AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
-
-#don't check for device signature
-AVRDUDE_FLAGS += -F
-
-
-
-#---------------- Debugging Options ----------------
-
-# For simulavr only - target MCU frequency.
-DEBUG_MFREQ = $(F_CPU)
-
-# Set the DEBUG_UI to either gdb or insight.
-# DEBUG_UI = gdb
-DEBUG_UI = insight
-
-# Set the debugging back-end to either avarice, simulavr.
-DEBUG_BACKEND = avarice
-#DEBUG_BACKEND = simulavr
-
-# GDB Init Filename.
-GDBINIT_FILE = __avr_gdbinit
-
-# When using avarice settings for the JTAG
-JTAG_DEV = /dev/com1
-
-# Debugging port used to communicate between GDB / avarice / simulavr.
-DEBUG_PORT = 4242
-
-# Debugging host used to communicate between GDB / avarice / simulavr, normally
-#     just set to localhost unless doing some sort of crazy debugging when
-#     avarice is running on a different computer.
-DEBUG_HOST = localhost
-
-
-
-#============================================================================
-
-
-# Define programs and commands.
-SHELL = sh
-CC = avr-gcc
-OBJCOPY = avr-objcopy
-OBJDUMP = avr-objdump
-SIZE = avr-size
-NM = avr-nm
-AVRDUDE = avrdude
-REMOVE = rm -f
-REMOVEDIR = rm -rf
-COPY = cp
-WINSHELL = cmd
-
-
-# Define Messages
-# English
-MSG_ERRORS_NONE = Errors: none
-MSG_BEGIN = -------- begin --------
-MSG_END = --------  end  --------
-MSG_SIZE_BEFORE = Size before:
-MSG_SIZE_AFTER = Size after:
-MSG_COFF = Converting to AVR COFF:
-MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
-MSG_FLASH = Creating load file for Flash:
-MSG_EEPROM = Creating load file for EEPROM:
-MSG_EXTENDED_LISTING = Creating Extended Listing:
-MSG_SYMBOL_TABLE = Creating Symbol Table:
-MSG_LINKING = Linking:
-MSG_COMPILING = Compiling:
-MSG_ASSEMBLING = Assembling:
-MSG_CLEANING = Cleaning project:
-
-
-
-
-# Define all object files.
-OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
-
-# Define all listing files.
-LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)
-
-
-# Compiler flags to generate dependency files.
-GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
-
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-
-
-
-# Default target.
-all: begin gccversion sizebefore build sizeafter end
-
-build: elf hex eep lss sym
-
-elf: $(TARGET).elf
-hex: $(TARGET).hex
-eep: $(TARGET).eep
-lss: $(TARGET).lss
-sym: $(TARGET).sym
-
-
-
-# Eye candy.
-# AVR Studio 3.x does not check make's exit code but relies on
-# the following magic strings to be generated by the compile job.
-begin:
-	@echo
-	@echo $(MSG_BEGIN)
-
-end:
-	@echo $(MSG_END)
-	@echo
-
-
-# Display size of file.
-HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
-ELFSIZE = $(SIZE) -A $(TARGET).elf
-AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
-
-sizebefore:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-sizeafter:
-	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
-	$(AVRMEM) 2>/dev/null; echo; fi
-
-
-
-# Display compiler version information.
-gccversion :
-	@$(CC) --version
-
-
-
-# Program the device.
-program: $(TARGET).hex $(TARGET).eep
-	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
-
-
-# Generate avr-gdb config/init file which does the following:
-#     define the reset signal, load the target file, connect to target, and set
-#     a breakpoint at main().
-gdb-config:
-	@$(REMOVE) $(GDBINIT_FILE)
-	@echo define reset >> $(GDBINIT_FILE)
-	@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
-	@echo end >> $(GDBINIT_FILE)
-	@echo file $(TARGET).elf >> $(GDBINIT_FILE)
-	@echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
-ifeq ($(DEBUG_BACKEND),simulavr)
-	@echo load  >> $(GDBINIT_FILE)
-endif
-	@echo break main >> $(GDBINIT_FILE)
-
-debug: gdb-config $(TARGET).elf
-ifeq ($(DEBUG_BACKEND), avarice)
-	@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
-	@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
-	$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
-	@$(WINSHELL) /c pause
-
-else
-	@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
-	$(DEBUG_MFREQ) --port $(DEBUG_PORT)
-endif
-	@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
-
-
-
-
-# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
-COFFCONVERT=$(OBJCOPY) --debugging \
---change-section-address .data-0x800000 \
---change-section-address .bss-0x800000 \
---change-section-address .noinit-0x800000 \
---change-section-address .eeprom-0x810000
-
-
-coff: $(TARGET).elf
-	@echo
-	@echo $(MSG_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
-
-
-extcoff: $(TARGET).elf
-	@echo
-	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
-	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
-
-
-
-# Create final output files (.hex, .eep) from ELF output file.
-%.hex: %.elf
-	@echo
-	@echo $(MSG_FLASH) $@
-	$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
-
-%.eep: %.elf
-	@echo
-	@echo $(MSG_EEPROM) $@
-	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
-	--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
-
-# Create extended listing file from ELF output file.
-%.lss: %.elf
-	@echo
-	@echo $(MSG_EXTENDED_LISTING) $@
-	$(OBJDUMP) -h -S $< > $@
-
-# Create a symbol table from ELF output file.
-%.sym: %.elf
-	@echo
-	@echo $(MSG_SYMBOL_TABLE) $@
-	$(NM) -n $< > $@
-
-
-
-# Link: create ELF output file from object files.
-.SECONDARY : $(TARGET).elf
-.PRECIOUS : $(OBJ)
-%.elf: $(OBJ)
-	@echo
-	@echo $(MSG_LINKING) $@
-	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
-
-
-# Compile: create object files from C source files.
-%.o : %.c
-	@echo
-	@echo $(MSG_COMPILING) $<
-	$(CC) -c $(ALL_CFLAGS) $< -o $@
-
-
-# Compile: create assembler files from C source files.
-%.s : %.c
-	$(CC) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files.
-%.o : %.S
-	@echo
-	@echo $(MSG_ASSEMBLING) $<
-	$(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-# Create preprocessed source for use in sending a bug report.
-%.i : %.c
-	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
-
-
-# Target: clean project.
-clean: begin clean_list end
-
-clean_list :
-	@echo
-	@echo $(MSG_CLEANING)
-	$(REMOVE) $(TARGET).hex
-	$(REMOVE) $(TARGET).eep
-	$(REMOVE) $(TARGET).cof
-	$(REMOVE) $(TARGET).elf
-	$(REMOVE) $(TARGET).map
-	$(REMOVE) $(TARGET).sym
-	$(REMOVE) $(TARGET).lss
-	$(REMOVE) $(OBJ)
-	$(REMOVE) $(LST)
-	$(REMOVE) $(SRC:.c=.s)
-	$(REMOVE) $(SRC:.c=.d)
-	$(REMOVEDIR) .dep
-
-
-
-# Include the dependency files.
--include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
-
-
-# Listing of phony targets.
-.PHONY : all begin finish end sizebefore sizeafter gccversion \
-build elf hex eep lss sym coff extcoff \
-clean clean_list program debug gdb-config
-
Index: branches/colonetmk2/code/projects/libwireless/lib/wl_token_ring.c
===================================================================
--- branches/colonetmk2/code/projects/libwireless/lib/wl_token_ring.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libwireless/lib/wl_token_ring.c	(revision 1456)
@@ -35,7 +35,6 @@
 #include <wl_token_ring.h>
 
 #include <stdlib.h>
-#include <stdio.h>
 
 #include <wl_defs.h>
 #include <wireless.h>
@@ -107,9 +106,11 @@
 // the amount of time a robot has had its BOM on for
 static int bom_on_count = 0;
 
-#ifndef ROBOT
+#if (!(defined ROBOT)) || (defined FIREFLY)
 static void do_nothing(void) {}
-static int get_nothing(void) {return -1;}
+static SensorReading get_nothing(void) { SensorReading ret = { READING_UNKNOWN, READING_UNKNOWN }; return ret;}
+#else
+static SensorReading default_get_bom(void) { int dist, dir; bom_refresh(BOM_ALL); dir = bom_get_max10(&dist); SensorReading ret = { dir, dist}; return ret; }
 #endif
 
 #ifdef ROBOT
@@ -116,16 +117,16 @@
 #ifndef FIREFLY
 static void (*bom_on_function) (void) = bom_on;
 static void (*bom_off_function) (void) = bom_off;
-static int (*get_max_bom_function) (void) = get_max_bom;
+static SensorReading (*get_max_bom_function) (void) = default_get_bom;
 #else
 static void (*bom_on_function) (void) = do_nothing;
 static void (*bom_off_function) (void) = do_nothing;
-static int (*get_max_bom_function) (void) = get_nothing;
+static SensorReading (*get_max_bom_function) (void) = get_nothing;
 #endif
 #else
 static void (*bom_on_function) (void) = do_nothing;
 static void (*bom_off_function) (void) = do_nothing;
-static int (*get_max_bom_function) (void) = get_nothing;
+static SensorReading (*get_max_bom_function) (void) = get_nothing;
 #endif
 
 static PacketGroupHandler wl_token_ring_handler =
@@ -211,7 +212,7 @@
  * measurement of the maximum BOM reading is needed.
  **/
 void wl_token_ring_set_bom_functions(void (*on_function) (void),
-	void (*off_function) (void), int (*max_bom_function) (void))
+	void (*off_function) (void), SensorReading (*max_bom_function) (void))
 {
 	bom_on_function = on_function;
 	bom_off_function = off_function;
@@ -344,7 +345,7 @@
  * @return a BOM reading from robot source to robot dest,
  * in the range 0-15, or -1 if it is unknown
  **/
-int wl_token_get_sensor_reading(int source, int dest)
+SensorReading * wl_token_get_sensor_reading(int source, int dest)
 {
 	if (wl_token_is_robot_in_ring(dest) &&
 			(source == wl_get_xbee_id() || wl_token_is_robot_in_ring(source))) {
@@ -351,7 +352,7 @@
 		return sensor_matrix_get_reading(source, dest);
 	}
 
-	return -1;
+	return NULL;
 }
 
 /**
@@ -364,7 +365,7 @@
  **/
 //TODO: this function is so simple, it *may* be beneficial to inline this function.  testing of if
 // it reduces code size or not should be done to be sure.
-int wl_token_get_my_sensor_reading(int dest)
+SensorReading * wl_token_get_my_sensor_reading(int dest)
 {
 	return wl_token_get_sensor_reading(wl_get_xbee_id(), dest);
 }
@@ -530,6 +531,7 @@
 {
 	int i, j;
 	char nextRobot;
+	SensorReading r;
 
 	bom_on_count = -1;
 	deathDelay = -1;
@@ -549,7 +551,7 @@
 		}
 
 		//set the sensor information we receive
-		if (j < sensorDataLength / 2 && sensorData[2 * j] == i)
+		if (j < sensorDataLength / 2 && sensorData[3 * j] == i)
 		{
 			//the robot we were going to accept has already been accepted
 			if (accepted == i)
@@ -557,8 +559,9 @@
 				accepted = -1;
 				WL_DEBUG_PRINT("Someone accepted the robot we did.\r\n");
 			}
-			sensor_matrix_set_reading(source, i,
-						sensorData[2 * j + 1]);
+			r.dir = sensorData[3 * j + 1];
+			r.dist = sensorData[3 * j + 2];
+			sensor_matrix_set_reading(source, i, r);
 			if (!sensor_matrix_get_in_ring(i))
 			{
 				WL_DEBUG_PRINT("Robot ");
@@ -669,7 +672,7 @@
 {
 	char nextRobot = 0xFF;
 	int i = wl_get_xbee_id() + 1;
-	char buf[2 * sensor_matrix_get_size()];
+	char buf[3 * sensor_matrix_get_size()];
 	if (accepted == -1)
 	{
 		while (1)
@@ -708,13 +711,15 @@
 	for (i = 0; i < sensor_matrix_get_size(); i++) {
 		if (sensor_matrix_get_in_ring(i) && i != wl_get_xbee_id())
 		{
-			buf[2*j] = i;
-			buf[2*j + 1] = sensor_matrix_get_reading(wl_get_xbee_id(), i);
+			SensorReading *r = sensor_matrix_get_reading(wl_get_xbee_id(), i);
+			buf[3*j] = i;
+			buf[3*j + 1] = r->dir;
+			buf[3*j + 2] = r->dist;
 			j++;
 		}
 	}
 
-	int packetSize = 2 * j * sizeof(char);
+	int packetSize = 3 * j * sizeof(char);
 	WL_DEBUG_PRINT("Passing the token to robot ");
 	WL_DEBUG_PRINT_INT(nextRobot);
 	WL_DEBUG_PRINT(".\r\n");
@@ -738,7 +743,7 @@
  **/
 static void wl_token_bom_on_receive(int source)
 {
-	int max, dist;
+	SensorReading r;
 
 	WL_DEBUG_PRINT("Robot ");
 	WL_DEBUG_PRINT_INT(source);
@@ -746,14 +751,14 @@
 
 	bom_on_count = 0;
 
-	max = get_max_bom_function();
+	r = get_max_bom_function();
 	sensor_matrix_set_reading(wl_get_xbee_id(),
-		source, max);
+		source, r);
 
 	WL_DEBUG_PRINT("Max: ");
-	WL_DEBUG_PRINT_INT(max);
-	WL_DEBUG_PRINT("\tVar: ");
-	WL_DEBUG_PRINT_INT(dist);
+	WL_DEBUG_PRINT_INT(r.dir);
+	WL_DEBUG_PRINT("\tDist: ");
+	WL_DEBUG_PRINT_INT(r.dist);
 	WL_DEBUG_PRINT("\n\n");
 }
 
Index: branches/colonetmk2/code/projects/libwireless/lib/sensor_matrix.h
===================================================================
--- branches/colonetmk2/code/projects/libwireless/lib/sensor_matrix.h	(revision 1455)
+++ branches/colonetmk2/code/projects/libwireless/lib/sensor_matrix.h	(revision 1456)
@@ -49,6 +49,14 @@
 #define MAXIMUM_XBEE_ID		0x10
 #define READING_UNKNOWN		0xFF
 
+typedef struct
+{
+	/* direction of max reading */
+	unsigned char dir;
+	/* estimated distance */
+	unsigned char dist;
+} SensorReading;
+
 /**
  * @struct SensorMatrix
  *
@@ -75,7 +83,7 @@
 	 * The matrix. Each row represents the readings of one
 	 * robot.
 	 **/
-	unsigned char matrix[MAXIMUM_XBEE_ID][MAXIMUM_XBEE_ID];
+	SensorReading matrix[MAXIMUM_XBEE_ID][MAXIMUM_XBEE_ID];
 #endif
 } SensorMatrix;
 
@@ -82,9 +90,9 @@
 /**@brief Create a sensor matrix **/
 void sensor_matrix_create(void);
 /**@brief Set a reading in a sensor matrix **/
-void sensor_matrix_set_reading(int observer, int robot, int reading);
+void sensor_matrix_set_reading(int observer, int robot, SensorReading reading);
 /**@brief Get a reading in a sensor matrix **/
-int sensor_matrix_get_reading(int observer, int robot);
+SensorReading * sensor_matrix_get_reading(int observer, int robot);
 /**@brief Set whether the robot is in the token ring **/
 void sensor_matrix_set_in_ring(int robot, int in);
 /**@brief Get whether the robot is in the sensor ring **/
Index: branches/colonetmk2/code/projects/libwireless/lib/wl_basic.c
===================================================================
--- branches/colonetmk2/code/projects/libwireless/lib/wl_basic.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libwireless/lib/wl_basic.c	(revision 1456)
@@ -7,7 +7,6 @@
  * @author Christopher Mar, Colony Project, CMU Robotics Club
  **/
 
-#include <wireless.h>
 #include "wl_basic.h"
 
 /**
Index: branches/colonetmk2/code/projects/libwireless/lib/xbee.c
===================================================================
--- branches/colonetmk2/code/projects/libwireless/lib/xbee.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libwireless/lib/xbee.c	(revision 1456)
@@ -42,6 +42,8 @@
 #include <pthread.h>
 #include <errno.h>
 #include <termios.h>
+#include <stdio.h>
+#include <stdlib.h>
 
 #else
 
@@ -51,8 +53,6 @@
 
 #endif
 
-#include <stdio.h>
-#include <stdlib.h>
 #include <string.h>
 
 #define XBEE_FRAME_START 0x7E
Index: branches/colonetmk2/code/projects/libwireless/lib/wl_token_ring.h
===================================================================
--- branches/colonetmk2/code/projects/libwireless/lib/wl_token_ring.h	(revision 1455)
+++ branches/colonetmk2/code/projects/libwireless/lib/wl_token_ring.h	(revision 1456)
@@ -35,6 +35,8 @@
 #ifndef WL_TOKEN_RING_H
 #define WL_TOKEN_RING_H
 
+#include "sensor_matrix.h"
+
 /**
  * @defgroup tokenring Token Ring
  * @brief Wireless library token ring implementation
@@ -52,7 +54,7 @@
 void wl_token_ring_unregister(void);
 /**@brief Set the functions called to turn the bom on and off.**/
 void wl_token_ring_set_bom_functions(void (*on_function) (void), void (*off_function) (void),
-  int (*max_bom_function) (void));
+  SensorReading (*max_bom_function) (void));
 
 /**@brief Join the token ring **/
 int wl_token_ring_join(void);
@@ -72,9 +74,9 @@
 int wl_token_iterator_next(void);
 
 /**@brief Return the latest BOM reading between two robots **/
-int wl_token_get_sensor_reading(int source, int dest);
+SensorReading * wl_token_get_sensor_reading(int source, int dest);
 /**@brief Return the latest BOM reading between us and another robot **/
-int wl_token_get_my_sensor_reading(int dest);
+SensorReading * wl_token_get_my_sensor_reading(int dest);
 /**@brief Return the number of robots in the sensor matrix.*/
 int wl_token_get_num_robots(void);
 /**@brief Return the number of non-null elements in the sensor matrix*/
Index: branches/colonetmk2/code/projects/libwireless/lib/wl_error_group.c
===================================================================
--- branches/colonetmk2/code/projects/libwireless/lib/wl_error_group.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libwireless/lib/wl_error_group.c	(revision 1456)
@@ -33,13 +33,13 @@
  **/
 
 #include "wl_error_group.h"
+#include "wireless.h"
+#include "wl_defs.h"
 
-#include <wireless.h>
-#include <wl_defs.h>
-#include <stdio.h>
 #include <string.h>
 
 
+
 void wl_error_response_receive(int frame, int received);
 void wl_error_handle_receive(char type, int source, unsigned char* packet,
 							int length);
Index: branches/colonetmk2/code/projects/libwireless/lib/sensor_matrix.c
===================================================================
--- branches/colonetmk2/code/projects/libwireless/lib/sensor_matrix.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libwireless/lib/sensor_matrix.c	(revision 1456)
@@ -32,10 +32,7 @@
  * @author Brian Coltin, Colony Project, CMU Robotics Club
  **/
 
-#include <stdlib.h>
-#include <stdio.h>
-#include <wl_defs.h>
-
+#include "wl_defs.h"
 #include "sensor_matrix.h"
 
 // the global sensor matrix
@@ -57,7 +54,7 @@
 		m.joined[i] = 0;
 #ifndef BAYBOARD
 		for (j = 0; j < MAXIMUM_XBEE_ID; j++)
-			m.matrix[i][j] = READING_UNKNOWN;
+			m.matrix[i][j].dir = READING_UNKNOWN;
 #endif
 	}
 }
@@ -69,7 +66,7 @@
  * @param robot the id of the robot who the reading is for
  * @param reading the BOM reading from observer to robot
  */
-void sensor_matrix_set_reading(int observer, int robot, int reading)
+void sensor_matrix_set_reading(int observer, int robot, SensorReading reading)
 {
 #ifndef BAYBOARD
 	if (robot >= MAXIMUM_XBEE_ID || observer >= MAXIMUM_XBEE_ID)
@@ -78,7 +75,7 @@
 		return;
 	}
 
-	m.matrix[observer][robot] = (unsigned char)reading;
+	m.matrix[observer][robot] = reading;
 #endif
 }
 
@@ -90,15 +87,15 @@
  *
  * @return the observer's BOM reading for robot
  **/
-int sensor_matrix_get_reading(int observer, int robot)
+SensorReading * sensor_matrix_get_reading(int observer, int robot)
 {
 #ifndef BAYBOARD
 	if (observer >= MAXIMUM_XBEE_ID || robot >= MAXIMUM_XBEE_ID)
-		return -1;
+		return NULL;
 
-	return (int)m.matrix[observer][robot];
+	return &m.matrix[observer][robot];
 #else
-	return -1;
+	return NULL;
 #endif
 }
 
Index: branches/colonetmk2/code/projects/libwireless/lib/wireless.c
===================================================================
--- branches/colonetmk2/code/projects/libwireless/lib/wireless.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libwireless/lib/wireless.c	(revision 1456)
@@ -34,8 +34,12 @@
 
 #include "wireless.h"
 #include "xbee.h"
-#include <stdlib.h>
+
+#include <stddef.h>
+
+#ifdef WL_DEBUG
 #include <stdio.h>
+#endif
 
 #include "wl_defs.h"
 
@@ -461,8 +465,12 @@
 	else
 	{
 		WL_DEBUG_PRINT("Unexpected packet received from XBee.\r\n");
+		#ifdef WL_DEBUG
+		#ifndef ROBOT
 		printf("0x%2X\n", wl_buf[0]);
 		printf("%c%c%d\n", wl_buf[2], wl_buf[3], wl_buf[4]);
+		#endif
+		#endif
 	}
 }
 
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/.classpath
===================================================================
--- branches/colonetmk2/code/projects/swarm/BOMPosRender/.classpath	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/BOMPosRender/.classpath	(revision 1456)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/.project
===================================================================
--- branches/colonetmk2/code/projects/swarm/BOMPosRender/.project	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/BOMPosRender/.project	(revision 1456)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>BOMPosRender</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/src/BOMPosServer.java
===================================================================
--- branches/colonetmk2/code/projects/swarm/BOMPosRender/src/BOMPosServer.java	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/BOMPosRender/src/BOMPosServer.java	(revision 1456)
@@ -0,0 +1,234 @@
+import java.awt.*;
+import java.io.*;
+import java.net.*;
+import java.util.Arrays;
+import java.util.Scanner;
+import java.util.Vector;
+
+import javax.swing.JApplet;
+
+public class BOMPosServer extends JApplet implements Runnable {
+	private static final long serialVersionUID = 0L;
+	
+	private boolean running;
+	
+	class Client implements Runnable {
+		final Socket socket;
+		Scanner stream;
+		
+		public Client(Socket s) throws IOException
+		{
+			this.socket = s;
+			this.stream = new Scanner(this.socket.getInputStream());
+			new Thread(this).run();
+		}
+		
+		public void close()
+		{
+			try {
+				socket.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+		
+		public void run()
+		{
+			System.out.println("Client connected");
+			try {
+				SensorReading[] readings = new SensorReading[16];
+				int robot = -1;
+				int source, dest = -1;
+				while(this.socket.isConnected())
+				{
+					while(!"st".equals(stream.next()))
+						System.out.println("bad token");
+					source = stream.nextInt();
+					int destp = stream.nextInt();
+					if (dest >= destp || robot != source)
+					{
+						if (robot > 0)
+						{
+							updateMap(robot, readings);
+							BOMPosServer.this.repaint();
+						}
+						Arrays.fill(readings, null);
+						robot = source;
+					}
+					dest = destp;
+					float dir = stream.nextInt()*2.0f*(float)Math.PI/160.0f;
+					int dist = stream.nextInt();
+					//System.out.print(source + " " + dest + " " + dir + " " + dist + "\n");
+					if (dir > Math.PI*2)
+						readings[dest] = null;
+					else
+						readings[dest] = new SensorReading(dir, dist);
+					BOMPosServer.this.readings[source][dest] = readings[dest];
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+				try {
+					this.socket.close();
+				} catch (IOException ex) {}
+			}
+			System.out.println("Client exit");
+		}
+	}
+	
+	ServerSocket server;
+	Vector<Client> clients;
+	
+	@Override
+	public void run() {
+		try {
+			/*while(!server.isClosed())
+			{
+				Socket s = server.accept();
+				clients.add(new Client(s));
+			}*/
+			while (running)
+			{
+				new Client(new Socket("localhost", 2000)).run();
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		/*positions[0].th = 0;
+		float a = 0.0f;
+		while(running)
+		{
+			repaint();
+			readings[0][1] = new SensorReading(a, 2);
+			a += Math.PI/20;
+			try {
+				Thread.sleep(50);
+			} catch (InterruptedException e) {}
+		}*/
+	}
+	
+	@Override
+	public void init() {
+		setSize(400, 400);
+		
+		clients = new Vector<Client>();
+		
+		/*try {
+			server = new ServerSocket(2000);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}*/
+		
+		running = true;
+		
+		new Thread(this).start();
+	}
+	
+	@Override
+	public void stop() {
+		for(Client c : clients) {
+			c.close();
+		}
+	}
+	
+	@Override
+	public void paint(Graphics g)
+	{
+		g.clearRect(0, 0, getWidth(), getHeight());
+		
+		for(int i=0; i<16; i++)
+		{
+			if (Float.isNaN(positions[i].th)) continue;
+			//System.out.println(i + ": (" + positions[i].x + "," + positions[i].y + ") " + positions[i].th);
+			drawBot(g, i);
+		}
+	}
+
+	private void drawBot(Graphics g, int i) {
+		int x = 3*positions[i].x + getWidth()/2;
+		int y = -3*positions[i].y + getHeight()/2;
+		g.drawOval(x-8, y-8, 16, 16);
+		g.drawString(String.valueOf(i), x-4, y+4);
+		for(int j=0; j<16; j++)
+		{
+			if (readings[i][j]==null) continue;
+			float ang = readings[i][j].dir + positions[i].th;
+			g.drawString(String.valueOf(j), x+(int)(12*Math.cos(ang)-4), y-(int)(14*Math.sin(ang)-5));
+		}
+		if (!Float.isNaN(positions[i].th))
+		{
+			g.drawLine(x, y, (int)(x + 8*Math.cos(positions[i].th)), (int)(y - 8*Math.sin(positions[i].th)));
+		}
+	}
+	
+	public int get_num_robots()
+	{
+		return 3;
+	}
+	
+	static class SensorReading
+	{
+		public float dir;
+		public int dist;
+		
+		public SensorReading(float dir, int dist)
+		{
+			this.dir = dir;
+			this.dist = dist;
+		}
+	}
+	
+	SensorReading[][] readings = new SensorReading[16][16];
+	
+	static class R2
+	{
+		public int x;
+		public int y;
+		public float th;
+		
+		public R2(int x, int y, float th)
+		{
+			this.x = x;
+			this.y = y;
+			this.th = th;
+		}
+	}
+	
+	static R2[] positions;
+	static {
+		positions = new R2[16];
+		for(int i=0; i<16; i++)
+			positions[i] = new R2(0, 0, Float.NaN);
+	}
+	
+	public void updateMap(int robot, SensorReading[] readings)
+	{
+		float a = 0.0f;
+		int count = 0;
+		for(int target=0; target<16; target++)
+		{
+			if (readings[target] == null) continue;
+			
+			a += (Math.atan2(positions[target].y - positions[robot].y, positions[target].x - positions[robot].x) - readings[target].dir + 4*Math.PI) % (2*Math.PI);
+			count++;
+		}
+		if (count > 0)
+		{
+			a /= count;
+		}
+		positions[robot].th = /*robot==1 ? 0 :*/ a;
+		
+		for(int target=0; target<16; target++)
+		{
+			if (readings[target] == null) continue;
+			if (readings[target].dist < 2) continue;
+			if (readings[target].dist > 200) continue;
+			/*System.out.println(target + " " + readings[target].dist + " " + readings[target].dir + " (" +
+								readings[target].dist*Math.cos(readings[target].dir) + "," + readings[target].dist*Math.sin(readings[target].dir) + ")");*/
+			int scale = 2 * get_num_robots(); // readings[target].dist/5;
+			positions[target].x = ( (scale-1)*positions[target].x + (int)(readings[target].dist*Math.cos(positions[robot].th + readings[target].dir)) )/scale;
+			positions[target].y = ( (scale-1)*positions[target].y + (int)(readings[target].dist*Math.sin(positions[robot].th + readings[target].dir)) )/scale;
+		}
+		
+		System.out.println(robot + ": (" + positions[robot].x + "," + positions[robot].y + ") " + positions[robot].th);
+	}
+}
\ No newline at end of file
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$R2.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$R2.class
===================================================================
--- branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$R2.class	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$R2.class	(revision 1456)

Property changes on: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$R2.class
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$SensorReading.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$SensorReading.class
===================================================================
--- branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$SensorReading.class	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$SensorReading.class	(revision 1456)

Property changes on: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$SensorReading.class
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/java.policy.applet
===================================================================
--- branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/java.policy.applet	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/java.policy.applet	(revision 1456)
@@ -0,0 +1,7 @@
+/* AUTOMATICALLY GENERATED ON Tue Apr 16 17:20:59 EDT 2002*/
+/* DO NOT EDIT */
+
+grant {
+  permission java.security.AllPermission;
+};
+
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer.class
===================================================================
--- branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer.class	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer.class	(revision 1456)

Property changes on: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer.class
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$Client.class
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$Client.class
===================================================================
--- branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$Client.class	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$Client.class	(revision 1456)

Property changes on: branches/colonetmk2/code/projects/swarm/BOMPosRender/bin/BOMPosServer$Client.class
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/BOMPosRender/bom algo 1 save.txt
===================================================================
--- branches/colonetmk2/code/projects/swarm/BOMPosRender/bom algo 1 save.txt	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/BOMPosRender/bom algo 1 save.txt	(revision 1456)
@@ -0,0 +1,60 @@
+		for(int source=0; source<16; source++)
+		{
+			for(int dest=0; dest<source; dest++)
+			{
+				if (sensors[source][dest]==null)
+				{
+					if (sensors[dest][source]!=null)
+					{
+						sensors[source][dest] = new SensorReading(Float.NaN, sensors[dest][source].dist); 
+					}
+				}
+				else if (sensors[dest][source]==null)
+				{
+					sensors[dest][source] = new SensorReading(Float.NaN, sensors[source][dest].dist);
+				}
+				else
+				{
+					int avgdist = (sensors[source][dest].dist + sensors[dest][source].dist)/2;
+					sensors[source][dest].dist = avgdist;
+					sensors[dest][source].dist = avgdist;
+				}
+			}
+		}
+		
+		boolean firstbot = true;
+		
+		for(int i=0; i<16; i++)
+		{
+			for(int j=0; j<i; j++)
+			{
+				if (sensors[i][j]==null) continue;
+				if (positions[j]!=null) continue;
+				if (firstbot)
+				{
+					firstbot = false;
+					positions[i] = new R2(0, 0, 0);
+				}
+				if (positions[i]==null) continue;
+				if (Float.isNaN(positions[i].th)) continue;
+				positions[j] = new R2((int)  (positions[i].x + sensors[i][j].dist*Math.cos(positions[i].th + sensors[i][j].dir)),
+									 (int)  (positions[i].y + sensors[i][j].dist*Math.sin(positions[i].th + sensors[i][j].dir)),
+									 (float)(/*robostat[i].th + sensors[i][j].dir +*/ sensors[j][i].dir /*- Math.PI*/));
+			}
+		}
+		
+		/*for(int i=0; i<16; i++)
+		{
+			for(int j=0; j<16; j++)
+			{
+				for(int k=0; k<16; k++)
+				{
+					if (sensors[i][j]!=null &&
+						sensors[i][k]!=null &&
+						sensors[j][k]!=null)
+					{
+						
+					}
+				}
+			}
+		}*/
Index: branches/colonetmk2/code/projects/swarm/SwarmServer
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: branches/colonetmk2/code/projects/swarm/SwarmServer
===================================================================
--- branches/colonetmk2/code/projects/swarm/SwarmServer	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/SwarmServer	(revision 1456)

Property changes on: branches/colonetmk2/code/projects/swarm/SwarmServer
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/test.cpp
===================================================================
--- branches/colonetmk2/code/projects/swarm/test.cpp	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/test.cpp	(revision 1456)
@@ -0,0 +1,125 @@
+#include <colonet_wireless.h>
+#include <wireless.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <unistd.h>
+
+#include <pthread.h>
+
+#define SWARM_PACKET_GROUP_ID 0x8
+
+static PacketGroupHandler colonet_pgh;
+static void colonet_handle_receive(char type, int wl_source, unsigned char* packet, int length);
+
+void cleanup(int a)
+{
+    a = a;
+
+    wl_terminate();
+    printf("todo - close wl port\n");
+
+    exit(0);
+}
+
+int main(int argc, char* argv[])
+{
+    struct sigaction act;
+    memset(&act, 0, sizeof(struct sigaction));
+    act.sa_handler = cleanup;
+
+    if (argc < 2) return -1;
+
+    //register a signal handler to be called when we get a SIGINT signal (killing the server by cntrl+c would generate this)
+    sigaction(SIGINT, &act, NULL);
+
+    char *wireless_port = argv[1];
+
+    //initialize the wireless library giving it the port and the log file name
+    if (colonet_wl_init(wireless_port) != 0) {
+        printf("colonet_wl_init failed.\n");
+        return -1;
+    }
+
+    colonet_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+    colonet_pgh.timeout_handler = NULL;
+    colonet_pgh.handle_response = NULL;
+    colonet_pgh.handle_receive = colonet_handle_receive;
+    colonet_pgh.unregister = NULL;
+    wl_register_packet_group(&colonet_pgh);
+
+    //call the function that will start the thread that will listen for wireless messages
+    if (colonet_wl_run_listener_thread()) {
+        printf("colonet_wl_run_listener_thread failed.\n");
+        return -1;
+    }
+
+    unsigned char i, j;
+    int numRobots = 1;
+    //int* robots = (int *)malloc(0);
+    int robots[] = {13};
+
+    for(i=0; ; i++)
+    {
+        if (i==0)
+        {
+            //numRobots = colonet_get_num_robots();
+            //robots = (int *)realloc(robots, sizeof(int) * numRobots);
+            //colonet_get_xbee_ids(robots);
+        }
+
+        /*for (j=0; j < numRobots; j++)
+        {
+            usleep(1000);
+            
+            printf("\rSending %d to %d    ", i, robots[j]);
+
+            char packet[] = { i, i, i, i };
+            wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, 0, packet, sizeof(char) * 4, robots[j], 0);
+        }*/
+
+        pthread_yield();
+    }
+
+    //colonet_wl_join();
+    printf("Exiting normally\n");
+
+    return 0;
+}
+
+unsigned char count[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
+
+static void colonet_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    type = type;
+    
+    if (length != 17)
+    {
+        printf("Bad packet length from %d\n", wl_source);
+        return;
+    }
+
+    for (int i = 0; i < length; i++)
+    {
+        /*if (packet[i] != i)
+        {
+            printf("Corrupted packet from %d\n", wl_source);
+            break;
+        }*/
+        printf("%d ", packet[i]);
+    }
+    printf("\n");
+
+    if (packet[16]!=++count[wl_source])
+        printf("Bad packet number from %d (%d, should be %d)\n", wl_source, packet[16], count[wl_source]);
+
+    if (packet[16] == 0)
+    {
+        printf("Packet 0 received from %d\n", wl_source);
+    }
+
+    count[wl_source] = packet[16];
+
+    fflush(stdout);
+}
Index: branches/colonetmk2/code/projects/swarm/colonet_wireless.cpp
===================================================================
--- branches/colonetmk2/code/projects/swarm/colonet_wireless.cpp	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/colonet_wireless.cpp	(revision 1456)
@@ -0,0 +1,175 @@
+/** @file colonet_wireless.c
+ *
+ * @brief Implementation of server-side colonet wireless library
+ *
+ * @author Eugene Marinelli
+ */
+
+/********************************* Includes **********************************/
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <signal.h>
+
+#include <wireless.h> // Colonet wireless library.
+#include <wl_token_ring.h>
+
+#include <colonet_wireless.h>
+
+/******************************* Definitions *********************************/
+
+//Enable debug printouts
+//#define DEBUG 1
+
+#ifdef DEBUG
+#define dbg_printf(...) printf(__VA_ARGS__)
+#define dbg_fprintf(...) fprintf(__VA_ARGS__)
+#else
+#define dbg_printf(...)
+#define dbg_fprintf(...)
+#endif
+
+static pthread_t listener_thread;
+static char wl_port[40];
+
+/************************* Internal prototypes *******************************/
+static void* listen(void* args);
+
+/**************************** Public functions *******************************/
+/**
+ * @brief Initializes the wireless library
+ *
+ * @param wl_port_ The port to listen for wireless messages on
+ *
+ * @return 0 on success, negative error code on failure
+ */
+int colonet_wl_init(char* wl_port_) {
+  strncpy(wl_port, wl_port_, 40);
+
+  wl_set_com_port(wl_port);
+
+  fprintf(stderr, "Calling wl_init(%s)...\n", wl_port);
+  if (wl_init() != 0) {
+    fprintf(stderr, "wl_init failed.\n");
+    return -1;
+  }
+
+  fprintf(stderr, "Setting channel\n");
+  wl_set_channel(0xF);
+  wl_set_pan(0x3332);
+
+  /*wl_token_ring_register();
+
+  fprintf(stderr, "Joining token ring...\n");
+  if (wl_token_ring_join() != 0) {
+    fprintf(stderr, "Failed to join token ring.\n");
+    return -1;
+  }
+  fprintf(stderr, "Joined token ring.\n");*/
+
+  return 0;
+}
+
+/**
+ * @brief This function will kill the thread that is listening for wireless messages
+ */
+void colonet_wl_kill_listener_thread() {
+  pthread_kill(listener_thread, 9);
+}
+
+void colonet_wl_join() {
+  pthread_join(listener_thread, NULL);
+}
+
+/**
+ * @brief This function spawns a thread to listen for wireless messages
+ *
+ * @return 0 on success, negative error code on failure
+ */
+int colonet_wl_run_listener_thread() {
+  dbg_printf("Spawning listener thread...\n");
+
+  if (pthread_create(&listener_thread, NULL, listen, NULL)) {
+    perror("pthread_create");
+    return -1;
+  }
+
+  return 0;
+}
+
+/**
+ * @brief Used to get the number of robots in the token ring
+ *
+ * @return The result of wl_token_get_num_robots()
+ */
+int colonet_get_num_robots(void) {
+  return wl_token_get_num_robots();
+}
+
+/**
+ * @brief Gets a list of the xbee ids of the ones in the token ring
+ *
+ * @param numrobots A pointer to the variable where you want the number of robots to be stored
+ *
+ * @return A dynamically allocated piece of memory that contains the list of xbee ids.
+ *   The function calling this function must free this memory when done with it.
+ */
+void colonet_get_xbee_ids(int ids[]) {
+  wl_token_iterator_begin();
+
+  int i = 0;
+  while (wl_token_iterator_has_next()) {
+    ids[i++] = wl_token_iterator_next();
+  }
+}
+
+/**
+ * @brief Gets the sensor matrix from the wireless library
+ *
+ * @param numrobots A pointer to the variable where you want the number of robots to be stored
+ * @param ids_ A pointer to a pointer that you want to point to the list of xbee ids.  This memory is dynamically
+ * allocated and should be freed by the calling process when it is done with it
+ *
+ * @return The 2d matrix reprsenting the sensor matrix.  This memory is dynamically allocated and should be freed by
+ * the calling process when it is done with it
+ */
+void colonet_get_sensor_matrix(int* ids, SensorReading*** m) {
+  int num_robots = colonet_get_num_robots();
+  colonet_get_xbee_ids(ids);
+
+  for (int i = 0; i < num_robots; i++) {
+    for (int j = 0; j < num_robots; j++) {
+      m[i][j] = wl_token_get_sensor_reading(ids[i], ids[j]);
+    }
+  }
+}
+
+/** @brief Analogous to the "SIGNAL" or "ISR" function on the robots.
+ * Listens for bytes on the wireless port and constructs packets based on them.
+ * Not part of the ColonetWireless class since a function pointer must be
+ * passed in starting the thread that runs it (tricky or impossible if it's
+ * a class function).
+ *
+ * @param args Pointer to arguments.  Can be safely casted to ListenerArgs type
+ * @return NULL
+ */
+static void* listen(void* args) {
+  args = args; //TODO: These are just here to get rid of compiler warnings.
+
+  fprintf(stderr, "Called listen.\n");
+
+  while (1) {
+    wl_do();
+
+    //this sleep is here so the thread this runs in doesn't hog the cpu
+    pthread_yield();
+  }
+
+  fprintf(stderr, "Listen is returning.\n");
+
+  wl_terminate();
+  return NULL;
+}
+

Property changes on: branches/colonetmk2/code/projects/swarm/colonet_wireless.cpp
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/main.c
===================================================================
--- branches/colonetmk2/code/projects/swarm/main.c	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/main.c	(revision 1456)
@@ -0,0 +1,168 @@
+#include <wireless.h>
+#include <wl_token_ring.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <sys/socket.h>
+#include <arpa/inet.h>
+
+#include <sys/ioctl.h>
+
+typedef struct {
+    int x;
+    int y;
+    char c;
+} arrow_t;
+
+arrow_t arrows[16] = {
+                    { 8, 2, '-'  }, // 0
+                    { 8, 1, '/'  }, // 1
+                    { 7, 0, '/'  }, // 2
+                    { 5, 0, '/'  }, // 3
+                    { 4, 0, '|'  }, // 4
+                    { 3, 0, '\\' }, // 5
+                    { 1, 0, '\\' }, // 6
+                    { 0, 1, '\\' }, // 7
+                    { 0, 2, '-'  }, // 8
+                    { 0, 3, '/'  }, // 9
+                    { 1, 4, '/'  }, // 10
+                    { 3, 4, '/' }, // 11
+                    { 4, 4, '|'  }, // 12
+                    { 5, 4, '\\'  }, // 13
+                    { 7, 4, '\\'  }, // 14
+                    { 8, 3, '\\'  }, // 15
+                  };
+                    
+
+char mobot[5][10] = {"   ___   ",
+                     "  /   \\  ",
+                     " |     | ",
+                     "  \\___/  ",
+                     "         "};
+char mobot_m[5][10];
+
+int main(int argc, char *argv[])
+{
+    int robots[16];
+    SensorReading * sensors[16][16];
+    int i,j;
+	char sbuf[32];
+
+	int sockfd, new_fd;  // listen on sock_fd, new connection on new_fd
+	struct sockaddr_in serv_addr, their_addr;
+	int rv;
+
+    /*for(i=0; i<16; i++)
+    {
+        memcpy(mobot_m, mobot, 50*sizeof(char));
+        arrow_t *arrow = &arrows[i];
+        mobot_m[arrow->y][arrow->x] = arrow->c;
+        printf("%d\n", i);
+        for(j=0; j<5; j++)
+        {
+            printf("%s\n", mobot_m[j]);
+        }
+    }
+    return 0;*/
+
+    wl_set_com_port(argv[1]);
+
+    if (wl_init() != 0) {
+      fprintf(stderr, "wl_init failed.\n");
+      return -1;
+    }
+
+    wl_set_channel(0xF);
+
+    printf("wireless on\r\n");
+
+    wl_token_ring_register();
+    wl_token_ring_join();
+
+    printf("wireless initialized\r\n");
+
+	memset(&serv_addr, 0, sizeof serv_addr);
+	serv_addr.sin_family = AF_INET;
+	serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+	serv_addr.sin_port = htons(2000);
+
+	if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
+		perror("server: socket");
+		return 1;
+	}
+
+	if ((rv = bind(sockfd, (struct sockaddr *)&serv_addr, sizeof serv_addr)) < 0)  {
+		perror("bind");
+		close(sockfd);
+		return 2;
+	}
+
+	if (listen(sockfd, 0) == -1) {
+		perror("listen");
+		return 1;
+	}
+
+	printf("server: waiting for connections...\n");
+
+	while(1) {  // main accept() loop
+		socklen_t sin_size = sizeof their_addr;
+
+		wl_do();
+
+		new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size);
+		if (new_fd == -1) {
+			perror("accept");
+			continue;
+		}
+
+		printf("server: got connection\n");
+
+		while (1)
+		{
+		    int num_robots = 0;
+
+		    wl_do();
+
+		    wl_token_iterator_begin();
+		    while(wl_token_iterator_has_next())
+		    {
+		        robots[num_robots++] = wl_token_iterator_next();
+		    }
+		    for(i=0; i < num_robots; i++)
+		    {
+		        if (robots[i]==wl_get_xbee_id()) continue;
+		        memcpy(mobot_m, mobot, 50*sizeof(char));
+		        for(j=0; j < num_robots; j++)
+		        {
+		            if (i==j) continue;
+		            //if (robots[j]==wl_get_xbee_id()) continue;
+		            sensors[robots[i]][robots[j]] = wl_token_get_sensor_reading(robots[i], robots[j]);
+		            printf("%d -> %d:  %d @ %d\n", robots[i], robots[j], sensors[robots[i]][robots[j]]->dir, sensors[robots[i]][robots[j]]->dist);
+		            //if (sensors[robots[i]][robots[j]]->dir>160) continue;
+					sprintf(sbuf, "st %d %d %d %d\n", robots[i], robots[j], sensors[robots[i]][robots[j]]->dir, sensors[robots[i]][robots[j]]->dist);
+					if (send(new_fd, sbuf, strlen(sbuf), MSG_NOSIGNAL) < 0)
+					{
+						fprintf(stderr, "Error sending data\n");
+						goto close_sock;
+					}
+		            arrow_t *arrow = &arrows[sensors[robots[i]][robots[j]]->dir/10];
+		            mobot_m[arrow->y][arrow->x] = arrow->c;
+		        }
+		        /*for(j=0; j<5; j++)
+		        {
+		            printf("%s\n", mobot_m[j]);
+		        }
+		        printf("\n");*/
+		    }
+		    printf("\n");
+
+		    usleep(130000);
+		}
+close_sock:
+		close(new_fd);
+
+		break;
+	}
+}

Property changes on: branches/colonetmk2/code/projects/swarm/main.c
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/robot/main.map
===================================================================
--- branches/colonetmk2/code/projects/swarm/robot/main.map	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/robot/main.map	(revision 1456)
@@ -0,0 +1,1266 @@
+Archive member included because of file (symbol)
+
+../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                              main.o (wl_do)
+../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+                              main.o (wl_token_ring_join)
+../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                              ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o) (xbee_get_packet)
+../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                              ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o) (sensor_matrix_create)
+../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                              ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o) (bom_get_max10)
+../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o) (digital_output)
+../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+                              main.o (dragonfly_init)
+../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o) (get_bom_type)
+../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o) (encoders_init)
+../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o) (lcd_init)
+../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o) (orb_init)
+../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o) (motors_init)
+../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o) (range_init)
+../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o) (usb_init)
+../../../../code/projects/libdragonfly/libdragonfly.a(spi.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o) (spi_init)
+../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+                              ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o) (delay_ms)
+../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o) (analog_init)
+../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o) (buzzer_init)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodhi4.o)
+                              ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o) (__divmodhi4)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodsi4.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o) (__divmodsi4)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_exit.o)
+                              /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o (exit)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clear_bss.o)
+                              main.o (__do_clear_bss)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_ashldi3.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o) (__ashldi3)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o) (__divdi3)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o) (__moddi3)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_mulsi3.o)
+                              /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o) (__mulsi3)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodhi4.o)
+                              /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodhi4.o) (__udivmodhi4)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodsi4.o)
+                              /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodsi4.o) (__udivmodsi4)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_prologue.o)
+                              /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o) (__prologue_saves__)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_epilogue.o)
+                              /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o) (__epilogue_restores__)
+/usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clz.o)
+                              /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o) (__clz_tab)
+/usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+                              ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o) (rand)
+/usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(memcpy_P.o)
+                              ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o) (memcpy_P)
+/usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+                              ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o) (printf)
+/usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+                              /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o) (vfprintf)
+/usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen_P.o)
+                              /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o) (strnlen_P)
+/usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen.o)
+                              /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o) (strnlen)
+/usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(fputc.o)
+                              /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o) (fputc)
+/usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(iob.o)
+                              /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o) (__iob)
+/usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(ultoa_invert.o)
+                              /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o) (__ultoa_invert)
+
+Allocating common symbols
+Common symbol       size              file
+
+pwm_buffer          0x27              ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_values          0x6               ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+data_ready          0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+usb_fd              0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+right_data          0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+left_data_buf       0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+left_data_array     0x5c              ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+left_data_idx       0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+right_dx            0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+timecount           0x4               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_buf_index   0x1               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+right_data_array    0x5c              ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+left_dx             0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+right_data_idx      0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+right_data_buf      0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+xbee_fd             0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+arrival_buf         0x80              ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+left_data           0x2               ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+an_val              0x21              ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+m                   0x212             ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+__iob               0x6               /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(iob.o)
+
+Memory Configuration
+
+Name             Origin             Length             Attributes
+text             0x0000000000000000 0x0000000000020000 xr
+data             0x0000000000800060 0x000000000000ffa0 rw !x
+eeprom           0x0000000000810000 0x0000000000010000 rw !x
+fuse             0x0000000000820000 0x0000000000000400 rw !x
+lock             0x0000000000830000 0x0000000000000400 rw !x
+signature        0x0000000000840000 0x0000000000000400 rw !x
+*default*        0x0000000000000000 0xffffffffffffffff
+
+Linker script and memory map
+
+Address of section .data set to 0x800100
+LOAD /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+LOAD main.o
+LOAD /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libm.a
+LOAD ../../../../code/projects/libwireless/lib/libwireless.a
+LOAD ../../../../code/projects/libdragonfly/libdragonfly.a
+LOAD /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a
+LOAD /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a
+LOAD /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a
+
+.hash
+ *(.hash)
+
+.dynsym
+ *(.dynsym)
+
+.dynstr
+ *(.dynstr)
+
+.gnu.version
+ *(.gnu.version)
+
+.gnu.version_d
+ *(.gnu.version_d)
+
+.gnu.version_r
+ *(.gnu.version_r)
+
+.rel.init
+ *(.rel.init)
+
+.rela.init
+ *(.rela.init)
+
+.rel.text
+ *(.rel.text)
+ *(.rel.text.*)
+ *(.rel.gnu.linkonce.t*)
+
+.rela.text
+ *(.rela.text)
+ *(.rela.text.*)
+ *(.rela.gnu.linkonce.t*)
+
+.rel.fini
+ *(.rel.fini)
+
+.rela.fini
+ *(.rela.fini)
+
+.rel.rodata
+ *(.rel.rodata)
+ *(.rel.rodata.*)
+ *(.rel.gnu.linkonce.r*)
+
+.rela.rodata
+ *(.rela.rodata)
+ *(.rela.rodata.*)
+ *(.rela.gnu.linkonce.r*)
+
+.rel.data
+ *(.rel.data)
+ *(.rel.data.*)
+ *(.rel.gnu.linkonce.d*)
+
+.rela.data
+ *(.rela.data)
+ *(.rela.data.*)
+ *(.rela.gnu.linkonce.d*)
+
+.rel.ctors
+ *(.rel.ctors)
+
+.rela.ctors
+ *(.rela.ctors)
+
+.rel.dtors
+ *(.rel.dtors)
+
+.rela.dtors
+ *(.rela.dtors)
+
+.rel.got
+ *(.rel.got)
+
+.rela.got
+ *(.rela.got)
+
+.rel.bss
+ *(.rel.bss)
+
+.rela.bss
+ *(.rela.bss)
+
+.rel.plt
+ *(.rel.plt)
+
+.rela.plt
+ *(.rela.plt)
+
+.text           0x0000000000000000     0x659e
+ *(.vectors)
+ .vectors       0x0000000000000000       0x8c /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+                0x0000000000000000                __vectors
+                0x0000000000000000                __vector_default
+ *(.vectors)
+ *(.progmem.gcc*)
+ *(.progmem*)
+                0x000000000000008c                . = ALIGN (0x2)
+                0x000000000000008c                __trampolines_start = .
+ *(.trampolines)
+ .trampolines   0x000000000000008c        0x0 linker stubs
+ *(.trampolines*)
+                0x000000000000008c                __trampolines_end = .
+ *(.jumptables)
+ *(.jumptables*)
+ *(.lowtext)
+ *(.lowtext*)
+                0x000000000000008c                __ctors_start = .
+ *(.ctors)
+                0x000000000000008c                __ctors_end = .
+                0x000000000000008c                __dtors_start = .
+ *(.dtors)
+                0x000000000000008c                __dtors_end = .
+ SORT(*)(.ctors)
+ SORT(*)(.dtors)
+ *(.init0)
+ .init0         0x000000000000008c        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+                0x000000000000008c                __init
+ *(.init0)
+ *(.init1)
+ *(.init1)
+ *(.init2)
+ .init2         0x000000000000008c        0xc /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+ *(.init2)
+ *(.init3)
+ *(.init3)
+ *(.init4)
+ .init4         0x0000000000000098       0x1a /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+                0x0000000000000098                __do_copy_data
+ .init4         0x00000000000000b2       0x10 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clear_bss.o)
+                0x00000000000000b2                __do_clear_bss
+ *(.init4)
+ *(.init5)
+ *(.init5)
+ *(.init6)
+ *(.init6)
+ *(.init7)
+ *(.init7)
+ *(.init8)
+ *(.init8)
+ *(.init9)
+ .init9         0x00000000000000c2        0x8 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+ *(.init9)
+ *(.text)
+ .text          0x00000000000000ca        0x4 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+                0x00000000000000ca                __vector_22
+                0x00000000000000ca                __vector_28
+                0x00000000000000ca                __vector_1
+                0x00000000000000ca                __vector_32
+                0x00000000000000ca                __vector_34
+                0x00000000000000ca                __vector_24
+                0x00000000000000ca                __vector_12
+                0x00000000000000ca                __bad_interrupt
+                0x00000000000000ca                __vector_6
+                0x00000000000000ca                __vector_31
+                0x00000000000000ca                __vector_3
+                0x00000000000000ca                __vector_23
+                0x00000000000000ca                __vector_25
+                0x00000000000000ca                __vector_11
+                0x00000000000000ca                __vector_13
+                0x00000000000000ca                __vector_19
+                0x00000000000000ca                __vector_7
+                0x00000000000000ca                __vector_27
+                0x00000000000000ca                __vector_5
+                0x00000000000000ca                __vector_33
+                0x00000000000000ca                __vector_4
+                0x00000000000000ca                __vector_9
+                0x00000000000000ca                __vector_2
+                0x00000000000000ca                __vector_29
+                0x00000000000000ca                __vector_8
+                0x00000000000000ca                __vector_14
+                0x00000000000000ca                __vector_10
+                0x00000000000000ca                __vector_18
+                0x00000000000000ca                __vector_20
+ .text          0x00000000000000ce       0x2a main.o
+                0x00000000000000ce                main
+ .text          0x00000000000000f8      0x352 ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                0x00000000000003da                wl_get_pan
+                0x0000000000000416                wl_init
+                0x00000000000003d4                wl_set_channel
+                0x00000000000003c8                wl_get_xbee_id
+                0x00000000000003e0                wl_set_pan
+                0x0000000000000168                wl_do
+                0x0000000000000372                wl_send_global_packet
+                0x000000000000012c                wl_unregister_packet_group
+                0x00000000000003ce                wl_get_channel
+                0x0000000000000354                wl_send_pan_packet
+                0x0000000000000106                wl_register_packet_group
+                0x0000000000000392                wl_send_robot_to_robot_packet
+                0x00000000000003e6                wl_terminate
+                0x00000000000003ac                wl_send_robot_to_robot_global_packet
+ .text          0x000000000000044a      0x868 ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+                0x000000000000049c                wl_token_get_robots_in_ring
+                0x0000000000000c80                wl_token_ring_register
+                0x00000000000005f0                wl_token_ring_join
+                0x0000000000000496                wl_token_get_num_robots
+                0x000000000000055e                wl_token_is_robot_in_ring
+                0x000000000000044a                wl_token_ring_leave
+                0x0000000000000490                wl_token_get_matrix_size
+                0x00000000000005e6                wl_token_ring_unregister
+                0x0000000000000564                wl_token_get_sensor_reading
+                0x00000000000005aa                wl_token_get_my_sensor_reading
+                0x00000000000004a2                wl_token_iterator_next
+                0x0000000000000522                wl_token_iterator_begin
+                0x0000000000000476                wl_token_iterator_has_next
+                0x0000000000000458                wl_token_ring_set_bom_functions
+ .text          0x0000000000000cb2      0x792 ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                0x00000000000012ba                xbee_lib_init
+                0x0000000000000f80                xbee_get_pan_id
+                0x000000000000112c                xbee_reset
+                0x0000000000000cb2                __vector_30
+                0x0000000000000d1c                xbee_get_packet
+                0x00000000000010b4                xbee_set_channel
+                0x000000000000115c                xbee_terminate
+                0x0000000000000f94                xbee_get_address
+                0x0000000000000f8a                xbee_get_channel
+                0x00000000000010f8                xbee_set_pan_id
+                0x000000000000116a                xbee_send_packet
+ .text          0x0000000000001444      0x122 ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                0x0000000000001560                sensor_matrix_get_size
+                0x00000000000014b8                sensor_matrix_get_reading
+                0x00000000000014e6                sensor_matrix_set_in_ring
+                0x000000000000153a                sensor_matrix_get_in_ring
+                0x0000000000001556                sensor_matrix_get_joined
+                0x0000000000001486                sensor_matrix_set_reading
+                0x0000000000001444                sensor_matrix_create
+ .text          0x0000000000001566      0x782 ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                0x0000000000001a6a                bom_on
+                0x0000000000001ca8                get_max_bom
+                0x0000000000001b8c                bom_refresh
+                0x00000000000015ae                bom_get_max10
+                0x0000000000001576                bom_get_max
+                0x0000000000001a94                bom_set_leds
+                0x0000000000001a40                bom_off
+                0x0000000000001566                bom_get
+                0x0000000000001af0                bom_init
+ .text          0x0000000000001ce8      0x590 ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+                0x00000000000021e2                button2_click
+                0x0000000000001f14                digital_output
+                0x00000000000021b8                button2_read
+                0x0000000000002250                button1_wait
+                0x000000000000214c                button1_read
+                0x0000000000002228                button2_wait
+                0x0000000000002172                button1_click
+                0x0000000000001ce8                digital_input
+                0x0000000000001e2a                digital_pull_up
+ .text          0x0000000000002278       0xec ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+                0x0000000000002278                flash_red
+                0x00000000000022d8                dragonfly_init
+ .text          0x0000000000002364       0xb6 ../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+                0x00000000000023ca                get_bom_type
+                0x0000000000002378                eeprom_get_byte
+                0x0000000000002364                eeprom_put_byte
+                0x000000000000238e                get_robotid
+ .text          0x000000000000241a      0x562 ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+                0x00000000000024ac                encoder_rst_tc
+                0x00000000000027ae                right_data_at
+                0x0000000000002462                encoder_get_dx
+                0x00000000000024be                encoder_wait
+                0x0000000000002894                encoder_get_v
+                0x00000000000024a2                encoder_get_tc
+                0x0000000000002486                encoder_rst_dx
+                0x000000000000243e                encoder_get_x
+                0x00000000000028ea                encoders_init
+                0x0000000000002790                left_data_at
+                0x000000000000295e                encoder_recv_complete
+                0x000000000000241a                encoder_read
+                0x00000000000027cc                get_dx
+                0x00000000000024d8                encoder_recv
+ .text          0x000000000000297c      0x220 ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+                0x0000000000002a2e                lcd_gotoxy
+                0x00000000000029a6                lcd_putc
+                0x0000000000002a46                lcd_puti
+                0x00000000000029e4                lcd_puts
+                0x0000000000002b2a                lcd_putbyte
+                0x0000000000002b32                lcd_init
+                0x000000000000297c                lcd_clear_screen
+ .text          0x0000000000002b9c      0x82c ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                0x00000000000030ca                orb_set
+                0x000000000000309a                orb2_set
+                0x0000000000003354                orb_disable_timer
+                0x00000000000033c2                orb_init
+                0x000000000000335c                orb_set_mode
+                0x00000000000031a6                orb1_set_color
+                0x0000000000003348                orb_enable_timer
+                0x000000000000302e                orb_n_set
+                0x00000000000033a4                orb_init_pwm
+                0x000000000000306a                orb1_set
+                0x0000000000003290                orbs_set_color
+                0x0000000000003386                orb_init_binary
+                0x0000000000002c76                __vector_15
+                0x0000000000003106                orbs_set
+                0x0000000000002b9c                __vector_16
+                0x0000000000003242                orb_set_color
+                0x000000000000314a                orb_n_set_color
+                0x00000000000031f4                orb2_set_color
+ .text          0x00000000000033c8       0x96 ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+                0x0000000000003452                motor2_set
+                0x0000000000003458                motors_off
+                0x000000000000341c                motor_r_set
+                0x00000000000033ec                motor_l_set
+                0x00000000000033c8                motors_init
+                0x000000000000344c                motor1_set
+ .text          0x000000000000345e       0x5a ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+                0x00000000000034aa                range_init
+                0x000000000000345e                linearize_distance
+                0x0000000000003482                range_read_distance
+ .text          0x00000000000034b8      0x252 ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                0x0000000000003624                hex_digit
+                0x0000000000003536                usb_getc
+                0x0000000000003568                xbee_getc_nb
+                0x00000000000034b8                usb_init
+                0x00000000000034d4                xbee_init
+                0x0000000000003540                xbee_getc
+                0x0000000000003586                usb_puti
+                0x00000000000036c0                usb_puts_P
+                0x000000000000350a                xbee_putc
+                0x0000000000003638                usb_puth16
+                0x00000000000034fe                usb_putc
+                0x0000000000003550                usb_getc_nb
+                0x0000000000003696                usb_puth8
+                0x000000000000351e                usb_puts
+ .text          0x000000000000370a       0xbc ../../../../code/projects/libdragonfly/libdragonfly.a(spi.o)
+                0x000000000000370a                spi_init
+                0x0000000000003732                spi_transfer
+                0x000000000000373e                __vector_17
+ .text          0x00000000000037c6      0x108 ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+                0x00000000000037dc                rtc_init
+                0x0000000000003828                rtc_reset
+                0x00000000000037c6                delay_ms
+                0x0000000000003832                __vector_26
+                0x000000000000381c                rtc_get
+ .text          0x00000000000038ce      0x32e ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                0x0000000000003a6a                wheel
+                0x0000000000003964                analog10
+                0x0000000000003a72                set_adc_mux
+                0x00000000000038ce                analog_init
+                0x0000000000003a06                analog_get10
+                0x00000000000039b2                analog_loop_status
+                0x0000000000003986                analog_start_loop
+                0x0000000000003940                analog8
+                0x00000000000039be                analog_get8
+                0x0000000000003a94                __vector_21
+                0x00000000000039a4                analog_stop_loop
+ .text          0x0000000000003bfc       0x6a ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+                0x0000000000003bfc                buzzer_init
+                0x0000000000003c08                buzzer_set_freq
+                0x0000000000003c3c                buzzer_off
+                0x0000000000003c46                buzzer_chirp
+                0x0000000000003bfe                buzzer_set_val
+ .text          0x0000000000003c66        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodhi4.o)
+ .text          0x0000000000003c66        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodsi4.o)
+ .text          0x0000000000003c66        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_exit.o)
+ .text          0x0000000000003c66        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clear_bss.o)
+ .text          0x0000000000003c66       0xfe /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_ashldi3.o)
+                0x0000000000003c66                __ashldi3
+ .text          0x0000000000003d64     0x1050 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+                0x0000000000003d64                __divdi3
+ .text          0x0000000000004db4     0x107a /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+                0x0000000000004db4                __moddi3
+ .text          0x0000000000005e2e        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_mulsi3.o)
+ .text          0x0000000000005e2e        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodhi4.o)
+ .text          0x0000000000005e2e        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodsi4.o)
+ .text          0x0000000000005e2e        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_prologue.o)
+ .text          0x0000000000005e2e        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_epilogue.o)
+ .text          0x0000000000005e2e        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clz.o)
+ .text          0x0000000000005e2e       0xc2 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+                0x0000000000005eca                rand_r
+                0x0000000000005ed0                rand
+                0x0000000000005eda                srand
+ .text          0x0000000000005ef0       0x12 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(memcpy_P.o)
+                0x0000000000005ef0                memcpy_P
+ .text          0x0000000000005f02       0x2a /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+                0x0000000000005f02                printf
+ .text          0x0000000000005f2c      0x3ba /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+                0x0000000000005f2c                vfprintf
+ .text          0x00000000000062e6       0x16 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen_P.o)
+                0x00000000000062e6                strnlen_P
+ .text          0x00000000000062fc       0x16 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen.o)
+                0x00000000000062fc                strnlen
+ .text          0x0000000000006312       0x58 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(fputc.o)
+                0x0000000000006312                fputc
+ .text          0x000000000000636a        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(iob.o)
+ .text          0x000000000000636a       0xbc /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(ultoa_invert.o)
+                0x000000000000636a                __ultoa_invert
+                0x0000000000006426                . = ALIGN (0x2)
+ *(.text.*)
+ .text.libgcc   0x0000000000006426       0x26 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodhi4.o)
+                0x0000000000006426                __divmodhi4
+                0x0000000000006426                _div
+ .text.libgcc   0x000000000000644c       0x36 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodsi4.o)
+                0x000000000000644c                __divmodsi4
+ .text.libgcc   0x0000000000006482        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_exit.o)
+ .text.libgcc   0x0000000000006482        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clear_bss.o)
+ .text.libgcc   0x0000000000006482       0x3e /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_mulsi3.o)
+                0x0000000000006482                __mulsi3
+ .text.libgcc   0x00000000000064c0       0x28 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodhi4.o)
+                0x00000000000064c0                __udivmodhi4
+ .text.libgcc   0x00000000000064e8       0x44 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodsi4.o)
+                0x00000000000064e8                __udivmodsi4
+ .text.libgcc   0x000000000000652c       0x38 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_prologue.o)
+                0x000000000000652c                __prologue_saves__
+ .text.libgcc   0x0000000000006564       0x36 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_epilogue.o)
+                0x0000000000006564                __epilogue_restores__
+                0x000000000000659a                . = ALIGN (0x2)
+ *(.fini9)
+ .fini9         0x000000000000659a        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_exit.o)
+                0x000000000000659a                exit
+                0x000000000000659a                _exit
+ *(.fini9)
+ *(.fini8)
+ *(.fini8)
+ *(.fini7)
+ *(.fini7)
+ *(.fini6)
+ *(.fini6)
+ *(.fini5)
+ *(.fini5)
+ *(.fini4)
+ *(.fini4)
+ *(.fini3)
+ *(.fini3)
+ *(.fini2)
+ *(.fini2)
+ *(.fini1)
+ *(.fini1)
+ *(.fini0)
+ .fini0         0x000000000000659a        0x4 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_exit.o)
+ *(.fini0)
+                0x000000000000659e                _etext = .
+
+.data           0x0000000000800100      0x46c load address 0x000000000000659e
+                0x0000000000800100                PROVIDE (__data_start, .)
+ *(.data)
+ .data          0x0000000000800100        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+ .data          0x0000000000800100        0xe main.o
+ .data          0x000000000080010e        0xf ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+ .data          0x000000000080011d       0x1a ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+ .data          0x0000000000800137       0x30 ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+ .data          0x0000000000800167        0x0 ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+ .data          0x0000000000800167       0x10 ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+ .data          0x0000000000800177        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+ .data          0x0000000000800177        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+ .data          0x0000000000800177        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+ .data          0x0000000000800177        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+ .data          0x0000000000800177      0x1e6 ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+ .data          0x000000000080035d        0xd ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                0x0000000000800368                pwm_free_buffer
+                0x0000000000800364                pwm_read_buffer
+                0x0000000000800366                pwm_write_buffer
+                0x000000000080035d                orb_mask
+                0x0000000000800363                enable_orb_pwm
+ .data          0x000000000080036a        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+ .data          0x000000000080036a       0xe4 ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+ .data          0x000000000080044e       0x17 ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+ .data          0x0000000000800465        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(spi.o)
+ .data          0x0000000000800465        0x2 ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+ .data          0x0000000000800467        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+ .data          0x0000000000800467        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodhi4.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodsi4.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_exit.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clear_bss.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_ashldi3.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_mulsi3.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodhi4.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodsi4.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_prologue.o)
+ .data          0x0000000000800467        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_epilogue.o)
+ .data          0x0000000000800467      0x100 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clz.o)
+                0x0000000000800467                __clz_tab
+ .data          0x0000000000800567        0x4 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+ .data          0x000000000080056b        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(memcpy_P.o)
+ .data          0x000000000080056b        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+ .data          0x000000000080056b        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+ .data          0x000000000080056b        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen_P.o)
+ .data          0x000000000080056b        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen.o)
+ .data          0x000000000080056b        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(fputc.o)
+ .data          0x000000000080056b        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(iob.o)
+ .data          0x000000000080056b        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(ultoa_invert.o)
+ *(.data*)
+ *(.rodata)
+ *(.rodata*)
+ *(.gnu.linkonce.d*)
+                0x000000000080056c                . = ALIGN (0x2)
+ *fill*         0x000000000080056b        0x1 00
+                0x000000000080056c                _edata = .
+                0x000000000080056c                PROVIDE (__data_end, .)
+
+.bss            0x000000000080056c      0x518 load address 0x0000000000006a0a
+                0x000000000080056c                PROVIDE (__bss_start, .)
+ *(.bss)
+ .bss           0x000000000080056c        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+ .bss           0x000000000080056c        0x0 main.o
+ .bss           0x000000000080056c       0xa2 ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+ .bss           0x000000000080060e        0x6 ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+ .bss           0x0000000000800614       0x78 ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                0x0000000000800616                buffer_first
+                0x0000000000800614                buffer_last
+ .bss           0x000000000080068c        0x0 ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+ .bss           0x000000000080068c       0x2b ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+ .bss           0x00000000008006b7        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+ .bss           0x00000000008006b7        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+ .bss           0x00000000008006b7        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+ .bss           0x00000000008006b7        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+ .bss           0x00000000008006b7        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+ .bss           0x00000000008006b7        0x3 ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                0x00000000008006b9                orb_lock
+                0x00000000008006b7                pwm_page_flip
+                0x00000000008006b8                current_pwm_channel
+ .bss           0x00000000008006ba        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+ .bss           0x00000000008006ba        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+ .bss           0x00000000008006ba        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+ .bss           0x00000000008006ba        0x5 ../../../../code/projects/libdragonfly/libdragonfly.a(spi.o)
+ .bss           0x00000000008006bf        0x6 ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+ .bss           0x00000000008006c5        0x6 ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                0x00000000008006c5                adc_loop_status
+                0x00000000008006c7                adc_sig_stop_loop
+                0x00000000008006c9                adc_current_port
+ .bss           0x00000000008006cb        0x0 ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodhi4.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodsi4.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_exit.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clear_bss.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_ashldi3.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_mulsi3.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodhi4.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodsi4.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_prologue.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_epilogue.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clz.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(memcpy_P.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen_P.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(fputc.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(iob.o)
+ .bss           0x00000000008006cb        0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(ultoa_invert.o)
+ *(.bss*)
+ *(COMMON)
+ COMMON         0x00000000008006cb       0x80 ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                0x00000000008006cb                arrival_buf
+ COMMON         0x000000000080074b      0x212 ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                0x000000000080074b                m
+ COMMON         0x000000000080095d       0xcf ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+                0x000000000080095d                data_ready
+                0x000000000080095f                right_data
+                0x0000000000800961                left_data_buf
+                0x0000000000800963                left_data_array
+                0x00000000008009bf                left_data_idx
+                0x00000000008009c1                right_dx
+                0x00000000008009c3                timecount
+                0x00000000008009c7                encoder_buf_index
+                0x00000000008009c8                right_data_array
+                0x0000000000800a24                left_dx
+                0x0000000000800a26                right_data_idx
+                0x0000000000800a28                right_data_buf
+                0x0000000000800a2a                left_data
+ COMMON         0x0000000000800a2c       0x2d ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                0x0000000000800a2c                pwm_buffer
+                0x0000000000800a53                orb_values
+ COMMON         0x0000000000800a59        0x4 ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                0x0000000000800a59                usb_fd
+                0x0000000000800a5b                xbee_fd
+ COMMON         0x0000000000800a5d       0x21 ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                0x0000000000800a5d                an_val
+ COMMON         0x0000000000800a7e        0x6 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(iob.o)
+                0x0000000000800a7e                __iob
+                0x0000000000800a84                PROVIDE (__bss_end, .)
+                0x000000000000659e                __data_load_start = LOADADDR (.data)
+                0x0000000000006a0a                __data_load_end = (__data_load_start + SIZEOF (.data))
+
+.noinit         0x0000000000800a84        0x0
+                0x0000000000800a84                PROVIDE (__noinit_start, .)
+ *(.noinit*)
+                0x0000000000800a84                PROVIDE (__noinit_end, .)
+                0x0000000000800a84                _end = .
+                0x0000000000800a84                PROVIDE (__heap_start, .)
+
+.eeprom         0x0000000000810000        0x0
+ *(.eeprom*)
+                0x0000000000810000                __eeprom_end = .
+
+.fuse
+ *(.fuse)
+ *(.lfuse)
+ *(.hfuse)
+ *(.efuse)
+
+.lock
+ *(.lock*)
+
+.signature
+ *(.signature*)
+
+.stab           0x0000000000000000     0x8eb0
+ *(.stab)
+ .stab          0x0000000000000000      0x750 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+ .stab          0x0000000000000750      0x5a0 main.o
+                                        0x5ac (size before relaxing)
+ .stab          0x0000000000000cf0      0x9a8 ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                                        0xc84 (size before relaxing)
+ .stab          0x0000000000001698      0x8b8 ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+                                        0xa80 (size before relaxing)
+ .stab          0x0000000000001f50      0x4c8 ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+                                        0x7ec (size before relaxing)
+ .stab          0x0000000000002418      0x444 ../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+                                        0x600 (size before relaxing)
+ .stab          0x000000000000285c      0xd5c ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+                                       0x1074 (size before relaxing)
+ .stab          0x00000000000035b8      0x7ec ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+                                        0x9a8 (size before relaxing)
+ .stab          0x0000000000003da4     0x13e0 ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                                       0x1554 (size before relaxing)
+ .stab          0x0000000000005184      0x48c ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+                                        0x648 (size before relaxing)
+ .stab          0x0000000000005610      0x2e8 ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+                                        0x60c (size before relaxing)
+ .stab          0x00000000000058f8      0x99c ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                                        0xc3c (size before relaxing)
+ .stab          0x0000000000006294      0x3a8 ../../../../code/projects/libdragonfly/libdragonfly.a(spi.o)
+                                        0x708 (size before relaxing)
+ .stab          0x000000000000663c      0x414 ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+                                        0x690 (size before relaxing)
+ .stab          0x0000000000006a50      0x858 ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                                        0xac8 (size before relaxing)
+ .stab          0x00000000000072a8      0x348 ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+                                        0x504 (size before relaxing)
+ .stab          0x00000000000075f0      0x330 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+                                        0x33c (size before relaxing)
+ .stab          0x0000000000007920       0x84 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(memcpy_P.o)
+                                         0x90 (size before relaxing)
+ .stab          0x00000000000079a4      0x324 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+                                        0x36c (size before relaxing)
+ .stab          0x0000000000007cc8      0x930 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+                                        0xb58 (size before relaxing)
+ .stab          0x00000000000085f8       0x9c /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen_P.o)
+                                         0xa8 (size before relaxing)
+ .stab          0x0000000000008694       0x9c /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen.o)
+                                         0xa8 (size before relaxing)
+ .stab          0x0000000000008730      0x1d4 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(fputc.o)
+                                        0x3b4 (size before relaxing)
+ .stab          0x0000000000008904      0x12c /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(iob.o)
+                                        0x30c (size before relaxing)
+ .stab          0x0000000000008a30      0x480 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(ultoa_invert.o)
+                                        0x48c (size before relaxing)
+
+.stabstr        0x0000000000000000     0x335e
+ *(.stabstr)
+ .stabstr       0x0000000000000000     0x335e /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+
+.stab.excl
+ *(.stab.excl)
+
+.stab.exclstr
+ *(.stab.exclstr)
+
+.stab.index
+ *(.stab.index)
+
+.stab.indexstr
+ *(.stab.indexstr)
+
+.comment
+ *(.comment)
+
+.debug
+ *(.debug)
+
+.line
+ *(.line)
+
+.debug_srcinfo
+ *(.debug_srcinfo)
+
+.debug_sfnames
+ *(.debug_sfnames)
+
+.debug_aranges
+ *(.debug_aranges)
+
+.debug_pubnames
+ *(.debug_pubnames)
+
+.debug_info
+ *(.debug_info)
+ *(.gnu.linkonce.wi.*)
+
+.debug_abbrev
+ *(.debug_abbrev)
+
+.debug_line
+ *(.debug_line)
+
+.debug_frame
+ *(.debug_frame)
+
+.debug_str
+ *(.debug_str)
+
+.debug_loc
+ *(.debug_loc)
+
+.debug_macinfo
+ *(.debug_macinfo)
+OUTPUT(main.elf elf32-avr)
+LOAD linker stubs
+
+Cross Reference Table
+
+Symbol                                            File
+__ashldi3                                         /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_ashldi3.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+__bad_interrupt                                   /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__bss_end                                         /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clear_bss.o)
+__bss_start                                       /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clear_bss.o)
+__clz_tab                                         /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clz.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+__data_end                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__data_load_start                                 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__data_start                                      /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__divdi3                                          /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+__divmodhi4                                       /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodhi4.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+__divmodsi4                                       /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodsi4.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+__do_clear_bss                                    /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clear_bss.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(iob.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(fputc.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clz.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_ashldi3.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(spi.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                                                  main.o
+__do_copy_data                                    /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(iob.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(fputc.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_clz.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_ashldi3.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(spi.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                                                  main.o
+__epilogue_restores__                             /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_epilogue.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+__heap_end                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__init                                            /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__iob                                             /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(iob.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+__moddi3                                          /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+__mulsi3                                          /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_mulsi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+__prologue_saves__                                /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_prologue.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+__stack                                           /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__udivmodhi4                                      /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodhi4.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodhi4.o)
+__udivmodsi4                                      /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_udivmodsi4.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_moddi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divdi3.o)
+                                                  /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodsi4.o)
+__ultoa_invert                                    /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(ultoa_invert.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+__vector_1                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_10                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_11                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_12                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_13                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_14                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_15                                       ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_16                                       ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_17                                       ../../../../code/projects/libdragonfly/libdragonfly.a(spi.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_18                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_19                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_2                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_20                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_21                                       ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_22                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_23                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_24                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_25                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_26                                       ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_27                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_28                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_29                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_3                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_30                                       ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_31                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_32                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_33                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_34                                       /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_4                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_5                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_6                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_7                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_8                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_9                                        /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vector_default                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+__vectors                                         /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+_div                                              /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_divmodhi4.o)
+_exit                                             /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_exit.o)
+adc_current_port                                  ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+adc_loop_status                                   ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+adc_sig_stop_loop                                 ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+an_val                                            ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+analog10                                          ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+analog8                                           ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+analog_get10                                      ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+analog_get8                                       ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+analog_init                                       ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+analog_loop_status                                ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+analog_start_loop                                 ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+analog_stop_loop                                  ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+arrival_buf                                       ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+bom_get                                           ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+bom_get_max                                       ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+bom_get_max10                                     ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+bom_init                                          ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+bom_off                                           ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+bom_on                                            ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+bom_refresh                                       ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+bom_set_leds                                      ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+buffer_first                                      ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+buffer_last                                       ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+button1_click                                     ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+button1_read                                      ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+button1_wait                                      ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+button2_click                                     ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+button2_read                                      ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+button2_wait                                      ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+buzzer_chirp                                      ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+buzzer_init                                       ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+buzzer_off                                        ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+buzzer_set_freq                                   ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+buzzer_set_val                                    ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+current_pwm_channel                               ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+data_ready                                        ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+delay_ms                                          ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(buzzer.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+digital_input                                     ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+digital_output                                    ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+digital_pull_up                                   ../../../../code/projects/libdragonfly/libdragonfly.a(dio.o)
+dragonfly_init                                    ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+                                                  main.o
+eeprom_get_byte                                   ../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+eeprom_put_byte                                   ../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+enable_orb_pwm                                    ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+encoder_buf_index                                 ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_get_dx                                    ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_get_tc                                    ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_get_v                                     ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_get_x                                     ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_read                                      ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_recv                                      ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_recv_complete                             ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_rst_dx                                    ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_rst_tc                                    ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoder_wait                                      ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+encoders_init                                     ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+exit                                              /usr/lib/gcc/avr/4.3.2/avr51/libgcc.a(_exit.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+flash_red                                         ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+fputc                                             /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(fputc.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+get_bom_type                                      ../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+get_dx                                            ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+get_max_bom                                       ../../../../code/projects/libdragonfly/libdragonfly.a(bom.o)
+get_robotid                                       ../../../../code/projects/libdragonfly/libdragonfly.a(eeprom.o)
+hex_digit                                         ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+lcd_clear_screen                                  ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+lcd_gotoxy                                        ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+lcd_init                                          ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+lcd_putbyte                                       ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+lcd_putc                                          ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+lcd_puti                                          ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+lcd_puts                                          ../../../../code/projects/libdragonfly/libdragonfly.a(lcd.o)
+left_data                                         ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+left_data_array                                   ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+left_data_at                                      ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+left_data_buf                                     ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+left_data_idx                                     ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+left_dx                                           ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+linearize_distance                                ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+m                                                 ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+main                                              main.o
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/crtm128.o
+memcpy_P                                          /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(memcpy_P.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+motor1_set                                        ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+motor2_set                                        ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+motor_l_set                                       ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+motor_r_set                                       ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+motors_init                                       ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+motors_off                                        ../../../../code/projects/libdragonfly/libdragonfly.a(motor.o)
+orb1_set                                          ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb1_set_color                                    ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb2_set                                          ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb2_set_color                                    ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_disable_timer                                 ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_enable_timer                                  ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_init                                          ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+orb_init_binary                                   ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_init_pwm                                      ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_lock                                          ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_mask                                          ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_n_set                                         ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_n_set_color                                   ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_set                                           ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_set_color                                     ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_set_mode                                      ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orb_values                                        ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orbs_set                                          ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+orbs_set_color                                    ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+printf                                            /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+pwm_buffer                                        ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+pwm_free_buffer                                   ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+pwm_page_flip                                     ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+pwm_read_buffer                                   ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+pwm_write_buffer                                  ../../../../code/projects/libdragonfly/libdragonfly.a(lights.o)
+rand                                              /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+rand_r                                            /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+range_init                                        ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+range_read_distance                               ../../../../code/projects/libdragonfly/libdragonfly.a(rangefinder.o)
+right_data                                        ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+right_data_array                                  ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+right_data_at                                     ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+right_data_buf                                    ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+right_data_idx                                    ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+right_dx                                          ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+rtc_get                                           ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+rtc_init                                          ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+rtc_reset                                         ../../../../code/projects/libdragonfly/libdragonfly.a(time.o)
+sensor_matrix_create                              ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+sensor_matrix_get_in_ring                         ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+sensor_matrix_get_joined                          ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+sensor_matrix_get_reading                         ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+sensor_matrix_get_size                            ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+sensor_matrix_set_in_ring                         ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+sensor_matrix_set_reading                         ../../../../code/projects/libwireless/lib/libwireless.a(sensor_matrix.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+set_adc_mux                                       ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+spi_init                                          ../../../../code/projects/libdragonfly/libdragonfly.a(spi.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+spi_transfer                                      ../../../../code/projects/libdragonfly/libdragonfly.a(spi.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+srand                                             /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(rand.o)
+strnlen                                           /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+strnlen_P                                         /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(strnlen_P.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+timecount                                         ../../../../code/projects/libdragonfly/libdragonfly.a(encoders.o)
+usb_fd                                            ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+usb_getc                                          ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+usb_getc_nb                                       ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+usb_init                                          ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+usb_putc                                          ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+usb_puth16                                        ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+usb_puth8                                         ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+usb_puti                                          ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+usb_puts                                          ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                                                  main.o
+usb_puts_P                                        ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+vfprintf                                          /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(vfprintf_std.o)
+                                                  /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr51/libc.a(printf.o)
+wheel                                             ../../../../code/projects/libdragonfly/libdragonfly.a(analog.o)
+wl_do                                             ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                                                  main.o
+wl_get_channel                                    ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+wl_get_pan                                        ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+wl_get_xbee_id                                    ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_init                                           ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                                                  main.o
+wl_register_packet_group                          ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_send_global_packet                             ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_send_pan_packet                                ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+wl_send_robot_to_robot_global_packet              ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_send_robot_to_robot_packet                     ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+wl_set_channel                                    ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                                                  main.o
+wl_set_pan                                        ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+wl_terminate                                      ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+wl_token_get_matrix_size                          ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_get_my_sensor_reading                    ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_get_num_robots                           ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_get_robots_in_ring                       ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_get_sensor_reading                       ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_is_robot_in_ring                         ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_iterator_begin                           ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_iterator_has_next                        ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_iterator_next                            ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_ring_join                                ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+                                                  main.o
+wl_token_ring_leave                               ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_ring_register                            ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+                                                  main.o
+wl_token_ring_set_bom_functions                   ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_token_ring_unregister                          ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+wl_unregister_packet_group                        ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wl_token_ring.o)
+xbee_fd                                           ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+xbee_get_address                                  ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+xbee_get_channel                                  ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+xbee_get_packet                                   ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+xbee_get_pan_id                                   ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+xbee_getc                                         ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+xbee_getc_nb                                      ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+xbee_init                                         ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                                                  ../../../../code/projects/libdragonfly/libdragonfly.a(dragonfly_lib.o)
+xbee_lib_init                                     ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+xbee_putc                                         ../../../../code/projects/libdragonfly/libdragonfly.a(serial.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+xbee_reset                                        ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+xbee_send_packet                                  ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+xbee_set_channel                                  ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+xbee_set_pan_id                                   ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
+xbee_terminate                                    ../../../../code/projects/libwireless/lib/libwireless.a(xbee.o)
+                                                  ../../../../code/projects/libwireless/lib/libwireless.a(wireless.o)
Index: branches/colonetmk2/code/projects/swarm/robot/main.lss
===================================================================
--- branches/colonetmk2/code/projects/swarm/robot/main.lss	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/robot/main.lss	(revision 1456)
@@ -0,0 +1,12715 @@
+
+main.elf:     file format elf32-avr
+
+Sections:
+Idx Name          Size      VMA       LMA       File off  Algn
+  0 .data         0000046c  00800100  0000659e  00006612  2**0
+                  CONTENTS, ALLOC, LOAD, DATA
+  1 .text         0000659e  00000000  00000000  00000074  2**1
+                  CONTENTS, ALLOC, LOAD, READONLY, CODE
+  2 .bss          00000518  0080056c  00006a0a  00006a7e  2**0
+                  ALLOC
+  3 .stab         00008eb0  00000000  00000000  00006a80  2**2
+                  CONTENTS, READONLY, DEBUGGING
+  4 .stabstr      0000335e  00000000  00000000  0000f930  2**0
+                  CONTENTS, READONLY, DEBUGGING
+Disassembly of section .text:
+
+00000000 <__vectors>:
+       0:	0c 94 46 00 	jmp	0x8c	; 0x8c <__ctors_end>
+       4:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+       8:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+       c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      10:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      14:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      18:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      1c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      20:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      24:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      28:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      2c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      30:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      34:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      38:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      3c:	0c 94 3b 16 	jmp	0x2c76	; 0x2c76 <__vector_15>
+      40:	0c 94 ce 15 	jmp	0x2b9c	; 0x2b9c <__vector_16>
+      44:	0c 94 9f 1b 	jmp	0x373e	; 0x373e <__vector_17>
+      48:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      4c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      50:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      54:	0c 94 4a 1d 	jmp	0x3a94	; 0x3a94 <__vector_21>
+      58:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      5c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      60:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      64:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      68:	0c 94 19 1c 	jmp	0x3832	; 0x3832 <__vector_26>
+      6c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      70:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      74:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      78:	0c 94 59 06 	jmp	0xcb2	; 0xcb2 <__vector_30>
+      7c:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      80:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      84:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+      88:	0c 94 65 00 	jmp	0xca	; 0xca <__bad_interrupt>
+
+0000008c <__ctors_end>:
+      8c:	11 24       	eor	r1, r1
+      8e:	1f be       	out	0x3f, r1	; 63
+      90:	cf ef       	ldi	r28, 0xFF	; 255
+      92:	d0 e1       	ldi	r29, 0x10	; 16
+      94:	de bf       	out	0x3e, r29	; 62
+      96:	cd bf       	out	0x3d, r28	; 61
+
+00000098 <__do_copy_data>:
+      98:	15 e0       	ldi	r17, 0x05	; 5
+      9a:	a0 e0       	ldi	r26, 0x00	; 0
+      9c:	b1 e0       	ldi	r27, 0x01	; 1
+      9e:	ee e9       	ldi	r30, 0x9E	; 158
+      a0:	f5 e6       	ldi	r31, 0x65	; 101
+      a2:	00 e0       	ldi	r16, 0x00	; 0
+      a4:	0b bf       	out	0x3b, r16	; 59
+      a6:	02 c0       	rjmp	.+4      	; 0xac <__do_copy_data+0x14>
+      a8:	07 90       	elpm	r0, Z+
+      aa:	0d 92       	st	X+, r0
+      ac:	ac 36       	cpi	r26, 0x6C	; 108
+      ae:	b1 07       	cpc	r27, r17
+      b0:	d9 f7       	brne	.-10     	; 0xa8 <__do_copy_data+0x10>
+
+000000b2 <__do_clear_bss>:
+      b2:	1a e0       	ldi	r17, 0x0A	; 10
+      b4:	ac e6       	ldi	r26, 0x6C	; 108
+      b6:	b5 e0       	ldi	r27, 0x05	; 5
+      b8:	01 c0       	rjmp	.+2      	; 0xbc <.do_clear_bss_start>
+
+000000ba <.do_clear_bss_loop>:
+      ba:	1d 92       	st	X+, r1
+
+000000bc <.do_clear_bss_start>:
+      bc:	a4 38       	cpi	r26, 0x84	; 132
+      be:	b1 07       	cpc	r27, r17
+      c0:	e1 f7       	brne	.-8      	; 0xba <.do_clear_bss_loop>
+      c2:	0e 94 67 00 	call	0xce	; 0xce <main>
+      c6:	0c 94 cd 32 	jmp	0x659a	; 0x659a <_exit>
+
+000000ca <__bad_interrupt>:
+      ca:	0c 94 00 00 	jmp	0	; 0x0 <__heap_end>
+
+000000ce <main>:
+//static PacketGroupHandler swarm_pgh;
+//static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length);
+
+int main(void)
+{
+    dragonfly_init(ALL_ON);
+      ce:	8f ef       	ldi	r24, 0xFF	; 255
+      d0:	97 e0       	ldi	r25, 0x07	; 7
+      d2:	0e 94 6c 11 	call	0x22d8	; 0x22d8 <dragonfly_init>
+
+    wl_init();
+      d6:	0e 94 0b 02 	call	0x416	; 0x416 <wl_init>
+    wl_set_channel(0xF);
+      da:	8f e0       	ldi	r24, 0x0F	; 15
+      dc:	90 e0       	ldi	r25, 0x00	; 0
+      de:	0e 94 ea 01 	call	0x3d4	; 0x3d4 <wl_set_channel>
+    swarm_pgh.handle_response = NULL;
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    wl_register_packet_group(&swarm_pgh);*/
+
+    wl_token_ring_register();
+      e2:	0e 94 40 06 	call	0xc80	; 0xc80 <wl_token_ring_register>
+    wl_token_ring_join();
+      e6:	0e 94 f8 02 	call	0x5f0	; 0x5f0 <wl_token_ring_join>
+
+    usb_puts("initialized\r\n");
+      ea:	80 e0       	ldi	r24, 0x00	; 0
+      ec:	91 e0       	ldi	r25, 0x01	; 1
+      ee:	0e 94 8f 1a 	call	0x351e	; 0x351e <usb_puts>
+
+    int num = 0;*/
+
+    while (1)
+    {
+	    wl_do();
+      f2:	0e 94 b4 00 	call	0x168	; 0x168 <wl_do>
+      f6:	fd cf       	rjmp	.-6      	; 0xf2 <main+0x24>
+
+000000f8 <timer_handler>:
+      f8:	81 e0       	ldi	r24, 0x01	; 1
+      fa:	90 e0       	ldi	r25, 0x00	; 0
+      fc:	90 93 6d 05 	sts	0x056D, r25
+     100:	80 93 6c 05 	sts	0x056C, r24
+     104:	08 95       	ret
+
+00000106 <wl_register_packet_group>:
+     106:	dc 01       	movw	r26, r24
+     108:	8d 91       	ld	r24, X+
+     10a:	9c 91       	ld	r25, X
+     10c:	11 97       	sbiw	r26, 0x01	; 1
+     10e:	80 31       	cpi	r24, 0x10	; 16
+     110:	91 05       	cpc	r25, r1
+     112:	58 f4       	brcc	.+22     	; 0x12a <wl_register_packet_group+0x24>
+     114:	fc 01       	movw	r30, r24
+     116:	ee 0f       	add	r30, r30
+     118:	ff 1f       	adc	r31, r31
+     11a:	e2 51       	subi	r30, 0x12	; 18
+     11c:	fa 4f       	sbci	r31, 0xFA	; 250
+     11e:	80 81       	ld	r24, Z
+     120:	91 81       	ldd	r25, Z+1	; 0x01
+     122:	89 2b       	or	r24, r25
+     124:	11 f4       	brne	.+4      	; 0x12a <wl_register_packet_group+0x24>
+     126:	b1 83       	std	Z+1, r27	; 0x01
+     128:	a0 83       	st	Z, r26
+     12a:	08 95       	ret
+
+0000012c <wl_unregister_packet_group>:
+     12c:	cf 93       	push	r28
+     12e:	df 93       	push	r29
+     130:	fc 01       	movw	r30, r24
+     132:	c0 81       	ld	r28, Z
+     134:	d1 81       	ldd	r29, Z+1	; 0x01
+     136:	fe 01       	movw	r30, r28
+     138:	ee 0f       	add	r30, r30
+     13a:	ff 1f       	adc	r31, r31
+     13c:	e2 51       	subi	r30, 0x12	; 18
+     13e:	fa 4f       	sbci	r31, 0xFA	; 250
+     140:	01 90       	ld	r0, Z+
+     142:	f0 81       	ld	r31, Z
+     144:	e0 2d       	mov	r30, r0
+     146:	30 97       	sbiw	r30, 0x00	; 0
+     148:	31 f0       	breq	.+12     	; 0x156 <wl_unregister_packet_group+0x2a>
+     14a:	00 84       	ldd	r0, Z+8	; 0x08
+     14c:	f1 85       	ldd	r31, Z+9	; 0x09
+     14e:	e0 2d       	mov	r30, r0
+     150:	30 97       	sbiw	r30, 0x00	; 0
+     152:	09 f0       	breq	.+2      	; 0x156 <wl_unregister_packet_group+0x2a>
+     154:	09 95       	icall
+     156:	cc 0f       	add	r28, r28
+     158:	dd 1f       	adc	r29, r29
+     15a:	c2 51       	subi	r28, 0x12	; 18
+     15c:	da 4f       	sbci	r29, 0xFA	; 250
+     15e:	19 82       	std	Y+1, r1	; 0x01
+     160:	18 82       	st	Y, r1
+     162:	df 91       	pop	r29
+     164:	cf 91       	pop	r28
+     166:	08 95       	ret
+
+00000168 <wl_do>:
+     168:	cf 93       	push	r28
+     16a:	df 93       	push	r29
+     16c:	80 91 6c 05 	lds	r24, 0x056C
+     170:	90 91 6d 05 	lds	r25, 0x056D
+     174:	89 2b       	or	r24, r25
+     176:	a9 f0       	breq	.+42     	; 0x1a2 <wl_do+0x3a>
+     178:	ce ee       	ldi	r28, 0xEE	; 238
+     17a:	d5 e0       	ldi	r29, 0x05	; 5
+     17c:	e8 81       	ld	r30, Y
+     17e:	f9 81       	ldd	r31, Y+1	; 0x01
+     180:	30 97       	sbiw	r30, 0x00	; 0
+     182:	31 f0       	breq	.+12     	; 0x190 <wl_do+0x28>
+     184:	02 80       	ldd	r0, Z+2	; 0x02
+     186:	f3 81       	ldd	r31, Z+3	; 0x03
+     188:	e0 2d       	mov	r30, r0
+     18a:	30 97       	sbiw	r30, 0x00	; 0
+     18c:	09 f0       	breq	.+2      	; 0x190 <wl_do+0x28>
+     18e:	09 95       	icall
+     190:	22 96       	adiw	r28, 0x02	; 2
+     192:	86 e0       	ldi	r24, 0x06	; 6
+     194:	ce 30       	cpi	r28, 0x0E	; 14
+     196:	d8 07       	cpc	r29, r24
+     198:	89 f7       	brne	.-30     	; 0x17c <wl_do+0x14>
+     19a:	10 92 6d 05 	sts	0x056D, r1
+     19e:	10 92 6c 05 	sts	0x056C, r1
+     1a2:	8e e6       	ldi	r24, 0x6E	; 110
+     1a4:	95 e0       	ldi	r25, 0x05	; 5
+     1a6:	0e 94 8e 06 	call	0xd1c	; 0xd1c <xbee_get_packet>
+     1aa:	9c 01       	movw	r18, r24
+     1ac:	97 fd       	sbrc	r25, 7
+     1ae:	87 c0       	rjmp	.+270    	; 0x2be <wl_do+0x156>
+     1b0:	40 91 6e 05 	lds	r20, 0x056E
+     1b4:	49 38       	cpi	r20, 0x89	; 137
+     1b6:	39 f5       	brne	.+78     	; 0x206 <wl_do+0x9e>
+     1b8:	83 30       	cpi	r24, 0x03	; 3
+     1ba:	91 05       	cpc	r25, r1
+     1bc:	09 f0       	breq	.+2      	; 0x1c0 <wl_do+0x58>
+     1be:	7f c0       	rjmp	.+254    	; 0x2be <wl_do+0x156>
+     1c0:	80 91 6f 05 	lds	r24, 0x056F
+     1c4:	20 91 70 05 	lds	r18, 0x0570
+     1c8:	e8 2f       	mov	r30, r24
+     1ca:	e2 95       	swap	r30
+     1cc:	ef 70       	andi	r30, 0x0F	; 15
+     1ce:	f0 e0       	ldi	r31, 0x00	; 0
+     1d0:	ee 0f       	add	r30, r30
+     1d2:	ff 1f       	adc	r31, r31
+     1d4:	e2 51       	subi	r30, 0x12	; 18
+     1d6:	fa 4f       	sbci	r31, 0xFA	; 250
+     1d8:	01 90       	ld	r0, Z+
+     1da:	f0 81       	ld	r31, Z
+     1dc:	e0 2d       	mov	r30, r0
+     1de:	30 97       	sbiw	r30, 0x00	; 0
+     1e0:	09 f4       	brne	.+2      	; 0x1e4 <wl_do+0x7c>
+     1e2:	6d c0       	rjmp	.+218    	; 0x2be <wl_do+0x156>
+     1e4:	04 80       	ldd	r0, Z+4	; 0x04
+     1e6:	f5 81       	ldd	r31, Z+5	; 0x05
+     1e8:	e0 2d       	mov	r30, r0
+     1ea:	30 97       	sbiw	r30, 0x00	; 0
+     1ec:	09 f4       	brne	.+2      	; 0x1f0 <wl_do+0x88>
+     1ee:	67 c0       	rjmp	.+206    	; 0x2be <wl_do+0x156>
+     1f0:	90 e0       	ldi	r25, 0x00	; 0
+     1f2:	8f 70       	andi	r24, 0x0F	; 15
+     1f4:	90 70       	andi	r25, 0x00	; 0
+     1f6:	60 e0       	ldi	r22, 0x00	; 0
+     1f8:	70 e0       	ldi	r23, 0x00	; 0
+     1fa:	22 23       	and	r18, r18
+     1fc:	11 f4       	brne	.+4      	; 0x202 <wl_do+0x9a>
+     1fe:	61 e0       	ldi	r22, 0x01	; 1
+     200:	70 e0       	ldi	r23, 0x00	; 0
+     202:	09 95       	icall
+     204:	5c c0       	rjmp	.+184    	; 0x2be <wl_do+0x156>
+     206:	41 38       	cpi	r20, 0x81	; 129
+     208:	31 f5       	brne	.+76     	; 0x256 <wl_do+0xee>
+     20a:	87 30       	cpi	r24, 0x07	; 7
+     20c:	91 05       	cpc	r25, r1
+     20e:	0c f4       	brge	.+2      	; 0x212 <wl_do+0xaa>
+     210:	56 c0       	rjmp	.+172    	; 0x2be <wl_do+0x156>
+     212:	90 91 6f 05 	lds	r25, 0x056F
+     216:	40 91 70 05 	lds	r20, 0x0570
+     21a:	80 91 74 05 	lds	r24, 0x0574
+     21e:	e0 91 73 05 	lds	r30, 0x0573
+     222:	f0 e0       	ldi	r31, 0x00	; 0
+     224:	ee 0f       	add	r30, r30
+     226:	ff 1f       	adc	r31, r31
+     228:	e2 51       	subi	r30, 0x12	; 18
+     22a:	fa 4f       	sbci	r31, 0xFA	; 250
+     22c:	01 90       	ld	r0, Z+
+     22e:	f0 81       	ld	r31, Z
+     230:	e0 2d       	mov	r30, r0
+     232:	30 97       	sbiw	r30, 0x00	; 0
+     234:	09 f4       	brne	.+2      	; 0x238 <wl_do+0xd0>
+     236:	43 c0       	rjmp	.+134    	; 0x2be <wl_do+0x156>
+     238:	06 80       	ldd	r0, Z+6	; 0x06
+     23a:	f7 81       	ldd	r31, Z+7	; 0x07
+     23c:	e0 2d       	mov	r30, r0
+     23e:	30 97       	sbiw	r30, 0x00	; 0
+     240:	f1 f1       	breq	.+124    	; 0x2be <wl_do+0x156>
+     242:	79 2f       	mov	r23, r25
+     244:	60 e0       	ldi	r22, 0x00	; 0
+     246:	64 0f       	add	r22, r20
+     248:	71 1d       	adc	r23, r1
+     24a:	27 50       	subi	r18, 0x07	; 7
+     24c:	30 40       	sbci	r19, 0x00	; 0
+     24e:	45 e7       	ldi	r20, 0x75	; 117
+     250:	55 e0       	ldi	r21, 0x05	; 5
+     252:	09 95       	icall
+     254:	34 c0       	rjmp	.+104    	; 0x2be <wl_do+0x156>
+     256:	00 d0       	rcall	.+0      	; 0x258 <wl_do+0xf0>
+     258:	00 d0       	rcall	.+0      	; 0x25a <wl_do+0xf2>
+     25a:	ed b7       	in	r30, 0x3d	; 61
+     25c:	fe b7       	in	r31, 0x3e	; 62
+     25e:	31 96       	adiw	r30, 0x01	; 1
+     260:	8e e0       	ldi	r24, 0x0E	; 14
+     262:	91 e0       	ldi	r25, 0x01	; 1
+     264:	ad b7       	in	r26, 0x3d	; 61
+     266:	be b7       	in	r27, 0x3e	; 62
+     268:	12 96       	adiw	r26, 0x02	; 2
+     26a:	9c 93       	st	X, r25
+     26c:	8e 93       	st	-X, r24
+     26e:	11 97       	sbiw	r26, 0x01	; 1
+     270:	42 83       	std	Z+2, r20	; 0x02
+     272:	13 82       	std	Z+3, r1	; 0x03
+     274:	0e 94 81 2f 	call	0x5f02	; 0x5f02 <printf>
+     278:	00 d0       	rcall	.+0      	; 0x27a <wl_do+0x112>
+     27a:	00 d0       	rcall	.+0      	; 0x27c <wl_do+0x114>
+     27c:	ed b7       	in	r30, 0x3d	; 61
+     27e:	fe b7       	in	r31, 0x3e	; 62
+     280:	31 96       	adiw	r30, 0x01	; 1
+     282:	85 e1       	ldi	r24, 0x15	; 21
+     284:	91 e0       	ldi	r25, 0x01	; 1
+     286:	ad b7       	in	r26, 0x3d	; 61
+     288:	be b7       	in	r27, 0x3e	; 62
+     28a:	12 96       	adiw	r26, 0x02	; 2
+     28c:	9c 93       	st	X, r25
+     28e:	8e 93       	st	-X, r24
+     290:	11 97       	sbiw	r26, 0x01	; 1
+     292:	80 91 70 05 	lds	r24, 0x0570
+     296:	82 83       	std	Z+2, r24	; 0x02
+     298:	13 82       	std	Z+3, r1	; 0x03
+     29a:	80 91 71 05 	lds	r24, 0x0571
+     29e:	84 83       	std	Z+4, r24	; 0x04
+     2a0:	15 82       	std	Z+5, r1	; 0x05
+     2a2:	80 91 72 05 	lds	r24, 0x0572
+     2a6:	86 83       	std	Z+6, r24	; 0x06
+     2a8:	17 82       	std	Z+7, r1	; 0x07
+     2aa:	0e 94 81 2f 	call	0x5f02	; 0x5f02 <printf>
+     2ae:	8d b7       	in	r24, 0x3d	; 61
+     2b0:	9e b7       	in	r25, 0x3e	; 62
+     2b2:	08 96       	adiw	r24, 0x08	; 8
+     2b4:	0f b6       	in	r0, 0x3f	; 63
+     2b6:	f8 94       	cli
+     2b8:	9e bf       	out	0x3e, r25	; 62
+     2ba:	0f be       	out	0x3f, r0	; 63
+     2bc:	8d bf       	out	0x3d, r24	; 61
+     2be:	df 91       	pop	r29
+     2c0:	cf 91       	pop	r28
+     2c2:	08 95       	ret
+
+000002c4 <wl_send_packet>:
+     2c4:	af 92       	push	r10
+     2c6:	bf 92       	push	r11
+     2c8:	cf 92       	push	r12
+     2ca:	ef 92       	push	r14
+     2cc:	0f 93       	push	r16
+     2ce:	1f 93       	push	r17
+     2d0:	df 93       	push	r29
+     2d2:	cf 93       	push	r28
+     2d4:	cd b7       	in	r28, 0x3d	; 61
+     2d6:	de b7       	in	r29, 0x3e	; 62
+     2d8:	c0 58       	subi	r28, 0x80	; 128
+     2da:	d0 40       	sbci	r29, 0x00	; 0
+     2dc:	0f b6       	in	r0, 0x3f	; 63
+     2de:	f8 94       	cli
+     2e0:	de bf       	out	0x3e, r29	; 62
+     2e2:	0f be       	out	0x3f, r0	; 63
+     2e4:	cd bf       	out	0x3d, r28	; 61
+     2e6:	98 2f       	mov	r25, r24
+     2e8:	58 01       	movw	r10, r16
+     2ea:	0c 2d       	mov	r16, r12
+     2ec:	cc 20       	and	r12, r12
+     2ee:	31 f0       	breq	.+12     	; 0x2fc <wl_send_packet+0x38>
+     2f0:	8c 2d       	mov	r24, r12
+     2f2:	8f 70       	andi	r24, 0x0F	; 15
+     2f4:	09 2f       	mov	r16, r25
+     2f6:	02 95       	swap	r16
+     2f8:	00 7f       	andi	r16, 0xF0	; 240
+     2fa:	08 2b       	or	r16, r24
+     2fc:	99 83       	std	Y+1, r25	; 0x01
+     2fe:	6a 83       	std	Y+2, r22	; 0x02
+     300:	be 01       	movw	r22, r28
+     302:	6d 5f       	subi	r22, 0xFD	; 253
+     304:	7f 4f       	sbci	r23, 0xFF	; 255
+     306:	a0 e0       	ldi	r26, 0x00	; 0
+     308:	b0 e0       	ldi	r27, 0x00	; 0
+     30a:	08 c0       	rjmp	.+16     	; 0x31c <wl_send_packet+0x58>
+     30c:	fa 01       	movw	r30, r20
+     30e:	ea 0f       	add	r30, r26
+     310:	fb 1f       	adc	r31, r27
+     312:	80 81       	ld	r24, Z
+     314:	fb 01       	movw	r30, r22
+     316:	81 93       	st	Z+, r24
+     318:	bf 01       	movw	r22, r30
+     31a:	11 96       	adiw	r26, 0x01	; 1
+     31c:	a2 17       	cp	r26, r18
+     31e:	b3 07       	cpc	r27, r19
+     320:	ac f3       	brlt	.-22     	; 0x30c <wl_send_packet+0x48>
+     322:	2e 5f       	subi	r18, 0xFE	; 254
+     324:	3f 4f       	sbci	r19, 0xFF	; 255
+     326:	ce 01       	movw	r24, r28
+     328:	01 96       	adiw	r24, 0x01	; 1
+     32a:	b9 01       	movw	r22, r18
+     32c:	a5 01       	movw	r20, r10
+     32e:	2e 2d       	mov	r18, r14
+     330:	0e 94 b5 08 	call	0x116a	; 0x116a <xbee_send_packet>
+     334:	c0 58       	subi	r28, 0x80	; 128
+     336:	df 4f       	sbci	r29, 0xFF	; 255
+     338:	0f b6       	in	r0, 0x3f	; 63
+     33a:	f8 94       	cli
+     33c:	de bf       	out	0x3e, r29	; 62
+     33e:	0f be       	out	0x3f, r0	; 63
+     340:	cd bf       	out	0x3d, r28	; 61
+     342:	cf 91       	pop	r28
+     344:	df 91       	pop	r29
+     346:	1f 91       	pop	r17
+     348:	0f 91       	pop	r16
+     34a:	ef 90       	pop	r14
+     34c:	cf 90       	pop	r12
+     34e:	bf 90       	pop	r11
+     350:	af 90       	pop	r10
+     352:	08 95       	ret
+
+00000354 <wl_send_pan_packet>:
+     354:	cf 92       	push	r12
+     356:	ef 92       	push	r14
+     358:	0f 93       	push	r16
+     35a:	1f 93       	push	r17
+     35c:	c0 2e       	mov	r12, r16
+     35e:	0f ef       	ldi	r16, 0xFF	; 255
+     360:	1f ef       	ldi	r17, 0xFF	; 255
+     362:	ee 24       	eor	r14, r14
+     364:	0e 94 62 01 	call	0x2c4	; 0x2c4 <wl_send_packet>
+     368:	1f 91       	pop	r17
+     36a:	0f 91       	pop	r16
+     36c:	ef 90       	pop	r14
+     36e:	cf 90       	pop	r12
+     370:	08 95       	ret
+
+00000372 <wl_send_global_packet>:
+     372:	cf 92       	push	r12
+     374:	ef 92       	push	r14
+     376:	0f 93       	push	r16
+     378:	1f 93       	push	r17
+     37a:	c0 2e       	mov	r12, r16
+     37c:	0f ef       	ldi	r16, 0xFF	; 255
+     37e:	1f ef       	ldi	r17, 0xFF	; 255
+     380:	74 e0       	ldi	r23, 0x04	; 4
+     382:	e7 2e       	mov	r14, r23
+     384:	0e 94 62 01 	call	0x2c4	; 0x2c4 <wl_send_packet>
+     388:	1f 91       	pop	r17
+     38a:	0f 91       	pop	r16
+     38c:	ef 90       	pop	r14
+     38e:	cf 90       	pop	r12
+     390:	08 95       	ret
+
+00000392 <wl_send_robot_to_robot_packet>:
+     392:	cf 92       	push	r12
+     394:	ef 92       	push	r14
+     396:	0f 93       	push	r16
+     398:	1f 93       	push	r17
+     39a:	ce 2c       	mov	r12, r14
+     39c:	ee 24       	eor	r14, r14
+     39e:	0e 94 62 01 	call	0x2c4	; 0x2c4 <wl_send_packet>
+     3a2:	1f 91       	pop	r17
+     3a4:	0f 91       	pop	r16
+     3a6:	ef 90       	pop	r14
+     3a8:	cf 90       	pop	r12
+     3aa:	08 95       	ret
+
+000003ac <wl_send_robot_to_robot_global_packet>:
+     3ac:	cf 92       	push	r12
+     3ae:	ef 92       	push	r14
+     3b0:	0f 93       	push	r16
+     3b2:	1f 93       	push	r17
+     3b4:	ce 2c       	mov	r12, r14
+     3b6:	e4 e0       	ldi	r30, 0x04	; 4
+     3b8:	ee 2e       	mov	r14, r30
+     3ba:	0e 94 62 01 	call	0x2c4	; 0x2c4 <wl_send_packet>
+     3be:	1f 91       	pop	r17
+     3c0:	0f 91       	pop	r16
+     3c2:	ef 90       	pop	r14
+     3c4:	cf 90       	pop	r12
+     3c6:	08 95       	ret
+
+000003c8 <wl_get_xbee_id>:
+     3c8:	0e 94 ca 07 	call	0xf94	; 0xf94 <xbee_get_address>
+     3cc:	08 95       	ret
+
+000003ce <wl_get_channel>:
+     3ce:	0e 94 c5 07 	call	0xf8a	; 0xf8a <xbee_get_channel>
+     3d2:	08 95       	ret
+
+000003d4 <wl_set_channel>:
+     3d4:	0e 94 5a 08 	call	0x10b4	; 0x10b4 <xbee_set_channel>
+     3d8:	08 95       	ret
+
+000003da <wl_get_pan>:
+     3da:	0e 94 c0 07 	call	0xf80	; 0xf80 <xbee_get_pan_id>
+     3de:	08 95       	ret
+
+000003e0 <wl_set_pan>:
+     3e0:	0e 94 7c 08 	call	0x10f8	; 0x10f8 <xbee_set_pan_id>
+     3e4:	08 95       	ret
+
+000003e6 <wl_terminate>:
+     3e6:	cf 93       	push	r28
+     3e8:	df 93       	push	r29
+     3ea:	ce ee       	ldi	r28, 0xEE	; 238
+     3ec:	d5 e0       	ldi	r29, 0x05	; 5
+     3ee:	e8 81       	ld	r30, Y
+     3f0:	f9 81       	ldd	r31, Y+1	; 0x01
+     3f2:	30 97       	sbiw	r30, 0x00	; 0
+     3f4:	31 f0       	breq	.+12     	; 0x402 <wl_terminate+0x1c>
+     3f6:	00 84       	ldd	r0, Z+8	; 0x08
+     3f8:	f1 85       	ldd	r31, Z+9	; 0x09
+     3fa:	e0 2d       	mov	r30, r0
+     3fc:	30 97       	sbiw	r30, 0x00	; 0
+     3fe:	09 f0       	breq	.+2      	; 0x402 <wl_terminate+0x1c>
+     400:	09 95       	icall
+     402:	22 96       	adiw	r28, 0x02	; 2
+     404:	86 e0       	ldi	r24, 0x06	; 6
+     406:	ce 30       	cpi	r28, 0x0E	; 14
+     408:	d8 07       	cpc	r29, r24
+     40a:	89 f7       	brne	.-30     	; 0x3ee <wl_terminate+0x8>
+     40c:	0e 94 ae 08 	call	0x115c	; 0x115c <xbee_terminate>
+     410:	df 91       	pop	r29
+     412:	cf 91       	pop	r28
+     414:	08 95       	ret
+
+00000416 <wl_init>:
+     416:	ee ee       	ldi	r30, 0xEE	; 238
+     418:	f5 e0       	ldi	r31, 0x05	; 5
+     41a:	11 92       	st	Z+, r1
+     41c:	11 92       	st	Z+, r1
+     41e:	26 e0       	ldi	r18, 0x06	; 6
+     420:	ee 30       	cpi	r30, 0x0E	; 14
+     422:	f2 07       	cpc	r31, r18
+     424:	d1 f7       	brne	.-12     	; 0x41a <wl_init+0x4>
+     426:	0e 94 5d 09 	call	0x12ba	; 0x12ba <xbee_lib_init>
+     42a:	8f 5f       	subi	r24, 0xFF	; 255
+     42c:	9f 4f       	sbci	r25, 0xFF	; 255
+     42e:	19 f4       	brne	.+6      	; 0x436 <wl_init+0x20>
+     430:	2f ef       	ldi	r18, 0xFF	; 255
+     432:	3f ef       	ldi	r19, 0xFF	; 255
+     434:	08 c0       	rjmp	.+16     	; 0x446 <wl_init+0x30>
+     436:	88 e0       	ldi	r24, 0x08	; 8
+     438:	90 e0       	ldi	r25, 0x00	; 0
+     43a:	6c e7       	ldi	r22, 0x7C	; 124
+     43c:	70 e0       	ldi	r23, 0x00	; 0
+     43e:	0e 94 ee 1b 	call	0x37dc	; 0x37dc <rtc_init>
+     442:	20 e0       	ldi	r18, 0x00	; 0
+     444:	30 e0       	ldi	r19, 0x00	; 0
+     446:	c9 01       	movw	r24, r18
+     448:	08 95       	ret
+
+0000044a <wl_token_ring_leave>:
+     44a:	84 e0       	ldi	r24, 0x04	; 4
+     44c:	90 e0       	ldi	r25, 0x00	; 0
+     44e:	90 93 13 06 	sts	0x0613, r25
+     452:	80 93 12 06 	sts	0x0612, r24
+     456:	08 95       	ret
+
+00000458 <wl_token_ring_set_bom_functions>:
+     458:	90 93 1e 01 	sts	0x011E, r25
+     45c:	80 93 1d 01 	sts	0x011D, r24
+     460:	70 93 20 01 	sts	0x0120, r23
+     464:	60 93 1f 01 	sts	0x011F, r22
+     468:	50 93 22 01 	sts	0x0122, r21
+     46c:	40 93 21 01 	sts	0x0121, r20
+     470:	08 95       	ret
+
+00000472 <wl_token_ring_cleanup>:
+     472:	08 95       	ret
+
+00000474 <wl_token_ring_response_handler>:
+     474:	08 95       	ret
+
+00000476 <wl_token_iterator_has_next>:
+     476:	20 e0       	ldi	r18, 0x00	; 0
+     478:	30 e0       	ldi	r19, 0x00	; 0
+     47a:	80 91 0e 06 	lds	r24, 0x060E
+     47e:	90 91 0f 06 	lds	r25, 0x060F
+     482:	8f 5f       	subi	r24, 0xFF	; 255
+     484:	9f 4f       	sbci	r25, 0xFF	; 255
+     486:	11 f0       	breq	.+4      	; 0x48c <wl_token_iterator_has_next+0x16>
+     488:	21 e0       	ldi	r18, 0x01	; 1
+     48a:	30 e0       	ldi	r19, 0x00	; 0
+     48c:	c9 01       	movw	r24, r18
+     48e:	08 95       	ret
+
+00000490 <wl_token_get_matrix_size>:
+     490:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     494:	08 95       	ret
+
+00000496 <wl_token_get_num_robots>:
+     496:	0e 94 ab 0a 	call	0x1556	; 0x1556 <sensor_matrix_get_joined>
+     49a:	08 95       	ret
+
+0000049c <wl_token_get_robots_in_ring>:
+     49c:	0e 94 ab 0a 	call	0x1556	; 0x1556 <sensor_matrix_get_joined>
+     4a0:	08 95       	ret
+
+000004a2 <wl_token_iterator_next>:
+     4a2:	0f 93       	push	r16
+     4a4:	1f 93       	push	r17
+     4a6:	cf 93       	push	r28
+     4a8:	df 93       	push	r29
+     4aa:	c0 91 0e 06 	lds	r28, 0x060E
+     4ae:	d0 91 0f 06 	lds	r29, 0x060F
+     4b2:	d7 fd       	sbrc	r29, 7
+     4b4:	30 c0       	rjmp	.+96     	; 0x516 <wl_token_iterator_next+0x74>
+     4b6:	21 96       	adiw	r28, 0x01	; 1
+     4b8:	d0 93 0f 06 	sts	0x060F, r29
+     4bc:	c0 93 0e 06 	sts	0x060E, r28
+     4c0:	21 97       	sbiw	r28, 0x01	; 1
+     4c2:	09 c0       	rjmp	.+18     	; 0x4d6 <wl_token_iterator_next+0x34>
+     4c4:	80 91 0e 06 	lds	r24, 0x060E
+     4c8:	90 91 0f 06 	lds	r25, 0x060F
+     4cc:	01 96       	adiw	r24, 0x01	; 1
+     4ce:	90 93 0f 06 	sts	0x060F, r25
+     4d2:	80 93 0e 06 	sts	0x060E, r24
+     4d6:	80 91 0e 06 	lds	r24, 0x060E
+     4da:	90 91 0f 06 	lds	r25, 0x060F
+     4de:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     4e2:	89 2b       	or	r24, r25
+     4e4:	49 f4       	brne	.+18     	; 0x4f8 <wl_token_iterator_next+0x56>
+     4e6:	00 91 0e 06 	lds	r16, 0x060E
+     4ea:	10 91 0f 06 	lds	r17, 0x060F
+     4ee:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     4f2:	08 17       	cp	r16, r24
+     4f4:	19 07       	cpc	r17, r25
+     4f6:	34 f3       	brlt	.-52     	; 0x4c4 <wl_token_iterator_next+0x22>
+     4f8:	00 91 0e 06 	lds	r16, 0x060E
+     4fc:	10 91 0f 06 	lds	r17, 0x060F
+     500:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     504:	08 17       	cp	r16, r24
+     506:	19 07       	cpc	r17, r25
+     508:	31 f4       	brne	.+12     	; 0x516 <wl_token_iterator_next+0x74>
+     50a:	8f ef       	ldi	r24, 0xFF	; 255
+     50c:	9f ef       	ldi	r25, 0xFF	; 255
+     50e:	90 93 0f 06 	sts	0x060F, r25
+     512:	80 93 0e 06 	sts	0x060E, r24
+     516:	ce 01       	movw	r24, r28
+     518:	df 91       	pop	r29
+     51a:	cf 91       	pop	r28
+     51c:	1f 91       	pop	r17
+     51e:	0f 91       	pop	r16
+     520:	08 95       	ret
+
+00000522 <wl_token_iterator_begin>:
+     522:	cf 93       	push	r28
+     524:	df 93       	push	r29
+     526:	c0 e0       	ldi	r28, 0x00	; 0
+     528:	d0 e0       	ldi	r29, 0x00	; 0
+     52a:	01 c0       	rjmp	.+2      	; 0x52e <wl_token_iterator_begin+0xc>
+     52c:	21 96       	adiw	r28, 0x01	; 1
+     52e:	ce 01       	movw	r24, r28
+     530:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     534:	89 2b       	or	r24, r25
+     536:	29 f4       	brne	.+10     	; 0x542 <wl_token_iterator_begin+0x20>
+     538:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     53c:	c8 17       	cp	r28, r24
+     53e:	d9 07       	cpc	r29, r25
+     540:	ac f3       	brlt	.-22     	; 0x52c <wl_token_iterator_begin+0xa>
+     542:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     546:	c8 17       	cp	r28, r24
+     548:	d9 07       	cpc	r29, r25
+     54a:	11 f4       	brne	.+4      	; 0x550 <wl_token_iterator_begin+0x2e>
+     54c:	cf ef       	ldi	r28, 0xFF	; 255
+     54e:	df ef       	ldi	r29, 0xFF	; 255
+     550:	d0 93 0f 06 	sts	0x060F, r29
+     554:	c0 93 0e 06 	sts	0x060E, r28
+     558:	df 91       	pop	r29
+     55a:	cf 91       	pop	r28
+     55c:	08 95       	ret
+
+0000055e <wl_token_is_robot_in_ring>:
+     55e:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     562:	08 95       	ret
+
+00000564 <wl_token_get_sensor_reading>:
+     564:	0f 93       	push	r16
+     566:	1f 93       	push	r17
+     568:	cf 93       	push	r28
+     56a:	df 93       	push	r29
+     56c:	ec 01       	movw	r28, r24
+     56e:	8b 01       	movw	r16, r22
+     570:	cb 01       	movw	r24, r22
+     572:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     576:	89 2b       	or	r24, r25
+     578:	81 f0       	breq	.+32     	; 0x59a <wl_token_get_sensor_reading+0x36>
+     57a:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     57e:	c8 17       	cp	r28, r24
+     580:	d9 07       	cpc	r29, r25
+     582:	29 f0       	breq	.+10     	; 0x58e <wl_token_get_sensor_reading+0x2a>
+     584:	ce 01       	movw	r24, r28
+     586:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     58a:	89 2b       	or	r24, r25
+     58c:	31 f0       	breq	.+12     	; 0x59a <wl_token_get_sensor_reading+0x36>
+     58e:	ce 01       	movw	r24, r28
+     590:	b8 01       	movw	r22, r16
+     592:	0e 94 5c 0a 	call	0x14b8	; 0x14b8 <sensor_matrix_get_reading>
+     596:	9c 01       	movw	r18, r24
+     598:	02 c0       	rjmp	.+4      	; 0x59e <wl_token_get_sensor_reading+0x3a>
+     59a:	20 e0       	ldi	r18, 0x00	; 0
+     59c:	30 e0       	ldi	r19, 0x00	; 0
+     59e:	c9 01       	movw	r24, r18
+     5a0:	df 91       	pop	r29
+     5a2:	cf 91       	pop	r28
+     5a4:	1f 91       	pop	r17
+     5a6:	0f 91       	pop	r16
+     5a8:	08 95       	ret
+
+000005aa <wl_token_get_my_sensor_reading>:
+     5aa:	0f 93       	push	r16
+     5ac:	1f 93       	push	r17
+     5ae:	8c 01       	movw	r16, r24
+     5b0:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     5b4:	b8 01       	movw	r22, r16
+     5b6:	0e 94 b2 02 	call	0x564	; 0x564 <wl_token_get_sensor_reading>
+     5ba:	1f 91       	pop	r17
+     5bc:	0f 91       	pop	r16
+     5be:	08 95       	ret
+
+000005c0 <default_get_bom>:
+     5c0:	df 93       	push	r29
+     5c2:	cf 93       	push	r28
+     5c4:	00 d0       	rcall	.+0      	; 0x5c6 <default_get_bom+0x6>
+     5c6:	cd b7       	in	r28, 0x3d	; 61
+     5c8:	de b7       	in	r29, 0x3e	; 62
+     5ca:	8f ef       	ldi	r24, 0xFF	; 255
+     5cc:	9f ef       	ldi	r25, 0xFF	; 255
+     5ce:	0e 94 c6 0d 	call	0x1b8c	; 0x1b8c <bom_refresh>
+     5d2:	ce 01       	movw	r24, r28
+     5d4:	01 96       	adiw	r24, 0x01	; 1
+     5d6:	0e 94 d7 0a 	call	0x15ae	; 0x15ae <bom_get_max10>
+     5da:	99 81       	ldd	r25, Y+1	; 0x01
+     5dc:	0f 90       	pop	r0
+     5de:	0f 90       	pop	r0
+     5e0:	cf 91       	pop	r28
+     5e2:	df 91       	pop	r29
+     5e4:	08 95       	ret
+
+000005e6 <wl_token_ring_unregister>:
+     5e6:	83 e2       	ldi	r24, 0x23	; 35
+     5e8:	91 e0       	ldi	r25, 0x01	; 1
+     5ea:	0e 94 96 00 	call	0x12c	; 0x12c <wl_unregister_packet_group>
+     5ee:	08 95       	ret
+
+000005f0 <wl_token_ring_join>:
+     5f0:	0f 93       	push	r16
+     5f2:	82 e0       	ldi	r24, 0x02	; 2
+     5f4:	90 e0       	ldi	r25, 0x00	; 0
+     5f6:	90 93 13 06 	sts	0x0613, r25
+     5fa:	80 93 12 06 	sts	0x0612, r24
+     5fe:	88 e0       	ldi	r24, 0x08	; 8
+     600:	90 e0       	ldi	r25, 0x00	; 0
+     602:	90 93 32 01 	sts	0x0132, r25
+     606:	80 93 31 01 	sts	0x0131, r24
+     60a:	82 e0       	ldi	r24, 0x02	; 2
+     60c:	64 e0       	ldi	r22, 0x04	; 4
+     60e:	40 e0       	ldi	r20, 0x00	; 0
+     610:	50 e0       	ldi	r21, 0x00	; 0
+     612:	20 e0       	ldi	r18, 0x00	; 0
+     614:	30 e0       	ldi	r19, 0x00	; 0
+     616:	00 e0       	ldi	r16, 0x00	; 0
+     618:	0e 94 b9 01 	call	0x372	; 0x372 <wl_send_global_packet>
+     61c:	89 2b       	or	r24, r25
+     61e:	19 f4       	brne	.+6      	; 0x626 <wl_token_ring_join+0x36>
+     620:	20 e0       	ldi	r18, 0x00	; 0
+     622:	30 e0       	ldi	r19, 0x00	; 0
+     624:	02 c0       	rjmp	.+4      	; 0x62a <wl_token_ring_join+0x3a>
+     626:	2f ef       	ldi	r18, 0xFF	; 255
+     628:	3f ef       	ldi	r19, 0xFF	; 255
+     62a:	c9 01       	movw	r24, r18
+     62c:	0f 91       	pop	r16
+     62e:	08 95       	ret
+
+00000630 <wl_token_pass_token>:
+     630:	8f 92       	push	r8
+     632:	9f 92       	push	r9
+     634:	af 92       	push	r10
+     636:	bf 92       	push	r11
+     638:	df 92       	push	r13
+     63a:	ef 92       	push	r14
+     63c:	ff 92       	push	r15
+     63e:	0f 93       	push	r16
+     640:	1f 93       	push	r17
+     642:	df 93       	push	r29
+     644:	cf 93       	push	r28
+     646:	cd b7       	in	r28, 0x3d	; 61
+     648:	de b7       	in	r29, 0x3e	; 62
+     64a:	8d b6       	in	r8, 0x3d	; 61
+     64c:	9e b6       	in	r9, 0x3e	; 62
+     64e:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     652:	8c 01       	movw	r16, r24
+     654:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     658:	9c 01       	movw	r18, r24
+     65a:	22 0f       	add	r18, r18
+     65c:	33 1f       	adc	r19, r19
+     65e:	28 0f       	add	r18, r24
+     660:	39 1f       	adc	r19, r25
+     662:	8d b7       	in	r24, 0x3d	; 61
+     664:	9e b7       	in	r25, 0x3e	; 62
+     666:	82 1b       	sub	r24, r18
+     668:	93 0b       	sbc	r25, r19
+     66a:	0f b6       	in	r0, 0x3f	; 63
+     66c:	f8 94       	cli
+     66e:	9e bf       	out	0x3e, r25	; 62
+     670:	0f be       	out	0x3f, r0	; 63
+     672:	8d bf       	out	0x3d, r24	; 61
+     674:	ad b6       	in	r10, 0x3d	; 61
+     676:	be b6       	in	r11, 0x3e	; 62
+     678:	08 94       	sec
+     67a:	a1 1c       	adc	r10, r1
+     67c:	b1 1c       	adc	r11, r1
+     67e:	80 91 33 01 	lds	r24, 0x0133
+     682:	90 91 34 01 	lds	r25, 0x0134
+     686:	2f ef       	ldi	r18, 0xFF	; 255
+     688:	8f 3f       	cpi	r24, 0xFF	; 255
+     68a:	92 07       	cpc	r25, r18
+     68c:	81 f4       	brne	.+32     	; 0x6ae <wl_token_pass_token+0x7e>
+     68e:	0f 5f       	subi	r16, 0xFF	; 255
+     690:	1f 4f       	sbci	r17, 0xFF	; 255
+     692:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     696:	08 17       	cp	r16, r24
+     698:	19 07       	cpc	r17, r25
+     69a:	11 f4       	brne	.+4      	; 0x6a0 <wl_token_pass_token+0x70>
+     69c:	00 e0       	ldi	r16, 0x00	; 0
+     69e:	10 e0       	ldi	r17, 0x00	; 0
+     6a0:	c8 01       	movw	r24, r16
+     6a2:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     6a6:	89 2b       	or	r24, r25
+     6a8:	91 f3       	breq	.-28     	; 0x68e <wl_token_pass_token+0x5e>
+     6aa:	d0 2e       	mov	r13, r16
+     6ac:	0c c0       	rjmp	.+24     	; 0x6c6 <wl_token_pass_token+0x96>
+     6ae:	61 e0       	ldi	r22, 0x01	; 1
+     6b0:	70 e0       	ldi	r23, 0x00	; 0
+     6b2:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     6b6:	d0 90 33 01 	lds	r13, 0x0133
+     6ba:	8f ef       	ldi	r24, 0xFF	; 255
+     6bc:	9f ef       	ldi	r25, 0xFF	; 255
+     6be:	90 93 34 01 	sts	0x0134, r25
+     6c2:	80 93 33 01 	sts	0x0133, r24
+     6c6:	00 e0       	ldi	r16, 0x00	; 0
+     6c8:	10 e0       	ldi	r17, 0x00	; 0
+     6ca:	ee 24       	eor	r14, r14
+     6cc:	ff 24       	eor	r15, r15
+     6ce:	22 c0       	rjmp	.+68     	; 0x714 <wl_token_pass_token+0xe4>
+     6d0:	c8 01       	movw	r24, r16
+     6d2:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     6d6:	89 2b       	or	r24, r25
+     6d8:	d9 f0       	breq	.+54     	; 0x710 <wl_token_pass_token+0xe0>
+     6da:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     6de:	08 17       	cp	r16, r24
+     6e0:	19 07       	cpc	r17, r25
+     6e2:	b1 f0       	breq	.+44     	; 0x710 <wl_token_pass_token+0xe0>
+     6e4:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     6e8:	b8 01       	movw	r22, r16
+     6ea:	0e 94 5c 0a 	call	0x14b8	; 0x14b8 <sensor_matrix_get_reading>
+     6ee:	dc 01       	movw	r26, r24
+     6f0:	f7 01       	movw	r30, r14
+     6f2:	ee 0f       	add	r30, r30
+     6f4:	ff 1f       	adc	r31, r31
+     6f6:	ee 0d       	add	r30, r14
+     6f8:	ff 1d       	adc	r31, r15
+     6fa:	ea 0d       	add	r30, r10
+     6fc:	fb 1d       	adc	r31, r11
+     6fe:	00 83       	st	Z, r16
+     700:	8c 91       	ld	r24, X
+     702:	81 83       	std	Z+1, r24	; 0x01
+     704:	11 96       	adiw	r26, 0x01	; 1
+     706:	8c 91       	ld	r24, X
+     708:	82 83       	std	Z+2, r24	; 0x02
+     70a:	08 94       	sec
+     70c:	e1 1c       	adc	r14, r1
+     70e:	f1 1c       	adc	r15, r1
+     710:	0f 5f       	subi	r16, 0xFF	; 255
+     712:	1f 4f       	sbci	r17, 0xFF	; 255
+     714:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     718:	08 17       	cp	r16, r24
+     71a:	19 07       	cpc	r17, r25
+     71c:	cc f2       	brlt	.-78     	; 0x6d0 <wl_token_pass_token+0xa0>
+     71e:	97 01       	movw	r18, r14
+     720:	22 0f       	add	r18, r18
+     722:	33 1f       	adc	r19, r19
+     724:	2e 0d       	add	r18, r14
+     726:	3f 1d       	adc	r19, r15
+     728:	82 e0       	ldi	r24, 0x02	; 2
+     72a:	62 e0       	ldi	r22, 0x02	; 2
+     72c:	a5 01       	movw	r20, r10
+     72e:	00 e0       	ldi	r16, 0x00	; 0
+     730:	0e 94 b9 01 	call	0x372	; 0x372 <wl_send_global_packet>
+     734:	89 2b       	or	r24, r25
+     736:	d9 f4       	brne	.+54     	; 0x76e <wl_token_pass_token+0x13e>
+     738:	82 e0       	ldi	r24, 0x02	; 2
+     73a:	61 e0       	ldi	r22, 0x01	; 1
+     73c:	40 e0       	ldi	r20, 0x00	; 0
+     73e:	50 e0       	ldi	r21, 0x00	; 0
+     740:	20 e0       	ldi	r18, 0x00	; 0
+     742:	30 e0       	ldi	r19, 0x00	; 0
+     744:	0d 2d       	mov	r16, r13
+     746:	10 e0       	ldi	r17, 0x00	; 0
+     748:	92 e0       	ldi	r25, 0x02	; 2
+     74a:	e9 2e       	mov	r14, r25
+     74c:	0e 94 d6 01 	call	0x3ac	; 0x3ac <wl_send_robot_to_robot_global_packet>
+     750:	89 2b       	or	r24, r25
+     752:	69 f4       	brne	.+26     	; 0x76e <wl_token_pass_token+0x13e>
+     754:	d0 92 2d 01 	sts	0x012D, r13
+     758:	10 92 2e 01 	sts	0x012E, r1
+     75c:	84 e0       	ldi	r24, 0x04	; 4
+     75e:	90 e0       	ldi	r25, 0x00	; 0
+     760:	90 93 30 01 	sts	0x0130, r25
+     764:	80 93 2f 01 	sts	0x012F, r24
+     768:	20 e0       	ldi	r18, 0x00	; 0
+     76a:	30 e0       	ldi	r19, 0x00	; 0
+     76c:	02 c0       	rjmp	.+4      	; 0x772 <wl_token_pass_token+0x142>
+     76e:	2f ef       	ldi	r18, 0xFF	; 255
+     770:	3f ef       	ldi	r19, 0xFF	; 255
+     772:	c9 01       	movw	r24, r18
+     774:	0f b6       	in	r0, 0x3f	; 63
+     776:	f8 94       	cli
+     778:	9e be       	out	0x3e, r9	; 62
+     77a:	0f be       	out	0x3f, r0	; 63
+     77c:	8d be       	out	0x3d, r8	; 61
+     77e:	cf 91       	pop	r28
+     780:	df 91       	pop	r29
+     782:	1f 91       	pop	r17
+     784:	0f 91       	pop	r16
+     786:	ff 90       	pop	r15
+     788:	ef 90       	pop	r14
+     78a:	df 90       	pop	r13
+     78c:	bf 90       	pop	r11
+     78e:	af 90       	pop	r10
+     790:	9f 90       	pop	r9
+     792:	8f 90       	pop	r8
+     794:	08 95       	ret
+
+00000796 <wl_token_ring_receive_handler>:
+     796:	6f 92       	push	r6
+     798:	7f 92       	push	r7
+     79a:	8f 92       	push	r8
+     79c:	9f 92       	push	r9
+     79e:	af 92       	push	r10
+     7a0:	bf 92       	push	r11
+     7a2:	cf 92       	push	r12
+     7a4:	df 92       	push	r13
+     7a6:	ef 92       	push	r14
+     7a8:	ff 92       	push	r15
+     7aa:	0f 93       	push	r16
+     7ac:	1f 93       	push	r17
+     7ae:	cf 93       	push	r28
+     7b0:	df 93       	push	r29
+     7b2:	7b 01       	movw	r14, r22
+     7b4:	4a 01       	movw	r8, r20
+     7b6:	e9 01       	movw	r28, r18
+     7b8:	83 30       	cpi	r24, 0x03	; 3
+     7ba:	09 f4       	brne	.+2      	; 0x7be <wl_token_ring_receive_handler+0x28>
+     7bc:	60 c1       	rjmp	.+704    	; 0xa7e <wl_token_ring_receive_handler+0x2e8>
+     7be:	84 30       	cpi	r24, 0x04	; 4
+     7c0:	30 f4       	brcc	.+12     	; 0x7ce <wl_token_ring_receive_handler+0x38>
+     7c2:	81 30       	cpi	r24, 0x01	; 1
+     7c4:	59 f0       	breq	.+22     	; 0x7dc <wl_token_ring_receive_handler+0x46>
+     7c6:	82 30       	cpi	r24, 0x02	; 2
+     7c8:	09 f0       	breq	.+2      	; 0x7cc <wl_token_ring_receive_handler+0x36>
+     7ca:	c9 c1       	rjmp	.+914    	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     7cc:	76 c0       	rjmp	.+236    	; 0x8ba <wl_token_ring_receive_handler+0x124>
+     7ce:	84 30       	cpi	r24, 0x04	; 4
+     7d0:	09 f4       	brne	.+2      	; 0x7d4 <wl_token_ring_receive_handler+0x3e>
+     7d2:	68 c1       	rjmp	.+720    	; 0xaa4 <wl_token_ring_receive_handler+0x30e>
+     7d4:	85 30       	cpi	r24, 0x05	; 5
+     7d6:	09 f0       	breq	.+2      	; 0x7da <wl_token_ring_receive_handler+0x44>
+     7d8:	c2 c1       	rjmp	.+900    	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     7da:	ab c1       	rjmp	.+854    	; 0xb32 <wl_token_ring_receive_handler+0x39c>
+     7dc:	80 91 2d 01 	lds	r24, 0x012D
+     7e0:	90 91 2e 01 	lds	r25, 0x012E
+     7e4:	68 17       	cp	r22, r24
+     7e6:	79 07       	cpc	r23, r25
+     7e8:	b1 f0       	breq	.+44     	; 0x816 <wl_token_ring_receive_handler+0x80>
+     7ea:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     7ee:	20 91 2d 01 	lds	r18, 0x012D
+     7f2:	30 91 2e 01 	lds	r19, 0x012E
+     7f6:	82 17       	cp	r24, r18
+     7f8:	93 07       	cpc	r25, r19
+     7fa:	69 f0       	breq	.+26     	; 0x816 <wl_token_ring_receive_handler+0x80>
+     7fc:	80 91 10 06 	lds	r24, 0x0610
+     800:	90 91 11 06 	lds	r25, 0x0611
+     804:	03 97       	sbiw	r24, 0x03	; 3
+     806:	3c f4       	brge	.+14     	; 0x816 <wl_token_ring_receive_handler+0x80>
+     808:	80 91 12 06 	lds	r24, 0x0612
+     80c:	90 91 13 06 	lds	r25, 0x0613
+     810:	03 97       	sbiw	r24, 0x03	; 3
+     812:	09 f0       	breq	.+2      	; 0x816 <wl_token_ring_receive_handler+0x80>
+     814:	a4 c1       	rjmp	.+840    	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     816:	cf ef       	ldi	r28, 0xFF	; 255
+     818:	df ef       	ldi	r29, 0xFF	; 255
+     81a:	d0 93 11 06 	sts	0x0611, r29
+     81e:	c0 93 10 06 	sts	0x0610, r28
+     822:	d0 93 30 01 	sts	0x0130, r29
+     826:	c0 93 2f 01 	sts	0x012F, r28
+     82a:	c7 01       	movw	r24, r14
+     82c:	61 e0       	ldi	r22, 0x01	; 1
+     82e:	70 e0       	ldi	r23, 0x00	; 0
+     830:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     834:	80 91 12 06 	lds	r24, 0x0612
+     838:	90 91 13 06 	lds	r25, 0x0613
+     83c:	03 97       	sbiw	r24, 0x03	; 3
+     83e:	81 f4       	brne	.+32     	; 0x860 <wl_token_ring_receive_handler+0xca>
+     840:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     844:	61 e0       	ldi	r22, 0x01	; 1
+     846:	70 e0       	ldi	r23, 0x00	; 0
+     848:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     84c:	81 e0       	ldi	r24, 0x01	; 1
+     84e:	90 e0       	ldi	r25, 0x00	; 0
+     850:	90 93 13 06 	sts	0x0613, r25
+     854:	80 93 12 06 	sts	0x0612, r24
+     858:	d0 93 32 01 	sts	0x0132, r29
+     85c:	c0 93 31 01 	sts	0x0131, r28
+     860:	80 91 12 06 	lds	r24, 0x0612
+     864:	90 91 13 06 	lds	r25, 0x0613
+     868:	84 30       	cpi	r24, 0x04	; 4
+     86a:	91 05       	cpc	r25, r1
+     86c:	11 f0       	breq	.+4      	; 0x872 <wl_token_ring_receive_handler+0xdc>
+     86e:	89 2b       	or	r24, r25
+     870:	29 f4       	brne	.+10     	; 0x87c <wl_token_ring_receive_handler+0xe6>
+     872:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     876:	60 e0       	ldi	r22, 0x00	; 0
+     878:	70 e0       	ldi	r23, 0x00	; 0
+     87a:	6f c1       	rjmp	.+734    	; 0xb5a <wl_token_ring_receive_handler+0x3c4>
+     87c:	82 e0       	ldi	r24, 0x02	; 2
+     87e:	63 e0       	ldi	r22, 0x03	; 3
+     880:	40 e0       	ldi	r20, 0x00	; 0
+     882:	50 e0       	ldi	r21, 0x00	; 0
+     884:	20 e0       	ldi	r18, 0x00	; 0
+     886:	30 e0       	ldi	r19, 0x00	; 0
+     888:	00 e0       	ldi	r16, 0x00	; 0
+     88a:	0e 94 b9 01 	call	0x372	; 0x372 <wl_send_global_packet>
+     88e:	e0 91 1d 01 	lds	r30, 0x011D
+     892:	f0 91 1e 01 	lds	r31, 0x011E
+     896:	09 95       	icall
+     898:	84 e6       	ldi	r24, 0x64	; 100
+     89a:	90 e0       	ldi	r25, 0x00	; 0
+     89c:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+     8a0:	e0 91 1f 01 	lds	r30, 0x011F
+     8a4:	f0 91 20 01 	lds	r31, 0x0120
+     8a8:	09 95       	icall
+     8aa:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     8ae:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     8b2:	89 2b       	or	r24, r25
+     8b4:	09 f4       	brne	.+2      	; 0x8b8 <wl_token_ring_receive_handler+0x122>
+     8b6:	53 c1       	rjmp	.+678    	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     8b8:	39 c1       	rjmp	.+626    	; 0xb2c <wl_token_ring_receive_handler+0x396>
+     8ba:	8f ef       	ldi	r24, 0xFF	; 255
+     8bc:	9f ef       	ldi	r25, 0xFF	; 255
+     8be:	90 93 11 06 	sts	0x0611, r25
+     8c2:	80 93 10 06 	sts	0x0610, r24
+     8c6:	90 93 30 01 	sts	0x0130, r25
+     8ca:	80 93 2f 01 	sts	0x012F, r24
+     8ce:	cb 01       	movw	r24, r22
+     8d0:	61 e0       	ldi	r22, 0x01	; 1
+     8d2:	70 e0       	ldi	r23, 0x00	; 0
+     8d4:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     8d8:	ce 01       	movw	r24, r28
+     8da:	62 e0       	ldi	r22, 0x02	; 2
+     8dc:	70 e0       	ldi	r23, 0x00	; 0
+     8de:	0e 94 13 32 	call	0x6426	; 0x6426 <__divmodhi4>
+     8e2:	5b 01       	movw	r10, r22
+     8e4:	cc 24       	eor	r12, r12
+     8e6:	dd 24       	eor	r13, r13
+     8e8:	00 e0       	ldi	r16, 0x00	; 0
+     8ea:	10 e0       	ldi	r17, 0x00	; 0
+     8ec:	66 24       	eor	r6, r6
+     8ee:	6a 94       	dec	r6
+     8f0:	76 2c       	mov	r7, r6
+     8f2:	69 c0       	rjmp	.+210    	; 0x9c6 <wl_token_ring_receive_handler+0x230>
+     8f4:	0e 15       	cp	r16, r14
+     8f6:	1f 05       	cpc	r17, r15
+     8f8:	09 f4       	brne	.+2      	; 0x8fc <wl_token_ring_receive_handler+0x166>
+     8fa:	63 c0       	rjmp	.+198    	; 0x9c2 <wl_token_ring_receive_handler+0x22c>
+     8fc:	ca 14       	cp	r12, r10
+     8fe:	db 04       	cpc	r13, r11
+     900:	74 f5       	brge	.+92     	; 0x95e <wl_token_ring_receive_handler+0x1c8>
+     902:	96 01       	movw	r18, r12
+     904:	22 0f       	add	r18, r18
+     906:	33 1f       	adc	r19, r19
+     908:	2c 0d       	add	r18, r12
+     90a:	3d 1d       	adc	r19, r13
+     90c:	f4 01       	movw	r30, r8
+     90e:	e2 0f       	add	r30, r18
+     910:	f3 1f       	adc	r31, r19
+     912:	80 81       	ld	r24, Z
+     914:	c8 2f       	mov	r28, r24
+     916:	d0 e0       	ldi	r29, 0x00	; 0
+     918:	c0 17       	cp	r28, r16
+     91a:	d1 07       	cpc	r29, r17
+     91c:	01 f5       	brne	.+64     	; 0x95e <wl_token_ring_receive_handler+0x1c8>
+     91e:	80 91 33 01 	lds	r24, 0x0133
+     922:	90 91 34 01 	lds	r25, 0x0134
+     926:	80 17       	cp	r24, r16
+     928:	91 07       	cpc	r25, r17
+     92a:	21 f4       	brne	.+8      	; 0x934 <wl_token_ring_receive_handler+0x19e>
+     92c:	70 92 34 01 	sts	0x0134, r7
+     930:	60 92 33 01 	sts	0x0133, r6
+     934:	f9 01       	movw	r30, r18
+     936:	e8 0d       	add	r30, r8
+     938:	f9 1d       	adc	r31, r9
+     93a:	41 81       	ldd	r20, Z+1	; 0x01
+     93c:	52 81       	ldd	r21, Z+2	; 0x02
+     93e:	c7 01       	movw	r24, r14
+     940:	be 01       	movw	r22, r28
+     942:	0e 94 43 0a 	call	0x1486	; 0x1486 <sensor_matrix_set_reading>
+     946:	ce 01       	movw	r24, r28
+     948:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     94c:	ce 01       	movw	r24, r28
+     94e:	61 e0       	ldi	r22, 0x01	; 1
+     950:	70 e0       	ldi	r23, 0x00	; 0
+     952:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     956:	08 94       	sec
+     958:	c1 1c       	adc	r12, r1
+     95a:	d1 1c       	adc	r13, r1
+     95c:	32 c0       	rjmp	.+100    	; 0x9c2 <wl_token_ring_receive_handler+0x22c>
+     95e:	c8 01       	movw	r24, r16
+     960:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     964:	89 2b       	or	r24, r25
+     966:	29 f0       	breq	.+10     	; 0x972 <wl_token_ring_receive_handler+0x1dc>
+     968:	c8 01       	movw	r24, r16
+     96a:	60 e0       	ldi	r22, 0x00	; 0
+     96c:	70 e0       	ldi	r23, 0x00	; 0
+     96e:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     972:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     976:	08 17       	cp	r16, r24
+     978:	19 07       	cpc	r17, r25
+     97a:	61 f4       	brne	.+24     	; 0x994 <wl_token_ring_receive_handler+0x1fe>
+     97c:	80 91 12 06 	lds	r24, 0x0612
+     980:	90 91 13 06 	lds	r25, 0x0613
+     984:	01 97       	sbiw	r24, 0x01	; 1
+     986:	31 f4       	brne	.+12     	; 0x994 <wl_token_ring_receive_handler+0x1fe>
+     988:	10 92 13 06 	sts	0x0613, r1
+     98c:	10 92 12 06 	sts	0x0612, r1
+     990:	0e 94 f8 02 	call	0x5f0	; 0x5f0 <wl_token_ring_join>
+     994:	80 91 35 01 	lds	r24, 0x0135
+     998:	90 91 36 01 	lds	r25, 0x0136
+     99c:	08 17       	cp	r16, r24
+     99e:	19 07       	cpc	r17, r25
+     9a0:	81 f4       	brne	.+32     	; 0x9c2 <wl_token_ring_receive_handler+0x22c>
+     9a2:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     9a6:	60 e0       	ldi	r22, 0x00	; 0
+     9a8:	70 e0       	ldi	r23, 0x00	; 0
+     9aa:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     9ae:	10 92 13 06 	sts	0x0613, r1
+     9b2:	10 92 12 06 	sts	0x0612, r1
+     9b6:	70 92 36 01 	sts	0x0136, r7
+     9ba:	60 92 35 01 	sts	0x0135, r6
+     9be:	0e 94 f8 02 	call	0x5f0	; 0x5f0 <wl_token_ring_join>
+     9c2:	0f 5f       	subi	r16, 0xFF	; 255
+     9c4:	1f 4f       	sbci	r17, 0xFF	; 255
+     9c6:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     9ca:	08 17       	cp	r16, r24
+     9cc:	19 07       	cpc	r17, r25
+     9ce:	0c f4       	brge	.+2      	; 0x9d2 <wl_token_ring_receive_handler+0x23c>
+     9d0:	91 cf       	rjmp	.-222    	; 0x8f4 <wl_token_ring_receive_handler+0x15e>
+     9d2:	87 01       	movw	r16, r14
+     9d4:	0f 5f       	subi	r16, 0xFF	; 255
+     9d6:	1f 4f       	sbci	r17, 0xFF	; 255
+     9d8:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     9dc:	08 17       	cp	r16, r24
+     9de:	19 07       	cpc	r17, r25
+     9e0:	11 f4       	brne	.+4      	; 0x9e6 <wl_token_ring_receive_handler+0x250>
+     9e2:	00 e0       	ldi	r16, 0x00	; 0
+     9e4:	10 e0       	ldi	r17, 0x00	; 0
+     9e6:	c8 01       	movw	r24, r16
+     9e8:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     9ec:	89 2b       	or	r24, r25
+     9ee:	19 f4       	brne	.+6      	; 0x9f6 <wl_token_ring_receive_handler+0x260>
+     9f0:	0e 15       	cp	r16, r14
+     9f2:	1f 05       	cpc	r17, r15
+     9f4:	79 f7       	brne	.-34     	; 0x9d4 <wl_token_ring_receive_handler+0x23e>
+     9f6:	e0 2e       	mov	r14, r16
+     9f8:	ff 24       	eor	r15, r15
+     9fa:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     9fe:	e8 16       	cp	r14, r24
+     a00:	f9 06       	cpc	r15, r25
+     a02:	21 f0       	breq	.+8      	; 0xa0c <wl_token_ring_receive_handler+0x276>
+     a04:	f0 92 2e 01 	sts	0x012E, r15
+     a08:	e0 92 2d 01 	sts	0x012D, r14
+     a0c:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     a10:	8c 01       	movw	r16, r24
+     a12:	0f 5f       	subi	r16, 0xFF	; 255
+     a14:	1f 4f       	sbci	r17, 0xFF	; 255
+     a16:	c1 e0       	ldi	r28, 0x01	; 1
+     a18:	d0 e0       	ldi	r29, 0x00	; 0
+     a1a:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     a1e:	08 17       	cp	r16, r24
+     a20:	19 07       	cpc	r17, r25
+     a22:	11 f4       	brne	.+4      	; 0xa28 <wl_token_ring_receive_handler+0x292>
+     a24:	00 e0       	ldi	r16, 0x00	; 0
+     a26:	10 e0       	ldi	r17, 0x00	; 0
+     a28:	0e 15       	cp	r16, r14
+     a2a:	1f 05       	cpc	r17, r15
+     a2c:	49 f0       	breq	.+18     	; 0xa40 <wl_token_ring_receive_handler+0x2aa>
+     a2e:	c8 01       	movw	r24, r16
+     a30:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     a34:	89 2b       	or	r24, r25
+     a36:	09 f0       	breq	.+2      	; 0xa3a <wl_token_ring_receive_handler+0x2a4>
+     a38:	21 96       	adiw	r28, 0x01	; 1
+     a3a:	0f 5f       	subi	r16, 0xFF	; 255
+     a3c:	1f 4f       	sbci	r17, 0xFF	; 255
+     a3e:	ed cf       	rjmp	.-38     	; 0xa1a <wl_token_ring_receive_handler+0x284>
+     a40:	cc 0f       	add	r28, r28
+     a42:	dd 1f       	adc	r29, r29
+     a44:	cc 0f       	add	r28, r28
+     a46:	dd 1f       	adc	r29, r29
+     a48:	d0 93 30 01 	sts	0x0130, r29
+     a4c:	c0 93 2f 01 	sts	0x012F, r28
+     a50:	0e 94 ab 0a 	call	0x1556	; 0x1556 <sensor_matrix_get_joined>
+     a54:	89 2b       	or	r24, r25
+     a56:	09 f0       	breq	.+2      	; 0xa5a <wl_token_ring_receive_handler+0x2c4>
+     a58:	82 c0       	rjmp	.+260    	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     a5a:	80 91 12 06 	lds	r24, 0x0612
+     a5e:	90 91 13 06 	lds	r25, 0x0613
+     a62:	02 97       	sbiw	r24, 0x02	; 2
+     a64:	09 f0       	breq	.+2      	; 0xa68 <wl_token_ring_receive_handler+0x2d2>
+     a66:	7b c0       	rjmp	.+246    	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     a68:	82 e0       	ldi	r24, 0x02	; 2
+     a6a:	61 e0       	ldi	r22, 0x01	; 1
+     a6c:	40 e0       	ldi	r20, 0x00	; 0
+     a6e:	50 e0       	ldi	r21, 0x00	; 0
+     a70:	20 e0       	ldi	r18, 0x00	; 0
+     a72:	30 e0       	ldi	r19, 0x00	; 0
+     a74:	72 e0       	ldi	r23, 0x02	; 2
+     a76:	e7 2e       	mov	r14, r23
+     a78:	0e 94 d6 01 	call	0x3ac	; 0x3ac <wl_send_robot_to_robot_global_packet>
+     a7c:	70 c0       	rjmp	.+224    	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     a7e:	10 92 11 06 	sts	0x0611, r1
+     a82:	10 92 10 06 	sts	0x0610, r1
+     a86:	e0 91 21 01 	lds	r30, 0x0121
+     a8a:	f0 91 22 01 	lds	r31, 0x0122
+     a8e:	09 95       	icall
+     a90:	18 2f       	mov	r17, r24
+     a92:	09 2f       	mov	r16, r25
+     a94:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     a98:	b7 01       	movw	r22, r14
+     a9a:	41 2f       	mov	r20, r17
+     a9c:	50 2f       	mov	r21, r16
+     a9e:	0e 94 43 0a 	call	0x1486	; 0x1486 <sensor_matrix_set_reading>
+     aa2:	5d c0       	rjmp	.+186    	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     aa4:	80 91 12 06 	lds	r24, 0x0612
+     aa8:	90 91 13 06 	lds	r25, 0x0613
+     aac:	01 97       	sbiw	r24, 0x01	; 1
+     aae:	09 f0       	breq	.+2      	; 0xab2 <wl_token_ring_receive_handler+0x31c>
+     ab0:	56 c0       	rjmp	.+172    	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     ab2:	80 91 33 01 	lds	r24, 0x0133
+     ab6:	90 91 34 01 	lds	r25, 0x0134
+     aba:	86 17       	cp	r24, r22
+     abc:	97 07       	cpc	r25, r23
+     abe:	31 f4       	brne	.+12     	; 0xacc <wl_token_ring_receive_handler+0x336>
+     ac0:	8f ef       	ldi	r24, 0xFF	; 255
+     ac2:	9f ef       	ldi	r25, 0xFF	; 255
+     ac4:	90 93 34 01 	sts	0x0134, r25
+     ac8:	80 93 33 01 	sts	0x0133, r24
+     acc:	80 91 33 01 	lds	r24, 0x0133
+     ad0:	90 91 34 01 	lds	r25, 0x0134
+     ad4:	8f 5f       	subi	r24, 0xFF	; 255
+     ad6:	9f 4f       	sbci	r25, 0xFF	; 255
+     ad8:	09 f0       	breq	.+2      	; 0xadc <wl_token_ring_receive_handler+0x346>
+     ada:	41 c0       	rjmp	.+130    	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     adc:	87 01       	movw	r16, r14
+     ade:	01 50       	subi	r16, 0x01	; 1
+     ae0:	10 40       	sbci	r17, 0x00	; 0
+     ae2:	17 ff       	sbrs	r17, 7
+     ae4:	05 c0       	rjmp	.+10     	; 0xaf0 <wl_token_ring_receive_handler+0x35a>
+     ae6:	0e 94 b0 0a 	call	0x1560	; 0x1560 <sensor_matrix_get_size>
+     aea:	8c 01       	movw	r16, r24
+     aec:	01 50       	subi	r16, 0x01	; 1
+     aee:	10 40       	sbci	r17, 0x00	; 0
+     af0:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     af4:	08 17       	cp	r16, r24
+     af6:	19 07       	cpc	r17, r25
+     af8:	31 f0       	breq	.+12     	; 0xb06 <wl_token_ring_receive_handler+0x370>
+     afa:	c8 01       	movw	r24, r16
+     afc:	0e 94 9d 0a 	call	0x153a	; 0x153a <sensor_matrix_get_in_ring>
+     b00:	89 2b       	or	r24, r25
+     b02:	69 f3       	breq	.-38     	; 0xade <wl_token_ring_receive_handler+0x348>
+     b04:	2c c0       	rjmp	.+88     	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     b06:	f0 92 34 01 	sts	0x0134, r15
+     b0a:	e0 92 33 01 	sts	0x0133, r14
+     b0e:	82 e0       	ldi	r24, 0x02	; 2
+     b10:	65 e0       	ldi	r22, 0x05	; 5
+     b12:	40 e0       	ldi	r20, 0x00	; 0
+     b14:	50 e0       	ldi	r21, 0x00	; 0
+     b16:	20 e0       	ldi	r18, 0x00	; 0
+     b18:	30 e0       	ldi	r19, 0x00	; 0
+     b1a:	87 01       	movw	r16, r14
+     b1c:	ee 24       	eor	r14, r14
+     b1e:	e3 94       	inc	r14
+     b20:	0e 94 d6 01 	call	0x3ac	; 0x3ac <wl_send_robot_to_robot_global_packet>
+     b24:	0e 94 ab 0a 	call	0x1556	; 0x1556 <sensor_matrix_get_joined>
+     b28:	01 97       	sbiw	r24, 0x01	; 1
+     b2a:	c9 f4       	brne	.+50     	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     b2c:	0e 94 18 03 	call	0x630	; 0x630 <wl_token_pass_token>
+     b30:	16 c0       	rjmp	.+44     	; 0xb5e <wl_token_ring_receive_handler+0x3c8>
+     b32:	88 e0       	ldi	r24, 0x08	; 8
+     b34:	90 e0       	ldi	r25, 0x00	; 0
+     b36:	90 93 32 01 	sts	0x0132, r25
+     b3a:	80 93 31 01 	sts	0x0131, r24
+     b3e:	83 e0       	ldi	r24, 0x03	; 3
+     b40:	90 e0       	ldi	r25, 0x00	; 0
+     b42:	90 93 13 06 	sts	0x0613, r25
+     b46:	80 93 12 06 	sts	0x0612, r24
+     b4a:	70 93 36 01 	sts	0x0136, r23
+     b4e:	60 93 35 01 	sts	0x0135, r22
+     b52:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     b56:	61 e0       	ldi	r22, 0x01	; 1
+     b58:	70 e0       	ldi	r23, 0x00	; 0
+     b5a:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     b5e:	df 91       	pop	r29
+     b60:	cf 91       	pop	r28
+     b62:	1f 91       	pop	r17
+     b64:	0f 91       	pop	r16
+     b66:	ff 90       	pop	r15
+     b68:	ef 90       	pop	r14
+     b6a:	df 90       	pop	r13
+     b6c:	cf 90       	pop	r12
+     b6e:	bf 90       	pop	r11
+     b70:	af 90       	pop	r10
+     b72:	9f 90       	pop	r9
+     b74:	8f 90       	pop	r8
+     b76:	7f 90       	pop	r7
+     b78:	6f 90       	pop	r6
+     b7a:	08 95       	ret
+
+00000b7c <wl_token_ring_timeout_handler>:
+     b7c:	0f 93       	push	r16
+     b7e:	1f 93       	push	r17
+     b80:	80 91 2f 01 	lds	r24, 0x012F
+     b84:	90 91 30 01 	lds	r25, 0x0130
+     b88:	89 2b       	or	r24, r25
+     b8a:	29 f5       	brne	.+74     	; 0xbd6 <wl_token_ring_timeout_handler+0x5a>
+     b8c:	00 91 2d 01 	lds	r16, 0x012D
+     b90:	10 91 2e 01 	lds	r17, 0x012E
+     b94:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     b98:	08 17       	cp	r16, r24
+     b9a:	19 07       	cpc	r17, r25
+     b9c:	a1 f0       	breq	.+40     	; 0xbc6 <wl_token_ring_timeout_handler+0x4a>
+     b9e:	80 91 2d 01 	lds	r24, 0x012D
+     ba2:	90 91 2e 01 	lds	r25, 0x012E
+     ba6:	60 e0       	ldi	r22, 0x00	; 0
+     ba8:	70 e0       	ldi	r23, 0x00	; 0
+     baa:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     bae:	8f ef       	ldi	r24, 0xFF	; 255
+     bb0:	9f ef       	ldi	r25, 0xFF	; 255
+     bb2:	90 93 2e 01 	sts	0x012E, r25
+     bb6:	80 93 2d 01 	sts	0x012D, r24
+     bba:	84 e0       	ldi	r24, 0x04	; 4
+     bbc:	90 e0       	ldi	r25, 0x00	; 0
+     bbe:	90 93 30 01 	sts	0x0130, r25
+     bc2:	80 93 2f 01 	sts	0x012F, r24
+     bc6:	80 91 12 06 	lds	r24, 0x0612
+     bca:	90 91 13 06 	lds	r25, 0x0613
+     bce:	01 97       	sbiw	r24, 0x01	; 1
+     bd0:	11 f4       	brne	.+4      	; 0xbd6 <wl_token_ring_timeout_handler+0x5a>
+     bd2:	0e 94 18 03 	call	0x630	; 0x630 <wl_token_pass_token>
+     bd6:	80 91 31 01 	lds	r24, 0x0131
+     bda:	90 91 32 01 	lds	r25, 0x0132
+     bde:	89 2b       	or	r24, r25
+     be0:	59 f5       	brne	.+86     	; 0xc38 <wl_token_ring_timeout_handler+0xbc>
+     be2:	0e 94 ab 0a 	call	0x1556	; 0x1556 <sensor_matrix_get_joined>
+     be6:	89 2b       	or	r24, r25
+     be8:	c9 f4       	brne	.+50     	; 0xc1c <wl_token_ring_timeout_handler+0xa0>
+     bea:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     bee:	61 e0       	ldi	r22, 0x01	; 1
+     bf0:	70 e0       	ldi	r23, 0x00	; 0
+     bf2:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     bf6:	81 e0       	ldi	r24, 0x01	; 1
+     bf8:	90 e0       	ldi	r25, 0x00	; 0
+     bfa:	90 93 13 06 	sts	0x0613, r25
+     bfe:	80 93 12 06 	sts	0x0612, r24
+     c02:	84 e0       	ldi	r24, 0x04	; 4
+     c04:	90 e0       	ldi	r25, 0x00	; 0
+     c06:	90 93 30 01 	sts	0x0130, r25
+     c0a:	80 93 2f 01 	sts	0x012F, r24
+     c0e:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     c12:	90 93 2e 01 	sts	0x012E, r25
+     c16:	80 93 2d 01 	sts	0x012D, r24
+     c1a:	0e c0       	rjmp	.+28     	; 0xc38 <wl_token_ring_timeout_handler+0xbc>
+     c1c:	0e 94 f8 02 	call	0x5f0	; 0x5f0 <wl_token_ring_join>
+     c20:	0e 94 68 2f 	call	0x5ed0	; 0x5ed0 <rand>
+     c24:	6f ef       	ldi	r22, 0xFF	; 255
+     c26:	7f e0       	ldi	r23, 0x0F	; 15
+     c28:	0e 94 13 32 	call	0x6426	; 0x6426 <__divmodhi4>
+     c2c:	6f 5f       	subi	r22, 0xFF	; 255
+     c2e:	7f 4f       	sbci	r23, 0xFF	; 255
+     c30:	70 93 32 01 	sts	0x0132, r23
+     c34:	60 93 31 01 	sts	0x0131, r22
+     c38:	80 91 2f 01 	lds	r24, 0x012F
+     c3c:	90 91 30 01 	lds	r25, 0x0130
+     c40:	97 fd       	sbrc	r25, 7
+     c42:	05 c0       	rjmp	.+10     	; 0xc4e <wl_token_ring_timeout_handler+0xd2>
+     c44:	01 97       	sbiw	r24, 0x01	; 1
+     c46:	90 93 30 01 	sts	0x0130, r25
+     c4a:	80 93 2f 01 	sts	0x012F, r24
+     c4e:	80 91 31 01 	lds	r24, 0x0131
+     c52:	90 91 32 01 	lds	r25, 0x0132
+     c56:	97 fd       	sbrc	r25, 7
+     c58:	05 c0       	rjmp	.+10     	; 0xc64 <wl_token_ring_timeout_handler+0xe8>
+     c5a:	01 97       	sbiw	r24, 0x01	; 1
+     c5c:	90 93 32 01 	sts	0x0132, r25
+     c60:	80 93 31 01 	sts	0x0131, r24
+     c64:	80 91 10 06 	lds	r24, 0x0610
+     c68:	90 91 11 06 	lds	r25, 0x0611
+     c6c:	97 fd       	sbrc	r25, 7
+     c6e:	05 c0       	rjmp	.+10     	; 0xc7a <wl_token_ring_timeout_handler+0xfe>
+     c70:	01 96       	adiw	r24, 0x01	; 1
+     c72:	90 93 11 06 	sts	0x0611, r25
+     c76:	80 93 10 06 	sts	0x0610, r24
+     c7a:	1f 91       	pop	r17
+     c7c:	0f 91       	pop	r16
+     c7e:	08 95       	ret
+
+00000c80 <wl_token_ring_register>:
+     c80:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     c84:	8f 3f       	cpi	r24, 0xFF	; 255
+     c86:	91 05       	cpc	r25, r1
+     c88:	21 f0       	breq	.+8      	; 0xc92 <wl_token_ring_register+0x12>
+     c8a:	1c f0       	brlt	.+6      	; 0xc92 <wl_token_ring_register+0x12>
+     c8c:	2f ef       	ldi	r18, 0xFF	; 255
+     c8e:	3f ef       	ldi	r19, 0xFF	; 255
+     c90:	0e c0       	rjmp	.+28     	; 0xcae <wl_token_ring_register+0x2e>
+     c92:	0e 94 22 0a 	call	0x1444	; 0x1444 <sensor_matrix_create>
+     c96:	0e 94 e4 01 	call	0x3c8	; 0x3c8 <wl_get_xbee_id>
+     c9a:	60 e0       	ldi	r22, 0x00	; 0
+     c9c:	70 e0       	ldi	r23, 0x00	; 0
+     c9e:	0e 94 73 0a 	call	0x14e6	; 0x14e6 <sensor_matrix_set_in_ring>
+     ca2:	83 e2       	ldi	r24, 0x23	; 35
+     ca4:	91 e0       	ldi	r25, 0x01	; 1
+     ca6:	0e 94 83 00 	call	0x106	; 0x106 <wl_register_packet_group>
+     caa:	20 e0       	ldi	r18, 0x00	; 0
+     cac:	30 e0       	ldi	r19, 0x00	; 0
+     cae:	c9 01       	movw	r24, r18
+     cb0:	08 95       	ret
+
+00000cb2 <__vector_30>:
+     cb2:	1f 92       	push	r1
+     cb4:	0f 92       	push	r0
+     cb6:	0f b6       	in	r0, 0x3f	; 63
+     cb8:	0f 92       	push	r0
+     cba:	0b b6       	in	r0, 0x3b	; 59
+     cbc:	0f 92       	push	r0
+     cbe:	11 24       	eor	r1, r1
+     cc0:	2f 93       	push	r18
+     cc2:	3f 93       	push	r19
+     cc4:	8f 93       	push	r24
+     cc6:	9f 93       	push	r25
+     cc8:	ef 93       	push	r30
+     cca:	ff 93       	push	r31
+     ccc:	80 91 9c 00 	lds	r24, 0x009C
+     cd0:	e0 91 14 06 	lds	r30, 0x0614
+     cd4:	f0 91 15 06 	lds	r31, 0x0615
+     cd8:	e5 53       	subi	r30, 0x35	; 53
+     cda:	f9 4f       	sbci	r31, 0xF9	; 249
+     cdc:	80 83       	st	Z, r24
+     cde:	80 91 14 06 	lds	r24, 0x0614
+     ce2:	90 91 15 06 	lds	r25, 0x0615
+     ce6:	01 96       	adiw	r24, 0x01	; 1
+     ce8:	80 38       	cpi	r24, 0x80	; 128
+     cea:	91 05       	cpc	r25, r1
+     cec:	11 f4       	brne	.+4      	; 0xcf2 <__vector_30+0x40>
+     cee:	80 e0       	ldi	r24, 0x00	; 0
+     cf0:	90 e0       	ldi	r25, 0x00	; 0
+     cf2:	20 91 16 06 	lds	r18, 0x0616
+     cf6:	30 91 17 06 	lds	r19, 0x0617
+     cfa:	90 93 15 06 	sts	0x0615, r25
+     cfe:	80 93 14 06 	sts	0x0614, r24
+     d02:	ff 91       	pop	r31
+     d04:	ef 91       	pop	r30
+     d06:	9f 91       	pop	r25
+     d08:	8f 91       	pop	r24
+     d0a:	3f 91       	pop	r19
+     d0c:	2f 91       	pop	r18
+     d0e:	0f 90       	pop	r0
+     d10:	0b be       	out	0x3b, r0	; 59
+     d12:	0f 90       	pop	r0
+     d14:	0f be       	out	0x3f, r0	; 63
+     d16:	0f 90       	pop	r0
+     d18:	1f 90       	pop	r1
+     d1a:	18 95       	reti
+
+00000d1c <xbee_get_packet>:
+     d1c:	0f 93       	push	r16
+     d1e:	1f 93       	push	r17
+     d20:	cf 93       	push	r28
+     d22:	df 93       	push	r29
+     d24:	8c 01       	movw	r16, r24
+     d26:	80 91 1e 06 	lds	r24, 0x061E
+     d2a:	90 91 1f 06 	lds	r25, 0x061F
+     d2e:	89 2b       	or	r24, r25
+     d30:	d1 f5       	brne	.+116    	; 0xda6 <xbee_get_packet+0x8a>
+     d32:	80 91 16 06 	lds	r24, 0x0616
+     d36:	90 91 17 06 	lds	r25, 0x0617
+     d3a:	80 38       	cpi	r24, 0x80	; 128
+     d3c:	91 05       	cpc	r25, r1
+     d3e:	21 f4       	brne	.+8      	; 0xd48 <xbee_get_packet+0x2c>
+     d40:	10 92 17 06 	sts	0x0617, r1
+     d44:	10 92 16 06 	sts	0x0616, r1
+     d48:	20 91 16 06 	lds	r18, 0x0616
+     d4c:	30 91 17 06 	lds	r19, 0x0617
+     d50:	80 91 14 06 	lds	r24, 0x0614
+     d54:	90 91 15 06 	lds	r25, 0x0615
+     d58:	28 17       	cp	r18, r24
+     d5a:	39 07       	cpc	r19, r25
+     d5c:	09 f4       	brne	.+2      	; 0xd60 <xbee_get_packet+0x44>
+     d5e:	05 c1       	rjmp	.+522    	; 0xf6a <xbee_get_packet+0x24e>
+     d60:	80 91 16 06 	lds	r24, 0x0616
+     d64:	90 91 17 06 	lds	r25, 0x0617
+     d68:	fc 01       	movw	r30, r24
+     d6a:	e5 53       	subi	r30, 0x35	; 53
+     d6c:	f9 4f       	sbci	r31, 0xF9	; 249
+     d6e:	20 81       	ld	r18, Z
+     d70:	01 96       	adiw	r24, 0x01	; 1
+     d72:	90 93 17 06 	sts	0x0617, r25
+     d76:	80 93 16 06 	sts	0x0616, r24
+     d7a:	2e 37       	cpi	r18, 0x7E	; 126
+     d7c:	d1 f6       	brne	.-76     	; 0xd32 <xbee_get_packet+0x16>
+     d7e:	80 91 16 06 	lds	r24, 0x0616
+     d82:	90 91 17 06 	lds	r25, 0x0617
+     d86:	80 38       	cpi	r24, 0x80	; 128
+     d88:	91 05       	cpc	r25, r1
+     d8a:	21 f4       	brne	.+8      	; 0xd94 <xbee_get_packet+0x78>
+     d8c:	10 92 17 06 	sts	0x0617, r1
+     d90:	10 92 16 06 	sts	0x0616, r1
+     d94:	8e e7       	ldi	r24, 0x7E	; 126
+     d96:	80 93 20 06 	sts	0x0620, r24
+     d9a:	81 e0       	ldi	r24, 0x01	; 1
+     d9c:	90 e0       	ldi	r25, 0x00	; 0
+     d9e:	90 93 1f 06 	sts	0x061F, r25
+     da2:	80 93 1e 06 	sts	0x061E, r24
+     da6:	60 91 1e 06 	lds	r22, 0x061E
+     daa:	70 91 1f 06 	lds	r23, 0x061F
+     dae:	63 30       	cpi	r22, 0x03	; 3
+     db0:	71 05       	cpc	r23, r1
+     db2:	1c f4       	brge	.+6      	; 0xdba <xbee_get_packet+0x9e>
+     db4:	4f ef       	ldi	r20, 0xFF	; 255
+     db6:	5f ef       	ldi	r21, 0xFF	; 255
+     db8:	08 c0       	rjmp	.+16     	; 0xdca <xbee_get_packet+0xae>
+     dba:	90 91 21 06 	lds	r25, 0x0621
+     dbe:	80 e0       	ldi	r24, 0x00	; 0
+     dc0:	20 91 22 06 	lds	r18, 0x0622
+     dc4:	ac 01       	movw	r20, r24
+     dc6:	42 0f       	add	r20, r18
+     dc8:	51 1d       	adc	r21, r1
+     dca:	eb 01       	movw	r28, r22
+     dcc:	c0 5e       	subi	r28, 0xE0	; 224
+     dce:	d9 4f       	sbci	r29, 0xF9	; 249
+     dd0:	3f c0       	rjmp	.+126    	; 0xe50 <xbee_get_packet+0x134>
+     dd2:	63 30       	cpi	r22, 0x03	; 3
+     dd4:	71 05       	cpc	r23, r1
+     dd6:	81 f4       	brne	.+32     	; 0xdf8 <xbee_get_packet+0xdc>
+     dd8:	b0 91 21 06 	lds	r27, 0x0621
+     ddc:	a0 e0       	ldi	r26, 0x00	; 0
+     dde:	80 91 22 06 	lds	r24, 0x0622
+     de2:	ad 01       	movw	r20, r26
+     de4:	48 0f       	add	r20, r24
+     de6:	51 1d       	adc	r21, r1
+     de8:	49 37       	cpi	r20, 0x79	; 121
+     dea:	51 05       	cpc	r21, r1
+     dec:	2c f0       	brlt	.+10     	; 0xdf8 <xbee_get_packet+0xdc>
+     dee:	10 92 1f 06 	sts	0x061F, r1
+     df2:	10 92 1e 06 	sts	0x061E, r1
+     df6:	b9 c0       	rjmp	.+370    	; 0xf6a <xbee_get_packet+0x24e>
+     df8:	20 91 16 06 	lds	r18, 0x0616
+     dfc:	30 91 17 06 	lds	r19, 0x0617
+     e00:	80 91 14 06 	lds	r24, 0x0614
+     e04:	90 91 15 06 	lds	r25, 0x0615
+     e08:	28 17       	cp	r18, r24
+     e0a:	39 07       	cpc	r19, r25
+     e0c:	29 f4       	brne	.+10     	; 0xe18 <xbee_get_packet+0xfc>
+     e0e:	70 93 1f 06 	sts	0x061F, r23
+     e12:	60 93 1e 06 	sts	0x061E, r22
+     e16:	a9 c0       	rjmp	.+338    	; 0xf6a <xbee_get_packet+0x24e>
+     e18:	80 91 16 06 	lds	r24, 0x0616
+     e1c:	90 91 17 06 	lds	r25, 0x0617
+     e20:	fc 01       	movw	r30, r24
+     e22:	e5 53       	subi	r30, 0x35	; 53
+     e24:	f9 4f       	sbci	r31, 0xF9	; 249
+     e26:	20 81       	ld	r18, Z
+     e28:	28 83       	st	Y, r18
+     e2a:	6f 5f       	subi	r22, 0xFF	; 255
+     e2c:	7f 4f       	sbci	r23, 0xFF	; 255
+     e2e:	01 96       	adiw	r24, 0x01	; 1
+     e30:	90 93 17 06 	sts	0x0617, r25
+     e34:	80 93 16 06 	sts	0x0616, r24
+     e38:	80 91 16 06 	lds	r24, 0x0616
+     e3c:	90 91 17 06 	lds	r25, 0x0617
+     e40:	80 38       	cpi	r24, 0x80	; 128
+     e42:	91 05       	cpc	r25, r1
+     e44:	21 f4       	brne	.+8      	; 0xe4e <xbee_get_packet+0x132>
+     e46:	10 92 17 06 	sts	0x0617, r1
+     e4a:	10 92 16 06 	sts	0x0616, r1
+     e4e:	21 96       	adiw	r28, 0x01	; 1
+     e50:	8f ef       	ldi	r24, 0xFF	; 255
+     e52:	4f 3f       	cpi	r20, 0xFF	; 255
+     e54:	58 07       	cpc	r21, r24
+     e56:	09 f4       	brne	.+2      	; 0xe5a <xbee_get_packet+0x13e>
+     e58:	bc cf       	rjmp	.-136    	; 0xdd2 <xbee_get_packet+0xb6>
+     e5a:	ca 01       	movw	r24, r20
+     e5c:	03 96       	adiw	r24, 0x03	; 3
+     e5e:	86 17       	cp	r24, r22
+     e60:	97 07       	cpc	r25, r23
+     e62:	0c f0       	brlt	.+2      	; 0xe66 <xbee_get_packet+0x14a>
+     e64:	b6 cf       	rjmp	.-148    	; 0xdd2 <xbee_get_packet+0xb6>
+     e66:	10 92 1f 06 	sts	0x061F, r1
+     e6a:	10 92 1e 06 	sts	0x061E, r1
+     e6e:	ba 01       	movw	r22, r20
+     e70:	6c 5f       	subi	r22, 0xFC	; 252
+     e72:	7f 4f       	sbci	r23, 0xFF	; 255
+     e74:	23 e0       	ldi	r18, 0x03	; 3
+     e76:	30 e0       	ldi	r19, 0x00	; 0
+     e78:	90 e0       	ldi	r25, 0x00	; 0
+     e7a:	07 c0       	rjmp	.+14     	; 0xe8a <xbee_get_packet+0x16e>
+     e7c:	f9 01       	movw	r30, r18
+     e7e:	e0 5e       	subi	r30, 0xE0	; 224
+     e80:	f9 4f       	sbci	r31, 0xF9	; 249
+     e82:	80 81       	ld	r24, Z
+     e84:	98 0f       	add	r25, r24
+     e86:	2f 5f       	subi	r18, 0xFF	; 255
+     e88:	3f 4f       	sbci	r19, 0xFF	; 255
+     e8a:	26 17       	cp	r18, r22
+     e8c:	37 07       	cpc	r19, r23
+     e8e:	b4 f3       	brlt	.-20     	; 0xe7c <xbee_get_packet+0x160>
+     e90:	9f 3f       	cpi	r25, 0xFF	; 255
+     e92:	09 f0       	breq	.+2      	; 0xe96 <xbee_get_packet+0x17a>
+     e94:	6a c0       	rjmp	.+212    	; 0xf6a <xbee_get_packet+0x24e>
+     e96:	14 16       	cp	r1, r20
+     e98:	15 06       	cpc	r1, r21
+     e9a:	0c f0       	brlt	.+2      	; 0xe9e <xbee_get_packet+0x182>
+     e9c:	51 c0       	rjmp	.+162    	; 0xf40 <xbee_get_packet+0x224>
+     e9e:	80 91 23 06 	lds	r24, 0x0623
+     ea2:	88 38       	cpi	r24, 0x88	; 136
+     ea4:	21 f0       	breq	.+8      	; 0xeae <xbee_get_packet+0x192>
+     ea6:	8a 38       	cpi	r24, 0x8A	; 138
+     ea8:	09 f0       	breq	.+2      	; 0xeac <xbee_get_packet+0x190>
+     eaa:	4a c0       	rjmp	.+148    	; 0xf40 <xbee_get_packet+0x224>
+     eac:	61 c0       	rjmp	.+194    	; 0xf70 <xbee_get_packet+0x254>
+     eae:	80 91 25 06 	lds	r24, 0x0625
+     eb2:	90 91 26 06 	lds	r25, 0x0626
+     eb6:	89 34       	cpi	r24, 0x49	; 73
+     eb8:	61 f4       	brne	.+24     	; 0xed2 <xbee_get_packet+0x1b6>
+     eba:	94 34       	cpi	r25, 0x44	; 68
+     ebc:	09 f0       	breq	.+2      	; 0xec0 <xbee_get_packet+0x1a4>
+     ebe:	58 c0       	rjmp	.+176    	; 0xf70 <xbee_get_packet+0x254>
+     ec0:	80 91 65 01 	lds	r24, 0x0165
+     ec4:	90 91 66 01 	lds	r25, 0x0166
+     ec8:	90 93 64 01 	sts	0x0164, r25
+     ecc:	80 93 63 01 	sts	0x0163, r24
+     ed0:	4f c0       	rjmp	.+158    	; 0xf70 <xbee_get_packet+0x254>
+     ed2:	83 34       	cpi	r24, 0x43	; 67
+     ed4:	61 f4       	brne	.+24     	; 0xeee <xbee_get_packet+0x1d2>
+     ed6:	98 34       	cpi	r25, 0x48	; 72
+     ed8:	09 f0       	breq	.+2      	; 0xedc <xbee_get_packet+0x1c0>
+     eda:	4a c0       	rjmp	.+148    	; 0xf70 <xbee_get_packet+0x254>
+     edc:	80 91 1c 06 	lds	r24, 0x061C
+     ee0:	90 91 1d 06 	lds	r25, 0x061D
+     ee4:	90 93 1b 06 	sts	0x061B, r25
+     ee8:	80 93 1a 06 	sts	0x061A, r24
+     eec:	41 c0       	rjmp	.+130    	; 0xf70 <xbee_get_packet+0x254>
+     eee:	8d 34       	cpi	r24, 0x4D	; 77
+     ef0:	09 f0       	breq	.+2      	; 0xef4 <xbee_get_packet+0x1d8>
+     ef2:	3e c0       	rjmp	.+124    	; 0xf70 <xbee_get_packet+0x254>
+     ef4:	99 35       	cpi	r25, 0x59	; 89
+     ef6:	e1 f5       	brne	.+120    	; 0xf70 <xbee_get_packet+0x254>
+     ef8:	ba 01       	movw	r22, r20
+     efa:	65 50       	subi	r22, 0x05	; 5
+     efc:	70 40       	sbci	r23, 0x00	; 0
+     efe:	c1 f1       	breq	.+112    	; 0xf70 <xbee_get_packet+0x254>
+     f00:	10 92 19 06 	sts	0x0619, r1
+     f04:	10 92 18 06 	sts	0x0618, r1
+     f08:	e8 e2       	ldi	r30, 0x28	; 40
+     f0a:	f6 e0       	ldi	r31, 0x06	; 6
+     f0c:	40 e0       	ldi	r20, 0x00	; 0
+     f0e:	50 e0       	ldi	r21, 0x00	; 0
+     f10:	0f c0       	rjmp	.+30     	; 0xf30 <xbee_get_packet+0x214>
+     f12:	80 91 18 06 	lds	r24, 0x0618
+     f16:	90 91 19 06 	lds	r25, 0x0619
+     f1a:	21 91       	ld	r18, Z+
+     f1c:	98 2f       	mov	r25, r24
+     f1e:	88 27       	eor	r24, r24
+     f20:	82 0f       	add	r24, r18
+     f22:	91 1d       	adc	r25, r1
+     f24:	90 93 19 06 	sts	0x0619, r25
+     f28:	80 93 18 06 	sts	0x0618, r24
+     f2c:	4f 5f       	subi	r20, 0xFF	; 255
+     f2e:	5f 4f       	sbci	r21, 0xFF	; 255
+     f30:	46 17       	cp	r20, r22
+     f32:	57 07       	cpc	r21, r23
+     f34:	74 f3       	brlt	.-36     	; 0xf12 <xbee_get_packet+0x1f6>
+     f36:	80 91 18 06 	lds	r24, 0x0618
+     f3a:	90 91 19 06 	lds	r25, 0x0619
+     f3e:	18 c0       	rjmp	.+48     	; 0xf70 <xbee_get_packet+0x254>
+     f40:	01 15       	cp	r16, r1
+     f42:	11 05       	cpc	r17, r1
+     f44:	91 f0       	breq	.+36     	; 0xf6a <xbee_get_packet+0x24e>
+     f46:	d8 01       	movw	r26, r16
+     f48:	23 e0       	ldi	r18, 0x03	; 3
+     f4a:	30 e0       	ldi	r19, 0x00	; 0
+     f4c:	ba 01       	movw	r22, r20
+     f4e:	6e 5f       	subi	r22, 0xFE	; 254
+     f50:	7f 4f       	sbci	r23, 0xFF	; 255
+     f52:	07 c0       	rjmp	.+14     	; 0xf62 <xbee_get_packet+0x246>
+     f54:	f9 01       	movw	r30, r18
+     f56:	e0 5e       	subi	r30, 0xE0	; 224
+     f58:	f9 4f       	sbci	r31, 0xF9	; 249
+     f5a:	80 81       	ld	r24, Z
+     f5c:	8d 93       	st	X+, r24
+     f5e:	2f 5f       	subi	r18, 0xFF	; 255
+     f60:	3f 4f       	sbci	r19, 0xFF	; 255
+     f62:	62 17       	cp	r22, r18
+     f64:	73 07       	cpc	r23, r19
+     f66:	b4 f7       	brge	.-20     	; 0xf54 <xbee_get_packet+0x238>
+     f68:	05 c0       	rjmp	.+10     	; 0xf74 <xbee_get_packet+0x258>
+     f6a:	4f ef       	ldi	r20, 0xFF	; 255
+     f6c:	5f ef       	ldi	r21, 0xFF	; 255
+     f6e:	02 c0       	rjmp	.+4      	; 0xf74 <xbee_get_packet+0x258>
+     f70:	43 e0       	ldi	r20, 0x03	; 3
+     f72:	50 e0       	ldi	r21, 0x00	; 0
+     f74:	ca 01       	movw	r24, r20
+     f76:	df 91       	pop	r29
+     f78:	cf 91       	pop	r28
+     f7a:	1f 91       	pop	r17
+     f7c:	0f 91       	pop	r16
+     f7e:	08 95       	ret
+
+00000f80 <xbee_get_pan_id>:
+     f80:	80 91 63 01 	lds	r24, 0x0163
+     f84:	90 91 64 01 	lds	r25, 0x0164
+     f88:	08 95       	ret
+
+00000f8a <xbee_get_channel>:
+     f8a:	80 91 1a 06 	lds	r24, 0x061A
+     f8e:	90 91 1b 06 	lds	r25, 0x061B
+     f92:	08 95       	ret
+
+00000f94 <xbee_get_address>:
+     f94:	20 91 18 06 	lds	r18, 0x0618
+     f98:	30 91 19 06 	lds	r19, 0x0619
+     f9c:	c9 01       	movw	r24, r18
+     f9e:	08 95       	ret
+
+00000fa0 <xbee_send_modify_at_command>:
+     fa0:	cf 92       	push	r12
+     fa2:	df 92       	push	r13
+     fa4:	ef 92       	push	r14
+     fa6:	ff 92       	push	r15
+     fa8:	0f 93       	push	r16
+     faa:	1f 93       	push	r17
+     fac:	df 93       	push	r29
+     fae:	cf 93       	push	r28
+     fb0:	cd b7       	in	r28, 0x3d	; 61
+     fb2:	de b7       	in	r29, 0x3e	; 62
+     fb4:	64 97       	sbiw	r28, 0x14	; 20
+     fb6:	0f b6       	in	r0, 0x3f	; 63
+     fb8:	f8 94       	cli
+     fba:	de bf       	out	0x3e, r29	; 62
+     fbc:	0f be       	out	0x3f, r0	; 63
+     fbe:	cd bf       	out	0x3d, r28	; 61
+     fc0:	fc 01       	movw	r30, r24
+     fc2:	88 e0       	ldi	r24, 0x08	; 8
+     fc4:	8d 83       	std	Y+5, r24	; 0x05
+     fc6:	81 e0       	ldi	r24, 0x01	; 1
+     fc8:	8e 83       	std	Y+6, r24	; 0x06
+     fca:	80 81       	ld	r24, Z
+     fcc:	8f 83       	std	Y+7, r24	; 0x07
+     fce:	81 81       	ldd	r24, Z+1	; 0x01
+     fd0:	88 87       	std	Y+8, r24	; 0x08
+     fd2:	61 15       	cp	r22, r1
+     fd4:	71 05       	cpc	r23, r1
+     fd6:	19 f4       	brne	.+6      	; 0xfde <xbee_send_modify_at_command+0x3e>
+     fd8:	a0 e0       	ldi	r26, 0x00	; 0
+     fda:	b0 e0       	ldi	r27, 0x00	; 0
+     fdc:	1f c0       	rjmp	.+62     	; 0x101c <xbee_send_modify_at_command+0x7c>
+     fde:	db 01       	movw	r26, r22
+     fe0:	0d 90       	ld	r0, X+
+     fe2:	00 20       	and	r0, r0
+     fe4:	e9 f7       	brne	.-6      	; 0xfe0 <xbee_send_modify_at_command+0x40>
+     fe6:	11 97       	sbiw	r26, 0x01	; 1
+     fe8:	a6 1b       	sub	r26, r22
+     fea:	b7 0b       	sbc	r27, r23
+     fec:	a9 30       	cpi	r26, 0x09	; 9
+     fee:	b1 05       	cpc	r27, r1
+     ff0:	1c f0       	brlt	.+6      	; 0xff8 <xbee_send_modify_at_command+0x58>
+     ff2:	2f ef       	ldi	r18, 0xFF	; 255
+     ff4:	3f ef       	ldi	r19, 0xFF	; 255
+     ff6:	4e c0       	rjmp	.+156    	; 0x1094 <xbee_send_modify_at_command+0xf4>
+     ff8:	ae 01       	movw	r20, r28
+     ffa:	47 5f       	subi	r20, 0xF7	; 247
+     ffc:	5f 4f       	sbci	r21, 0xFF	; 255
+     ffe:	20 e0       	ldi	r18, 0x00	; 0
+    1000:	30 e0       	ldi	r19, 0x00	; 0
+    1002:	09 c0       	rjmp	.+18     	; 0x1016 <xbee_send_modify_at_command+0x76>
+    1004:	fb 01       	movw	r30, r22
+    1006:	e2 0f       	add	r30, r18
+    1008:	f3 1f       	adc	r31, r19
+    100a:	80 81       	ld	r24, Z
+    100c:	fa 01       	movw	r30, r20
+    100e:	81 93       	st	Z+, r24
+    1010:	af 01       	movw	r20, r30
+    1012:	2f 5f       	subi	r18, 0xFF	; 255
+    1014:	3f 4f       	sbci	r19, 0xFF	; 255
+    1016:	2a 17       	cp	r18, r26
+    1018:	3b 07       	cpc	r19, r27
+    101a:	a4 f3       	brlt	.-24     	; 0x1004 <xbee_send_modify_at_command+0x64>
+    101c:	54 e0       	ldi	r21, 0x04	; 4
+    101e:	e5 2e       	mov	r14, r21
+    1020:	f1 2c       	mov	r15, r1
+    1022:	ea 0e       	add	r14, r26
+    1024:	fb 1e       	adc	r15, r27
+    1026:	20 e0       	ldi	r18, 0x00	; 0
+    1028:	30 e0       	ldi	r19, 0x00	; 0
+    102a:	90 e0       	ldi	r25, 0x00	; 0
+    102c:	ae 01       	movw	r20, r28
+    102e:	4b 5f       	subi	r20, 0xFB	; 251
+    1030:	5f 4f       	sbci	r21, 0xFF	; 255
+    1032:	07 c0       	rjmp	.+14     	; 0x1042 <xbee_send_modify_at_command+0xa2>
+    1034:	fa 01       	movw	r30, r20
+    1036:	e2 0f       	add	r30, r18
+    1038:	f3 1f       	adc	r31, r19
+    103a:	80 81       	ld	r24, Z
+    103c:	98 0f       	add	r25, r24
+    103e:	2f 5f       	subi	r18, 0xFF	; 255
+    1040:	3f 4f       	sbci	r19, 0xFF	; 255
+    1042:	2e 15       	cp	r18, r14
+    1044:	3f 05       	cpc	r19, r15
+    1046:	b4 f3       	brlt	.-20     	; 0x1034 <xbee_send_modify_at_command+0x94>
+    1048:	8e e7       	ldi	r24, 0x7E	; 126
+    104a:	8a 83       	std	Y+2, r24	; 0x02
+    104c:	fb 82       	std	Y+3, r15	; 0x03
+    104e:	ec 82       	std	Y+4, r14	; 0x04
+    1050:	90 95       	com	r25
+    1052:	99 83       	std	Y+1, r25	; 0x01
+    1054:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    1058:	8b 81       	ldd	r24, Y+3	; 0x03
+    105a:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    105e:	8c 81       	ldd	r24, Y+4	; 0x04
+    1060:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    1064:	00 e0       	ldi	r16, 0x00	; 0
+    1066:	10 e0       	ldi	r17, 0x00	; 0
+    1068:	45 e0       	ldi	r20, 0x05	; 5
+    106a:	c4 2e       	mov	r12, r20
+    106c:	d1 2c       	mov	r13, r1
+    106e:	cc 0e       	add	r12, r28
+    1070:	dd 1e       	adc	r13, r29
+    1072:	08 c0       	rjmp	.+16     	; 0x1084 <xbee_send_modify_at_command+0xe4>
+    1074:	f6 01       	movw	r30, r12
+    1076:	e0 0f       	add	r30, r16
+    1078:	f1 1f       	adc	r31, r17
+    107a:	80 81       	ld	r24, Z
+    107c:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    1080:	0f 5f       	subi	r16, 0xFF	; 255
+    1082:	1f 4f       	sbci	r17, 0xFF	; 255
+    1084:	0e 15       	cp	r16, r14
+    1086:	1f 05       	cpc	r17, r15
+    1088:	ac f3       	brlt	.-22     	; 0x1074 <xbee_send_modify_at_command+0xd4>
+    108a:	89 81       	ldd	r24, Y+1	; 0x01
+    108c:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    1090:	20 e0       	ldi	r18, 0x00	; 0
+    1092:	30 e0       	ldi	r19, 0x00	; 0
+    1094:	c9 01       	movw	r24, r18
+    1096:	64 96       	adiw	r28, 0x14	; 20
+    1098:	0f b6       	in	r0, 0x3f	; 63
+    109a:	f8 94       	cli
+    109c:	de bf       	out	0x3e, r29	; 62
+    109e:	0f be       	out	0x3f, r0	; 63
+    10a0:	cd bf       	out	0x3d, r28	; 61
+    10a2:	cf 91       	pop	r28
+    10a4:	df 91       	pop	r29
+    10a6:	1f 91       	pop	r17
+    10a8:	0f 91       	pop	r16
+    10aa:	ff 90       	pop	r15
+    10ac:	ef 90       	pop	r14
+    10ae:	df 90       	pop	r13
+    10b0:	cf 90       	pop	r12
+    10b2:	08 95       	ret
+
+000010b4 <xbee_set_channel>:
+    10b4:	df 93       	push	r29
+    10b6:	cf 93       	push	r28
+    10b8:	00 d0       	rcall	.+0      	; 0x10ba <xbee_set_channel+0x6>
+    10ba:	0f 92       	push	r0
+    10bc:	cd b7       	in	r28, 0x3d	; 61
+    10be:	de b7       	in	r29, 0x3e	; 62
+    10c0:	9c 01       	movw	r18, r24
+    10c2:	0b 97       	sbiw	r24, 0x0b	; 11
+    10c4:	40 97       	sbiw	r24, 0x10	; 16
+    10c6:	18 f0       	brcs	.+6      	; 0x10ce <xbee_set_channel+0x1a>
+    10c8:	2f ef       	ldi	r18, 0xFF	; 255
+    10ca:	3f ef       	ldi	r19, 0xFF	; 255
+    10cc:	0e c0       	rjmp	.+28     	; 0x10ea <xbee_set_channel+0x36>
+    10ce:	29 83       	std	Y+1, r18	; 0x01
+    10d0:	1a 82       	std	Y+2, r1	; 0x02
+    10d2:	30 93 1d 06 	sts	0x061D, r19
+    10d6:	20 93 1c 06 	sts	0x061C, r18
+    10da:	87 e3       	ldi	r24, 0x37	; 55
+    10dc:	91 e0       	ldi	r25, 0x01	; 1
+    10de:	be 01       	movw	r22, r28
+    10e0:	6f 5f       	subi	r22, 0xFF	; 255
+    10e2:	7f 4f       	sbci	r23, 0xFF	; 255
+    10e4:	0e 94 d0 07 	call	0xfa0	; 0xfa0 <xbee_send_modify_at_command>
+    10e8:	9c 01       	movw	r18, r24
+    10ea:	c9 01       	movw	r24, r18
+    10ec:	0f 90       	pop	r0
+    10ee:	0f 90       	pop	r0
+    10f0:	0f 90       	pop	r0
+    10f2:	cf 91       	pop	r28
+    10f4:	df 91       	pop	r29
+    10f6:	08 95       	ret
+
+000010f8 <xbee_set_pan_id>:
+    10f8:	df 93       	push	r29
+    10fa:	cf 93       	push	r28
+    10fc:	00 d0       	rcall	.+0      	; 0x10fe <xbee_set_pan_id+0x6>
+    10fe:	0f 92       	push	r0
+    1100:	cd b7       	in	r28, 0x3d	; 61
+    1102:	de b7       	in	r29, 0x3e	; 62
+    1104:	99 83       	std	Y+1, r25	; 0x01
+    1106:	8a 83       	std	Y+2, r24	; 0x02
+    1108:	1b 82       	std	Y+3, r1	; 0x03
+    110a:	80 93 65 01 	sts	0x0165, r24
+    110e:	90 93 66 01 	sts	0x0166, r25
+    1112:	8a e3       	ldi	r24, 0x3A	; 58
+    1114:	91 e0       	ldi	r25, 0x01	; 1
+    1116:	be 01       	movw	r22, r28
+    1118:	6f 5f       	subi	r22, 0xFF	; 255
+    111a:	7f 4f       	sbci	r23, 0xFF	; 255
+    111c:	0e 94 d0 07 	call	0xfa0	; 0xfa0 <xbee_send_modify_at_command>
+    1120:	0f 90       	pop	r0
+    1122:	0f 90       	pop	r0
+    1124:	0f 90       	pop	r0
+    1126:	cf 91       	pop	r28
+    1128:	df 91       	pop	r29
+    112a:	08 95       	ret
+
+0000112c <xbee_reset>:
+    112c:	8d e3       	ldi	r24, 0x3D	; 61
+    112e:	91 e0       	ldi	r25, 0x01	; 1
+    1130:	60 e4       	ldi	r22, 0x40	; 64
+    1132:	71 e0       	ldi	r23, 0x01	; 1
+    1134:	0e 94 d0 07 	call	0xfa0	; 0xfa0 <xbee_send_modify_at_command>
+    1138:	82 e4       	ldi	r24, 0x42	; 66
+    113a:	91 e0       	ldi	r25, 0x01	; 1
+    113c:	60 e0       	ldi	r22, 0x00	; 0
+    113e:	70 e0       	ldi	r23, 0x00	; 0
+    1140:	0e 94 d0 07 	call	0xfa0	; 0xfa0 <xbee_send_modify_at_command>
+    1144:	8c ed       	ldi	r24, 0xDC	; 220
+    1146:	95 e0       	ldi	r25, 0x05	; 5
+    1148:	20 e9       	ldi	r18, 0x90	; 144
+    114a:	31 e0       	ldi	r19, 0x01	; 1
+    114c:	f9 01       	movw	r30, r18
+    114e:	31 97       	sbiw	r30, 0x01	; 1
+    1150:	f1 f7       	brne	.-4      	; 0x114e <xbee_reset+0x22>
+    1152:	01 97       	sbiw	r24, 0x01	; 1
+    1154:	d9 f7       	brne	.-10     	; 0x114c <xbee_reset+0x20>
+    1156:	80 e0       	ldi	r24, 0x00	; 0
+    1158:	90 e0       	ldi	r25, 0x00	; 0
+    115a:	08 95       	ret
+
+0000115c <xbee_terminate>:
+    115c:	85 e4       	ldi	r24, 0x45	; 69
+    115e:	91 e0       	ldi	r25, 0x01	; 1
+    1160:	68 e4       	ldi	r22, 0x48	; 72
+    1162:	71 e0       	ldi	r23, 0x01	; 1
+    1164:	0e 94 d0 07 	call	0xfa0	; 0xfa0 <xbee_send_modify_at_command>
+    1168:	08 95       	ret
+
+0000116a <xbee_send_packet>:
+    116a:	af 92       	push	r10
+    116c:	bf 92       	push	r11
+    116e:	cf 92       	push	r12
+    1170:	df 92       	push	r13
+    1172:	ef 92       	push	r14
+    1174:	ff 92       	push	r15
+    1176:	0f 93       	push	r16
+    1178:	1f 93       	push	r17
+    117a:	df 93       	push	r29
+    117c:	cf 93       	push	r28
+    117e:	cd b7       	in	r28, 0x3d	; 61
+    1180:	de b7       	in	r29, 0x3e	; 62
+    1182:	29 97       	sbiw	r28, 0x09	; 9
+    1184:	0f b6       	in	r0, 0x3f	; 63
+    1186:	f8 94       	cli
+    1188:	de bf       	out	0x3e, r29	; 62
+    118a:	0f be       	out	0x3f, r0	; 63
+    118c:	cd bf       	out	0x3d, r28	; 61
+    118e:	5c 01       	movw	r10, r24
+    1190:	7b 01       	movw	r14, r22
+    1192:	65 36       	cpi	r22, 0x65	; 101
+    1194:	71 05       	cpc	r23, r1
+    1196:	1c f0       	brlt	.+6      	; 0x119e <xbee_send_packet+0x34>
+    1198:	2f ef       	ldi	r18, 0xFF	; 255
+    119a:	3f ef       	ldi	r19, 0xFF	; 255
+    119c:	56 c0       	rjmp	.+172    	; 0x124a <xbee_send_packet+0xe0>
+    119e:	81 e0       	ldi	r24, 0x01	; 1
+    11a0:	8d 83       	std	Y+5, r24	; 0x05
+    11a2:	0e 83       	std	Y+6, r16	; 0x06
+    11a4:	5f 83       	std	Y+7, r21	; 0x07
+    11a6:	48 87       	std	Y+8, r20	; 0x08
+    11a8:	29 87       	std	Y+9, r18	; 0x09
+    11aa:	8e e7       	ldi	r24, 0x7E	; 126
+    11ac:	8a 83       	std	Y+2, r24	; 0x02
+    11ae:	e5 e0       	ldi	r30, 0x05	; 5
+    11b0:	f0 e0       	ldi	r31, 0x00	; 0
+    11b2:	ee 0e       	add	r14, r30
+    11b4:	ff 1e       	adc	r15, r31
+    11b6:	fb 82       	std	Y+3, r15	; 0x03
+    11b8:	8b ef       	ldi	r24, 0xFB	; 251
+    11ba:	9f ef       	ldi	r25, 0xFF	; 255
+    11bc:	e8 0e       	add	r14, r24
+    11be:	f9 1e       	adc	r15, r25
+    11c0:	8e 2d       	mov	r24, r14
+    11c2:	8b 5f       	subi	r24, 0xFB	; 251
+    11c4:	8c 83       	std	Y+4, r24	; 0x04
+    11c6:	0f 5f       	subi	r16, 0xFF	; 255
+    11c8:	05 0f       	add	r16, r21
+    11ca:	04 0f       	add	r16, r20
+    11cc:	02 0f       	add	r16, r18
+    11ce:	09 83       	std	Y+1, r16	; 0x01
+    11d0:	20 e0       	ldi	r18, 0x00	; 0
+    11d2:	30 e0       	ldi	r19, 0x00	; 0
+    11d4:	08 c0       	rjmp	.+16     	; 0x11e6 <xbee_send_packet+0x7c>
+    11d6:	f5 01       	movw	r30, r10
+    11d8:	e2 0f       	add	r30, r18
+    11da:	f3 1f       	adc	r31, r19
+    11dc:	80 81       	ld	r24, Z
+    11de:	98 0f       	add	r25, r24
+    11e0:	99 83       	std	Y+1, r25	; 0x01
+    11e2:	2f 5f       	subi	r18, 0xFF	; 255
+    11e4:	3f 4f       	sbci	r19, 0xFF	; 255
+    11e6:	99 81       	ldd	r25, Y+1	; 0x01
+    11e8:	2e 15       	cp	r18, r14
+    11ea:	3f 05       	cpc	r19, r15
+    11ec:	a4 f3       	brlt	.-24     	; 0x11d6 <xbee_send_packet+0x6c>
+    11ee:	90 95       	com	r25
+    11f0:	99 83       	std	Y+1, r25	; 0x01
+    11f2:	8e e7       	ldi	r24, 0x7E	; 126
+    11f4:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    11f8:	8b 81       	ldd	r24, Y+3	; 0x03
+    11fa:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    11fe:	8c 81       	ldd	r24, Y+4	; 0x04
+    1200:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    1204:	8e 01       	movw	r16, r28
+    1206:	0b 5f       	subi	r16, 0xFB	; 251
+    1208:	1f 4f       	sbci	r17, 0xFF	; 255
+    120a:	6a e0       	ldi	r22, 0x0A	; 10
+    120c:	c6 2e       	mov	r12, r22
+    120e:	d1 2c       	mov	r13, r1
+    1210:	cc 0e       	add	r12, r28
+    1212:	dd 1e       	adc	r13, r29
+    1214:	f8 01       	movw	r30, r16
+    1216:	81 91       	ld	r24, Z+
+    1218:	8f 01       	movw	r16, r30
+    121a:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    121e:	0c 15       	cp	r16, r12
+    1220:	1d 05       	cpc	r17, r13
+    1222:	c1 f7       	brne	.-16     	; 0x1214 <xbee_send_packet+0xaa>
+    1224:	00 e0       	ldi	r16, 0x00	; 0
+    1226:	10 e0       	ldi	r17, 0x00	; 0
+    1228:	08 c0       	rjmp	.+16     	; 0x123a <xbee_send_packet+0xd0>
+    122a:	f5 01       	movw	r30, r10
+    122c:	e0 0f       	add	r30, r16
+    122e:	f1 1f       	adc	r31, r17
+    1230:	80 81       	ld	r24, Z
+    1232:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    1236:	0f 5f       	subi	r16, 0xFF	; 255
+    1238:	1f 4f       	sbci	r17, 0xFF	; 255
+    123a:	0e 15       	cp	r16, r14
+    123c:	1f 05       	cpc	r17, r15
+    123e:	ac f3       	brlt	.-22     	; 0x122a <xbee_send_packet+0xc0>
+    1240:	89 81       	ldd	r24, Y+1	; 0x01
+    1242:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    1246:	20 e0       	ldi	r18, 0x00	; 0
+    1248:	30 e0       	ldi	r19, 0x00	; 0
+    124a:	c9 01       	movw	r24, r18
+    124c:	29 96       	adiw	r28, 0x09	; 9
+    124e:	0f b6       	in	r0, 0x3f	; 63
+    1250:	f8 94       	cli
+    1252:	de bf       	out	0x3e, r29	; 62
+    1254:	0f be       	out	0x3f, r0	; 63
+    1256:	cd bf       	out	0x3d, r28	; 61
+    1258:	cf 91       	pop	r28
+    125a:	df 91       	pop	r29
+    125c:	1f 91       	pop	r17
+    125e:	0f 91       	pop	r16
+    1260:	ff 90       	pop	r15
+    1262:	ef 90       	pop	r14
+    1264:	df 90       	pop	r13
+    1266:	cf 90       	pop	r12
+    1268:	bf 90       	pop	r11
+    126a:	af 90       	pop	r10
+    126c:	08 95       	ret
+
+0000126e <xbee_send_string>:
+    126e:	ef 92       	push	r14
+    1270:	ff 92       	push	r15
+    1272:	0f 93       	push	r16
+    1274:	1f 93       	push	r17
+    1276:	cf 93       	push	r28
+    1278:	df 93       	push	r29
+    127a:	7c 01       	movw	r14, r24
+    127c:	dc 01       	movw	r26, r24
+    127e:	0d 90       	ld	r0, X+
+    1280:	00 20       	and	r0, r0
+    1282:	e9 f7       	brne	.-6      	; 0x127e <xbee_send_string+0x10>
+    1284:	8d 01       	movw	r16, r26
+    1286:	01 50       	subi	r16, 0x01	; 1
+    1288:	10 40       	sbci	r17, 0x00	; 0
+    128a:	08 1b       	sub	r16, r24
+    128c:	19 0b       	sbc	r17, r25
+    128e:	c0 e0       	ldi	r28, 0x00	; 0
+    1290:	d0 e0       	ldi	r29, 0x00	; 0
+    1292:	07 c0       	rjmp	.+14     	; 0x12a2 <xbee_send_string+0x34>
+    1294:	f7 01       	movw	r30, r14
+    1296:	ec 0f       	add	r30, r28
+    1298:	fd 1f       	adc	r31, r29
+    129a:	80 81       	ld	r24, Z
+    129c:	0e 94 85 1a 	call	0x350a	; 0x350a <xbee_putc>
+    12a0:	21 96       	adiw	r28, 0x01	; 1
+    12a2:	c0 17       	cp	r28, r16
+    12a4:	d1 07       	cpc	r29, r17
+    12a6:	b4 f3       	brlt	.-20     	; 0x1294 <xbee_send_string+0x26>
+    12a8:	80 e0       	ldi	r24, 0x00	; 0
+    12aa:	90 e0       	ldi	r25, 0x00	; 0
+    12ac:	df 91       	pop	r29
+    12ae:	cf 91       	pop	r28
+    12b0:	1f 91       	pop	r17
+    12b2:	0f 91       	pop	r16
+    12b4:	ff 90       	pop	r15
+    12b6:	ef 90       	pop	r14
+    12b8:	08 95       	ret
+
+000012ba <xbee_lib_init>:
+    12ba:	80 91 9a 00 	lds	r24, 0x009A
+    12be:	80 68       	ori	r24, 0x80	; 128
+    12c0:	80 93 9a 00 	sts	0x009A, r24
+    12c4:	78 94       	sei
+    12c6:	8a e4       	ldi	r24, 0x4A	; 74
+    12c8:	91 e0       	ldi	r25, 0x01	; 1
+    12ca:	0e 94 37 09 	call	0x126e	; 0x126e <xbee_send_string>
+    12ce:	89 2b       	or	r24, r25
+    12d0:	09 f0       	breq	.+2      	; 0x12d4 <xbee_lib_init+0x1a>
+    12d2:	99 c0       	rjmp	.+306    	; 0x1406 <xbee_lib_init+0x14c>
+    12d4:	26 c0       	rjmp	.+76     	; 0x1322 <xbee_lib_init+0x68>
+    12d6:	20 91 14 06 	lds	r18, 0x0614
+    12da:	30 91 15 06 	lds	r19, 0x0615
+    12de:	80 91 16 06 	lds	r24, 0x0616
+    12e2:	90 91 17 06 	lds	r25, 0x0617
+    12e6:	28 17       	cp	r18, r24
+    12e8:	39 07       	cpc	r19, r25
+    12ea:	f9 f0       	breq	.+62     	; 0x132a <xbee_lib_init+0x70>
+    12ec:	80 91 16 06 	lds	r24, 0x0616
+    12f0:	90 91 17 06 	lds	r25, 0x0617
+    12f4:	fc 01       	movw	r30, r24
+    12f6:	e5 53       	subi	r30, 0x35	; 53
+    12f8:	f9 4f       	sbci	r31, 0xF9	; 249
+    12fa:	e0 81       	ld	r30, Z
+    12fc:	01 96       	adiw	r24, 0x01	; 1
+    12fe:	90 93 17 06 	sts	0x0617, r25
+    1302:	80 93 16 06 	sts	0x0616, r24
+    1306:	80 91 16 06 	lds	r24, 0x0616
+    130a:	90 91 17 06 	lds	r25, 0x0617
+    130e:	80 38       	cpi	r24, 0x80	; 128
+    1310:	91 05       	cpc	r25, r1
+    1312:	21 f4       	brne	.+8      	; 0x131c <xbee_lib_init+0x62>
+    1314:	10 92 17 06 	sts	0x0617, r1
+    1318:	10 92 16 06 	sts	0x0616, r1
+    131c:	8c 91       	ld	r24, X
+    131e:	e8 17       	cp	r30, r24
+    1320:	19 f0       	breq	.+6      	; 0x1328 <xbee_lib_init+0x6e>
+    1322:	ae e4       	ldi	r26, 0x4E	; 78
+    1324:	b1 e0       	ldi	r27, 0x01	; 1
+    1326:	01 c0       	rjmp	.+2      	; 0x132a <xbee_lib_init+0x70>
+    1328:	11 96       	adiw	r26, 0x01	; 1
+    132a:	cd 01       	movw	r24, r26
+    132c:	8e 54       	subi	r24, 0x4E	; 78
+    132e:	91 40       	sbci	r25, 0x01	; 1
+    1330:	03 97       	sbiw	r24, 0x03	; 3
+    1332:	8c f2       	brlt	.-94     	; 0x12d6 <xbee_lib_init+0x1c>
+    1334:	6c c0       	rjmp	.+216    	; 0x140e <xbee_lib_init+0x154>
+    1336:	20 91 14 06 	lds	r18, 0x0614
+    133a:	30 91 15 06 	lds	r19, 0x0615
+    133e:	80 91 16 06 	lds	r24, 0x0616
+    1342:	90 91 17 06 	lds	r25, 0x0617
+    1346:	28 17       	cp	r18, r24
+    1348:	39 07       	cpc	r19, r25
+    134a:	e9 f0       	breq	.+58     	; 0x1386 <xbee_lib_init+0xcc>
+    134c:	80 91 16 06 	lds	r24, 0x0616
+    1350:	90 91 17 06 	lds	r25, 0x0617
+    1354:	fc 01       	movw	r30, r24
+    1356:	e5 53       	subi	r30, 0x35	; 53
+    1358:	f9 4f       	sbci	r31, 0xF9	; 249
+    135a:	e0 81       	ld	r30, Z
+    135c:	01 96       	adiw	r24, 0x01	; 1
+    135e:	90 93 17 06 	sts	0x0617, r25
+    1362:	80 93 16 06 	sts	0x0616, r24
+    1366:	80 91 16 06 	lds	r24, 0x0616
+    136a:	90 91 17 06 	lds	r25, 0x0617
+    136e:	80 38       	cpi	r24, 0x80	; 128
+    1370:	91 05       	cpc	r25, r1
+    1372:	21 f4       	brne	.+8      	; 0x137c <xbee_lib_init+0xc2>
+    1374:	10 92 17 06 	sts	0x0617, r1
+    1378:	10 92 16 06 	sts	0x0616, r1
+    137c:	8c 91       	ld	r24, X
+    137e:	e8 17       	cp	r30, r24
+    1380:	09 f0       	breq	.+2      	; 0x1384 <xbee_lib_init+0xca>
+    1382:	4b c0       	rjmp	.+150    	; 0x141a <xbee_lib_init+0x160>
+    1384:	11 96       	adiw	r26, 0x01	; 1
+    1386:	cd 01       	movw	r24, r26
+    1388:	8e 54       	subi	r24, 0x4E	; 78
+    138a:	91 40       	sbci	r25, 0x01	; 1
+    138c:	03 97       	sbiw	r24, 0x03	; 3
+    138e:	9c f2       	brlt	.-90     	; 0x1336 <xbee_lib_init+0x7c>
+    1390:	47 c0       	rjmp	.+142    	; 0x1420 <xbee_lib_init+0x166>
+    1392:	20 91 14 06 	lds	r18, 0x0614
+    1396:	30 91 15 06 	lds	r19, 0x0615
+    139a:	80 91 16 06 	lds	r24, 0x0616
+    139e:	90 91 17 06 	lds	r25, 0x0617
+    13a2:	28 17       	cp	r18, r24
+    13a4:	39 07       	cpc	r19, r25
+    13a6:	e1 f0       	breq	.+56     	; 0x13e0 <xbee_lib_init+0x126>
+    13a8:	80 91 16 06 	lds	r24, 0x0616
+    13ac:	90 91 17 06 	lds	r25, 0x0617
+    13b0:	fc 01       	movw	r30, r24
+    13b2:	e5 53       	subi	r30, 0x35	; 53
+    13b4:	f9 4f       	sbci	r31, 0xF9	; 249
+    13b6:	e0 81       	ld	r30, Z
+    13b8:	01 96       	adiw	r24, 0x01	; 1
+    13ba:	90 93 17 06 	sts	0x0617, r25
+    13be:	80 93 16 06 	sts	0x0616, r24
+    13c2:	80 91 16 06 	lds	r24, 0x0616
+    13c6:	90 91 17 06 	lds	r25, 0x0617
+    13ca:	80 38       	cpi	r24, 0x80	; 128
+    13cc:	91 05       	cpc	r25, r1
+    13ce:	21 f4       	brne	.+8      	; 0x13d8 <xbee_lib_init+0x11e>
+    13d0:	10 92 17 06 	sts	0x0617, r1
+    13d4:	10 92 16 06 	sts	0x0616, r1
+    13d8:	8c 91       	ld	r24, X
+    13da:	e8 17       	cp	r30, r24
+    13dc:	39 f5       	brne	.+78     	; 0x142c <xbee_lib_init+0x172>
+    13de:	11 96       	adiw	r26, 0x01	; 1
+    13e0:	cd 01       	movw	r24, r26
+    13e2:	8e 54       	subi	r24, 0x4E	; 78
+    13e4:	91 40       	sbci	r25, 0x01	; 1
+    13e6:	03 97       	sbiw	r24, 0x03	; 3
+    13e8:	a4 f2       	brlt	.-88     	; 0x1392 <xbee_lib_init+0xd8>
+    13ea:	23 c0       	rjmp	.+70     	; 0x1432 <xbee_lib_init+0x178>
+    13ec:	80 e0       	ldi	r24, 0x00	; 0
+    13ee:	90 e0       	ldi	r25, 0x00	; 0
+    13f0:	0e 94 8e 06 	call	0xd1c	; 0xd1c <xbee_get_packet>
+    13f4:	80 91 18 06 	lds	r24, 0x0618
+    13f8:	90 91 19 06 	lds	r25, 0x0619
+    13fc:	89 2b       	or	r24, r25
+    13fe:	b1 f3       	breq	.-20     	; 0x13ec <xbee_lib_init+0x132>
+    1400:	20 e0       	ldi	r18, 0x00	; 0
+    1402:	30 e0       	ldi	r19, 0x00	; 0
+    1404:	02 c0       	rjmp	.+4      	; 0x140a <xbee_lib_init+0x150>
+    1406:	2f ef       	ldi	r18, 0xFF	; 255
+    1408:	3f ef       	ldi	r19, 0xFF	; 255
+    140a:	c9 01       	movw	r24, r18
+    140c:	08 95       	ret
+    140e:	82 e5       	ldi	r24, 0x52	; 82
+    1410:	91 e0       	ldi	r25, 0x01	; 1
+    1412:	0e 94 37 09 	call	0x126e	; 0x126e <xbee_send_string>
+    1416:	89 2b       	or	r24, r25
+    1418:	b1 f7       	brne	.-20     	; 0x1406 <xbee_lib_init+0x14c>
+    141a:	ae e4       	ldi	r26, 0x4E	; 78
+    141c:	b1 e0       	ldi	r27, 0x01	; 1
+    141e:	b3 cf       	rjmp	.-154    	; 0x1386 <xbee_lib_init+0xcc>
+    1420:	8a e5       	ldi	r24, 0x5A	; 90
+    1422:	91 e0       	ldi	r25, 0x01	; 1
+    1424:	0e 94 37 09 	call	0x126e	; 0x126e <xbee_send_string>
+    1428:	89 2b       	or	r24, r25
+    142a:	69 f7       	brne	.-38     	; 0x1406 <xbee_lib_init+0x14c>
+    142c:	ae e4       	ldi	r26, 0x4E	; 78
+    142e:	b1 e0       	ldi	r27, 0x01	; 1
+    1430:	d7 cf       	rjmp	.-82     	; 0x13e0 <xbee_lib_init+0x126>
+    1432:	80 e6       	ldi	r24, 0x60	; 96
+    1434:	91 e0       	ldi	r25, 0x01	; 1
+    1436:	60 e0       	ldi	r22, 0x00	; 0
+    1438:	70 e0       	ldi	r23, 0x00	; 0
+    143a:	0e 94 d0 07 	call	0xfa0	; 0xfa0 <xbee_send_modify_at_command>
+    143e:	89 2b       	or	r24, r25
+    1440:	c9 f2       	breq	.-78     	; 0x13f4 <xbee_lib_init+0x13a>
+    1442:	e1 cf       	rjmp	.-62     	; 0x1406 <xbee_lib_init+0x14c>
+
+00001444 <sensor_matrix_create>:
+    1444:	10 92 4c 07 	sts	0x074C, r1
+    1448:	10 92 4b 07 	sts	0x074B, r1
+    144c:	ad e4       	ldi	r26, 0x4D	; 77
+    144e:	b7 e0       	ldi	r27, 0x07	; 7
+    1450:	20 e0       	ldi	r18, 0x00	; 0
+    1452:	30 e0       	ldi	r19, 0x00	; 0
+    1454:	4f ef       	ldi	r20, 0xFF	; 255
+    1456:	1c 92       	st	X, r1
+    1458:	f9 01       	movw	r30, r18
+    145a:	85 e0       	ldi	r24, 0x05	; 5
+    145c:	ee 0f       	add	r30, r30
+    145e:	ff 1f       	adc	r31, r31
+    1460:	8a 95       	dec	r24
+    1462:	e1 f7       	brne	.-8      	; 0x145c <sensor_matrix_create+0x18>
+    1464:	e3 5a       	subi	r30, 0xA3	; 163
+    1466:	f8 4f       	sbci	r31, 0xF8	; 248
+    1468:	80 e0       	ldi	r24, 0x00	; 0
+    146a:	90 e0       	ldi	r25, 0x00	; 0
+    146c:	40 83       	st	Z, r20
+    146e:	01 96       	adiw	r24, 0x01	; 1
+    1470:	32 96       	adiw	r30, 0x02	; 2
+    1472:	80 31       	cpi	r24, 0x10	; 16
+    1474:	91 05       	cpc	r25, r1
+    1476:	d1 f7       	brne	.-12     	; 0x146c <sensor_matrix_create+0x28>
+    1478:	2f 5f       	subi	r18, 0xFF	; 255
+    147a:	3f 4f       	sbci	r19, 0xFF	; 255
+    147c:	11 96       	adiw	r26, 0x01	; 1
+    147e:	20 31       	cpi	r18, 0x10	; 16
+    1480:	31 05       	cpc	r19, r1
+    1482:	49 f7       	brne	.-46     	; 0x1456 <sensor_matrix_create+0x12>
+    1484:	08 95       	ret
+
+00001486 <sensor_matrix_set_reading>:
+    1486:	60 31       	cpi	r22, 0x10	; 16
+    1488:	71 05       	cpc	r23, r1
+    148a:	ac f4       	brge	.+42     	; 0x14b6 <sensor_matrix_set_reading+0x30>
+    148c:	80 31       	cpi	r24, 0x10	; 16
+    148e:	91 05       	cpc	r25, r1
+    1490:	94 f4       	brge	.+36     	; 0x14b6 <sensor_matrix_set_reading+0x30>
+    1492:	fc 01       	movw	r30, r24
+    1494:	34 e0       	ldi	r19, 0x04	; 4
+    1496:	ee 0f       	add	r30, r30
+    1498:	ff 1f       	adc	r31, r31
+    149a:	3a 95       	dec	r19
+    149c:	e1 f7       	brne	.-8      	; 0x1496 <sensor_matrix_set_reading+0x10>
+    149e:	e6 0f       	add	r30, r22
+    14a0:	f7 1f       	adc	r31, r23
+    14a2:	ee 0f       	add	r30, r30
+    14a4:	ff 1f       	adc	r31, r31
+    14a6:	df 01       	movw	r26, r30
+    14a8:	a5 5b       	subi	r26, 0xB5	; 181
+    14aa:	b8 4f       	sbci	r27, 0xF8	; 248
+    14ac:	53 96       	adiw	r26, 0x13	; 19
+    14ae:	5c 93       	st	X, r21
+    14b0:	e3 5a       	subi	r30, 0xA3	; 163
+    14b2:	f8 4f       	sbci	r31, 0xF8	; 248
+    14b4:	40 83       	st	Z, r20
+    14b6:	08 95       	ret
+
+000014b8 <sensor_matrix_get_reading>:
+    14b8:	80 31       	cpi	r24, 0x10	; 16
+    14ba:	91 05       	cpc	r25, r1
+    14bc:	84 f4       	brge	.+32     	; 0x14de <sensor_matrix_get_reading+0x26>
+    14be:	60 31       	cpi	r22, 0x10	; 16
+    14c0:	71 05       	cpc	r23, r1
+    14c2:	6c f4       	brge	.+26     	; 0x14de <sensor_matrix_get_reading+0x26>
+    14c4:	9c 01       	movw	r18, r24
+    14c6:	54 e0       	ldi	r21, 0x04	; 4
+    14c8:	22 0f       	add	r18, r18
+    14ca:	33 1f       	adc	r19, r19
+    14cc:	5a 95       	dec	r21
+    14ce:	e1 f7       	brne	.-8      	; 0x14c8 <sensor_matrix_get_reading+0x10>
+    14d0:	26 0f       	add	r18, r22
+    14d2:	37 1f       	adc	r19, r23
+    14d4:	22 0f       	add	r18, r18
+    14d6:	33 1f       	adc	r19, r19
+    14d8:	23 5a       	subi	r18, 0xA3	; 163
+    14da:	38 4f       	sbci	r19, 0xF8	; 248
+    14dc:	02 c0       	rjmp	.+4      	; 0x14e2 <sensor_matrix_get_reading+0x2a>
+    14de:	20 e0       	ldi	r18, 0x00	; 0
+    14e0:	30 e0       	ldi	r19, 0x00	; 0
+    14e2:	c9 01       	movw	r24, r18
+    14e4:	08 95       	ret
+
+000014e6 <sensor_matrix_set_in_ring>:
+    14e6:	dc 01       	movw	r26, r24
+    14e8:	80 31       	cpi	r24, 0x10	; 16
+    14ea:	91 05       	cpc	r25, r1
+    14ec:	2c f5       	brge	.+74     	; 0x1538 <sensor_matrix_set_in_ring+0x52>
+    14ee:	61 30       	cpi	r22, 0x01	; 1
+    14f0:	71 05       	cpc	r23, r1
+    14f2:	61 f4       	brne	.+24     	; 0x150c <sensor_matrix_set_in_ring+0x26>
+    14f4:	fc 01       	movw	r30, r24
+    14f6:	e5 5b       	subi	r30, 0xB5	; 181
+    14f8:	f8 4f       	sbci	r31, 0xF8	; 248
+    14fa:	82 81       	ldd	r24, Z+2	; 0x02
+    14fc:	88 23       	and	r24, r24
+    14fe:	c1 f4       	brne	.+48     	; 0x1530 <sensor_matrix_set_in_ring+0x4a>
+    1500:	80 91 4b 07 	lds	r24, 0x074B
+    1504:	90 91 4c 07 	lds	r25, 0x074C
+    1508:	01 96       	adiw	r24, 0x01	; 1
+    150a:	0e c0       	rjmp	.+28     	; 0x1528 <sensor_matrix_set_in_ring+0x42>
+    150c:	61 15       	cp	r22, r1
+    150e:	71 05       	cpc	r23, r1
+    1510:	79 f4       	brne	.+30     	; 0x1530 <sensor_matrix_set_in_ring+0x4a>
+    1512:	fc 01       	movw	r30, r24
+    1514:	e5 5b       	subi	r30, 0xB5	; 181
+    1516:	f8 4f       	sbci	r31, 0xF8	; 248
+    1518:	82 81       	ldd	r24, Z+2	; 0x02
+    151a:	88 23       	and	r24, r24
+    151c:	49 f0       	breq	.+18     	; 0x1530 <sensor_matrix_set_in_ring+0x4a>
+    151e:	80 91 4b 07 	lds	r24, 0x074B
+    1522:	90 91 4c 07 	lds	r25, 0x074C
+    1526:	01 97       	sbiw	r24, 0x01	; 1
+    1528:	90 93 4c 07 	sts	0x074C, r25
+    152c:	80 93 4b 07 	sts	0x074B, r24
+    1530:	a5 5b       	subi	r26, 0xB5	; 181
+    1532:	b8 4f       	sbci	r27, 0xF8	; 248
+    1534:	12 96       	adiw	r26, 0x02	; 2
+    1536:	6c 93       	st	X, r22
+    1538:	08 95       	ret
+
+0000153a <sensor_matrix_get_in_ring>:
+    153a:	fc 01       	movw	r30, r24
+    153c:	80 31       	cpi	r24, 0x10	; 16
+    153e:	91 05       	cpc	r25, r1
+    1540:	1c f0       	brlt	.+6      	; 0x1548 <sensor_matrix_get_in_ring+0xe>
+    1542:	2f ef       	ldi	r18, 0xFF	; 255
+    1544:	3f ef       	ldi	r19, 0xFF	; 255
+    1546:	05 c0       	rjmp	.+10     	; 0x1552 <sensor_matrix_get_in_ring+0x18>
+    1548:	e5 5b       	subi	r30, 0xB5	; 181
+    154a:	f8 4f       	sbci	r31, 0xF8	; 248
+    154c:	82 81       	ldd	r24, Z+2	; 0x02
+    154e:	28 2f       	mov	r18, r24
+    1550:	30 e0       	ldi	r19, 0x00	; 0
+    1552:	c9 01       	movw	r24, r18
+    1554:	08 95       	ret
+
+00001556 <sensor_matrix_get_joined>:
+    1556:	80 91 4b 07 	lds	r24, 0x074B
+    155a:	90 91 4c 07 	lds	r25, 0x074C
+    155e:	08 95       	ret
+
+00001560 <sensor_matrix_get_size>:
+    1560:	80 e1       	ldi	r24, 0x10	; 16
+    1562:	90 e0       	ldi	r25, 0x00	; 0
+    1564:	08 95       	ret
+
+00001566 <bom_get>:
+    1566:	fc 01       	movw	r30, r24
+    1568:	ee 0f       	add	r30, r30
+    156a:	ff 1f       	adc	r31, r31
+    156c:	e3 57       	subi	r30, 0x73	; 115
+    156e:	f9 4f       	sbci	r31, 0xF9	; 249
+    1570:	80 81       	ld	r24, Z
+    1572:	91 81       	ldd	r25, Z+1	; 0x01
+    1574:	08 95       	ret
+
+00001576 <bom_get_max>:
+    1576:	ed e8       	ldi	r30, 0x8D	; 141
+    1578:	f6 e0       	ldi	r31, 0x06	; 6
+    157a:	20 e0       	ldi	r18, 0x00	; 0
+    157c:	30 e0       	ldi	r19, 0x00	; 0
+    157e:	8f ef       	ldi	r24, 0xFF	; 255
+    1580:	90 e0       	ldi	r25, 0x00	; 0
+    1582:	6f ef       	ldi	r22, 0xFF	; 255
+    1584:	7f ef       	ldi	r23, 0xFF	; 255
+    1586:	40 81       	ld	r20, Z
+    1588:	51 81       	ldd	r21, Z+1	; 0x01
+    158a:	48 17       	cp	r20, r24
+    158c:	59 07       	cpc	r21, r25
+    158e:	10 f4       	brcc	.+4      	; 0x1594 <bom_get_max+0x1e>
+    1590:	ca 01       	movw	r24, r20
+    1592:	b9 01       	movw	r22, r18
+    1594:	2f 5f       	subi	r18, 0xFF	; 255
+    1596:	3f 4f       	sbci	r19, 0xFF	; 255
+    1598:	32 96       	adiw	r30, 0x02	; 2
+    159a:	20 31       	cpi	r18, 0x10	; 16
+    159c:	31 05       	cpc	r19, r1
+    159e:	99 f7       	brne	.-26     	; 0x1586 <bom_get_max+0x10>
+    15a0:	86 39       	cpi	r24, 0x96	; 150
+    15a2:	91 05       	cpc	r25, r1
+    15a4:	14 f0       	brlt	.+4      	; 0x15aa <bom_get_max+0x34>
+    15a6:	6f ef       	ldi	r22, 0xFF	; 255
+    15a8:	7f ef       	ldi	r23, 0xFF	; 255
+    15aa:	cb 01       	movw	r24, r22
+    15ac:	08 95       	ret
+
+000015ae <bom_get_max10>:
+    15ae:	2f 92       	push	r2
+    15b0:	3f 92       	push	r3
+    15b2:	4f 92       	push	r4
+    15b4:	5f 92       	push	r5
+    15b6:	6f 92       	push	r6
+    15b8:	7f 92       	push	r7
+    15ba:	8f 92       	push	r8
+    15bc:	9f 92       	push	r9
+    15be:	af 92       	push	r10
+    15c0:	bf 92       	push	r11
+    15c2:	cf 92       	push	r12
+    15c4:	df 92       	push	r13
+    15c6:	ef 92       	push	r14
+    15c8:	ff 92       	push	r15
+    15ca:	0f 93       	push	r16
+    15cc:	1f 93       	push	r17
+    15ce:	df 93       	push	r29
+    15d0:	cf 93       	push	r28
+    15d2:	cd b7       	in	r28, 0x3d	; 61
+    15d4:	de b7       	in	r29, 0x3e	; 62
+    15d6:	67 97       	sbiw	r28, 0x17	; 23
+    15d8:	0f b6       	in	r0, 0x3f	; 63
+    15da:	f8 94       	cli
+    15dc:	de bf       	out	0x3e, r29	; 62
+    15de:	0f be       	out	0x3f, r0	; 63
+    15e0:	cd bf       	out	0x3d, r28	; 61
+    15e2:	2c 01       	movw	r4, r24
+    15e4:	2d e8       	ldi	r18, 0x8D	; 141
+    15e6:	36 e0       	ldi	r19, 0x06	; 6
+    15e8:	3d 8b       	std	Y+21, r19	; 0x15
+    15ea:	2c 8b       	std	Y+20, r18	; 0x14
+    15ec:	f9 01       	movw	r30, r18
+    15ee:	20 e0       	ldi	r18, 0x00	; 0
+    15f0:	30 e0       	ldi	r19, 0x00	; 0
+    15f2:	6f ef       	ldi	r22, 0xFF	; 255
+    15f4:	70 e0       	ldi	r23, 0x00	; 0
+    15f6:	8f ef       	ldi	r24, 0xFF	; 255
+    15f8:	9f ef       	ldi	r25, 0xFF	; 255
+    15fa:	40 81       	ld	r20, Z
+    15fc:	51 81       	ldd	r21, Z+1	; 0x01
+    15fe:	46 17       	cp	r20, r22
+    1600:	57 07       	cpc	r21, r23
+    1602:	10 f4       	brcc	.+4      	; 0x1608 <bom_get_max10+0x5a>
+    1604:	ba 01       	movw	r22, r20
+    1606:	c9 01       	movw	r24, r18
+    1608:	2f 5f       	subi	r18, 0xFF	; 255
+    160a:	3f 4f       	sbci	r19, 0xFF	; 255
+    160c:	32 96       	adiw	r30, 0x02	; 2
+    160e:	20 31       	cpi	r18, 0x10	; 16
+    1610:	31 05       	cpc	r19, r1
+    1612:	99 f7       	brne	.-26     	; 0x15fa <bom_get_max10+0x4c>
+    1614:	66 39       	cpi	r22, 0x96	; 150
+    1616:	71 05       	cpc	r23, r1
+    1618:	24 f4       	brge	.+8      	; 0x1622 <bom_get_max10+0x74>
+    161a:	3f ef       	ldi	r19, 0xFF	; 255
+    161c:	8f 3f       	cpi	r24, 0xFF	; 255
+    161e:	93 07       	cpc	r25, r19
+    1620:	59 f4       	brne	.+22     	; 0x1638 <bom_get_max10+0x8a>
+    1622:	41 14       	cp	r4, r1
+    1624:	51 04       	cpc	r5, r1
+    1626:	29 f0       	breq	.+10     	; 0x1632 <bom_get_max10+0x84>
+    1628:	8f ef       	ldi	r24, 0xFF	; 255
+    162a:	9f ef       	ldi	r25, 0xFF	; 255
+    162c:	d2 01       	movw	r26, r4
+    162e:	8d 93       	st	X+, r24
+    1630:	9c 93       	st	X, r25
+    1632:	2f ef       	ldi	r18, 0xFF	; 255
+    1634:	3f ef       	ldi	r19, 0xFF	; 255
+    1636:	ea c1       	rjmp	.+980    	; 0x1a0c <bom_get_max10+0x45e>
+    1638:	e8 e1       	ldi	r30, 0x18	; 24
+    163a:	f0 e0       	ldi	r31, 0x00	; 0
+    163c:	e8 1b       	sub	r30, r24
+    163e:	f9 0b       	sbc	r31, r25
+    1640:	99 24       	eor	r9, r9
+    1642:	88 24       	eor	r8, r8
+    1644:	77 24       	eor	r7, r7
+    1646:	66 24       	eor	r6, r6
+    1648:	33 24       	eor	r3, r3
+    164a:	22 24       	eor	r2, r2
+    164c:	1a 8a       	std	Y+18, r1	; 0x12
+    164e:	1b 8a       	std	Y+19, r1	; 0x13
+    1650:	10 e0       	ldi	r17, 0x00	; 0
+    1652:	00 e0       	ldi	r16, 0x00	; 0
+    1654:	ee 24       	eor	r14, r14
+    1656:	dd 24       	eor	r13, r13
+    1658:	cc 24       	eor	r12, r12
+    165a:	19 86       	std	Y+9, r1	; 0x09
+    165c:	1a 86       	std	Y+10, r1	; 0x0a
+    165e:	ff 24       	eor	r15, r15
+    1660:	9c 01       	movw	r18, r24
+    1662:	28 50       	subi	r18, 0x08	; 8
+    1664:	30 40       	sbci	r19, 0x00	; 0
+    1666:	39 8b       	std	Y+17, r19	; 0x11
+    1668:	28 8b       	std	Y+16, r18	; 0x10
+    166a:	ac 89       	ldd	r26, Y+20	; 0x14
+    166c:	bd 89       	ldd	r27, Y+21	; 0x15
+    166e:	8d 91       	ld	r24, X+
+    1670:	9c 91       	ld	r25, X
+    1672:	2f ef       	ldi	r18, 0xFF	; 255
+    1674:	a2 2e       	mov	r10, r18
+    1676:	b1 2c       	mov	r11, r1
+    1678:	a8 1a       	sub	r10, r24
+    167a:	b9 0a       	sbc	r11, r25
+    167c:	cf 01       	movw	r24, r30
+    167e:	60 e1       	ldi	r22, 0x10	; 16
+    1680:	70 e0       	ldi	r23, 0x00	; 0
+    1682:	0e 94 13 32 	call	0x6426	; 0x6426 <__divmodhi4>
+    1686:	28 89       	ldd	r18, Y+16	; 0x10
+    1688:	39 89       	ldd	r19, Y+17	; 0x11
+    168a:	82 0f       	add	r24, r18
+    168c:	93 1f       	adc	r25, r19
+    168e:	8a 9d       	mul	r24, r10
+    1690:	90 01       	movw	r18, r0
+    1692:	8b 9d       	mul	r24, r11
+    1694:	30 0d       	add	r19, r0
+    1696:	9a 9d       	mul	r25, r10
+    1698:	30 0d       	add	r19, r0
+    169a:	11 24       	eor	r1, r1
+    169c:	c9 01       	movw	r24, r18
+    169e:	99 0f       	add	r25, r25
+    16a0:	88 0b       	sbc	r24, r24
+    16a2:	98 2f       	mov	r25, r24
+    16a4:	68 2f       	mov	r22, r24
+    16a6:	78 2f       	mov	r23, r24
+    16a8:	8f 8b       	std	Y+23, r24	; 0x17
+    16aa:	8b 87       	std	Y+11, r24	; 0x0b
+    16ac:	8c 87       	std	Y+12, r24	; 0x0c
+    16ae:	98 2f       	mov	r25, r24
+    16b0:	49 2d       	mov	r20, r9
+    16b2:	42 0f       	add	r20, r18
+    16b4:	4d 87       	std	Y+13, r20	; 0x0d
+    16b6:	51 e0       	ldi	r21, 0x01	; 1
+    16b8:	49 15       	cp	r20, r9
+    16ba:	08 f0       	brcs	.+2      	; 0x16be <bom_get_max10+0x110>
+    16bc:	50 e0       	ldi	r21, 0x00	; 0
+    16be:	28 2d       	mov	r18, r8
+    16c0:	23 0f       	add	r18, r19
+    16c2:	41 e0       	ldi	r20, 0x01	; 1
+    16c4:	28 15       	cp	r18, r8
+    16c6:	08 f0       	brcs	.+2      	; 0x16ca <bom_get_max10+0x11c>
+    16c8:	40 e0       	ldi	r20, 0x00	; 0
+    16ca:	52 0f       	add	r21, r18
+    16cc:	59 83       	std	Y+1, r21	; 0x01
+    16ce:	31 e0       	ldi	r19, 0x01	; 1
+    16d0:	52 17       	cp	r21, r18
+    16d2:	08 f0       	brcs	.+2      	; 0x16d6 <bom_get_max10+0x128>
+    16d4:	30 e0       	ldi	r19, 0x00	; 0
+    16d6:	43 2b       	or	r20, r19
+    16d8:	87 2d       	mov	r24, r7
+    16da:	86 0f       	add	r24, r22
+    16dc:	31 e0       	ldi	r19, 0x01	; 1
+    16de:	87 15       	cp	r24, r7
+    16e0:	08 f0       	brcs	.+2      	; 0x16e4 <bom_get_max10+0x136>
+    16e2:	30 e0       	ldi	r19, 0x00	; 0
+    16e4:	48 0f       	add	r20, r24
+    16e6:	4e 8b       	std	Y+22, r20	; 0x16
+    16e8:	21 e0       	ldi	r18, 0x01	; 1
+    16ea:	48 17       	cp	r20, r24
+    16ec:	08 f0       	brcs	.+2      	; 0x16f0 <bom_get_max10+0x142>
+    16ee:	20 e0       	ldi	r18, 0x00	; 0
+    16f0:	32 2b       	or	r19, r18
+    16f2:	86 2d       	mov	r24, r6
+    16f4:	87 0f       	add	r24, r23
+    16f6:	41 e0       	ldi	r20, 0x01	; 1
+    16f8:	86 15       	cp	r24, r6
+    16fa:	08 f0       	brcs	.+2      	; 0x16fe <bom_get_max10+0x150>
+    16fc:	40 e0       	ldi	r20, 0x00	; 0
+    16fe:	73 2f       	mov	r23, r19
+    1700:	78 0f       	add	r23, r24
+    1702:	21 e0       	ldi	r18, 0x01	; 1
+    1704:	78 17       	cp	r23, r24
+    1706:	08 f0       	brcs	.+2      	; 0x170a <bom_get_max10+0x15c>
+    1708:	20 e0       	ldi	r18, 0x00	; 0
+    170a:	42 2b       	or	r20, r18
+    170c:	8f 89       	ldd	r24, Y+23	; 0x17
+    170e:	83 0d       	add	r24, r3
+    1710:	31 e0       	ldi	r19, 0x01	; 1
+    1712:	83 15       	cp	r24, r3
+    1714:	08 f0       	brcs	.+2      	; 0x1718 <bom_get_max10+0x16a>
+    1716:	30 e0       	ldi	r19, 0x00	; 0
+    1718:	64 2f       	mov	r22, r20
+    171a:	68 0f       	add	r22, r24
+    171c:	21 e0       	ldi	r18, 0x01	; 1
+    171e:	68 17       	cp	r22, r24
+    1720:	08 f0       	brcs	.+2      	; 0x1724 <bom_get_max10+0x176>
+    1722:	20 e0       	ldi	r18, 0x00	; 0
+    1724:	32 2b       	or	r19, r18
+    1726:	8b 85       	ldd	r24, Y+11	; 0x0b
+    1728:	82 0d       	add	r24, r2
+    172a:	41 e0       	ldi	r20, 0x01	; 1
+    172c:	82 15       	cp	r24, r2
+    172e:	08 f0       	brcs	.+2      	; 0x1732 <bom_get_max10+0x184>
+    1730:	40 e0       	ldi	r20, 0x00	; 0
+    1732:	53 2f       	mov	r21, r19
+    1734:	58 0f       	add	r21, r24
+    1736:	21 e0       	ldi	r18, 0x01	; 1
+    1738:	58 17       	cp	r21, r24
+    173a:	08 f0       	brcs	.+2      	; 0x173e <bom_get_max10+0x190>
+    173c:	20 e0       	ldi	r18, 0x00	; 0
+    173e:	42 2b       	or	r20, r18
+    1740:	8a 89       	ldd	r24, Y+18	; 0x12
+    1742:	ac 85       	ldd	r26, Y+12	; 0x0c
+    1744:	8a 0f       	add	r24, r26
+    1746:	31 e0       	ldi	r19, 0x01	; 1
+    1748:	ba 89       	ldd	r27, Y+18	; 0x12
+    174a:	8b 17       	cp	r24, r27
+    174c:	08 f0       	brcs	.+2      	; 0x1750 <bom_get_max10+0x1a2>
+    174e:	30 e0       	ldi	r19, 0x00	; 0
+    1750:	48 0f       	add	r20, r24
+    1752:	21 e0       	ldi	r18, 0x01	; 1
+    1754:	48 17       	cp	r20, r24
+    1756:	08 f0       	brcs	.+2      	; 0x175a <bom_get_max10+0x1ac>
+    1758:	20 e0       	ldi	r18, 0x00	; 0
+    175a:	32 2b       	or	r19, r18
+    175c:	2b 89       	ldd	r18, Y+19	; 0x13
+    175e:	92 0f       	add	r25, r18
+    1760:	9d 84       	ldd	r9, Y+13	; 0x0d
+    1762:	89 80       	ldd	r8, Y+1	; 0x01
+    1764:	7e 88       	ldd	r7, Y+22	; 0x16
+    1766:	67 2e       	mov	r6, r23
+    1768:	36 2e       	mov	r3, r22
+    176a:	25 2e       	mov	r2, r21
+    176c:	4a 8b       	std	Y+18, r20	; 0x12
+    176e:	39 0f       	add	r19, r25
+    1770:	3b 8b       	std	Y+19, r19	; 0x13
+    1772:	c5 01       	movw	r24, r10
+    1774:	99 0f       	add	r25, r25
+    1776:	88 0b       	sbc	r24, r24
+    1778:	98 2f       	mov	r25, r24
+    177a:	2b 2d       	mov	r18, r11
+    177c:	98 2f       	mov	r25, r24
+    177e:	68 2f       	mov	r22, r24
+    1780:	78 2f       	mov	r23, r24
+    1782:	8e 8b       	std	Y+22, r24	; 0x16
+    1784:	8f 8b       	std	Y+23, r24	; 0x17
+    1786:	8e 87       	std	Y+14, r24	; 0x0e
+    1788:	31 2f       	mov	r19, r17
+    178a:	3a 0d       	add	r19, r10
+    178c:	3f 87       	std	Y+15, r19	; 0x0f
+    178e:	31 e0       	ldi	r19, 0x01	; 1
+    1790:	4f 85       	ldd	r20, Y+15	; 0x0f
+    1792:	41 17       	cp	r20, r17
+    1794:	08 f0       	brcs	.+2      	; 0x1798 <bom_get_max10+0x1ea>
+    1796:	30 e0       	ldi	r19, 0x00	; 0
+    1798:	20 0f       	add	r18, r16
+    179a:	41 e0       	ldi	r20, 0x01	; 1
+    179c:	20 17       	cp	r18, r16
+    179e:	08 f0       	brcs	.+2      	; 0x17a2 <bom_get_max10+0x1f4>
+    17a0:	40 e0       	ldi	r20, 0x00	; 0
+    17a2:	32 0f       	add	r19, r18
+    17a4:	3a 83       	std	Y+2, r19	; 0x02
+    17a6:	31 e0       	ldi	r19, 0x01	; 1
+    17a8:	8a 81       	ldd	r24, Y+2	; 0x02
+    17aa:	82 17       	cp	r24, r18
+    17ac:	08 f0       	brcs	.+2      	; 0x17b0 <bom_get_max10+0x202>
+    17ae:	30 e0       	ldi	r19, 0x00	; 0
+    17b0:	43 2b       	or	r20, r19
+    17b2:	8e 2d       	mov	r24, r14
+    17b4:	89 0f       	add	r24, r25
+    17b6:	51 e0       	ldi	r21, 0x01	; 1
+    17b8:	8e 15       	cp	r24, r14
+    17ba:	08 f0       	brcs	.+2      	; 0x17be <bom_get_max10+0x210>
+    17bc:	50 e0       	ldi	r21, 0x00	; 0
+    17be:	48 0f       	add	r20, r24
+    17c0:	4b 83       	std	Y+3, r20	; 0x03
+    17c2:	21 e0       	ldi	r18, 0x01	; 1
+    17c4:	48 17       	cp	r20, r24
+    17c6:	08 f0       	brcs	.+2      	; 0x17ca <bom_get_max10+0x21c>
+    17c8:	20 e0       	ldi	r18, 0x00	; 0
+    17ca:	52 2b       	or	r21, r18
+    17cc:	8d 2d       	mov	r24, r13
+    17ce:	86 0f       	add	r24, r22
+    17d0:	61 e0       	ldi	r22, 0x01	; 1
+    17d2:	8d 15       	cp	r24, r13
+    17d4:	08 f0       	brcs	.+2      	; 0x17d8 <bom_get_max10+0x22a>
+    17d6:	60 e0       	ldi	r22, 0x00	; 0
+    17d8:	58 0f       	add	r21, r24
+    17da:	5c 83       	std	Y+4, r21	; 0x04
+    17dc:	21 e0       	ldi	r18, 0x01	; 1
+    17de:	58 17       	cp	r21, r24
+    17e0:	08 f0       	brcs	.+2      	; 0x17e4 <bom_get_max10+0x236>
+    17e2:	20 e0       	ldi	r18, 0x00	; 0
+    17e4:	62 2b       	or	r22, r18
+    17e6:	8c 2d       	mov	r24, r12
+    17e8:	87 0f       	add	r24, r23
+    17ea:	71 e0       	ldi	r23, 0x01	; 1
+    17ec:	8c 15       	cp	r24, r12
+    17ee:	08 f0       	brcs	.+2      	; 0x17f2 <bom_get_max10+0x244>
+    17f0:	70 e0       	ldi	r23, 0x00	; 0
+    17f2:	68 0f       	add	r22, r24
+    17f4:	6d 83       	std	Y+5, r22	; 0x05
+    17f6:	21 e0       	ldi	r18, 0x01	; 1
+    17f8:	68 17       	cp	r22, r24
+    17fa:	08 f0       	brcs	.+2      	; 0x17fe <bom_get_max10+0x250>
+    17fc:	20 e0       	ldi	r18, 0x00	; 0
+    17fe:	72 2b       	or	r23, r18
+    1800:	89 85       	ldd	r24, Y+9	; 0x09
+    1802:	9e 89       	ldd	r25, Y+22	; 0x16
+    1804:	89 0f       	add	r24, r25
+    1806:	01 e0       	ldi	r16, 0x01	; 1
+    1808:	a9 85       	ldd	r26, Y+9	; 0x09
+    180a:	8a 17       	cp	r24, r26
+    180c:	08 f0       	brcs	.+2      	; 0x1810 <bom_get_max10+0x262>
+    180e:	00 e0       	ldi	r16, 0x00	; 0
+    1810:	78 0f       	add	r23, r24
+    1812:	7e 83       	std	Y+6, r23	; 0x06
+    1814:	21 e0       	ldi	r18, 0x01	; 1
+    1816:	78 17       	cp	r23, r24
+    1818:	08 f0       	brcs	.+2      	; 0x181c <bom_get_max10+0x26e>
+    181a:	20 e0       	ldi	r18, 0x00	; 0
+    181c:	02 2b       	or	r16, r18
+    181e:	8a 85       	ldd	r24, Y+10	; 0x0a
+    1820:	bf 89       	ldd	r27, Y+23	; 0x17
+    1822:	8b 0f       	add	r24, r27
+    1824:	21 e0       	ldi	r18, 0x01	; 1
+    1826:	3a 85       	ldd	r19, Y+10	; 0x0a
+    1828:	83 17       	cp	r24, r19
+    182a:	08 f0       	brcs	.+2      	; 0x182e <bom_get_max10+0x280>
+    182c:	20 e0       	ldi	r18, 0x00	; 0
+    182e:	08 0f       	add	r16, r24
+    1830:	0f 83       	std	Y+7, r16	; 0x07
+    1832:	11 e0       	ldi	r17, 0x01	; 1
+    1834:	08 17       	cp	r16, r24
+    1836:	08 f0       	brcs	.+2      	; 0x183a <bom_get_max10+0x28c>
+    1838:	10 e0       	ldi	r17, 0x00	; 0
+    183a:	21 2b       	or	r18, r17
+    183c:	4e 85       	ldd	r20, Y+14	; 0x0e
+    183e:	f4 0e       	add	r15, r20
+    1840:	2f 0d       	add	r18, r15
+    1842:	28 87       	std	Y+8, r18	; 0x08
+    1844:	1f 85       	ldd	r17, Y+15	; 0x0f
+    1846:	0a 81       	ldd	r16, Y+2	; 0x02
+    1848:	eb 80       	ldd	r14, Y+3	; 0x03
+    184a:	dc 80       	ldd	r13, Y+4	; 0x04
+    184c:	cd 80       	ldd	r12, Y+5	; 0x05
+    184e:	8e 81       	ldd	r24, Y+6	; 0x06
+    1850:	89 87       	std	Y+9, r24	; 0x09
+    1852:	9f 81       	ldd	r25, Y+7	; 0x07
+    1854:	9a 87       	std	Y+10, r25	; 0x0a
+    1856:	f2 2e       	mov	r15, r18
+    1858:	31 96       	adiw	r30, 0x01	; 1
+    185a:	ac 89       	ldd	r26, Y+20	; 0x14
+    185c:	bd 89       	ldd	r27, Y+21	; 0x15
+    185e:	12 96       	adiw	r26, 0x02	; 2
+    1860:	bd 8b       	std	Y+21, r27	; 0x15
+    1862:	ac 8b       	std	Y+20, r26	; 0x14
+    1864:	ad 5a       	subi	r26, 0xAD	; 173
+    1866:	b6 40       	sbci	r27, 0x06	; 6
+    1868:	09 f0       	breq	.+2      	; 0x186c <bom_get_max10+0x2be>
+    186a:	ff ce       	rjmp	.-514    	; 0x166a <bom_get_max10+0xbc>
+    186c:	41 14       	cp	r4, r1
+    186e:	51 04       	cpc	r5, r1
+    1870:	01 f1       	breq	.+64     	; 0x18b2 <bom_get_max10+0x304>
+    1872:	21 2f       	mov	r18, r17
+    1874:	30 2f       	mov	r19, r16
+    1876:	4e 2d       	mov	r20, r14
+    1878:	5d 2d       	mov	r21, r13
+    187a:	6c 2d       	mov	r22, r12
+    187c:	78 2f       	mov	r23, r24
+    187e:	89 2f       	mov	r24, r25
+    1880:	9f 2d       	mov	r25, r15
+    1882:	e0 ed       	ldi	r30, 0xD0	; 208
+    1884:	ae 2e       	mov	r10, r30
+    1886:	bb 24       	eor	r11, r11
+    1888:	ba 94       	dec	r11
+    188a:	cc 24       	eor	r12, r12
+    188c:	ca 94       	dec	r12
+    188e:	dd 24       	eor	r13, r13
+    1890:	da 94       	dec	r13
+    1892:	ee 24       	eor	r14, r14
+    1894:	ea 94       	dec	r14
+    1896:	ff 24       	eor	r15, r15
+    1898:	fa 94       	dec	r15
+    189a:	0f ef       	ldi	r16, 0xFF	; 255
+    189c:	1f ef       	ldi	r17, 0xFF	; 255
+    189e:	0e 94 b2 1e 	call	0x3d64	; 0x3d64 <__divdi3>
+    18a2:	59 01       	movw	r10, r18
+    18a4:	82 e3       	ldi	r24, 0x32	; 50
+    18a6:	90 e0       	ldi	r25, 0x00	; 0
+    18a8:	a8 0e       	add	r10, r24
+    18aa:	b9 1e       	adc	r11, r25
+    18ac:	d2 01       	movw	r26, r4
+    18ae:	ad 92       	st	X+, r10
+    18b0:	bc 92       	st	X, r11
+    18b2:	29 2d       	mov	r18, r9
+    18b4:	38 2d       	mov	r19, r8
+    18b6:	47 2d       	mov	r20, r7
+    18b8:	56 2d       	mov	r21, r6
+    18ba:	63 2d       	mov	r22, r3
+    18bc:	72 2d       	mov	r23, r2
+    18be:	8a 89       	ldd	r24, Y+18	; 0x12
+    18c0:	9b 89       	ldd	r25, Y+19	; 0x13
+    18c2:	01 e0       	ldi	r16, 0x01	; 1
+    18c4:	0e 94 33 1e 	call	0x3c66	; 0x3c66 <__ashldi3>
+    18c8:	12 2f       	mov	r17, r18
+    18ca:	f3 2e       	mov	r15, r19
+    18cc:	e4 2e       	mov	r14, r20
+    18ce:	d5 2e       	mov	r13, r21
+    18d0:	c6 2e       	mov	r12, r22
+    18d2:	b7 2e       	mov	r11, r23
+    18d4:	a8 2e       	mov	r10, r24
+    18d6:	89 2e       	mov	r8, r25
+    18d8:	02 e0       	ldi	r16, 0x02	; 2
+    18da:	0e 94 33 1e 	call	0x3c66	; 0x3c66 <__ashldi3>
+    18de:	b9 2f       	mov	r27, r25
+    18e0:	21 0f       	add	r18, r17
+    18e2:	e1 e0       	ldi	r30, 0x01	; 1
+    18e4:	21 17       	cp	r18, r17
+    18e6:	08 f0       	brcs	.+2      	; 0x18ea <bom_get_max10+0x33c>
+    18e8:	e0 e0       	ldi	r30, 0x00	; 0
+    18ea:	3f 0d       	add	r19, r15
+    18ec:	f1 e0       	ldi	r31, 0x01	; 1
+    18ee:	3f 15       	cp	r19, r15
+    18f0:	08 f0       	brcs	.+2      	; 0x18f4 <bom_get_max10+0x346>
+    18f2:	f0 e0       	ldi	r31, 0x00	; 0
+    18f4:	9e 2e       	mov	r9, r30
+    18f6:	93 0e       	add	r9, r19
+    18f8:	e1 e0       	ldi	r30, 0x01	; 1
+    18fa:	93 16       	cp	r9, r19
+    18fc:	08 f0       	brcs	.+2      	; 0x1900 <bom_get_max10+0x352>
+    18fe:	e0 e0       	ldi	r30, 0x00	; 0
+    1900:	fe 2b       	or	r31, r30
+    1902:	4e 0d       	add	r20, r14
+    1904:	a1 e0       	ldi	r26, 0x01	; 1
+    1906:	4e 15       	cp	r20, r14
+    1908:	08 f0       	brcs	.+2      	; 0x190c <bom_get_max10+0x35e>
+    190a:	a0 e0       	ldi	r26, 0x00	; 0
+    190c:	ff 2e       	mov	r15, r31
+    190e:	f4 0e       	add	r15, r20
+    1910:	e1 e0       	ldi	r30, 0x01	; 1
+    1912:	f4 16       	cp	r15, r20
+    1914:	08 f0       	brcs	.+2      	; 0x1918 <bom_get_max10+0x36a>
+    1916:	e0 e0       	ldi	r30, 0x00	; 0
+    1918:	ae 2b       	or	r26, r30
+    191a:	5d 0d       	add	r21, r13
+    191c:	f1 e0       	ldi	r31, 0x01	; 1
+    191e:	5d 15       	cp	r21, r13
+    1920:	08 f0       	brcs	.+2      	; 0x1924 <bom_get_max10+0x376>
+    1922:	f0 e0       	ldi	r31, 0x00	; 0
+    1924:	0a 2f       	mov	r16, r26
+    1926:	05 0f       	add	r16, r21
+    1928:	e1 e0       	ldi	r30, 0x01	; 1
+    192a:	05 17       	cp	r16, r21
+    192c:	08 f0       	brcs	.+2      	; 0x1930 <bom_get_max10+0x382>
+    192e:	e0 e0       	ldi	r30, 0x00	; 0
+    1930:	fe 2b       	or	r31, r30
+    1932:	6c 0d       	add	r22, r12
+    1934:	a1 e0       	ldi	r26, 0x01	; 1
+    1936:	6c 15       	cp	r22, r12
+    1938:	08 f0       	brcs	.+2      	; 0x193c <bom_get_max10+0x38e>
+    193a:	a0 e0       	ldi	r26, 0x00	; 0
+    193c:	1f 2f       	mov	r17, r31
+    193e:	16 0f       	add	r17, r22
+    1940:	e1 e0       	ldi	r30, 0x01	; 1
+    1942:	16 17       	cp	r17, r22
+    1944:	08 f0       	brcs	.+2      	; 0x1948 <bom_get_max10+0x39a>
+    1946:	e0 e0       	ldi	r30, 0x00	; 0
+    1948:	ae 2b       	or	r26, r30
+    194a:	7b 0d       	add	r23, r11
+    194c:	f1 e0       	ldi	r31, 0x01	; 1
+    194e:	7b 15       	cp	r23, r11
+    1950:	08 f0       	brcs	.+2      	; 0x1954 <bom_get_max10+0x3a6>
+    1952:	f0 e0       	ldi	r31, 0x00	; 0
+    1954:	a7 0f       	add	r26, r23
+    1956:	e1 e0       	ldi	r30, 0x01	; 1
+    1958:	a7 17       	cp	r26, r23
+    195a:	08 f0       	brcs	.+2      	; 0x195e <bom_get_max10+0x3b0>
+    195c:	e0 e0       	ldi	r30, 0x00	; 0
+    195e:	fe 2b       	or	r31, r30
+    1960:	8a 0d       	add	r24, r10
+    1962:	91 e0       	ldi	r25, 0x01	; 1
+    1964:	8a 15       	cp	r24, r10
+    1966:	08 f0       	brcs	.+2      	; 0x196a <bom_get_max10+0x3bc>
+    1968:	90 e0       	ldi	r25, 0x00	; 0
+    196a:	f8 0f       	add	r31, r24
+    196c:	e1 e0       	ldi	r30, 0x01	; 1
+    196e:	f8 17       	cp	r31, r24
+    1970:	08 f0       	brcs	.+2      	; 0x1974 <bom_get_max10+0x3c6>
+    1972:	e0 e0       	ldi	r30, 0x00	; 0
+    1974:	9e 2b       	or	r25, r30
+    1976:	b8 0d       	add	r27, r8
+    1978:	39 2d       	mov	r19, r9
+    197a:	4f 2d       	mov	r20, r15
+    197c:	50 2f       	mov	r21, r16
+    197e:	61 2f       	mov	r22, r17
+    1980:	7a 2f       	mov	r23, r26
+    1982:	8f 2f       	mov	r24, r31
+    1984:	9b 0f       	add	r25, r27
+    1986:	af 84       	ldd	r10, Y+15	; 0x0f
+    1988:	ba 80       	ldd	r11, Y+2	; 0x02
+    198a:	cb 80       	ldd	r12, Y+3	; 0x03
+    198c:	dc 80       	ldd	r13, Y+4	; 0x04
+    198e:	ed 80       	ldd	r14, Y+5	; 0x05
+    1990:	fe 80       	ldd	r15, Y+6	; 0x06
+    1992:	0f 81       	ldd	r16, Y+7	; 0x07
+    1994:	18 85       	ldd	r17, Y+8	; 0x08
+    1996:	0e 94 b2 1e 	call	0x3d64	; 0x3d64 <__divdi3>
+    199a:	e3 2f       	mov	r30, r19
+    199c:	f4 2f       	mov	r31, r20
+    199e:	a5 2f       	mov	r26, r21
+    19a0:	b6 2f       	mov	r27, r22
+    19a2:	17 2f       	mov	r17, r23
+    19a4:	08 2f       	mov	r16, r24
+    19a6:	e9 2e       	mov	r14, r25
+    19a8:	80 ea       	ldi	r24, 0xA0	; 160
+    19aa:	f8 2e       	mov	r15, r24
+    19ac:	f2 0e       	add	r15, r18
+    19ae:	31 e0       	ldi	r19, 0x01	; 1
+    19b0:	f2 16       	cp	r15, r18
+    19b2:	08 f0       	brcs	.+2      	; 0x19b6 <bom_get_max10+0x408>
+    19b4:	30 e0       	ldi	r19, 0x00	; 0
+    19b6:	3e 0f       	add	r19, r30
+    19b8:	41 e0       	ldi	r20, 0x01	; 1
+    19ba:	3e 17       	cp	r19, r30
+    19bc:	08 f0       	brcs	.+2      	; 0x19c0 <bom_get_max10+0x412>
+    19be:	40 e0       	ldi	r20, 0x00	; 0
+    19c0:	4f 0f       	add	r20, r31
+    19c2:	51 e0       	ldi	r21, 0x01	; 1
+    19c4:	4f 17       	cp	r20, r31
+    19c6:	08 f0       	brcs	.+2      	; 0x19ca <bom_get_max10+0x41c>
+    19c8:	50 e0       	ldi	r21, 0x00	; 0
+    19ca:	5a 0f       	add	r21, r26
+    19cc:	61 e0       	ldi	r22, 0x01	; 1
+    19ce:	5a 17       	cp	r21, r26
+    19d0:	08 f0       	brcs	.+2      	; 0x19d4 <bom_get_max10+0x426>
+    19d2:	60 e0       	ldi	r22, 0x00	; 0
+    19d4:	6b 0f       	add	r22, r27
+    19d6:	71 e0       	ldi	r23, 0x01	; 1
+    19d8:	6b 17       	cp	r22, r27
+    19da:	08 f0       	brcs	.+2      	; 0x19de <bom_get_max10+0x430>
+    19dc:	70 e0       	ldi	r23, 0x00	; 0
+    19de:	71 0f       	add	r23, r17
+    19e0:	81 e0       	ldi	r24, 0x01	; 1
+    19e2:	71 17       	cp	r23, r17
+    19e4:	08 f0       	brcs	.+2      	; 0x19e8 <bom_get_max10+0x43a>
+    19e6:	80 e0       	ldi	r24, 0x00	; 0
+    19e8:	80 0f       	add	r24, r16
+    19ea:	91 e0       	ldi	r25, 0x01	; 1
+    19ec:	80 17       	cp	r24, r16
+    19ee:	08 f0       	brcs	.+2      	; 0x19f2 <bom_get_max10+0x444>
+    19f0:	90 e0       	ldi	r25, 0x00	; 0
+    19f2:	2f 2d       	mov	r18, r15
+    19f4:	9e 0d       	add	r25, r14
+    19f6:	e0 ea       	ldi	r30, 0xA0	; 160
+    19f8:	ae 2e       	mov	r10, r30
+    19fa:	bb 24       	eor	r11, r11
+    19fc:	cc 24       	eor	r12, r12
+    19fe:	dd 24       	eor	r13, r13
+    1a00:	ee 24       	eor	r14, r14
+    1a02:	ff 24       	eor	r15, r15
+    1a04:	00 e0       	ldi	r16, 0x00	; 0
+    1a06:	10 e0       	ldi	r17, 0x00	; 0
+    1a08:	0e 94 da 26 	call	0x4db4	; 0x4db4 <__moddi3>
+    1a0c:	c9 01       	movw	r24, r18
+    1a0e:	67 96       	adiw	r28, 0x17	; 23
+    1a10:	0f b6       	in	r0, 0x3f	; 63
+    1a12:	f8 94       	cli
+    1a14:	de bf       	out	0x3e, r29	; 62
+    1a16:	0f be       	out	0x3f, r0	; 63
+    1a18:	cd bf       	out	0x3d, r28	; 61
+    1a1a:	cf 91       	pop	r28
+    1a1c:	df 91       	pop	r29
+    1a1e:	1f 91       	pop	r17
+    1a20:	0f 91       	pop	r16
+    1a22:	ff 90       	pop	r15
+    1a24:	ef 90       	pop	r14
+    1a26:	df 90       	pop	r13
+    1a28:	cf 90       	pop	r12
+    1a2a:	bf 90       	pop	r11
+    1a2c:	af 90       	pop	r10
+    1a2e:	9f 90       	pop	r9
+    1a30:	8f 90       	pop	r8
+    1a32:	7f 90       	pop	r7
+    1a34:	6f 90       	pop	r6
+    1a36:	5f 90       	pop	r5
+    1a38:	4f 90       	pop	r4
+    1a3a:	3f 90       	pop	r3
+    1a3c:	2f 90       	pop	r2
+    1a3e:	08 95       	ret
+
+00001a40 <bom_off>:
+    1a40:	80 91 8c 06 	lds	r24, 0x068C
+    1a44:	88 23       	and	r24, r24
+    1a46:	19 f0       	breq	.+6      	; 0x1a4e <bom_off+0xe>
+    1a48:	81 30       	cpi	r24, 0x01	; 1
+    1a4a:	71 f4       	brne	.+28     	; 0x1a68 <bom_off+0x28>
+    1a4c:	07 c0       	rjmp	.+14     	; 0x1a5c <bom_off+0x1c>
+    1a4e:	8a e2       	ldi	r24, 0x2A	; 42
+    1a50:	90 e0       	ldi	r25, 0x00	; 0
+    1a52:	60 e0       	ldi	r22, 0x00	; 0
+    1a54:	70 e0       	ldi	r23, 0x00	; 0
+    1a56:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1a5a:	08 95       	ret
+    1a5c:	8b e2       	ldi	r24, 0x2B	; 43
+    1a5e:	90 e0       	ldi	r25, 0x00	; 0
+    1a60:	60 e0       	ldi	r22, 0x00	; 0
+    1a62:	70 e0       	ldi	r23, 0x00	; 0
+    1a64:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1a68:	08 95       	ret
+
+00001a6a <bom_on>:
+    1a6a:	80 91 8c 06 	lds	r24, 0x068C
+    1a6e:	88 23       	and	r24, r24
+    1a70:	19 f0       	breq	.+6      	; 0x1a78 <bom_on+0xe>
+    1a72:	81 30       	cpi	r24, 0x01	; 1
+    1a74:	71 f4       	brne	.+28     	; 0x1a92 <bom_on+0x28>
+    1a76:	07 c0       	rjmp	.+14     	; 0x1a86 <bom_on+0x1c>
+    1a78:	8a e2       	ldi	r24, 0x2A	; 42
+    1a7a:	90 e0       	ldi	r25, 0x00	; 0
+    1a7c:	61 e0       	ldi	r22, 0x01	; 1
+    1a7e:	70 e0       	ldi	r23, 0x00	; 0
+    1a80:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1a84:	08 95       	ret
+    1a86:	8b e2       	ldi	r24, 0x2B	; 43
+    1a88:	90 e0       	ldi	r25, 0x00	; 0
+    1a8a:	61 e0       	ldi	r22, 0x01	; 1
+    1a8c:	70 e0       	ldi	r23, 0x00	; 0
+    1a8e:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1a92:	08 95       	ret
+
+00001a94 <bom_set_leds>:
+    1a94:	ef 92       	push	r14
+    1a96:	ff 92       	push	r15
+    1a98:	0f 93       	push	r16
+    1a9a:	1f 93       	push	r17
+    1a9c:	cf 93       	push	r28
+    1a9e:	df 93       	push	r29
+    1aa0:	7c 01       	movw	r14, r24
+    1aa2:	80 91 8c 06 	lds	r24, 0x068C
+    1aa6:	81 30       	cpi	r24, 0x01	; 1
+    1aa8:	e1 f4       	brne	.+56     	; 0x1ae2 <bom_set_leds+0x4e>
+    1aaa:	00 e1       	ldi	r16, 0x10	; 16
+    1aac:	10 e0       	ldi	r17, 0x00	; 0
+    1aae:	c0 e0       	ldi	r28, 0x00	; 0
+    1ab0:	d0 e8       	ldi	r29, 0x80	; 128
+    1ab2:	be 01       	movw	r22, r28
+    1ab4:	6e 21       	and	r22, r14
+    1ab6:	7f 21       	and	r23, r15
+    1ab8:	88 e0       	ldi	r24, 0x08	; 8
+    1aba:	90 e0       	ldi	r25, 0x00	; 0
+    1abc:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1ac0:	89 e0       	ldi	r24, 0x09	; 9
+    1ac2:	90 e0       	ldi	r25, 0x00	; 0
+    1ac4:	61 e0       	ldi	r22, 0x01	; 1
+    1ac6:	70 e0       	ldi	r23, 0x00	; 0
+    1ac8:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1acc:	89 e0       	ldi	r24, 0x09	; 9
+    1ace:	90 e0       	ldi	r25, 0x00	; 0
+    1ad0:	60 e0       	ldi	r22, 0x00	; 0
+    1ad2:	70 e0       	ldi	r23, 0x00	; 0
+    1ad4:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1ad8:	d6 95       	lsr	r29
+    1ada:	c7 95       	ror	r28
+    1adc:	01 50       	subi	r16, 0x01	; 1
+    1ade:	10 40       	sbci	r17, 0x00	; 0
+    1ae0:	41 f7       	brne	.-48     	; 0x1ab2 <bom_set_leds+0x1e>
+    1ae2:	df 91       	pop	r29
+    1ae4:	cf 91       	pop	r28
+    1ae6:	1f 91       	pop	r17
+    1ae8:	0f 91       	pop	r16
+    1aea:	ff 90       	pop	r15
+    1aec:	ef 90       	pop	r14
+    1aee:	08 95       	ret
+
+00001af0 <bom_init>:
+    1af0:	80 93 8c 06 	sts	0x068C, r24
+    1af4:	80 91 8c 06 	lds	r24, 0x068C
+    1af8:	88 23       	and	r24, r24
+    1afa:	21 f0       	breq	.+8      	; 0x1b04 <bom_init+0x14>
+    1afc:	81 30       	cpi	r24, 0x01	; 1
+    1afe:	09 f0       	breq	.+2      	; 0x1b02 <bom_init+0x12>
+    1b00:	44 c0       	rjmp	.+136    	; 0x1b8a <bom_init+0x9a>
+    1b02:	1d c0       	rjmp	.+58     	; 0x1b3e <bom_init+0x4e>
+    1b04:	8c e2       	ldi	r24, 0x2C	; 44
+    1b06:	90 e0       	ldi	r25, 0x00	; 0
+    1b08:	90 93 ae 06 	sts	0x06AE, r25
+    1b0c:	80 93 ad 06 	sts	0x06AD, r24
+    1b10:	8b e2       	ldi	r24, 0x2B	; 43
+    1b12:	90 e0       	ldi	r25, 0x00	; 0
+    1b14:	90 93 b0 06 	sts	0x06B0, r25
+    1b18:	80 93 af 06 	sts	0x06AF, r24
+    1b1c:	8f e2       	ldi	r24, 0x2F	; 47
+    1b1e:	90 e0       	ldi	r25, 0x00	; 0
+    1b20:	90 93 b2 06 	sts	0x06B2, r25
+    1b24:	80 93 b1 06 	sts	0x06B1, r24
+    1b28:	8e e2       	ldi	r24, 0x2E	; 46
+    1b2a:	90 e0       	ldi	r25, 0x00	; 0
+    1b2c:	90 93 b4 06 	sts	0x06B4, r25
+    1b30:	80 93 b3 06 	sts	0x06B3, r24
+    1b34:	10 92 b6 06 	sts	0x06B6, r1
+    1b38:	10 92 b5 06 	sts	0x06B5, r1
+    1b3c:	08 95       	ret
+    1b3e:	8a e2       	ldi	r24, 0x2A	; 42
+    1b40:	90 e0       	ldi	r25, 0x00	; 0
+    1b42:	60 e0       	ldi	r22, 0x00	; 0
+    1b44:	70 e0       	ldi	r23, 0x00	; 0
+    1b46:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1b4a:	8d e2       	ldi	r24, 0x2D	; 45
+    1b4c:	90 e0       	ldi	r25, 0x00	; 0
+    1b4e:	90 93 ae 06 	sts	0x06AE, r25
+    1b52:	80 93 ad 06 	sts	0x06AD, r24
+    1b56:	8c e2       	ldi	r24, 0x2C	; 44
+    1b58:	90 e0       	ldi	r25, 0x00	; 0
+    1b5a:	90 93 b0 06 	sts	0x06B0, r25
+    1b5e:	80 93 af 06 	sts	0x06AF, r24
+    1b62:	8f e2       	ldi	r24, 0x2F	; 47
+    1b64:	90 e0       	ldi	r25, 0x00	; 0
+    1b66:	90 93 b2 06 	sts	0x06B2, r25
+    1b6a:	80 93 b1 06 	sts	0x06B1, r24
+    1b6e:	8e e2       	ldi	r24, 0x2E	; 46
+    1b70:	90 e0       	ldi	r25, 0x00	; 0
+    1b72:	90 93 b4 06 	sts	0x06B4, r25
+    1b76:	80 93 b3 06 	sts	0x06B3, r24
+    1b7a:	8f ef       	ldi	r24, 0xFF	; 255
+    1b7c:	9f ef       	ldi	r25, 0xFF	; 255
+    1b7e:	0e 94 4a 0d 	call	0x1a94	; 0x1a94 <bom_set_leds>
+    1b82:	10 92 b6 06 	sts	0x06B6, r1
+    1b86:	10 92 b5 06 	sts	0x06B5, r1
+    1b8a:	08 95       	ret
+
+00001b8c <bom_refresh>:
+    1b8c:	af 92       	push	r10
+    1b8e:	bf 92       	push	r11
+    1b90:	cf 92       	push	r12
+    1b92:	df 92       	push	r13
+    1b94:	ef 92       	push	r14
+    1b96:	ff 92       	push	r15
+    1b98:	1f 93       	push	r17
+    1b9a:	cf 93       	push	r28
+    1b9c:	df 93       	push	r29
+    1b9e:	6c 01       	movw	r12, r24
+    1ba0:	0e 94 d9 1c 	call	0x39b2	; 0x39b2 <analog_loop_status>
+    1ba4:	01 97       	sbiw	r24, 0x01	; 1
+    1ba6:	19 f0       	breq	.+6      	; 0x1bae <bom_refresh+0x22>
+    1ba8:	aa 24       	eor	r10, r10
+    1baa:	bb 24       	eor	r11, r11
+    1bac:	05 c0       	rjmp	.+10     	; 0x1bb8 <bom_refresh+0x2c>
+    1bae:	0e 94 d2 1c 	call	0x39a4	; 0x39a4 <analog_stop_loop>
+    1bb2:	61 e0       	ldi	r22, 0x01	; 1
+    1bb4:	a6 2e       	mov	r10, r22
+    1bb6:	b1 2c       	mov	r11, r1
+    1bb8:	5d e8       	ldi	r21, 0x8D	; 141
+    1bba:	e5 2e       	mov	r14, r21
+    1bbc:	56 e0       	ldi	r21, 0x06	; 6
+    1bbe:	f5 2e       	mov	r15, r21
+    1bc0:	c0 e0       	ldi	r28, 0x00	; 0
+    1bc2:	d0 e0       	ldi	r29, 0x00	; 0
+    1bc4:	c0 fe       	sbrs	r12, 0
+    1bc6:	57 c0       	rjmp	.+174    	; 0x1c76 <bom_refresh+0xea>
+    1bc8:	ec 2f       	mov	r30, r28
+    1bca:	80 91 8c 06 	lds	r24, 0x068C
+    1bce:	88 23       	and	r24, r24
+    1bd0:	21 f4       	brne	.+8      	; 0x1bda <bom_refresh+0x4e>
+    1bd2:	fe 01       	movw	r30, r28
+    1bd4:	e9 59       	subi	r30, 0x99	; 153
+    1bd6:	fe 4f       	sbci	r31, 0xFE	; 254
+    1bd8:	e0 81       	ld	r30, Z
+    1bda:	1e 2f       	mov	r17, r30
+    1bdc:	e3 ff       	sbrs	r30, 3
+    1bde:	07 c0       	rjmp	.+14     	; 0x1bee <bom_refresh+0x62>
+    1be0:	80 91 b3 06 	lds	r24, 0x06B3
+    1be4:	90 91 b4 06 	lds	r25, 0x06B4
+    1be8:	61 e0       	ldi	r22, 0x01	; 1
+    1bea:	70 e0       	ldi	r23, 0x00	; 0
+    1bec:	06 c0       	rjmp	.+12     	; 0x1bfa <bom_refresh+0x6e>
+    1bee:	80 91 b3 06 	lds	r24, 0x06B3
+    1bf2:	90 91 b4 06 	lds	r25, 0x06B4
+    1bf6:	60 e0       	ldi	r22, 0x00	; 0
+    1bf8:	70 e0       	ldi	r23, 0x00	; 0
+    1bfa:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1bfe:	12 ff       	sbrs	r17, 2
+    1c00:	07 c0       	rjmp	.+14     	; 0x1c10 <bom_refresh+0x84>
+    1c02:	80 91 b1 06 	lds	r24, 0x06B1
+    1c06:	90 91 b2 06 	lds	r25, 0x06B2
+    1c0a:	61 e0       	ldi	r22, 0x01	; 1
+    1c0c:	70 e0       	ldi	r23, 0x00	; 0
+    1c0e:	06 c0       	rjmp	.+12     	; 0x1c1c <bom_refresh+0x90>
+    1c10:	80 91 b1 06 	lds	r24, 0x06B1
+    1c14:	90 91 b2 06 	lds	r25, 0x06B2
+    1c18:	60 e0       	ldi	r22, 0x00	; 0
+    1c1a:	70 e0       	ldi	r23, 0x00	; 0
+    1c1c:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1c20:	11 ff       	sbrs	r17, 1
+    1c22:	07 c0       	rjmp	.+14     	; 0x1c32 <bom_refresh+0xa6>
+    1c24:	80 91 af 06 	lds	r24, 0x06AF
+    1c28:	90 91 b0 06 	lds	r25, 0x06B0
+    1c2c:	61 e0       	ldi	r22, 0x01	; 1
+    1c2e:	70 e0       	ldi	r23, 0x00	; 0
+    1c30:	06 c0       	rjmp	.+12     	; 0x1c3e <bom_refresh+0xb2>
+    1c32:	80 91 af 06 	lds	r24, 0x06AF
+    1c36:	90 91 b0 06 	lds	r25, 0x06B0
+    1c3a:	60 e0       	ldi	r22, 0x00	; 0
+    1c3c:	70 e0       	ldi	r23, 0x00	; 0
+    1c3e:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1c42:	10 ff       	sbrs	r17, 0
+    1c44:	07 c0       	rjmp	.+14     	; 0x1c54 <bom_refresh+0xc8>
+    1c46:	80 91 ad 06 	lds	r24, 0x06AD
+    1c4a:	90 91 ae 06 	lds	r25, 0x06AE
+    1c4e:	61 e0       	ldi	r22, 0x01	; 1
+    1c50:	70 e0       	ldi	r23, 0x00	; 0
+    1c52:	06 c0       	rjmp	.+12     	; 0x1c60 <bom_refresh+0xd4>
+    1c54:	80 91 ad 06 	lds	r24, 0x06AD
+    1c58:	90 91 ae 06 	lds	r25, 0x06AE
+    1c5c:	60 e0       	ldi	r22, 0x00	; 0
+    1c5e:	70 e0       	ldi	r23, 0x00	; 0
+    1c60:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    1c64:	80 91 b5 06 	lds	r24, 0x06B5
+    1c68:	90 91 b6 06 	lds	r25, 0x06B6
+    1c6c:	0e 94 df 1c 	call	0x39be	; 0x39be <analog_get8>
+    1c70:	f7 01       	movw	r30, r14
+    1c72:	91 83       	std	Z+1, r25	; 0x01
+    1c74:	80 83       	st	Z, r24
+    1c76:	21 96       	adiw	r28, 0x01	; 1
+    1c78:	82 e0       	ldi	r24, 0x02	; 2
+    1c7a:	90 e0       	ldi	r25, 0x00	; 0
+    1c7c:	e8 0e       	add	r14, r24
+    1c7e:	f9 1e       	adc	r15, r25
+    1c80:	c0 31       	cpi	r28, 0x10	; 16
+    1c82:	d1 05       	cpc	r29, r1
+    1c84:	19 f0       	breq	.+6      	; 0x1c8c <bom_refresh+0x100>
+    1c86:	d5 94       	asr	r13
+    1c88:	c7 94       	ror	r12
+    1c8a:	9c cf       	rjmp	.-200    	; 0x1bc4 <bom_refresh+0x38>
+    1c8c:	ab 28       	or	r10, r11
+    1c8e:	11 f0       	breq	.+4      	; 0x1c94 <bom_refresh+0x108>
+    1c90:	0e 94 c3 1c 	call	0x3986	; 0x3986 <analog_start_loop>
+    1c94:	df 91       	pop	r29
+    1c96:	cf 91       	pop	r28
+    1c98:	1f 91       	pop	r17
+    1c9a:	ff 90       	pop	r15
+    1c9c:	ef 90       	pop	r14
+    1c9e:	df 90       	pop	r13
+    1ca0:	cf 90       	pop	r12
+    1ca2:	bf 90       	pop	r11
+    1ca4:	af 90       	pop	r10
+    1ca6:	08 95       	ret
+
+00001ca8 <get_max_bom>:
+    1ca8:	8f ef       	ldi	r24, 0xFF	; 255
+    1caa:	9f ef       	ldi	r25, 0xFF	; 255
+    1cac:	0e 94 c6 0d 	call	0x1b8c	; 0x1b8c <bom_refresh>
+    1cb0:	ed e8       	ldi	r30, 0x8D	; 141
+    1cb2:	f6 e0       	ldi	r31, 0x06	; 6
+    1cb4:	20 e0       	ldi	r18, 0x00	; 0
+    1cb6:	30 e0       	ldi	r19, 0x00	; 0
+    1cb8:	8f ef       	ldi	r24, 0xFF	; 255
+    1cba:	90 e0       	ldi	r25, 0x00	; 0
+    1cbc:	6f ef       	ldi	r22, 0xFF	; 255
+    1cbe:	7f ef       	ldi	r23, 0xFF	; 255
+    1cc0:	40 81       	ld	r20, Z
+    1cc2:	51 81       	ldd	r21, Z+1	; 0x01
+    1cc4:	48 17       	cp	r20, r24
+    1cc6:	59 07       	cpc	r21, r25
+    1cc8:	10 f4       	brcc	.+4      	; 0x1cce <get_max_bom+0x26>
+    1cca:	ca 01       	movw	r24, r20
+    1ccc:	b9 01       	movw	r22, r18
+    1cce:	2f 5f       	subi	r18, 0xFF	; 255
+    1cd0:	3f 4f       	sbci	r19, 0xFF	; 255
+    1cd2:	32 96       	adiw	r30, 0x02	; 2
+    1cd4:	20 31       	cpi	r18, 0x10	; 16
+    1cd6:	31 05       	cpc	r19, r1
+    1cd8:	99 f7       	brne	.-26     	; 0x1cc0 <get_max_bom+0x18>
+    1cda:	86 39       	cpi	r24, 0x96	; 150
+    1cdc:	91 05       	cpc	r25, r1
+    1cde:	14 f0       	brlt	.+4      	; 0x1ce4 <get_max_bom+0x3c>
+    1ce0:	6f ef       	ldi	r22, 0xFF	; 255
+    1ce2:	7f ef       	ldi	r23, 0xFF	; 255
+    1ce4:	cb 01       	movw	r24, r22
+    1ce6:	08 95       	ret
+
+00001ce8 <digital_input>:
+    1ce8:	ac 01       	movw	r20, r24
+    1cea:	47 70       	andi	r20, 0x07	; 7
+    1cec:	50 70       	andi	r21, 0x00	; 0
+    1cee:	9c 01       	movw	r18, r24
+    1cf0:	83 e0       	ldi	r24, 0x03	; 3
+    1cf2:	35 95       	asr	r19
+    1cf4:	27 95       	ror	r18
+    1cf6:	8a 95       	dec	r24
+    1cf8:	e1 f7       	brne	.-8      	; 0x1cf2 <digital_input+0xa>
+    1cfa:	24 30       	cpi	r18, 0x04	; 4
+    1cfc:	31 05       	cpc	r19, r1
+    1cfe:	09 f4       	brne	.+2      	; 0x1d02 <digital_input+0x1a>
+    1d00:	44 c0       	rjmp	.+136    	; 0x1d8a <digital_input+0xa2>
+    1d02:	25 30       	cpi	r18, 0x05	; 5
+    1d04:	31 05       	cpc	r19, r1
+    1d06:	54 f4       	brge	.+20     	; 0x1d1c <digital_input+0x34>
+    1d08:	22 30       	cpi	r18, 0x02	; 2
+    1d0a:	31 05       	cpc	r19, r1
+    1d0c:	11 f1       	breq	.+68     	; 0x1d52 <digital_input+0x6a>
+    1d0e:	23 30       	cpi	r18, 0x03	; 3
+    1d10:	31 05       	cpc	r19, r1
+    1d12:	6c f5       	brge	.+90     	; 0x1d6e <digital_input+0x86>
+    1d14:	21 30       	cpi	r18, 0x01	; 1
+    1d16:	31 05       	cpc	r19, r1
+    1d18:	61 f4       	brne	.+24     	; 0x1d32 <digital_input+0x4a>
+    1d1a:	0e c0       	rjmp	.+28     	; 0x1d38 <digital_input+0x50>
+    1d1c:	26 30       	cpi	r18, 0x06	; 6
+    1d1e:	31 05       	cpc	r19, r1
+    1d20:	09 f4       	brne	.+2      	; 0x1d24 <digital_input+0x3c>
+    1d22:	4f c0       	rjmp	.+158    	; 0x1dc2 <digital_input+0xda>
+    1d24:	26 30       	cpi	r18, 0x06	; 6
+    1d26:	31 05       	cpc	r19, r1
+    1d28:	f4 f1       	brlt	.+124    	; 0x1da6 <digital_input+0xbe>
+    1d2a:	27 30       	cpi	r18, 0x07	; 7
+    1d2c:	31 05       	cpc	r19, r1
+    1d2e:	09 f4       	brne	.+2      	; 0x1d32 <digital_input+0x4a>
+    1d30:	61 c0       	rjmp	.+194    	; 0x1df4 <digital_input+0x10c>
+    1d32:	2f ef       	ldi	r18, 0xFF	; 255
+    1d34:	3f ef       	ldi	r19, 0xFF	; 255
+    1d36:	77 c0       	rjmp	.+238    	; 0x1e26 <digital_input+0x13e>
+    1d38:	8a b3       	in	r24, 0x1a	; 26
+    1d3a:	04 2e       	mov	r0, r20
+    1d3c:	02 c0       	rjmp	.+4      	; 0x1d42 <digital_input+0x5a>
+    1d3e:	22 0f       	add	r18, r18
+    1d40:	33 1f       	adc	r19, r19
+    1d42:	0a 94       	dec	r0
+    1d44:	e2 f7       	brpl	.-8      	; 0x1d3e <digital_input+0x56>
+    1d46:	92 2f       	mov	r25, r18
+    1d48:	90 95       	com	r25
+    1d4a:	98 23       	and	r25, r24
+    1d4c:	9a bb       	out	0x1a, r25	; 26
+    1d4e:	89 b3       	in	r24, 0x19	; 25
+    1d50:	61 c0       	rjmp	.+194    	; 0x1e14 <digital_input+0x12c>
+    1d52:	87 b3       	in	r24, 0x17	; 23
+    1d54:	21 e0       	ldi	r18, 0x01	; 1
+    1d56:	30 e0       	ldi	r19, 0x00	; 0
+    1d58:	04 2e       	mov	r0, r20
+    1d5a:	02 c0       	rjmp	.+4      	; 0x1d60 <digital_input+0x78>
+    1d5c:	22 0f       	add	r18, r18
+    1d5e:	33 1f       	adc	r19, r19
+    1d60:	0a 94       	dec	r0
+    1d62:	e2 f7       	brpl	.-8      	; 0x1d5c <digital_input+0x74>
+    1d64:	20 95       	com	r18
+    1d66:	28 23       	and	r18, r24
+    1d68:	27 bb       	out	0x17, r18	; 23
+    1d6a:	86 b3       	in	r24, 0x16	; 22
+    1d6c:	53 c0       	rjmp	.+166    	; 0x1e14 <digital_input+0x12c>
+    1d6e:	84 b3       	in	r24, 0x14	; 20
+    1d70:	21 e0       	ldi	r18, 0x01	; 1
+    1d72:	30 e0       	ldi	r19, 0x00	; 0
+    1d74:	04 2e       	mov	r0, r20
+    1d76:	02 c0       	rjmp	.+4      	; 0x1d7c <digital_input+0x94>
+    1d78:	22 0f       	add	r18, r18
+    1d7a:	33 1f       	adc	r19, r19
+    1d7c:	0a 94       	dec	r0
+    1d7e:	e2 f7       	brpl	.-8      	; 0x1d78 <digital_input+0x90>
+    1d80:	20 95       	com	r18
+    1d82:	28 23       	and	r18, r24
+    1d84:	24 bb       	out	0x14, r18	; 20
+    1d86:	83 b3       	in	r24, 0x13	; 19
+    1d88:	45 c0       	rjmp	.+138    	; 0x1e14 <digital_input+0x12c>
+    1d8a:	81 b3       	in	r24, 0x11	; 17
+    1d8c:	21 e0       	ldi	r18, 0x01	; 1
+    1d8e:	30 e0       	ldi	r19, 0x00	; 0
+    1d90:	04 2e       	mov	r0, r20
+    1d92:	02 c0       	rjmp	.+4      	; 0x1d98 <digital_input+0xb0>
+    1d94:	22 0f       	add	r18, r18
+    1d96:	33 1f       	adc	r19, r19
+    1d98:	0a 94       	dec	r0
+    1d9a:	e2 f7       	brpl	.-8      	; 0x1d94 <digital_input+0xac>
+    1d9c:	20 95       	com	r18
+    1d9e:	28 23       	and	r18, r24
+    1da0:	21 bb       	out	0x11, r18	; 17
+    1da2:	80 b3       	in	r24, 0x10	; 16
+    1da4:	37 c0       	rjmp	.+110    	; 0x1e14 <digital_input+0x12c>
+    1da6:	82 b1       	in	r24, 0x02	; 2
+    1da8:	21 e0       	ldi	r18, 0x01	; 1
+    1daa:	30 e0       	ldi	r19, 0x00	; 0
+    1dac:	04 2e       	mov	r0, r20
+    1dae:	02 c0       	rjmp	.+4      	; 0x1db4 <digital_input+0xcc>
+    1db0:	22 0f       	add	r18, r18
+    1db2:	33 1f       	adc	r19, r19
+    1db4:	0a 94       	dec	r0
+    1db6:	e2 f7       	brpl	.-8      	; 0x1db0 <digital_input+0xc8>
+    1db8:	20 95       	com	r18
+    1dba:	28 23       	and	r18, r24
+    1dbc:	22 b9       	out	0x02, r18	; 2
+    1dbe:	81 b1       	in	r24, 0x01	; 1
+    1dc0:	29 c0       	rjmp	.+82     	; 0x1e14 <digital_input+0x12c>
+    1dc2:	44 30       	cpi	r20, 0x04	; 4
+    1dc4:	51 05       	cpc	r21, r1
+    1dc6:	34 f0       	brlt	.+12     	; 0x1dd4 <digital_input+0xec>
+    1dc8:	84 b7       	in	r24, 0x34	; 52
+    1dca:	80 68       	ori	r24, 0x80	; 128
+    1dcc:	84 bf       	out	0x34, r24	; 52
+    1dce:	84 b7       	in	r24, 0x34	; 52
+    1dd0:	80 68       	ori	r24, 0x80	; 128
+    1dd2:	84 bf       	out	0x34, r24	; 52
+    1dd4:	80 91 61 00 	lds	r24, 0x0061
+    1dd8:	21 e0       	ldi	r18, 0x01	; 1
+    1dda:	30 e0       	ldi	r19, 0x00	; 0
+    1ddc:	04 2e       	mov	r0, r20
+    1dde:	02 c0       	rjmp	.+4      	; 0x1de4 <digital_input+0xfc>
+    1de0:	22 0f       	add	r18, r18
+    1de2:	33 1f       	adc	r19, r19
+    1de4:	0a 94       	dec	r0
+    1de6:	e2 f7       	brpl	.-8      	; 0x1de0 <digital_input+0xf8>
+    1de8:	20 95       	com	r18
+    1dea:	28 23       	and	r18, r24
+    1dec:	20 93 61 00 	sts	0x0061, r18
+    1df0:	80 b1       	in	r24, 0x00	; 0
+    1df2:	10 c0       	rjmp	.+32     	; 0x1e14 <digital_input+0x12c>
+    1df4:	80 91 64 00 	lds	r24, 0x0064
+    1df8:	21 e0       	ldi	r18, 0x01	; 1
+    1dfa:	30 e0       	ldi	r19, 0x00	; 0
+    1dfc:	04 2e       	mov	r0, r20
+    1dfe:	02 c0       	rjmp	.+4      	; 0x1e04 <digital_input+0x11c>
+    1e00:	22 0f       	add	r18, r18
+    1e02:	33 1f       	adc	r19, r19
+    1e04:	0a 94       	dec	r0
+    1e06:	e2 f7       	brpl	.-8      	; 0x1e00 <digital_input+0x118>
+    1e08:	20 95       	com	r18
+    1e0a:	28 23       	and	r18, r24
+    1e0c:	20 93 64 00 	sts	0x0064, r18
+    1e10:	80 91 63 00 	lds	r24, 0x0063
+    1e14:	28 2f       	mov	r18, r24
+    1e16:	30 e0       	ldi	r19, 0x00	; 0
+    1e18:	02 c0       	rjmp	.+4      	; 0x1e1e <digital_input+0x136>
+    1e1a:	35 95       	asr	r19
+    1e1c:	27 95       	ror	r18
+    1e1e:	4a 95       	dec	r20
+    1e20:	e2 f7       	brpl	.-8      	; 0x1e1a <digital_input+0x132>
+    1e22:	21 70       	andi	r18, 0x01	; 1
+    1e24:	30 70       	andi	r19, 0x00	; 0
+    1e26:	c9 01       	movw	r24, r18
+    1e28:	08 95       	ret
+
+00001e2a <digital_pull_up>:
+    1e2a:	ac 01       	movw	r20, r24
+    1e2c:	47 70       	andi	r20, 0x07	; 7
+    1e2e:	50 70       	andi	r21, 0x00	; 0
+    1e30:	9c 01       	movw	r18, r24
+    1e32:	93 e0       	ldi	r25, 0x03	; 3
+    1e34:	35 95       	asr	r19
+    1e36:	27 95       	ror	r18
+    1e38:	9a 95       	dec	r25
+    1e3a:	e1 f7       	brne	.-8      	; 0x1e34 <digital_pull_up+0xa>
+    1e3c:	24 30       	cpi	r18, 0x04	; 4
+    1e3e:	31 05       	cpc	r19, r1
+    1e40:	c9 f1       	breq	.+114    	; 0x1eb4 <digital_pull_up+0x8a>
+    1e42:	25 30       	cpi	r18, 0x05	; 5
+    1e44:	31 05       	cpc	r19, r1
+    1e46:	5c f4       	brge	.+22     	; 0x1e5e <digital_pull_up+0x34>
+    1e48:	22 30       	cpi	r18, 0x02	; 2
+    1e4a:	31 05       	cpc	r19, r1
+    1e4c:	e9 f0       	breq	.+58     	; 0x1e88 <digital_pull_up+0x5e>
+    1e4e:	23 30       	cpi	r18, 0x03	; 3
+    1e50:	31 05       	cpc	r19, r1
+    1e52:	2c f5       	brge	.+74     	; 0x1e9e <digital_pull_up+0x74>
+    1e54:	21 30       	cpi	r18, 0x01	; 1
+    1e56:	31 05       	cpc	r19, r1
+    1e58:	09 f0       	breq	.+2      	; 0x1e5c <digital_pull_up+0x32>
+    1e5a:	5b c0       	rjmp	.+182    	; 0x1f12 <digital_pull_up+0xe8>
+    1e5c:	0c c0       	rjmp	.+24     	; 0x1e76 <digital_pull_up+0x4c>
+    1e5e:	26 30       	cpi	r18, 0x06	; 6
+    1e60:	31 05       	cpc	r19, r1
+    1e62:	09 f4       	brne	.+2      	; 0x1e66 <digital_pull_up+0x3c>
+    1e64:	3d c0       	rjmp	.+122    	; 0x1ee0 <digital_pull_up+0xb6>
+    1e66:	26 30       	cpi	r18, 0x06	; 6
+    1e68:	31 05       	cpc	r19, r1
+    1e6a:	7c f1       	brlt	.+94     	; 0x1eca <digital_pull_up+0xa0>
+    1e6c:	27 30       	cpi	r18, 0x07	; 7
+    1e6e:	31 05       	cpc	r19, r1
+    1e70:	09 f0       	breq	.+2      	; 0x1e74 <digital_pull_up+0x4a>
+    1e72:	4f c0       	rjmp	.+158    	; 0x1f12 <digital_pull_up+0xe8>
+    1e74:	42 c0       	rjmp	.+132    	; 0x1efa <digital_pull_up+0xd0>
+    1e76:	8b b3       	in	r24, 0x1b	; 27
+    1e78:	02 c0       	rjmp	.+4      	; 0x1e7e <digital_pull_up+0x54>
+    1e7a:	22 0f       	add	r18, r18
+    1e7c:	33 1f       	adc	r19, r19
+    1e7e:	4a 95       	dec	r20
+    1e80:	e2 f7       	brpl	.-8      	; 0x1e7a <digital_pull_up+0x50>
+    1e82:	82 2b       	or	r24, r18
+    1e84:	8b bb       	out	0x1b, r24	; 27
+    1e86:	08 95       	ret
+    1e88:	28 b3       	in	r18, 0x18	; 24
+    1e8a:	81 e0       	ldi	r24, 0x01	; 1
+    1e8c:	90 e0       	ldi	r25, 0x00	; 0
+    1e8e:	02 c0       	rjmp	.+4      	; 0x1e94 <digital_pull_up+0x6a>
+    1e90:	88 0f       	add	r24, r24
+    1e92:	99 1f       	adc	r25, r25
+    1e94:	4a 95       	dec	r20
+    1e96:	e2 f7       	brpl	.-8      	; 0x1e90 <digital_pull_up+0x66>
+    1e98:	28 2b       	or	r18, r24
+    1e9a:	28 bb       	out	0x18, r18	; 24
+    1e9c:	08 95       	ret
+    1e9e:	25 b3       	in	r18, 0x15	; 21
+    1ea0:	81 e0       	ldi	r24, 0x01	; 1
+    1ea2:	90 e0       	ldi	r25, 0x00	; 0
+    1ea4:	02 c0       	rjmp	.+4      	; 0x1eaa <digital_pull_up+0x80>
+    1ea6:	88 0f       	add	r24, r24
+    1ea8:	99 1f       	adc	r25, r25
+    1eaa:	4a 95       	dec	r20
+    1eac:	e2 f7       	brpl	.-8      	; 0x1ea6 <digital_pull_up+0x7c>
+    1eae:	28 2b       	or	r18, r24
+    1eb0:	25 bb       	out	0x15, r18	; 21
+    1eb2:	08 95       	ret
+    1eb4:	22 b3       	in	r18, 0x12	; 18
+    1eb6:	81 e0       	ldi	r24, 0x01	; 1
+    1eb8:	90 e0       	ldi	r25, 0x00	; 0
+    1eba:	02 c0       	rjmp	.+4      	; 0x1ec0 <digital_pull_up+0x96>
+    1ebc:	88 0f       	add	r24, r24
+    1ebe:	99 1f       	adc	r25, r25
+    1ec0:	4a 95       	dec	r20
+    1ec2:	e2 f7       	brpl	.-8      	; 0x1ebc <digital_pull_up+0x92>
+    1ec4:	28 2b       	or	r18, r24
+    1ec6:	22 bb       	out	0x12, r18	; 18
+    1ec8:	08 95       	ret
+    1eca:	23 b1       	in	r18, 0x03	; 3
+    1ecc:	81 e0       	ldi	r24, 0x01	; 1
+    1ece:	90 e0       	ldi	r25, 0x00	; 0
+    1ed0:	02 c0       	rjmp	.+4      	; 0x1ed6 <digital_pull_up+0xac>
+    1ed2:	88 0f       	add	r24, r24
+    1ed4:	99 1f       	adc	r25, r25
+    1ed6:	4a 95       	dec	r20
+    1ed8:	e2 f7       	brpl	.-8      	; 0x1ed2 <digital_pull_up+0xa8>
+    1eda:	28 2b       	or	r18, r24
+    1edc:	23 b9       	out	0x03, r18	; 3
+    1ede:	08 95       	ret
+    1ee0:	20 91 62 00 	lds	r18, 0x0062
+    1ee4:	81 e0       	ldi	r24, 0x01	; 1
+    1ee6:	90 e0       	ldi	r25, 0x00	; 0
+    1ee8:	02 c0       	rjmp	.+4      	; 0x1eee <digital_pull_up+0xc4>
+    1eea:	88 0f       	add	r24, r24
+    1eec:	99 1f       	adc	r25, r25
+    1eee:	4a 95       	dec	r20
+    1ef0:	e2 f7       	brpl	.-8      	; 0x1eea <digital_pull_up+0xc0>
+    1ef2:	28 2b       	or	r18, r24
+    1ef4:	20 93 62 00 	sts	0x0062, r18
+    1ef8:	08 95       	ret
+    1efa:	20 91 65 00 	lds	r18, 0x0065
+    1efe:	81 e0       	ldi	r24, 0x01	; 1
+    1f00:	90 e0       	ldi	r25, 0x00	; 0
+    1f02:	02 c0       	rjmp	.+4      	; 0x1f08 <digital_pull_up+0xde>
+    1f04:	88 0f       	add	r24, r24
+    1f06:	99 1f       	adc	r25, r25
+    1f08:	4a 95       	dec	r20
+    1f0a:	e2 f7       	brpl	.-8      	; 0x1f04 <digital_pull_up+0xda>
+    1f0c:	28 2b       	or	r18, r24
+    1f0e:	20 93 65 00 	sts	0x0065, r18
+    1f12:	08 95       	ret
+
+00001f14 <digital_output>:
+    1f14:	ac 01       	movw	r20, r24
+    1f16:	47 70       	andi	r20, 0x07	; 7
+    1f18:	50 70       	andi	r21, 0x00	; 0
+    1f1a:	9c 01       	movw	r18, r24
+    1f1c:	53 e0       	ldi	r21, 0x03	; 3
+    1f1e:	35 95       	asr	r19
+    1f20:	27 95       	ror	r18
+    1f22:	5a 95       	dec	r21
+    1f24:	e1 f7       	brne	.-8      	; 0x1f1e <digital_output+0xa>
+    1f26:	67 2b       	or	r22, r23
+    1f28:	09 f0       	breq	.+2      	; 0x1f2c <digital_output+0x18>
+    1f2a:	88 c0       	rjmp	.+272    	; 0x203c <digital_output+0x128>
+    1f2c:	24 30       	cpi	r18, 0x04	; 4
+    1f2e:	31 05       	cpc	r19, r1
+    1f30:	09 f4       	brne	.+2      	; 0x1f34 <digital_output+0x20>
+    1f32:	44 c0       	rjmp	.+136    	; 0x1fbc <digital_output+0xa8>
+    1f34:	25 30       	cpi	r18, 0x05	; 5
+    1f36:	31 05       	cpc	r19, r1
+    1f38:	5c f4       	brge	.+22     	; 0x1f50 <digital_output+0x3c>
+    1f3a:	22 30       	cpi	r18, 0x02	; 2
+    1f3c:	31 05       	cpc	r19, r1
+    1f3e:	11 f1       	breq	.+68     	; 0x1f84 <digital_output+0x70>
+    1f40:	23 30       	cpi	r18, 0x03	; 3
+    1f42:	31 05       	cpc	r19, r1
+    1f44:	6c f5       	brge	.+90     	; 0x1fa0 <digital_output+0x8c>
+    1f46:	21 30       	cpi	r18, 0x01	; 1
+    1f48:	31 05       	cpc	r19, r1
+    1f4a:	09 f0       	breq	.+2      	; 0x1f4e <digital_output+0x3a>
+    1f4c:	fe c0       	rjmp	.+508    	; 0x214a <digital_output+0x236>
+    1f4e:	0d c0       	rjmp	.+26     	; 0x1f6a <digital_output+0x56>
+    1f50:	26 30       	cpi	r18, 0x06	; 6
+    1f52:	31 05       	cpc	r19, r1
+    1f54:	09 f4       	brne	.+2      	; 0x1f58 <digital_output+0x44>
+    1f56:	4e c0       	rjmp	.+156    	; 0x1ff4 <digital_output+0xe0>
+    1f58:	26 30       	cpi	r18, 0x06	; 6
+    1f5a:	31 05       	cpc	r19, r1
+    1f5c:	0c f4       	brge	.+2      	; 0x1f60 <digital_output+0x4c>
+    1f5e:	3c c0       	rjmp	.+120    	; 0x1fd8 <digital_output+0xc4>
+    1f60:	27 30       	cpi	r18, 0x07	; 7
+    1f62:	31 05       	cpc	r19, r1
+    1f64:	09 f0       	breq	.+2      	; 0x1f68 <digital_output+0x54>
+    1f66:	f1 c0       	rjmp	.+482    	; 0x214a <digital_output+0x236>
+    1f68:	56 c0       	rjmp	.+172    	; 0x2016 <digital_output+0x102>
+    1f6a:	8a b3       	in	r24, 0x1a	; 26
+    1f6c:	02 c0       	rjmp	.+4      	; 0x1f72 <digital_output+0x5e>
+    1f6e:	22 0f       	add	r18, r18
+    1f70:	33 1f       	adc	r19, r19
+    1f72:	4a 95       	dec	r20
+    1f74:	e2 f7       	brpl	.-8      	; 0x1f6e <digital_output+0x5a>
+    1f76:	82 2b       	or	r24, r18
+    1f78:	8a bb       	out	0x1a, r24	; 26
+    1f7a:	8b b3       	in	r24, 0x1b	; 27
+    1f7c:	20 95       	com	r18
+    1f7e:	28 23       	and	r18, r24
+    1f80:	2b bb       	out	0x1b, r18	; 27
+    1f82:	08 95       	ret
+    1f84:	87 b3       	in	r24, 0x17	; 23
+    1f86:	21 e0       	ldi	r18, 0x01	; 1
+    1f88:	30 e0       	ldi	r19, 0x00	; 0
+    1f8a:	02 c0       	rjmp	.+4      	; 0x1f90 <digital_output+0x7c>
+    1f8c:	22 0f       	add	r18, r18
+    1f8e:	33 1f       	adc	r19, r19
+    1f90:	4a 95       	dec	r20
+    1f92:	e2 f7       	brpl	.-8      	; 0x1f8c <digital_output+0x78>
+    1f94:	82 2b       	or	r24, r18
+    1f96:	87 bb       	out	0x17, r24	; 23
+    1f98:	88 b3       	in	r24, 0x18	; 24
+    1f9a:	20 95       	com	r18
+    1f9c:	28 23       	and	r18, r24
+    1f9e:	86 c0       	rjmp	.+268    	; 0x20ac <digital_output+0x198>
+    1fa0:	84 b3       	in	r24, 0x14	; 20
+    1fa2:	21 e0       	ldi	r18, 0x01	; 1
+    1fa4:	30 e0       	ldi	r19, 0x00	; 0
+    1fa6:	02 c0       	rjmp	.+4      	; 0x1fac <digital_output+0x98>
+    1fa8:	22 0f       	add	r18, r18
+    1faa:	33 1f       	adc	r19, r19
+    1fac:	4a 95       	dec	r20
+    1fae:	e2 f7       	brpl	.-8      	; 0x1fa8 <digital_output+0x94>
+    1fb0:	82 2b       	or	r24, r18
+    1fb2:	84 bb       	out	0x14, r24	; 20
+    1fb4:	85 b3       	in	r24, 0x15	; 21
+    1fb6:	20 95       	com	r18
+    1fb8:	28 23       	and	r18, r24
+    1fba:	86 c0       	rjmp	.+268    	; 0x20c8 <digital_output+0x1b4>
+    1fbc:	81 b3       	in	r24, 0x11	; 17
+    1fbe:	21 e0       	ldi	r18, 0x01	; 1
+    1fc0:	30 e0       	ldi	r19, 0x00	; 0
+    1fc2:	02 c0       	rjmp	.+4      	; 0x1fc8 <digital_output+0xb4>
+    1fc4:	22 0f       	add	r18, r18
+    1fc6:	33 1f       	adc	r19, r19
+    1fc8:	4a 95       	dec	r20
+    1fca:	e2 f7       	brpl	.-8      	; 0x1fc4 <digital_output+0xb0>
+    1fcc:	82 2b       	or	r24, r18
+    1fce:	81 bb       	out	0x11, r24	; 17
+    1fd0:	82 b3       	in	r24, 0x12	; 18
+    1fd2:	20 95       	com	r18
+    1fd4:	28 23       	and	r18, r24
+    1fd6:	86 c0       	rjmp	.+268    	; 0x20e4 <digital_output+0x1d0>
+    1fd8:	82 b1       	in	r24, 0x02	; 2
+    1fda:	21 e0       	ldi	r18, 0x01	; 1
+    1fdc:	30 e0       	ldi	r19, 0x00	; 0
+    1fde:	02 c0       	rjmp	.+4      	; 0x1fe4 <digital_output+0xd0>
+    1fe0:	22 0f       	add	r18, r18
+    1fe2:	33 1f       	adc	r19, r19
+    1fe4:	4a 95       	dec	r20
+    1fe6:	e2 f7       	brpl	.-8      	; 0x1fe0 <digital_output+0xcc>
+    1fe8:	82 2b       	or	r24, r18
+    1fea:	82 b9       	out	0x02, r24	; 2
+    1fec:	83 b1       	in	r24, 0x03	; 3
+    1fee:	20 95       	com	r18
+    1ff0:	28 23       	and	r18, r24
+    1ff2:	86 c0       	rjmp	.+268    	; 0x2100 <digital_output+0x1ec>
+    1ff4:	80 91 61 00 	lds	r24, 0x0061
+    1ff8:	21 e0       	ldi	r18, 0x01	; 1
+    1ffa:	30 e0       	ldi	r19, 0x00	; 0
+    1ffc:	02 c0       	rjmp	.+4      	; 0x2002 <digital_output+0xee>
+    1ffe:	22 0f       	add	r18, r18
+    2000:	33 1f       	adc	r19, r19
+    2002:	4a 95       	dec	r20
+    2004:	e2 f7       	brpl	.-8      	; 0x1ffe <digital_output+0xea>
+    2006:	82 2b       	or	r24, r18
+    2008:	80 93 61 00 	sts	0x0061, r24
+    200c:	80 91 62 00 	lds	r24, 0x0062
+    2010:	20 95       	com	r18
+    2012:	28 23       	and	r18, r24
+    2014:	86 c0       	rjmp	.+268    	; 0x2122 <digital_output+0x20e>
+    2016:	80 91 64 00 	lds	r24, 0x0064
+    201a:	21 e0       	ldi	r18, 0x01	; 1
+    201c:	30 e0       	ldi	r19, 0x00	; 0
+    201e:	02 c0       	rjmp	.+4      	; 0x2024 <digital_output+0x110>
+    2020:	22 0f       	add	r18, r18
+    2022:	33 1f       	adc	r19, r19
+    2024:	4a 95       	dec	r20
+    2026:	e2 f7       	brpl	.-8      	; 0x2020 <digital_output+0x10c>
+    2028:	82 2b       	or	r24, r18
+    202a:	80 93 64 00 	sts	0x0064, r24
+    202e:	80 91 65 00 	lds	r24, 0x0065
+    2032:	20 95       	com	r18
+    2034:	28 23       	and	r18, r24
+    2036:	20 93 65 00 	sts	0x0065, r18
+    203a:	08 95       	ret
+    203c:	24 30       	cpi	r18, 0x04	; 4
+    203e:	31 05       	cpc	r19, r1
+    2040:	09 f4       	brne	.+2      	; 0x2044 <digital_output+0x130>
+    2042:	44 c0       	rjmp	.+136    	; 0x20cc <digital_output+0x1b8>
+    2044:	25 30       	cpi	r18, 0x05	; 5
+    2046:	31 05       	cpc	r19, r1
+    2048:	5c f4       	brge	.+22     	; 0x2060 <digital_output+0x14c>
+    204a:	22 30       	cpi	r18, 0x02	; 2
+    204c:	31 05       	cpc	r19, r1
+    204e:	11 f1       	breq	.+68     	; 0x2094 <digital_output+0x180>
+    2050:	23 30       	cpi	r18, 0x03	; 3
+    2052:	31 05       	cpc	r19, r1
+    2054:	6c f5       	brge	.+90     	; 0x20b0 <digital_output+0x19c>
+    2056:	21 30       	cpi	r18, 0x01	; 1
+    2058:	31 05       	cpc	r19, r1
+    205a:	09 f0       	breq	.+2      	; 0x205e <digital_output+0x14a>
+    205c:	76 c0       	rjmp	.+236    	; 0x214a <digital_output+0x236>
+    205e:	0d c0       	rjmp	.+26     	; 0x207a <digital_output+0x166>
+    2060:	26 30       	cpi	r18, 0x06	; 6
+    2062:	31 05       	cpc	r19, r1
+    2064:	09 f4       	brne	.+2      	; 0x2068 <digital_output+0x154>
+    2066:	4e c0       	rjmp	.+156    	; 0x2104 <digital_output+0x1f0>
+    2068:	26 30       	cpi	r18, 0x06	; 6
+    206a:	31 05       	cpc	r19, r1
+    206c:	0c f4       	brge	.+2      	; 0x2070 <digital_output+0x15c>
+    206e:	3c c0       	rjmp	.+120    	; 0x20e8 <digital_output+0x1d4>
+    2070:	27 30       	cpi	r18, 0x07	; 7
+    2072:	31 05       	cpc	r19, r1
+    2074:	09 f0       	breq	.+2      	; 0x2078 <digital_output+0x164>
+    2076:	69 c0       	rjmp	.+210    	; 0x214a <digital_output+0x236>
+    2078:	57 c0       	rjmp	.+174    	; 0x2128 <digital_output+0x214>
+    207a:	8a b3       	in	r24, 0x1a	; 26
+    207c:	02 c0       	rjmp	.+4      	; 0x2082 <digital_output+0x16e>
+    207e:	22 0f       	add	r18, r18
+    2080:	33 1f       	adc	r19, r19
+    2082:	4a 95       	dec	r20
+    2084:	e2 f7       	brpl	.-8      	; 0x207e <digital_output+0x16a>
+    2086:	92 2f       	mov	r25, r18
+    2088:	82 2b       	or	r24, r18
+    208a:	8a bb       	out	0x1a, r24	; 26
+    208c:	8b b3       	in	r24, 0x1b	; 27
+    208e:	98 2b       	or	r25, r24
+    2090:	9b bb       	out	0x1b, r25	; 27
+    2092:	08 95       	ret
+    2094:	87 b3       	in	r24, 0x17	; 23
+    2096:	21 e0       	ldi	r18, 0x01	; 1
+    2098:	30 e0       	ldi	r19, 0x00	; 0
+    209a:	02 c0       	rjmp	.+4      	; 0x20a0 <digital_output+0x18c>
+    209c:	22 0f       	add	r18, r18
+    209e:	33 1f       	adc	r19, r19
+    20a0:	4a 95       	dec	r20
+    20a2:	e2 f7       	brpl	.-8      	; 0x209c <digital_output+0x188>
+    20a4:	82 2b       	or	r24, r18
+    20a6:	87 bb       	out	0x17, r24	; 23
+    20a8:	88 b3       	in	r24, 0x18	; 24
+    20aa:	28 2b       	or	r18, r24
+    20ac:	28 bb       	out	0x18, r18	; 24
+    20ae:	08 95       	ret
+    20b0:	84 b3       	in	r24, 0x14	; 20
+    20b2:	21 e0       	ldi	r18, 0x01	; 1
+    20b4:	30 e0       	ldi	r19, 0x00	; 0
+    20b6:	02 c0       	rjmp	.+4      	; 0x20bc <digital_output+0x1a8>
+    20b8:	22 0f       	add	r18, r18
+    20ba:	33 1f       	adc	r19, r19
+    20bc:	4a 95       	dec	r20
+    20be:	e2 f7       	brpl	.-8      	; 0x20b8 <digital_output+0x1a4>
+    20c0:	82 2b       	or	r24, r18
+    20c2:	84 bb       	out	0x14, r24	; 20
+    20c4:	85 b3       	in	r24, 0x15	; 21
+    20c6:	28 2b       	or	r18, r24
+    20c8:	25 bb       	out	0x15, r18	; 21
+    20ca:	08 95       	ret
+    20cc:	81 b3       	in	r24, 0x11	; 17
+    20ce:	21 e0       	ldi	r18, 0x01	; 1
+    20d0:	30 e0       	ldi	r19, 0x00	; 0
+    20d2:	02 c0       	rjmp	.+4      	; 0x20d8 <digital_output+0x1c4>
+    20d4:	22 0f       	add	r18, r18
+    20d6:	33 1f       	adc	r19, r19
+    20d8:	4a 95       	dec	r20
+    20da:	e2 f7       	brpl	.-8      	; 0x20d4 <digital_output+0x1c0>
+    20dc:	82 2b       	or	r24, r18
+    20de:	81 bb       	out	0x11, r24	; 17
+    20e0:	82 b3       	in	r24, 0x12	; 18
+    20e2:	28 2b       	or	r18, r24
+    20e4:	22 bb       	out	0x12, r18	; 18
+    20e6:	08 95       	ret
+    20e8:	82 b1       	in	r24, 0x02	; 2
+    20ea:	21 e0       	ldi	r18, 0x01	; 1
+    20ec:	30 e0       	ldi	r19, 0x00	; 0
+    20ee:	02 c0       	rjmp	.+4      	; 0x20f4 <digital_output+0x1e0>
+    20f0:	22 0f       	add	r18, r18
+    20f2:	33 1f       	adc	r19, r19
+    20f4:	4a 95       	dec	r20
+    20f6:	e2 f7       	brpl	.-8      	; 0x20f0 <digital_output+0x1dc>
+    20f8:	82 2b       	or	r24, r18
+    20fa:	82 b9       	out	0x02, r24	; 2
+    20fc:	83 b1       	in	r24, 0x03	; 3
+    20fe:	28 2b       	or	r18, r24
+    2100:	23 b9       	out	0x03, r18	; 3
+    2102:	08 95       	ret
+    2104:	80 91 61 00 	lds	r24, 0x0061
+    2108:	21 e0       	ldi	r18, 0x01	; 1
+    210a:	30 e0       	ldi	r19, 0x00	; 0
+    210c:	02 c0       	rjmp	.+4      	; 0x2112 <digital_output+0x1fe>
+    210e:	22 0f       	add	r18, r18
+    2110:	33 1f       	adc	r19, r19
+    2112:	4a 95       	dec	r20
+    2114:	e2 f7       	brpl	.-8      	; 0x210e <digital_output+0x1fa>
+    2116:	82 2b       	or	r24, r18
+    2118:	80 93 61 00 	sts	0x0061, r24
+    211c:	80 91 62 00 	lds	r24, 0x0062
+    2120:	28 2b       	or	r18, r24
+    2122:	20 93 62 00 	sts	0x0062, r18
+    2126:	08 95       	ret
+    2128:	80 91 64 00 	lds	r24, 0x0064
+    212c:	21 e0       	ldi	r18, 0x01	; 1
+    212e:	30 e0       	ldi	r19, 0x00	; 0
+    2130:	02 c0       	rjmp	.+4      	; 0x2136 <digital_output+0x222>
+    2132:	22 0f       	add	r18, r18
+    2134:	33 1f       	adc	r19, r19
+    2136:	4a 95       	dec	r20
+    2138:	e2 f7       	brpl	.-8      	; 0x2132 <digital_output+0x21e>
+    213a:	82 2b       	or	r24, r18
+    213c:	80 93 64 00 	sts	0x0064, r24
+    2140:	80 91 65 00 	lds	r24, 0x0065
+    2144:	28 2b       	or	r18, r24
+    2146:	20 93 65 00 	sts	0x0065, r18
+    214a:	08 95       	ret
+
+0000214c <button1_read>:
+    214c:	e4 e6       	ldi	r30, 0x64	; 100
+    214e:	f0 e0       	ldi	r31, 0x00	; 0
+    2150:	80 81       	ld	r24, Z
+    2152:	8e 7f       	andi	r24, 0xFE	; 254
+    2154:	80 83       	st	Z, r24
+    2156:	e5 e6       	ldi	r30, 0x65	; 101
+    2158:	f0 e0       	ldi	r31, 0x00	; 0
+    215a:	80 81       	ld	r24, Z
+    215c:	81 60       	ori	r24, 0x01	; 1
+    215e:	80 83       	st	Z, r24
+    2160:	20 91 63 00 	lds	r18, 0x0063
+    2164:	30 e0       	ldi	r19, 0x00	; 0
+    2166:	20 95       	com	r18
+    2168:	30 95       	com	r19
+    216a:	21 70       	andi	r18, 0x01	; 1
+    216c:	30 70       	andi	r19, 0x00	; 0
+    216e:	c9 01       	movw	r24, r18
+    2170:	08 95       	ret
+
+00002172 <button1_click>:
+    2172:	80 91 64 00 	lds	r24, 0x0064
+    2176:	8e 7f       	andi	r24, 0xFE	; 254
+    2178:	80 93 64 00 	sts	0x0064, r24
+    217c:	80 91 65 00 	lds	r24, 0x0065
+    2180:	81 60       	ori	r24, 0x01	; 1
+    2182:	80 93 65 00 	sts	0x0065, r24
+    2186:	80 91 63 00 	lds	r24, 0x0063
+    218a:	80 ff       	sbrs	r24, 0
+    218c:	03 c0       	rjmp	.+6      	; 0x2194 <button1_click+0x22>
+    218e:	20 e0       	ldi	r18, 0x00	; 0
+    2190:	30 e0       	ldi	r19, 0x00	; 0
+    2192:	10 c0       	rjmp	.+32     	; 0x21b4 <button1_click+0x42>
+    2194:	80 91 64 00 	lds	r24, 0x0064
+    2198:	8e 7f       	andi	r24, 0xFE	; 254
+    219a:	80 93 64 00 	sts	0x0064, r24
+    219e:	80 91 65 00 	lds	r24, 0x0065
+    21a2:	81 60       	ori	r24, 0x01	; 1
+    21a4:	80 93 65 00 	sts	0x0065, r24
+    21a8:	80 91 63 00 	lds	r24, 0x0063
+    21ac:	80 ff       	sbrs	r24, 0
+    21ae:	f2 cf       	rjmp	.-28     	; 0x2194 <button1_click+0x22>
+    21b0:	21 e0       	ldi	r18, 0x01	; 1
+    21b2:	30 e0       	ldi	r19, 0x00	; 0
+    21b4:	c9 01       	movw	r24, r18
+    21b6:	08 95       	ret
+
+000021b8 <button2_read>:
+    21b8:	e4 e6       	ldi	r30, 0x64	; 100
+    21ba:	f0 e0       	ldi	r31, 0x00	; 0
+    21bc:	80 81       	ld	r24, Z
+    21be:	8d 7f       	andi	r24, 0xFD	; 253
+    21c0:	80 83       	st	Z, r24
+    21c2:	e5 e6       	ldi	r30, 0x65	; 101
+    21c4:	f0 e0       	ldi	r31, 0x00	; 0
+    21c6:	80 81       	ld	r24, Z
+    21c8:	82 60       	ori	r24, 0x02	; 2
+    21ca:	80 83       	st	Z, r24
+    21cc:	20 91 63 00 	lds	r18, 0x0063
+    21d0:	30 e0       	ldi	r19, 0x00	; 0
+    21d2:	36 95       	lsr	r19
+    21d4:	27 95       	ror	r18
+    21d6:	20 95       	com	r18
+    21d8:	30 95       	com	r19
+    21da:	21 70       	andi	r18, 0x01	; 1
+    21dc:	30 70       	andi	r19, 0x00	; 0
+    21de:	c9 01       	movw	r24, r18
+    21e0:	08 95       	ret
+
+000021e2 <button2_click>:
+    21e2:	80 91 64 00 	lds	r24, 0x0064
+    21e6:	8d 7f       	andi	r24, 0xFD	; 253
+    21e8:	80 93 64 00 	sts	0x0064, r24
+    21ec:	80 91 65 00 	lds	r24, 0x0065
+    21f0:	82 60       	ori	r24, 0x02	; 2
+    21f2:	80 93 65 00 	sts	0x0065, r24
+    21f6:	80 91 63 00 	lds	r24, 0x0063
+    21fa:	81 ff       	sbrs	r24, 1
+    21fc:	03 c0       	rjmp	.+6      	; 0x2204 <button2_click+0x22>
+    21fe:	20 e0       	ldi	r18, 0x00	; 0
+    2200:	30 e0       	ldi	r19, 0x00	; 0
+    2202:	10 c0       	rjmp	.+32     	; 0x2224 <button2_click+0x42>
+    2204:	80 91 64 00 	lds	r24, 0x0064
+    2208:	8d 7f       	andi	r24, 0xFD	; 253
+    220a:	80 93 64 00 	sts	0x0064, r24
+    220e:	80 91 65 00 	lds	r24, 0x0065
+    2212:	82 60       	ori	r24, 0x02	; 2
+    2214:	80 93 65 00 	sts	0x0065, r24
+    2218:	80 91 63 00 	lds	r24, 0x0063
+    221c:	81 ff       	sbrs	r24, 1
+    221e:	f2 cf       	rjmp	.-28     	; 0x2204 <button2_click+0x22>
+    2220:	21 e0       	ldi	r18, 0x01	; 1
+    2222:	30 e0       	ldi	r19, 0x00	; 0
+    2224:	c9 01       	movw	r24, r18
+    2226:	08 95       	ret
+
+00002228 <button2_wait>:
+    2228:	04 c0       	rjmp	.+8      	; 0x2232 <button2_wait+0xa>
+    222a:	8f e0       	ldi	r24, 0x0F	; 15
+    222c:	90 e0       	ldi	r25, 0x00	; 0
+    222e:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    2232:	80 91 64 00 	lds	r24, 0x0064
+    2236:	8d 7f       	andi	r24, 0xFD	; 253
+    2238:	80 93 64 00 	sts	0x0064, r24
+    223c:	80 91 65 00 	lds	r24, 0x0065
+    2240:	82 60       	ori	r24, 0x02	; 2
+    2242:	80 93 65 00 	sts	0x0065, r24
+    2246:	80 91 63 00 	lds	r24, 0x0063
+    224a:	81 fd       	sbrc	r24, 1
+    224c:	ee cf       	rjmp	.-36     	; 0x222a <button2_wait+0x2>
+    224e:	08 95       	ret
+
+00002250 <button1_wait>:
+    2250:	04 c0       	rjmp	.+8      	; 0x225a <button1_wait+0xa>
+    2252:	8f e0       	ldi	r24, 0x0F	; 15
+    2254:	90 e0       	ldi	r25, 0x00	; 0
+    2256:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    225a:	80 91 64 00 	lds	r24, 0x0064
+    225e:	8e 7f       	andi	r24, 0xFE	; 254
+    2260:	80 93 64 00 	sts	0x0064, r24
+    2264:	80 91 65 00 	lds	r24, 0x0065
+    2268:	81 60       	ori	r24, 0x01	; 1
+    226a:	80 93 65 00 	sts	0x0065, r24
+    226e:	80 91 63 00 	lds	r24, 0x0063
+    2272:	80 fd       	sbrc	r24, 0
+    2274:	ee cf       	rjmp	.-36     	; 0x2252 <button1_wait+0x2>
+    2276:	08 95       	ret
+
+00002278 <flash_red>:
+    2278:	ef 92       	push	r14
+    227a:	ff 92       	push	r15
+    227c:	0f 93       	push	r16
+    227e:	1f 93       	push	r17
+    2280:	f8 94       	cli
+    2282:	f4 b2       	in	r15, 0x14	; 20
+    2284:	e5 b2       	in	r14, 0x15	; 21
+    2286:	17 e7       	ldi	r17, 0x77	; 119
+    2288:	14 bb       	out	0x14, r17	; 20
+    228a:	15 bb       	out	0x15, r17	; 21
+    228c:	8c e2       	ldi	r24, 0x2C	; 44
+    228e:	91 e0       	ldi	r25, 0x01	; 1
+    2290:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    2294:	06 e6       	ldi	r16, 0x66	; 102
+    2296:	05 bb       	out	0x15, r16	; 21
+    2298:	8c e2       	ldi	r24, 0x2C	; 44
+    229a:	91 e0       	ldi	r25, 0x01	; 1
+    229c:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    22a0:	15 bb       	out	0x15, r17	; 21
+    22a2:	8c e2       	ldi	r24, 0x2C	; 44
+    22a4:	91 e0       	ldi	r25, 0x01	; 1
+    22a6:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    22aa:	05 bb       	out	0x15, r16	; 21
+    22ac:	8c e2       	ldi	r24, 0x2C	; 44
+    22ae:	91 e0       	ldi	r25, 0x01	; 1
+    22b0:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    22b4:	15 bb       	out	0x15, r17	; 21
+    22b6:	8c e2       	ldi	r24, 0x2C	; 44
+    22b8:	91 e0       	ldi	r25, 0x01	; 1
+    22ba:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    22be:	05 bb       	out	0x15, r16	; 21
+    22c0:	8c e2       	ldi	r24, 0x2C	; 44
+    22c2:	91 e0       	ldi	r25, 0x01	; 1
+    22c4:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    22c8:	f4 ba       	out	0x14, r15	; 20
+    22ca:	e5 ba       	out	0x15, r14	; 21
+    22cc:	78 94       	sei
+    22ce:	1f 91       	pop	r17
+    22d0:	0f 91       	pop	r16
+    22d2:	ff 90       	pop	r15
+    22d4:	ef 90       	pop	r14
+    22d6:	08 95       	ret
+
+000022d8 <dragonfly_init>:
+    22d8:	cf 93       	push	r28
+    22da:	df 93       	push	r29
+    22dc:	ec 01       	movw	r28, r24
+    22de:	78 94       	sei
+    22e0:	80 91 64 00 	lds	r24, 0x0064
+    22e4:	8c 7f       	andi	r24, 0xFC	; 252
+    22e6:	80 93 64 00 	sts	0x0064, r24
+    22ea:	80 91 65 00 	lds	r24, 0x0065
+    22ee:	83 60       	ori	r24, 0x03	; 3
+    22f0:	80 93 65 00 	sts	0x0065, r24
+    22f4:	c0 ff       	sbrs	r28, 0
+    22f6:	04 c0       	rjmp	.+8      	; 0x2300 <dragonfly_init+0x28>
+    22f8:	81 e0       	ldi	r24, 0x01	; 1
+    22fa:	90 e0       	ldi	r25, 0x00	; 0
+    22fc:	0e 94 67 1c 	call	0x38ce	; 0x38ce <analog_init>
+    2300:	c1 ff       	sbrs	r28, 1
+    2302:	04 c0       	rjmp	.+8      	; 0x230c <dragonfly_init+0x34>
+    2304:	0e 94 5c 1a 	call	0x34b8	; 0x34b8 <usb_init>
+    2308:	0e 94 6a 1a 	call	0x34d4	; 0x34d4 <xbee_init>
+    230c:	c6 ff       	sbrs	r28, 6
+    230e:	03 c0       	rjmp	.+6      	; 0x2316 <dragonfly_init+0x3e>
+    2310:	78 94       	sei
+    2312:	0e 94 fe 1d 	call	0x3bfc	; 0x3bfc <buzzer_init>
+    2316:	c2 ff       	sbrs	r28, 2
+    2318:	03 c0       	rjmp	.+6      	; 0x2320 <dragonfly_init+0x48>
+    231a:	78 94       	sei
+    231c:	0e 94 e1 19 	call	0x33c2	; 0x33c2 <orb_init>
+    2320:	c3 ff       	sbrs	r28, 3
+    2322:	02 c0       	rjmp	.+4      	; 0x2328 <dragonfly_init+0x50>
+    2324:	0e 94 e4 19 	call	0x33c8	; 0x33c8 <motors_init>
+    2328:	c7 ff       	sbrs	r28, 7
+    232a:	02 c0       	rjmp	.+4      	; 0x2330 <dragonfly_init+0x58>
+    232c:	0e 94 99 15 	call	0x2b32	; 0x2b32 <lcd_init>
+    2330:	d0 ff       	sbrs	r29, 0
+    2332:	02 c0       	rjmp	.+4      	; 0x2338 <dragonfly_init+0x60>
+    2334:	0e 94 55 1a 	call	0x34aa	; 0x34aa <range_init>
+    2338:	d1 ff       	sbrs	r29, 1
+    233a:	09 c0       	rjmp	.+18     	; 0x234e <dragonfly_init+0x76>
+    233c:	0e 94 e5 11 	call	0x23ca	; 0x23ca <get_bom_type>
+    2340:	8f 3f       	cpi	r24, 0xFF	; 255
+    2342:	19 f4       	brne	.+6      	; 0x234a <dragonfly_init+0x72>
+    2344:	0e 94 3c 11 	call	0x2278	; 0x2278 <flash_red>
+    2348:	02 c0       	rjmp	.+4      	; 0x234e <dragonfly_init+0x76>
+    234a:	0e 94 78 0d 	call	0x1af0	; 0x1af0 <bom_init>
+    234e:	d2 ff       	sbrs	r29, 2
+    2350:	02 c0       	rjmp	.+4      	; 0x2356 <dragonfly_init+0x7e>
+    2352:	0e 94 75 14 	call	0x28ea	; 0x28ea <encoders_init>
+    milliseconds can be achieved.
+ */
+void
+_delay_loop_2(uint16_t __count)
+{
+	__asm__ volatile (
+    2356:	80 ea       	ldi	r24, 0xA0	; 160
+    2358:	9f e0       	ldi	r25, 0x0F	; 15
+    235a:	01 97       	sbiw	r24, 0x01	; 1
+    235c:	f1 f7       	brne	.-4      	; 0x235a <dragonfly_init+0x82>
+    235e:	df 91       	pop	r29
+    2360:	cf 91       	pop	r28
+    2362:	08 95       	ret
+
+00002364 <eeprom_put_byte>:
+#include <dragonfly_lib.h>
+#include <wireless.h>
+#include <wl_token_ring.h>
+//#include <xbee.h>
+
+//#define SWARM_PACKET_GROUP_ID 0x8
+    2364:	e1 99       	sbic	0x1c, 1	; 28
+    2366:	fe cf       	rjmp	.-4      	; 0x2364 <eeprom_put_byte>
+
+//static PacketGroupHandler swarm_pgh;
+    2368:	9f bb       	out	0x1f, r25	; 31
+    236a:	8e bb       	out	0x1e, r24	; 30
+//static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length);
+    236c:	6d bb       	out	0x1d, r22	; 29
+
+int main(void)
+    236e:	e2 9a       	sbi	0x1c, 2	; 28
+{
+    dragonfly_init(ALL_ON);
+    2370:	e1 9a       	sbi	0x1c, 1	; 28
+
+    wl_init();
+    wl_set_channel(0xF);
+    2372:	80 e0       	ldi	r24, 0x00	; 0
+    2374:	90 e0       	ldi	r25, 0x00	; 0
+    2376:	08 95       	ret
+
+00002378 <eeprom_get_byte>:
+
+    /*swarm_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+    2378:	fb 01       	movw	r30, r22
+    swarm_pgh.timeout_handler = NULL;
+    swarm_pgh.handle_response = NULL;
+    237a:	e1 99       	sbic	0x1c, 1	; 28
+    237c:	fe cf       	rjmp	.-4      	; 0x237a <eeprom_get_byte+0x2>
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    237e:	9f bb       	out	0x1f, r25	; 31
+    2380:	8e bb       	out	0x1e, r24	; 30
+    wl_register_packet_group(&swarm_pgh);*/
+
+    2382:	e0 9a       	sbi	0x1c, 0	; 28
+    wl_token_ring_register();
+    wl_token_ring_join();
+    2384:	8d b3       	in	r24, 0x1d	; 29
+    2386:	80 83       	st	Z, r24
+
+    usb_puts("initialized\r\n");
+
+    2388:	80 e0       	ldi	r24, 0x00	; 0
+    238a:	90 e0       	ldi	r25, 0x00	; 0
+    238c:	08 95       	ret
+
+0000238e <get_robotid>:
+    wl_init();
+    wl_set_channel(0xF);
+
+    /*swarm_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+    swarm_pgh.timeout_handler = NULL;
+    swarm_pgh.handle_response = NULL;
+    238e:	e1 99       	sbic	0x1c, 1	; 28
+    2390:	fe cf       	rjmp	.-4      	; 0x238e <get_robotid>
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    2392:	80 e1       	ldi	r24, 0x10	; 16
+    2394:	90 e0       	ldi	r25, 0x00	; 0
+    2396:	9f bb       	out	0x1f, r25	; 31
+    2398:	8e bb       	out	0x1e, r24	; 30
+    wl_register_packet_group(&swarm_pgh);*/
+
+    239a:	e0 9a       	sbi	0x1c, 0	; 28
+    wl_token_ring_register();
+    wl_token_ring_join();
+    239c:	3d b3       	in	r19, 0x1d	; 29
+    wl_init();
+    wl_set_channel(0xF);
+
+    /*swarm_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+    swarm_pgh.timeout_handler = NULL;
+    swarm_pgh.handle_response = NULL;
+    239e:	e1 99       	sbic	0x1c, 1	; 28
+    23a0:	fe cf       	rjmp	.-4      	; 0x239e <get_robotid+0x10>
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    23a2:	81 e1       	ldi	r24, 0x11	; 17
+    23a4:	90 e0       	ldi	r25, 0x00	; 0
+    23a6:	9f bb       	out	0x1f, r25	; 31
+    23a8:	8e bb       	out	0x1e, r24	; 30
+    wl_register_packet_group(&swarm_pgh);*/
+
+    23aa:	e0 9a       	sbi	0x1c, 0	; 28
+    wl_token_ring_register();
+    wl_token_ring_join();
+    23ac:	2d b3       	in	r18, 0x1d	; 29
+    wl_init();
+    wl_set_channel(0xF);
+
+    /*swarm_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+    swarm_pgh.timeout_handler = NULL;
+    swarm_pgh.handle_response = NULL;
+    23ae:	e1 99       	sbic	0x1c, 1	; 28
+    23b0:	fe cf       	rjmp	.-4      	; 0x23ae <get_robotid+0x20>
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    23b2:	82 e1       	ldi	r24, 0x12	; 18
+    23b4:	90 e0       	ldi	r25, 0x00	; 0
+    23b6:	9f bb       	out	0x1f, r25	; 31
+    23b8:	8e bb       	out	0x1e, r24	; 30
+    wl_register_packet_group(&swarm_pgh);*/
+
+    23ba:	e0 9a       	sbi	0x1c, 0	; 28
+    wl_token_ring_register();
+    wl_token_ring_join();
+    23bc:	8d b3       	in	r24, 0x1d	; 29
+    int num = 0;*/
+
+    while (1)
+    {
+	    wl_do();
+        /*packet[16] = num;
+    23be:	39 34       	cpi	r19, 0x49	; 73
+    23c0:	11 f4       	brne	.+4      	; 0x23c6 <get_robotid+0x38>
+    23c2:	24 34       	cpi	r18, 0x44	; 68
+    23c4:	09 f0       	breq	.+2      	; 0x23c8 <get_robotid+0x3a>
+    23c6:	8f ef       	ldi	r24, 0xFF	; 255
+        wl_send_global_packet(SWARM_PACKET_GROUP_ID, 0, packet, length, 0);
+        usb_puts("sent ");
+        usb_puti(num);
+        usb_puts("\r\n");
+    23c8:	08 95       	ret
+
+000023ca <get_bom_type>:
+    wl_init();
+    wl_set_channel(0xF);
+
+    /*swarm_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+    swarm_pgh.timeout_handler = NULL;
+    swarm_pgh.handle_response = NULL;
+    23ca:	e1 99       	sbic	0x1c, 1	; 28
+    23cc:	fe cf       	rjmp	.-4      	; 0x23ca <get_bom_type>
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    23ce:	84 e1       	ldi	r24, 0x14	; 20
+    23d0:	90 e0       	ldi	r25, 0x00	; 0
+    23d2:	9f bb       	out	0x1f, r25	; 31
+    23d4:	8e bb       	out	0x1e, r24	; 30
+    wl_register_packet_group(&swarm_pgh);*/
+
+    23d6:	e0 9a       	sbi	0x1c, 0	; 28
+    wl_token_ring_register();
+    wl_token_ring_join();
+    23d8:	4d b3       	in	r20, 0x1d	; 29
+    wl_init();
+    wl_set_channel(0xF);
+
+    /*swarm_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+    swarm_pgh.timeout_handler = NULL;
+    swarm_pgh.handle_response = NULL;
+    23da:	e1 99       	sbic	0x1c, 1	; 28
+    23dc:	fe cf       	rjmp	.-4      	; 0x23da <get_bom_type+0x10>
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    23de:	85 e1       	ldi	r24, 0x15	; 21
+    23e0:	90 e0       	ldi	r25, 0x00	; 0
+    23e2:	9f bb       	out	0x1f, r25	; 31
+    23e4:	8e bb       	out	0x1e, r24	; 30
+    wl_register_packet_group(&swarm_pgh);*/
+
+    23e6:	e0 9a       	sbi	0x1c, 0	; 28
+    wl_token_ring_register();
+    wl_token_ring_join();
+    23e8:	3d b3       	in	r19, 0x1d	; 29
+    wl_init();
+    wl_set_channel(0xF);
+
+    /*swarm_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+    swarm_pgh.timeout_handler = NULL;
+    swarm_pgh.handle_response = NULL;
+    23ea:	e1 99       	sbic	0x1c, 1	; 28
+    23ec:	fe cf       	rjmp	.-4      	; 0x23ea <get_bom_type+0x20>
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    23ee:	86 e1       	ldi	r24, 0x16	; 22
+    23f0:	90 e0       	ldi	r25, 0x00	; 0
+    23f2:	9f bb       	out	0x1f, r25	; 31
+    23f4:	8e bb       	out	0x1e, r24	; 30
+    wl_register_packet_group(&swarm_pgh);*/
+
+    23f6:	e0 9a       	sbi	0x1c, 0	; 28
+    wl_token_ring_register();
+    wl_token_ring_join();
+    23f8:	2d b3       	in	r18, 0x1d	; 29
+    wl_init();
+    wl_set_channel(0xF);
+
+    /*swarm_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+    swarm_pgh.timeout_handler = NULL;
+    swarm_pgh.handle_response = NULL;
+    23fa:	e1 99       	sbic	0x1c, 1	; 28
+    23fc:	fe cf       	rjmp	.-4      	; 0x23fa <get_bom_type+0x30>
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    23fe:	87 e1       	ldi	r24, 0x17	; 23
+    2400:	90 e0       	ldi	r25, 0x00	; 0
+    2402:	9f bb       	out	0x1f, r25	; 31
+    2404:	8e bb       	out	0x1e, r24	; 30
+    wl_register_packet_group(&swarm_pgh);*/
+
+    2406:	e0 9a       	sbi	0x1c, 0	; 28
+    wl_token_ring_register();
+    wl_token_ring_join();
+    2408:	8d b3       	in	r24, 0x1d	; 29
+}
+
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    240a:	42 34       	cpi	r20, 0x42	; 66
+    240c:	21 f4       	brne	.+8      	; 0x2416 <get_bom_type+0x4c>
+    240e:	3f 34       	cpi	r19, 0x4F	; 79
+    2410:	11 f4       	brne	.+4      	; 0x2416 <get_bom_type+0x4c>
+    2412:	2d 34       	cpi	r18, 0x4D	; 77
+    2414:	09 f0       	breq	.+2      	; 0x2418 <get_bom_type+0x4e>
+    2416:	8f ef       	ldi	r24, 0xFF	; 255
+    char buf[40];
+    int i;
+    for (i = 0; i < length; i++) {
+        sprintf(buf, "%d: %d ", i, packet[i]);
+    2418:	08 95       	ret
+
+0000241a <encoder_read>:
+    241a:	88 23       	and	r24, r24
+    241c:	29 f4       	brne	.+10     	; 0x2428 <encoder_read+0xe>
+    241e:	20 91 2a 0a 	lds	r18, 0x0A2A
+    2422:	30 91 2b 0a 	lds	r19, 0x0A2B
+    2426:	09 c0       	rjmp	.+18     	; 0x243a <encoder_read+0x20>
+    2428:	81 30       	cpi	r24, 0x01	; 1
+    242a:	19 f0       	breq	.+6      	; 0x2432 <encoder_read+0x18>
+    242c:	2f ef       	ldi	r18, 0xFF	; 255
+    242e:	3f ef       	ldi	r19, 0xFF	; 255
+    2430:	04 c0       	rjmp	.+8      	; 0x243a <encoder_read+0x20>
+    2432:	20 91 5f 09 	lds	r18, 0x095F
+    2436:	30 91 60 09 	lds	r19, 0x0960
+    243a:	c9 01       	movw	r24, r18
+    243c:	08 95       	ret
+
+0000243e <encoder_get_x>:
+    243e:	88 23       	and	r24, r24
+    2440:	29 f4       	brne	.+10     	; 0x244c <encoder_get_x+0xe>
+    2442:	20 91 24 0a 	lds	r18, 0x0A24
+    2446:	30 91 25 0a 	lds	r19, 0x0A25
+    244a:	09 c0       	rjmp	.+18     	; 0x245e <encoder_get_x+0x20>
+    244c:	81 30       	cpi	r24, 0x01	; 1
+    244e:	19 f0       	breq	.+6      	; 0x2456 <encoder_get_x+0x18>
+    2450:	2f ef       	ldi	r18, 0xFF	; 255
+    2452:	3f ef       	ldi	r19, 0xFF	; 255
+    2454:	04 c0       	rjmp	.+8      	; 0x245e <encoder_get_x+0x20>
+    2456:	20 91 c1 09 	lds	r18, 0x09C1
+    245a:	30 91 c2 09 	lds	r19, 0x09C2
+    245e:	c9 01       	movw	r24, r18
+    2460:	08 95       	ret
+
+00002462 <encoder_get_dx>:
+    2462:	88 23       	and	r24, r24
+    2464:	29 f4       	brne	.+10     	; 0x2470 <encoder_get_dx+0xe>
+    2466:	20 91 24 0a 	lds	r18, 0x0A24
+    246a:	30 91 25 0a 	lds	r19, 0x0A25
+    246e:	09 c0       	rjmp	.+18     	; 0x2482 <encoder_get_dx+0x20>
+    2470:	81 30       	cpi	r24, 0x01	; 1
+    2472:	19 f0       	breq	.+6      	; 0x247a <encoder_get_dx+0x18>
+    2474:	2f ef       	ldi	r18, 0xFF	; 255
+    2476:	3f ef       	ldi	r19, 0xFF	; 255
+    2478:	04 c0       	rjmp	.+8      	; 0x2482 <encoder_get_dx+0x20>
+    247a:	20 91 c1 09 	lds	r18, 0x09C1
+    247e:	30 91 c2 09 	lds	r19, 0x09C2
+    2482:	c9 01       	movw	r24, r18
+    2484:	08 95       	ret
+
+00002486 <encoder_rst_dx>:
+    2486:	88 23       	and	r24, r24
+    2488:	29 f4       	brne	.+10     	; 0x2494 <encoder_rst_dx+0xe>
+    248a:	10 92 25 0a 	sts	0x0A25, r1
+    248e:	10 92 24 0a 	sts	0x0A24, r1
+    2492:	08 95       	ret
+    2494:	81 30       	cpi	r24, 0x01	; 1
+    2496:	21 f4       	brne	.+8      	; 0x24a0 <encoder_rst_dx+0x1a>
+    2498:	10 92 c2 09 	sts	0x09C2, r1
+    249c:	10 92 c1 09 	sts	0x09C1, r1
+    24a0:	08 95       	ret
+
+000024a2 <encoder_get_tc>:
+    24a2:	80 91 c3 09 	lds	r24, 0x09C3
+    24a6:	90 91 c4 09 	lds	r25, 0x09C4
+    24aa:	08 95       	ret
+
+000024ac <encoder_rst_tc>:
+    24ac:	10 92 c3 09 	sts	0x09C3, r1
+    24b0:	10 92 c4 09 	sts	0x09C4, r1
+    24b4:	10 92 c5 09 	sts	0x09C5, r1
+    24b8:	10 92 c6 09 	sts	0x09C6, r1
+    24bc:	08 95       	ret
+
+000024be <encoder_wait>:
+    24be:	9c 01       	movw	r18, r24
+    24c0:	80 91 5d 09 	lds	r24, 0x095D
+    24c4:	90 91 5e 09 	lds	r25, 0x095E
+    24c8:	82 17       	cp	r24, r18
+    24ca:	93 07       	cpc	r25, r19
+    24cc:	cc f3       	brlt	.-14     	; 0x24c0 <encoder_wait+0x2>
+    24ce:	10 92 5e 09 	sts	0x095E, r1
+    24d2:	10 92 5d 09 	sts	0x095D, r1
+    24d6:	08 95       	ret
+
+000024d8 <encoder_recv>:
+    24d8:	40 91 c7 09 	lds	r20, 0x09C7
+    24dc:	42 30       	cpi	r20, 0x02	; 2
+    24de:	e1 f0       	breq	.+56     	; 0x2518 <encoder_recv+0x40>
+    24e0:	43 30       	cpi	r20, 0x03	; 3
+    24e2:	28 f4       	brcc	.+10     	; 0x24ee <encoder_recv+0x16>
+    24e4:	44 23       	and	r20, r20
+    24e6:	41 f0       	breq	.+16     	; 0x24f8 <encoder_recv+0x20>
+    24e8:	41 30       	cpi	r20, 0x01	; 1
+    24ea:	71 f5       	brne	.+92     	; 0x2548 <encoder_recv+0x70>
+    24ec:	08 c0       	rjmp	.+16     	; 0x24fe <encoder_recv+0x26>
+    24ee:	43 30       	cpi	r20, 0x03	; 3
+    24f0:	b9 f0       	breq	.+46     	; 0x2520 <encoder_recv+0x48>
+    24f2:	44 30       	cpi	r20, 0x04	; 4
+    24f4:	49 f5       	brne	.+82     	; 0x2548 <encoder_recv+0x70>
+    24f6:	19 c0       	rjmp	.+50     	; 0x252a <encoder_recv+0x52>
+    24f8:	38 2f       	mov	r19, r24
+    24fa:	20 e0       	ldi	r18, 0x00	; 0
+    24fc:	02 c0       	rjmp	.+4      	; 0x2502 <encoder_recv+0x2a>
+    24fe:	28 2f       	mov	r18, r24
+    2500:	30 e0       	ldi	r19, 0x00	; 0
+    2502:	80 91 28 0a 	lds	r24, 0x0A28
+    2506:	90 91 29 0a 	lds	r25, 0x0A29
+    250a:	82 2b       	or	r24, r18
+    250c:	93 2b       	or	r25, r19
+    250e:	90 93 29 0a 	sts	0x0A29, r25
+    2512:	80 93 28 0a 	sts	0x0A28, r24
+    2516:	18 c0       	rjmp	.+48     	; 0x2548 <encoder_recv+0x70>
+    2518:	38 2f       	mov	r19, r24
+    251a:	33 0f       	add	r19, r19
+    251c:	20 e0       	ldi	r18, 0x00	; 0
+    251e:	0a c0       	rjmp	.+20     	; 0x2534 <encoder_recv+0x5c>
+    2520:	28 2f       	mov	r18, r24
+    2522:	30 e0       	ldi	r19, 0x00	; 0
+    2524:	22 0f       	add	r18, r18
+    2526:	33 1f       	adc	r19, r19
+    2528:	05 c0       	rjmp	.+10     	; 0x2534 <encoder_recv+0x5c>
+    252a:	88 1f       	adc	r24, r24
+    252c:	88 27       	eor	r24, r24
+    252e:	88 1f       	adc	r24, r24
+    2530:	28 2f       	mov	r18, r24
+    2532:	30 e0       	ldi	r19, 0x00	; 0
+    2534:	80 91 61 09 	lds	r24, 0x0961
+    2538:	90 91 62 09 	lds	r25, 0x0962
+    253c:	82 2b       	or	r24, r18
+    253e:	93 2b       	or	r25, r19
+    2540:	90 93 62 09 	sts	0x0962, r25
+    2544:	80 93 61 09 	sts	0x0961, r24
+    2548:	84 2f       	mov	r24, r20
+    254a:	90 e0       	ldi	r25, 0x00	; 0
+    254c:	01 96       	adiw	r24, 0x01	; 1
+    254e:	65 e0       	ldi	r22, 0x05	; 5
+    2550:	70 e0       	ldi	r23, 0x00	; 0
+    2552:	0e 94 13 32 	call	0x6426	; 0x6426 <__divmodhi4>
+    2556:	80 93 c7 09 	sts	0x09C7, r24
+    255a:	88 23       	and	r24, r24
+    255c:	09 f0       	breq	.+2      	; 0x2560 <encoder_recv+0x88>
+    255e:	04 c1       	rjmp	.+520    	; 0x2768 <encoder_recv+0x290>
+    2560:	20 91 61 09 	lds	r18, 0x0961
+    2564:	30 91 62 09 	lds	r19, 0x0962
+    2568:	c9 01       	movw	r24, r18
+    256a:	8c 70       	andi	r24, 0x0C	; 12
+    256c:	90 70       	andi	r25, 0x00	; 0
+    256e:	89 2b       	or	r24, r25
+    2570:	19 f0       	breq	.+6      	; 0x2578 <encoder_recv+0xa0>
+    2572:	83 e0       	ldi	r24, 0x03	; 3
+    2574:	94 e0       	ldi	r25, 0x04	; 4
+    2576:	06 c0       	rjmp	.+12     	; 0x2584 <encoder_recv+0xac>
+    2578:	21 ff       	sbrs	r18, 1
+    257a:	09 c0       	rjmp	.+18     	; 0x258e <encoder_recv+0xb6>
+    257c:	20 ff       	sbrs	r18, 0
+    257e:	07 c0       	rjmp	.+14     	; 0x258e <encoder_recv+0xb6>
+    2580:	81 e0       	ldi	r24, 0x01	; 1
+    2582:	94 e0       	ldi	r25, 0x04	; 4
+    2584:	90 93 2b 0a 	sts	0x0A2B, r25
+    2588:	80 93 2a 0a 	sts	0x0A2A, r24
+    258c:	0a c0       	rjmp	.+20     	; 0x25a2 <encoder_recv+0xca>
+    258e:	75 e0       	ldi	r23, 0x05	; 5
+    2590:	36 95       	lsr	r19
+    2592:	27 95       	ror	r18
+    2594:	7a 95       	dec	r23
+    2596:	e1 f7       	brne	.-8      	; 0x2590 <encoder_recv+0xb8>
+    2598:	33 70       	andi	r19, 0x03	; 3
+    259a:	30 93 2b 0a 	sts	0x0A2B, r19
+    259e:	20 93 2a 0a 	sts	0x0A2A, r18
+    25a2:	20 91 28 0a 	lds	r18, 0x0A28
+    25a6:	30 91 29 0a 	lds	r19, 0x0A29
+    25aa:	c9 01       	movw	r24, r18
+    25ac:	8c 70       	andi	r24, 0x0C	; 12
+    25ae:	90 70       	andi	r25, 0x00	; 0
+    25b0:	89 2b       	or	r24, r25
+    25b2:	19 f0       	breq	.+6      	; 0x25ba <encoder_recv+0xe2>
+    25b4:	83 e0       	ldi	r24, 0x03	; 3
+    25b6:	94 e0       	ldi	r25, 0x04	; 4
+    25b8:	06 c0       	rjmp	.+12     	; 0x25c6 <encoder_recv+0xee>
+    25ba:	21 ff       	sbrs	r18, 1
+    25bc:	09 c0       	rjmp	.+18     	; 0x25d0 <encoder_recv+0xf8>
+    25be:	20 ff       	sbrs	r18, 0
+    25c0:	07 c0       	rjmp	.+14     	; 0x25d0 <encoder_recv+0xf8>
+    25c2:	81 e0       	ldi	r24, 0x01	; 1
+    25c4:	94 e0       	ldi	r25, 0x04	; 4
+    25c6:	90 93 60 09 	sts	0x0960, r25
+    25ca:	80 93 5f 09 	sts	0x095F, r24
+    25ce:	0a c0       	rjmp	.+20     	; 0x25e4 <encoder_recv+0x10c>
+    25d0:	65 e0       	ldi	r22, 0x05	; 5
+    25d2:	36 95       	lsr	r19
+    25d4:	27 95       	ror	r18
+    25d6:	6a 95       	dec	r22
+    25d8:	e1 f7       	brne	.-8      	; 0x25d2 <encoder_recv+0xfa>
+    25da:	33 70       	andi	r19, 0x03	; 3
+    25dc:	30 93 60 09 	sts	0x0960, r19
+    25e0:	20 93 5f 09 	sts	0x095F, r18
+    25e4:	10 92 62 09 	sts	0x0962, r1
+    25e8:	10 92 61 09 	sts	0x0961, r1
+    25ec:	10 92 29 0a 	sts	0x0A29, r1
+    25f0:	10 92 28 0a 	sts	0x0A28, r1
+    25f4:	80 91 2a 0a 	lds	r24, 0x0A2A
+    25f8:	90 91 2b 0a 	lds	r25, 0x0A2B
+    25fc:	24 e0       	ldi	r18, 0x04	; 4
+    25fe:	80 30       	cpi	r24, 0x00	; 0
+    2600:	92 07       	cpc	r25, r18
+    2602:	08 f0       	brcs	.+2      	; 0x2606 <encoder_recv+0x12e>
+    2604:	57 c0       	rjmp	.+174    	; 0x26b4 <encoder_recv+0x1dc>
+    2606:	2f ef       	ldi	r18, 0xFF	; 255
+    2608:	33 e0       	ldi	r19, 0x03	; 3
+    260a:	28 1b       	sub	r18, r24
+    260c:	39 0b       	sbc	r19, r25
+    260e:	30 93 2b 0a 	sts	0x0A2B, r19
+    2612:	20 93 2a 0a 	sts	0x0A2A, r18
+    2616:	80 91 bf 09 	lds	r24, 0x09BF
+    261a:	90 91 c0 09 	lds	r25, 0x09C0
+    261e:	8d 32       	cpi	r24, 0x2D	; 45
+    2620:	91 05       	cpc	r25, r1
+    2622:	29 f4       	brne	.+10     	; 0x262e <encoder_recv+0x156>
+    2624:	10 92 c0 09 	sts	0x09C0, r1
+    2628:	10 92 bf 09 	sts	0x09BF, r1
+    262c:	05 c0       	rjmp	.+10     	; 0x2638 <encoder_recv+0x160>
+    262e:	01 96       	adiw	r24, 0x01	; 1
+    2630:	90 93 c0 09 	sts	0x09C0, r25
+    2634:	80 93 bf 09 	sts	0x09BF, r24
+    2638:	a0 91 bf 09 	lds	r26, 0x09BF
+    263c:	b0 91 c0 09 	lds	r27, 0x09C0
+    2640:	fd 01       	movw	r30, r26
+    2642:	ee 0f       	add	r30, r30
+    2644:	ff 1f       	adc	r31, r31
+    2646:	ed 59       	subi	r30, 0x9D	; 157
+    2648:	f6 4f       	sbci	r31, 0xF6	; 246
+    264a:	31 83       	std	Z+1, r19	; 0x01
+    264c:	20 83       	st	Z, r18
+    264e:	10 97       	sbiw	r26, 0x00	; 0
+    2650:	29 f4       	brne	.+10     	; 0x265c <encoder_recv+0x184>
+    2652:	e0 91 bd 09 	lds	r30, 0x09BD
+    2656:	f0 91 be 09 	lds	r31, 0x09BE
+    265a:	06 c0       	rjmp	.+12     	; 0x2668 <encoder_recv+0x190>
+    265c:	aa 0f       	add	r26, r26
+    265e:	bb 1f       	adc	r27, r27
+    2660:	af 59       	subi	r26, 0x9F	; 159
+    2662:	b6 4f       	sbci	r27, 0xF6	; 246
+    2664:	ed 91       	ld	r30, X+
+    2666:	fc 91       	ld	r31, X
+    2668:	30 97       	sbiw	r30, 0x00	; 0
+    266a:	c1 f0       	breq	.+48     	; 0x269c <encoder_recv+0x1c4>
+    266c:	2e 1b       	sub	r18, r30
+    266e:	3f 0b       	sbc	r19, r31
+    2670:	82 e0       	ldi	r24, 0x02	; 2
+    2672:	21 30       	cpi	r18, 0x01	; 1
+    2674:	38 07       	cpc	r19, r24
+    2676:	3c f0       	brlt	.+14     	; 0x2686 <encoder_recv+0x1ae>
+    2678:	80 91 24 0a 	lds	r24, 0x0A24
+    267c:	90 91 25 0a 	lds	r25, 0x0A25
+    2680:	8f 5f       	subi	r24, 0xFF	; 255
+    2682:	93 40       	sbci	r25, 0x03	; 3
+    2684:	11 c0       	rjmp	.+34     	; 0x26a8 <encoder_recv+0x1d0>
+    2686:	9e ef       	ldi	r25, 0xFE	; 254
+    2688:	20 30       	cpi	r18, 0x00	; 0
+    268a:	39 07       	cpc	r19, r25
+    268c:	4c f4       	brge	.+18     	; 0x26a0 <encoder_recv+0x1c8>
+    268e:	80 91 24 0a 	lds	r24, 0x0A24
+    2692:	90 91 25 0a 	lds	r25, 0x0A25
+    2696:	81 50       	subi	r24, 0x01	; 1
+    2698:	9c 4f       	sbci	r25, 0xFC	; 252
+    269a:	06 c0       	rjmp	.+12     	; 0x26a8 <encoder_recv+0x1d0>
+    269c:	20 e0       	ldi	r18, 0x00	; 0
+    269e:	30 e0       	ldi	r19, 0x00	; 0
+    26a0:	80 91 24 0a 	lds	r24, 0x0A24
+    26a4:	90 91 25 0a 	lds	r25, 0x0A25
+    26a8:	82 0f       	add	r24, r18
+    26aa:	93 1f       	adc	r25, r19
+    26ac:	90 93 25 0a 	sts	0x0A25, r25
+    26b0:	80 93 24 0a 	sts	0x0A24, r24
+    26b4:	20 91 5f 09 	lds	r18, 0x095F
+    26b8:	30 91 60 09 	lds	r19, 0x0960
+    26bc:	84 e0       	ldi	r24, 0x04	; 4
+    26be:	20 30       	cpi	r18, 0x00	; 0
+    26c0:	38 07       	cpc	r19, r24
+    26c2:	08 f0       	brcs	.+2      	; 0x26c6 <encoder_recv+0x1ee>
+    26c4:	51 c0       	rjmp	.+162    	; 0x2768 <encoder_recv+0x290>
+    26c6:	80 91 26 0a 	lds	r24, 0x0A26
+    26ca:	90 91 27 0a 	lds	r25, 0x0A27
+    26ce:	8d 32       	cpi	r24, 0x2D	; 45
+    26d0:	91 05       	cpc	r25, r1
+    26d2:	29 f4       	brne	.+10     	; 0x26de <encoder_recv+0x206>
+    26d4:	10 92 27 0a 	sts	0x0A27, r1
+    26d8:	10 92 26 0a 	sts	0x0A26, r1
+    26dc:	05 c0       	rjmp	.+10     	; 0x26e8 <encoder_recv+0x210>
+    26de:	01 96       	adiw	r24, 0x01	; 1
+    26e0:	90 93 27 0a 	sts	0x0A27, r25
+    26e4:	80 93 26 0a 	sts	0x0A26, r24
+    26e8:	a0 91 26 0a 	lds	r26, 0x0A26
+    26ec:	b0 91 27 0a 	lds	r27, 0x0A27
+    26f0:	fd 01       	movw	r30, r26
+    26f2:	ee 0f       	add	r30, r30
+    26f4:	ff 1f       	adc	r31, r31
+    26f6:	e8 53       	subi	r30, 0x38	; 56
+    26f8:	f6 4f       	sbci	r31, 0xF6	; 246
+    26fa:	31 83       	std	Z+1, r19	; 0x01
+    26fc:	20 83       	st	Z, r18
+    26fe:	10 97       	sbiw	r26, 0x00	; 0
+    2700:	29 f4       	brne	.+10     	; 0x270c <encoder_recv+0x234>
+    2702:	e0 91 22 0a 	lds	r30, 0x0A22
+    2706:	f0 91 23 0a 	lds	r31, 0x0A23
+    270a:	06 c0       	rjmp	.+12     	; 0x2718 <encoder_recv+0x240>
+    270c:	aa 0f       	add	r26, r26
+    270e:	bb 1f       	adc	r27, r27
+    2710:	aa 53       	subi	r26, 0x3A	; 58
+    2712:	b6 4f       	sbci	r27, 0xF6	; 246
+    2714:	ed 91       	ld	r30, X+
+    2716:	fc 91       	ld	r31, X
+    2718:	30 97       	sbiw	r30, 0x00	; 0
+    271a:	d1 f0       	breq	.+52     	; 0x2750 <encoder_recv+0x278>
+    271c:	c9 01       	movw	r24, r18
+    271e:	8e 1b       	sub	r24, r30
+    2720:	9f 0b       	sbc	r25, r31
+    2722:	fc 01       	movw	r30, r24
+    2724:	92 e0       	ldi	r25, 0x02	; 2
+    2726:	e1 30       	cpi	r30, 0x01	; 1
+    2728:	f9 07       	cpc	r31, r25
+    272a:	3c f0       	brlt	.+14     	; 0x273a <encoder_recv+0x262>
+    272c:	80 91 c1 09 	lds	r24, 0x09C1
+    2730:	90 91 c2 09 	lds	r25, 0x09C2
+    2734:	8f 5f       	subi	r24, 0xFF	; 255
+    2736:	93 40       	sbci	r25, 0x03	; 3
+    2738:	11 c0       	rjmp	.+34     	; 0x275c <encoder_recv+0x284>
+    273a:	2e ef       	ldi	r18, 0xFE	; 254
+    273c:	e0 30       	cpi	r30, 0x00	; 0
+    273e:	f2 07       	cpc	r31, r18
+    2740:	4c f4       	brge	.+18     	; 0x2754 <encoder_recv+0x27c>
+    2742:	80 91 c1 09 	lds	r24, 0x09C1
+    2746:	90 91 c2 09 	lds	r25, 0x09C2
+    274a:	81 50       	subi	r24, 0x01	; 1
+    274c:	9c 4f       	sbci	r25, 0xFC	; 252
+    274e:	06 c0       	rjmp	.+12     	; 0x275c <encoder_recv+0x284>
+    2750:	e0 e0       	ldi	r30, 0x00	; 0
+    2752:	f0 e0       	ldi	r31, 0x00	; 0
+    2754:	80 91 c1 09 	lds	r24, 0x09C1
+    2758:	90 91 c2 09 	lds	r25, 0x09C2
+    275c:	8e 0f       	add	r24, r30
+    275e:	9f 1f       	adc	r25, r31
+    2760:	90 93 c2 09 	sts	0x09C2, r25
+    2764:	80 93 c1 09 	sts	0x09C1, r24
+    2768:	80 91 c3 09 	lds	r24, 0x09C3
+    276c:	90 91 c4 09 	lds	r25, 0x09C4
+    2770:	a0 91 c5 09 	lds	r26, 0x09C5
+    2774:	b0 91 c6 09 	lds	r27, 0x09C6
+    2778:	01 96       	adiw	r24, 0x01	; 1
+    277a:	a1 1d       	adc	r26, r1
+    277c:	b1 1d       	adc	r27, r1
+    277e:	80 93 c3 09 	sts	0x09C3, r24
+    2782:	90 93 c4 09 	sts	0x09C4, r25
+    2786:	a0 93 c5 09 	sts	0x09C5, r26
+    278a:	b0 93 c6 09 	sts	0x09C6, r27
+    278e:	08 95       	ret
+
+00002790 <left_data_at>:
+    2790:	e0 91 bf 09 	lds	r30, 0x09BF
+    2794:	f0 91 c0 09 	lds	r31, 0x09C0
+    2798:	e8 1b       	sub	r30, r24
+    279a:	f9 0b       	sbc	r31, r25
+    279c:	f7 fd       	sbrc	r31, 7
+    279e:	be 96       	adiw	r30, 0x2e	; 46
+    27a0:	ee 0f       	add	r30, r30
+    27a2:	ff 1f       	adc	r31, r31
+    27a4:	ed 59       	subi	r30, 0x9D	; 157
+    27a6:	f6 4f       	sbci	r31, 0xF6	; 246
+    27a8:	80 81       	ld	r24, Z
+    27aa:	91 81       	ldd	r25, Z+1	; 0x01
+    27ac:	08 95       	ret
+
+000027ae <right_data_at>:
+    27ae:	e0 91 26 0a 	lds	r30, 0x0A26
+    27b2:	f0 91 27 0a 	lds	r31, 0x0A27
+    27b6:	e8 1b       	sub	r30, r24
+    27b8:	f9 0b       	sbc	r31, r25
+    27ba:	f7 fd       	sbrc	r31, 7
+    27bc:	be 96       	adiw	r30, 0x2e	; 46
+    27be:	ee 0f       	add	r30, r30
+    27c0:	ff 1f       	adc	r31, r31
+    27c2:	e8 53       	subi	r30, 0x38	; 56
+    27c4:	f6 4f       	sbci	r31, 0xF6	; 246
+    27c6:	80 81       	ld	r24, Z
+    27c8:	91 81       	ldd	r25, Z+1	; 0x01
+    27ca:	08 95       	ret
+
+000027cc <get_dx>:
+    27cc:	ff 92       	push	r15
+    27ce:	0f 93       	push	r16
+    27d0:	1f 93       	push	r17
+    27d2:	cf 93       	push	r28
+    27d4:	df 93       	push	r29
+    27d6:	f8 2e       	mov	r15, r24
+    27d8:	80 91 bf 09 	lds	r24, 0x09BF
+    27dc:	90 91 c0 09 	lds	r25, 0x09C0
+    27e0:	20 91 26 0a 	lds	r18, 0x0A26
+    27e4:	30 91 27 0a 	lds	r19, 0x0A27
+    27e8:	86 97       	sbiw	r24, 0x26	; 38
+    27ea:	8c 01       	movw	r16, r24
+    27ec:	06 1b       	sub	r16, r22
+    27ee:	17 0b       	sbc	r17, r23
+    27f0:	dc 01       	movw	r26, r24
+    27f2:	96 96       	adiw	r26, 0x26	; 38
+    27f4:	a6 1b       	sub	r26, r22
+    27f6:	b7 0b       	sbc	r27, r23
+    27f8:	26 52       	subi	r18, 0x26	; 38
+    27fa:	30 40       	sbci	r19, 0x00	; 0
+    27fc:	e9 01       	movw	r28, r18
+    27fe:	c6 1b       	sub	r28, r22
+    2800:	d7 0b       	sbc	r29, r23
+    2802:	2a 5d       	subi	r18, 0xDA	; 218
+    2804:	3f 4f       	sbci	r19, 0xFF	; 255
+    2806:	26 1b       	sub	r18, r22
+    2808:	37 0b       	sbc	r19, r23
+    280a:	60 e0       	ldi	r22, 0x00	; 0
+    280c:	70 e0       	ldi	r23, 0x00	; 0
+    280e:	ff 20       	and	r15, r15
+    2810:	99 f4       	brne	.+38     	; 0x2838 <get_dx+0x6c>
+    2812:	fd 01       	movw	r30, r26
+    2814:	b7 fd       	sbrc	r27, 7
+    2816:	be 96       	adiw	r30, 0x2e	; 46
+    2818:	ee 0f       	add	r30, r30
+    281a:	ff 1f       	adc	r31, r31
+    281c:	ed 59       	subi	r30, 0x9D	; 157
+    281e:	f6 4f       	sbci	r31, 0xF6	; 246
+    2820:	40 81       	ld	r20, Z
+    2822:	51 81       	ldd	r21, Z+1	; 0x01
+    2824:	f8 01       	movw	r30, r16
+    2826:	17 ff       	sbrs	r17, 7
+    2828:	02 c0       	rjmp	.+4      	; 0x282e <get_dx+0x62>
+    282a:	fd 01       	movw	r30, r26
+    282c:	38 96       	adiw	r30, 0x08	; 8
+    282e:	ee 0f       	add	r30, r30
+    2830:	ff 1f       	adc	r31, r31
+    2832:	ed 59       	subi	r30, 0x9D	; 157
+    2834:	f6 4f       	sbci	r31, 0xF6	; 246
+    2836:	12 c0       	rjmp	.+36     	; 0x285c <get_dx+0x90>
+    2838:	f9 01       	movw	r30, r18
+    283a:	37 fd       	sbrc	r19, 7
+    283c:	be 96       	adiw	r30, 0x2e	; 46
+    283e:	ee 0f       	add	r30, r30
+    2840:	ff 1f       	adc	r31, r31
+    2842:	e8 53       	subi	r30, 0x38	; 56
+    2844:	f6 4f       	sbci	r31, 0xF6	; 246
+    2846:	40 81       	ld	r20, Z
+    2848:	51 81       	ldd	r21, Z+1	; 0x01
+    284a:	fe 01       	movw	r30, r28
+    284c:	d7 ff       	sbrs	r29, 7
+    284e:	02 c0       	rjmp	.+4      	; 0x2854 <get_dx+0x88>
+    2850:	f9 01       	movw	r30, r18
+    2852:	38 96       	adiw	r30, 0x08	; 8
+    2854:	ee 0f       	add	r30, r30
+    2856:	ff 1f       	adc	r31, r31
+    2858:	e8 53       	subi	r30, 0x38	; 56
+    285a:	f6 4f       	sbci	r31, 0xF6	; 246
+    285c:	80 81       	ld	r24, Z
+    285e:	91 81       	ldd	r25, Z+1	; 0x01
+    2860:	48 1b       	sub	r20, r24
+    2862:	59 0b       	sbc	r21, r25
+    2864:	ca 01       	movw	r24, r20
+    2866:	4e 96       	adiw	r24, 0x1e	; 30
+    2868:	cd 97       	sbiw	r24, 0x3d	; 61
+    286a:	68 f0       	brcs	.+26     	; 0x2886 <get_dx+0xba>
+    286c:	6f 5f       	subi	r22, 0xFF	; 255
+    286e:	7f 4f       	sbci	r23, 0xFF	; 255
+    2870:	01 50       	subi	r16, 0x01	; 1
+    2872:	10 40       	sbci	r17, 0x00	; 0
+    2874:	11 97       	sbiw	r26, 0x01	; 1
+    2876:	21 97       	sbiw	r28, 0x01	; 1
+    2878:	21 50       	subi	r18, 0x01	; 1
+    287a:	30 40       	sbci	r19, 0x00	; 0
+    287c:	63 30       	cpi	r22, 0x03	; 3
+    287e:	71 05       	cpc	r23, r1
+    2880:	31 f6       	brne	.-116    	; 0x280e <get_dx+0x42>
+    2882:	40 e0       	ldi	r20, 0x00	; 0
+    2884:	54 e0       	ldi	r21, 0x04	; 4
+    2886:	ca 01       	movw	r24, r20
+    2888:	df 91       	pop	r29
+    288a:	cf 91       	pop	r28
+    288c:	1f 91       	pop	r17
+    288e:	0f 91       	pop	r16
+    2890:	ff 90       	pop	r15
+    2892:	08 95       	ret
+
+00002894 <encoder_get_v>:
+    2894:	1f 93       	push	r17
+    2896:	cf 93       	push	r28
+    2898:	df 93       	push	r29
+    289a:	18 2f       	mov	r17, r24
+    289c:	60 e0       	ldi	r22, 0x00	; 0
+    289e:	70 e0       	ldi	r23, 0x00	; 0
+    28a0:	0e 94 e6 13 	call	0x27cc	; 0x27cc <get_dx>
+    28a4:	ec 01       	movw	r28, r24
+    28a6:	81 2f       	mov	r24, r17
+    28a8:	61 e0       	ldi	r22, 0x01	; 1
+    28aa:	70 e0       	ldi	r23, 0x00	; 0
+    28ac:	0e 94 e6 13 	call	0x27cc	; 0x27cc <get_dx>
+    28b0:	24 e0       	ldi	r18, 0x04	; 4
+    28b2:	c0 30       	cpi	r28, 0x00	; 0
+    28b4:	d2 07       	cpc	r29, r18
+    28b6:	39 f4       	brne	.+14     	; 0x28c6 <encoder_get_v+0x32>
+    28b8:	24 e0       	ldi	r18, 0x04	; 4
+    28ba:	80 30       	cpi	r24, 0x00	; 0
+    28bc:	92 07       	cpc	r25, r18
+    28be:	49 f4       	brne	.+18     	; 0x28d2 <encoder_get_v+0x3e>
+    28c0:	20 e0       	ldi	r18, 0x00	; 0
+    28c2:	38 e0       	ldi	r19, 0x08	; 8
+    28c4:	0d c0       	rjmp	.+26     	; 0x28e0 <encoder_get_v+0x4c>
+    28c6:	24 e0       	ldi	r18, 0x04	; 4
+    28c8:	80 30       	cpi	r24, 0x00	; 0
+    28ca:	92 07       	cpc	r25, r18
+    28cc:	31 f4       	brne	.+12     	; 0x28da <encoder_get_v+0x46>
+    28ce:	9e 01       	movw	r18, r28
+    28d0:	01 c0       	rjmp	.+2      	; 0x28d4 <encoder_get_v+0x40>
+    28d2:	9c 01       	movw	r18, r24
+    28d4:	22 0f       	add	r18, r18
+    28d6:	33 1f       	adc	r19, r19
+    28d8:	03 c0       	rjmp	.+6      	; 0x28e0 <encoder_get_v+0x4c>
+    28da:	9c 01       	movw	r18, r24
+    28dc:	2c 0f       	add	r18, r28
+    28de:	3d 1f       	adc	r19, r29
+    28e0:	c9 01       	movw	r24, r18
+    28e2:	df 91       	pop	r29
+    28e4:	cf 91       	pop	r28
+    28e6:	1f 91       	pop	r17
+    28e8:	08 95       	ret
+
+000028ea <encoders_init>:
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    char buf[40];
+    int i;
+    for (i = 0; i < length; i++) {
+        sprintf(buf, "%d: %d ", i, packet[i]);
+    28ea:	10 92 5e 09 	sts	0x095E, r1
+    28ee:	10 92 5d 09 	sts	0x095D, r1
+        usb_puts(buf);
+    }
+    28f2:	8c e6       	ldi	r24, 0x6C	; 108
+    28f4:	92 e1       	ldi	r25, 0x12	; 18
+    28f6:	6f ea       	ldi	r22, 0xAF	; 175
+    28f8:	74 e1       	ldi	r23, 0x14	; 20
+    28fa:	0e 94 85 1b 	call	0x370a	; 0x370a <spi_init>
+    usb_puts("\r\n");
+    28fe:	10 92 c7 09 	sts	0x09C7, r1
+}*/
+    2902:	10 92 62 09 	sts	0x0962, r1
+    2906:	10 92 61 09 	sts	0x0961, r1
+
+    290a:	10 92 29 0a 	sts	0x0A29, r1
+    290e:	10 92 28 0a 	sts	0x0A28, r1
+    2912:	8f ef       	ldi	r24, 0xFF	; 255
+    2914:	9f ef       	ldi	r25, 0xFF	; 255
+    2916:	90 93 2b 0a 	sts	0x0A2B, r25
+    291a:	80 93 2a 0a 	sts	0x0A2A, r24
+    291e:	90 93 60 09 	sts	0x0960, r25
+    2922:	80 93 5f 09 	sts	0x095F, r24
+    2926:	10 92 c0 09 	sts	0x09C0, r1
+    292a:	10 92 bf 09 	sts	0x09BF, r1
+    292e:	10 92 27 0a 	sts	0x0A27, r1
+    2932:	10 92 26 0a 	sts	0x0A26, r1
+    2936:	e3 e6       	ldi	r30, 0x63	; 99
+    2938:	f9 e0       	ldi	r31, 0x09	; 9
+    293a:	11 92       	st	Z+, r1
+    293c:	11 92       	st	Z+, r1
+    293e:	89 e0       	ldi	r24, 0x09	; 9
+    2940:	ef 3b       	cpi	r30, 0xBF	; 191
+    2942:	f8 07       	cpc	r31, r24
+    2944:	d1 f7       	brne	.-12     	; 0x293a <encoders_init+0x50>
+    2946:	e8 ec       	ldi	r30, 0xC8	; 200
+    2948:	f9 e0       	ldi	r31, 0x09	; 9
+    294a:	11 92       	st	Z+, r1
+    294c:	11 92       	st	Z+, r1
+    294e:	8a e0       	ldi	r24, 0x0A	; 10
+    2950:	e4 32       	cpi	r30, 0x24	; 36
+    2952:	f8 07       	cpc	r31, r24
+    2954:	d1 f7       	brne	.-12     	; 0x294a <encoders_init+0x60>
+    2956:	85 e0       	ldi	r24, 0x05	; 5
+    2958:	0e 94 99 1b 	call	0x3732	; 0x3732 <spi_transfer>
+    295c:	08 95       	ret
+
+0000295e <encoder_recv_complete>:
+        /*packet[16] = num;
+        wl_send_global_packet(SWARM_PACKET_GROUP_ID, 0, packet, length, 0);
+        usb_puts("sent ");
+        usb_puti(num);
+        usb_puts("\r\n");
+        num++;
+    295e:	10 92 c7 09 	sts	0x09C7, r1
+        delay_ms(50);*/
+    2962:	80 91 5d 09 	lds	r24, 0x095D
+    2966:	90 91 5e 09 	lds	r25, 0x095E
+    296a:	01 96       	adiw	r24, 0x01	; 1
+    296c:	90 93 5e 09 	sts	0x095E, r25
+    2970:	80 93 5d 09 	sts	0x095D, r24
+    }
+}
+    2974:	85 e0       	ldi	r24, 0x05	; 5
+    2976:	0e 94 99 1b 	call	0x3732	; 0x3732 <spi_transfer>
+
+    297a:	08 95       	ret
+
+0000297c <lcd_clear_screen>:
+    297c:	80 e0       	ldi	r24, 0x00	; 0
+    297e:	90 e0       	ldi	r25, 0x00	; 0
+    2980:	1f b8       	out	0x0f, r1	; 15
+    2982:	77 9b       	sbis	0x0e, 7	; 14
+    2984:	fe cf       	rjmp	.-4      	; 0x2982 <lcd_clear_screen+0x6>
+    2986:	01 96       	adiw	r24, 0x01	; 1
+    2988:	21 e0       	ldi	r18, 0x01	; 1
+    298a:	88 3f       	cpi	r24, 0xF8	; 248
+    298c:	92 07       	cpc	r25, r18
+    298e:	c1 f7       	brne	.-16     	; 0x2980 <lcd_clear_screen+0x4>
+    2990:	95 98       	cbi	0x12, 5	; 18
+    2992:	80 e4       	ldi	r24, 0x40	; 64
+    2994:	8f b9       	out	0x0f, r24	; 15
+    2996:	77 9b       	sbis	0x0e, 7	; 14
+    2998:	fe cf       	rjmp	.-4      	; 0x2996 <lcd_clear_screen+0x1a>
+    299a:	80 e8       	ldi	r24, 0x80	; 128
+    299c:	8f b9       	out	0x0f, r24	; 15
+    299e:	77 9b       	sbis	0x0e, 7	; 14
+    29a0:	fe cf       	rjmp	.-4      	; 0x299e <lcd_clear_screen+0x22>
+    29a2:	95 9a       	sbi	0x12, 5	; 18
+    29a4:	08 95       	ret
+
+000029a6 <lcd_putc>:
+    29a6:	28 2f       	mov	r18, r24
+    29a8:	30 e0       	ldi	r19, 0x00	; 0
+    29aa:	20 52       	subi	r18, 0x20	; 32
+    29ac:	30 40       	sbci	r19, 0x00	; 0
+    29ae:	f9 01       	movw	r30, r18
+    29b0:	ee 0f       	add	r30, r30
+    29b2:	ff 1f       	adc	r31, r31
+    29b4:	ee 0f       	add	r30, r30
+    29b6:	ff 1f       	adc	r31, r31
+    29b8:	e2 0f       	add	r30, r18
+    29ba:	f3 1f       	adc	r31, r19
+    29bc:	e3 58       	subi	r30, 0x83	; 131
+    29be:	fe 4f       	sbci	r31, 0xFE	; 254
+    29c0:	95 e0       	ldi	r25, 0x05	; 5
+    29c2:	89 9f       	mul	r24, r25
+    29c4:	90 01       	movw	r18, r0
+    29c6:	11 24       	eor	r1, r1
+    29c8:	2e 51       	subi	r18, 0x1E	; 30
+    29ca:	3f 4f       	sbci	r19, 0xFF	; 255
+    29cc:	80 81       	ld	r24, Z
+    29ce:	8f b9       	out	0x0f, r24	; 15
+    29d0:	77 9b       	sbis	0x0e, 7	; 14
+    29d2:	fe cf       	rjmp	.-4      	; 0x29d0 <lcd_putc+0x2a>
+    29d4:	31 96       	adiw	r30, 0x01	; 1
+    29d6:	e2 17       	cp	r30, r18
+    29d8:	f3 07       	cpc	r31, r19
+    29da:	c1 f7       	brne	.-16     	; 0x29cc <lcd_putc+0x26>
+    29dc:	1f b8       	out	0x0f, r1	; 15
+    29de:	77 9b       	sbis	0x0e, 7	; 14
+    29e0:	fe cf       	rjmp	.-4      	; 0x29de <lcd_putc+0x38>
+    29e2:	08 95       	ret
+
+000029e4 <lcd_puts>:
+    29e4:	dc 01       	movw	r26, r24
+    29e6:	45 e0       	ldi	r20, 0x05	; 5
+    29e8:	0c c0       	rjmp	.+24     	; 0x2a02 <lcd_puts+0x1e>
+    29ea:	80 81       	ld	r24, Z
+    29ec:	8f b9       	out	0x0f, r24	; 15
+    29ee:	77 9b       	sbis	0x0e, 7	; 14
+    29f0:	fe cf       	rjmp	.-4      	; 0x29ee <lcd_puts+0xa>
+    29f2:	31 96       	adiw	r30, 0x01	; 1
+    29f4:	e2 17       	cp	r30, r18
+    29f6:	f3 07       	cpc	r31, r19
+    29f8:	c1 f7       	brne	.-16     	; 0x29ea <lcd_puts+0x6>
+    29fa:	1f b8       	out	0x0f, r1	; 15
+    29fc:	77 9b       	sbis	0x0e, 7	; 14
+    29fe:	fe cf       	rjmp	.-4      	; 0x29fc <lcd_puts+0x18>
+    2a00:	11 96       	adiw	r26, 0x01	; 1
+    2a02:	2c 91       	ld	r18, X
+    2a04:	22 23       	and	r18, r18
+    2a06:	91 f0       	breq	.+36     	; 0x2a2c <lcd_puts+0x48>
+    2a08:	82 2f       	mov	r24, r18
+    2a0a:	90 e0       	ldi	r25, 0x00	; 0
+    2a0c:	80 97       	sbiw	r24, 0x20	; 32
+    2a0e:	fc 01       	movw	r30, r24
+    2a10:	ee 0f       	add	r30, r30
+    2a12:	ff 1f       	adc	r31, r31
+    2a14:	ee 0f       	add	r30, r30
+    2a16:	ff 1f       	adc	r31, r31
+    2a18:	e8 0f       	add	r30, r24
+    2a1a:	f9 1f       	adc	r31, r25
+    2a1c:	e3 58       	subi	r30, 0x83	; 131
+    2a1e:	fe 4f       	sbci	r31, 0xFE	; 254
+    2a20:	24 9f       	mul	r18, r20
+    2a22:	90 01       	movw	r18, r0
+    2a24:	11 24       	eor	r1, r1
+    2a26:	2e 51       	subi	r18, 0x1E	; 30
+    2a28:	3f 4f       	sbci	r19, 0xFF	; 255
+    2a2a:	df cf       	rjmp	.-66     	; 0x29ea <lcd_puts+0x6>
+    2a2c:	08 95       	ret
+
+00002a2e <lcd_gotoxy>:
+    2a2e:	95 98       	cbi	0x12, 5	; 18
+    2a30:	67 70       	andi	r22, 0x07	; 7
+    2a32:	60 64       	ori	r22, 0x40	; 64
+    2a34:	6f b9       	out	0x0f, r22	; 15
+    2a36:	77 9b       	sbis	0x0e, 7	; 14
+    2a38:	fe cf       	rjmp	.-4      	; 0x2a36 <lcd_gotoxy+0x8>
+    2a3a:	80 68       	ori	r24, 0x80	; 128
+    2a3c:	8f b9       	out	0x0f, r24	; 15
+    2a3e:	77 9b       	sbis	0x0e, 7	; 14
+    2a40:	fe cf       	rjmp	.-4      	; 0x2a3e <lcd_gotoxy+0x10>
+    2a42:	95 9a       	sbi	0x12, 5	; 18
+    2a44:	08 95       	ret
+
+00002a46 <lcd_puti>:
+    2a46:	0f 93       	push	r16
+    2a48:	1f 93       	push	r17
+    2a4a:	df 93       	push	r29
+    2a4c:	cf 93       	push	r28
+    2a4e:	00 d0       	rcall	.+0      	; 0x2a50 <lcd_puti+0xa>
+    2a50:	00 d0       	rcall	.+0      	; 0x2a52 <lcd_puti+0xc>
+    2a52:	00 d0       	rcall	.+0      	; 0x2a54 <lcd_puti+0xe>
+    2a54:	cd b7       	in	r28, 0x3d	; 61
+    2a56:	de b7       	in	r29, 0x3e	; 62
+    2a58:	9c 01       	movw	r18, r24
+    2a5a:	de 01       	movw	r26, r28
+    2a5c:	11 96       	adiw	r26, 0x01	; 1
+    2a5e:	e7 e7       	ldi	r30, 0x77	; 119
+    2a60:	f1 e0       	ldi	r31, 0x01	; 1
+    2a62:	86 e0       	ldi	r24, 0x06	; 6
+    2a64:	01 90       	ld	r0, Z+
+    2a66:	0d 92       	st	X+, r0
+    2a68:	81 50       	subi	r24, 0x01	; 1
+    2a6a:	e1 f7       	brne	.-8      	; 0x2a64 <lcd_puti+0x1e>
+    2a6c:	37 ff       	sbrs	r19, 7
+    2a6e:	11 c0       	rjmp	.+34     	; 0x2a92 <lcd_puti+0x4c>
+    2a70:	ee eb       	ldi	r30, 0xBE	; 190
+    2a72:	f1 e0       	ldi	r31, 0x01	; 1
+    2a74:	80 81       	ld	r24, Z
+    2a76:	8f b9       	out	0x0f, r24	; 15
+    2a78:	77 9b       	sbis	0x0e, 7	; 14
+    2a7a:	fe cf       	rjmp	.-4      	; 0x2a78 <lcd_puti+0x32>
+    2a7c:	31 96       	adiw	r30, 0x01	; 1
+    2a7e:	81 e0       	ldi	r24, 0x01	; 1
+    2a80:	e3 3c       	cpi	r30, 0xC3	; 195
+    2a82:	f8 07       	cpc	r31, r24
+    2a84:	b9 f7       	brne	.-18     	; 0x2a74 <lcd_puti+0x2e>
+    2a86:	1f b8       	out	0x0f, r1	; 15
+    2a88:	77 9b       	sbis	0x0e, 7	; 14
+    2a8a:	fe cf       	rjmp	.-4      	; 0x2a88 <lcd_puti+0x42>
+    2a8c:	30 95       	com	r19
+    2a8e:	21 95       	neg	r18
+    2a90:	3f 4f       	sbci	r19, 0xFF	; 255
+    2a92:	46 e0       	ldi	r20, 0x06	; 6
+    2a94:	8e 01       	movw	r16, r28
+    2a96:	0f 5f       	subi	r16, 0xFF	; 255
+    2a98:	1f 4f       	sbci	r17, 0xFF	; 255
+    2a9a:	41 50       	subi	r20, 0x01	; 1
+    2a9c:	f8 01       	movw	r30, r16
+    2a9e:	e4 0f       	add	r30, r20
+    2aa0:	f1 1d       	adc	r31, r1
+    2aa2:	c9 01       	movw	r24, r18
+    2aa4:	6a e0       	ldi	r22, 0x0A	; 10
+    2aa6:	70 e0       	ldi	r23, 0x00	; 0
+    2aa8:	0e 94 13 32 	call	0x6426	; 0x6426 <__divmodhi4>
+    2aac:	80 5d       	subi	r24, 0xD0	; 208
+    2aae:	80 83       	st	Z, r24
+    2ab0:	c9 01       	movw	r24, r18
+    2ab2:	6a e0       	ldi	r22, 0x0A	; 10
+    2ab4:	70 e0       	ldi	r23, 0x00	; 0
+    2ab6:	0e 94 13 32 	call	0x6426	; 0x6426 <__divmodhi4>
+    2aba:	9b 01       	movw	r18, r22
+    2abc:	61 15       	cp	r22, r1
+    2abe:	71 05       	cpc	r23, r1
+    2ac0:	61 f7       	brne	.-40     	; 0x2a9a <lcd_puti+0x54>
+    2ac2:	22 c0       	rjmp	.+68     	; 0x2b08 <lcd_puti+0xc2>
+    2ac4:	fb 01       	movw	r30, r22
+    2ac6:	e4 0f       	add	r30, r20
+    2ac8:	f1 1d       	adc	r31, r1
+    2aca:	20 81       	ld	r18, Z
+    2acc:	82 2f       	mov	r24, r18
+    2ace:	90 e0       	ldi	r25, 0x00	; 0
+    2ad0:	80 97       	sbiw	r24, 0x20	; 32
+    2ad2:	fc 01       	movw	r30, r24
+    2ad4:	ee 0f       	add	r30, r30
+    2ad6:	ff 1f       	adc	r31, r31
+    2ad8:	ee 0f       	add	r30, r30
+    2ada:	ff 1f       	adc	r31, r31
+    2adc:	e8 0f       	add	r30, r24
+    2ade:	f9 1f       	adc	r31, r25
+    2ae0:	e3 58       	subi	r30, 0x83	; 131
+    2ae2:	fe 4f       	sbci	r31, 0xFE	; 254
+    2ae4:	25 9f       	mul	r18, r21
+    2ae6:	90 01       	movw	r18, r0
+    2ae8:	11 24       	eor	r1, r1
+    2aea:	2e 51       	subi	r18, 0x1E	; 30
+    2aec:	3f 4f       	sbci	r19, 0xFF	; 255
+    2aee:	80 81       	ld	r24, Z
+    2af0:	8f b9       	out	0x0f, r24	; 15
+    2af2:	77 9b       	sbis	0x0e, 7	; 14
+    2af4:	fe cf       	rjmp	.-4      	; 0x2af2 <lcd_puti+0xac>
+    2af6:	31 96       	adiw	r30, 0x01	; 1
+    2af8:	e2 17       	cp	r30, r18
+    2afa:	f3 07       	cpc	r31, r19
+    2afc:	c1 f7       	brne	.-16     	; 0x2aee <lcd_puti+0xa8>
+    2afe:	1f b8       	out	0x0f, r1	; 15
+    2b00:	77 9b       	sbis	0x0e, 7	; 14
+    2b02:	fe cf       	rjmp	.-4      	; 0x2b00 <lcd_puti+0xba>
+    2b04:	4f 5f       	subi	r20, 0xFF	; 255
+    2b06:	04 c0       	rjmp	.+8      	; 0x2b10 <lcd_puti+0xca>
+    2b08:	be 01       	movw	r22, r28
+    2b0a:	6f 5f       	subi	r22, 0xFF	; 255
+    2b0c:	7f 4f       	sbci	r23, 0xFF	; 255
+    2b0e:	55 e0       	ldi	r21, 0x05	; 5
+    2b10:	46 30       	cpi	r20, 0x06	; 6
+    2b12:	c0 f2       	brcs	.-80     	; 0x2ac4 <lcd_puti+0x7e>
+    2b14:	26 96       	adiw	r28, 0x06	; 6
+    2b16:	0f b6       	in	r0, 0x3f	; 63
+    2b18:	f8 94       	cli
+    2b1a:	de bf       	out	0x3e, r29	; 62
+    2b1c:	0f be       	out	0x3f, r0	; 63
+    2b1e:	cd bf       	out	0x3d, r28	; 61
+    2b20:	cf 91       	pop	r28
+    2b22:	df 91       	pop	r29
+    2b24:	1f 91       	pop	r17
+    2b26:	0f 91       	pop	r16
+    2b28:	08 95       	ret
+
+00002b2a <lcd_putbyte>:
+    2b2a:	8f b9       	out	0x0f, r24	; 15
+    2b2c:	77 9b       	sbis	0x0e, 7	; 14
+    2b2e:	fe cf       	rjmp	.-4      	; 0x2b2c <lcd_putbyte+0x2>
+    2b30:	08 95       	ret
+
+00002b32 <lcd_init>:
+    2b32:	87 b3       	in	r24, 0x17	; 23
+    2b34:	87 60       	ori	r24, 0x07	; 7
+    2b36:	87 bb       	out	0x17, r24	; 23
+    2b38:	81 b3       	in	r24, 0x11	; 17
+    2b3a:	80 63       	ori	r24, 0x30	; 48
+    2b3c:	81 bb       	out	0x11, r24	; 17
+    2b3e:	88 b3       	in	r24, 0x18	; 24
+    2b40:	88 7f       	andi	r24, 0xF8	; 248
+    2b42:	88 bb       	out	0x18, r24	; 24
+    2b44:	95 98       	cbi	0x12, 5	; 18
+    2b46:	8d b1       	in	r24, 0x0d	; 13
+    2b48:	80 65       	ori	r24, 0x50	; 80
+    2b4a:	8d b9       	out	0x0d, r24	; 13
+    2b4c:	70 9a       	sbi	0x0e, 0	; 14
+    2b4e:	94 9a       	sbi	0x12, 4	; 18
+    2b50:	8a e0       	ldi	r24, 0x0A	; 10
+    2b52:	90 e0       	ldi	r25, 0x00	; 0
+    2b54:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    2b58:	94 98       	cbi	0x12, 4	; 18
+    2b5a:	84 e6       	ldi	r24, 0x64	; 100
+    2b5c:	90 e0       	ldi	r25, 0x00	; 0
+    2b5e:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    2b62:	94 9a       	sbi	0x12, 4	; 18
+    2b64:	81 e2       	ldi	r24, 0x21	; 33
+    2b66:	8f b9       	out	0x0f, r24	; 15
+    2b68:	77 9b       	sbis	0x0e, 7	; 14
+    2b6a:	fe cf       	rjmp	.-4      	; 0x2b68 <lcd_init+0x36>
+    2b6c:	88 ec       	ldi	r24, 0xC8	; 200
+    2b6e:	8f b9       	out	0x0f, r24	; 15
+    2b70:	77 9b       	sbis	0x0e, 7	; 14
+    2b72:	fe cf       	rjmp	.-4      	; 0x2b70 <lcd_init+0x3e>
+    2b74:	86 e0       	ldi	r24, 0x06	; 6
+    2b76:	8f b9       	out	0x0f, r24	; 15
+    2b78:	77 9b       	sbis	0x0e, 7	; 14
+    2b7a:	fe cf       	rjmp	.-4      	; 0x2b78 <lcd_init+0x46>
+    2b7c:	83 e1       	ldi	r24, 0x13	; 19
+    2b7e:	8f b9       	out	0x0f, r24	; 15
+    2b80:	77 9b       	sbis	0x0e, 7	; 14
+    2b82:	fe cf       	rjmp	.-4      	; 0x2b80 <lcd_init+0x4e>
+    2b84:	80 e2       	ldi	r24, 0x20	; 32
+    2b86:	8f b9       	out	0x0f, r24	; 15
+    2b88:	77 9b       	sbis	0x0e, 7	; 14
+    2b8a:	fe cf       	rjmp	.-4      	; 0x2b88 <lcd_init+0x56>
+    2b8c:	8c e0       	ldi	r24, 0x0C	; 12
+    2b8e:	8f b9       	out	0x0f, r24	; 15
+    2b90:	77 9b       	sbis	0x0e, 7	; 14
+    2b92:	fe cf       	rjmp	.-4      	; 0x2b90 <lcd_init+0x5e>
+    2b94:	95 9a       	sbi	0x12, 5	; 18
+    2b96:	0e 94 be 14 	call	0x297c	; 0x297c <lcd_clear_screen>
+    2b9a:	08 95       	ret
+
+00002b9c <__vector_16>:
+    2b9c:	1f 92       	push	r1
+    2b9e:	0f 92       	push	r0
+    2ba0:	0f b6       	in	r0, 0x3f	; 63
+    2ba2:	0f 92       	push	r0
+    2ba4:	0b b6       	in	r0, 0x3b	; 59
+    2ba6:	0f 92       	push	r0
+    2ba8:	11 24       	eor	r1, r1
+    2baa:	2f 93       	push	r18
+    2bac:	3f 93       	push	r19
+    2bae:	8f 93       	push	r24
+    2bb0:	9f 93       	push	r25
+    2bb2:	af 93       	push	r26
+    2bb4:	bf 93       	push	r27
+    2bb6:	cf 93       	push	r28
+    2bb8:	df 93       	push	r29
+    2bba:	ef 93       	push	r30
+    2bbc:	ff 93       	push	r31
+    2bbe:	80 91 b7 06 	lds	r24, 0x06B7
+    2bc2:	88 23       	and	r24, r24
+    2bc4:	91 f0       	breq	.+36     	; 0x2bea <__vector_16+0x4e>
+    2bc6:	20 91 64 03 	lds	r18, 0x0364
+    2bca:	30 91 65 03 	lds	r19, 0x0365
+    2bce:	80 91 68 03 	lds	r24, 0x0368
+    2bd2:	90 91 69 03 	lds	r25, 0x0369
+    2bd6:	90 93 65 03 	sts	0x0365, r25
+    2bda:	80 93 64 03 	sts	0x0364, r24
+    2bde:	30 93 69 03 	sts	0x0369, r19
+    2be2:	20 93 68 03 	sts	0x0368, r18
+    2be6:	10 92 b7 06 	sts	0x06B7, r1
+    2bea:	85 b3       	in	r24, 0x15	; 21
+    2bec:	87 67       	ori	r24, 0x77	; 119
+    2bee:	85 bb       	out	0x15, r24	; 21
+    2bf0:	85 b3       	in	r24, 0x15	; 21
+    2bf2:	c0 91 64 03 	lds	r28, 0x0364
+    2bf6:	d0 91 65 03 	lds	r29, 0x0365
+    2bfa:	98 81       	ld	r25, Y
+    2bfc:	89 23       	and	r24, r25
+    2bfe:	85 bb       	out	0x15, r24	; 21
+    2c00:	10 92 b8 06 	sts	0x06B8, r1
+    2c04:	89 81       	ldd	r24, Y+1	; 0x01
+    2c06:	81 bf       	out	0x31, r24	; 49
+    2c08:	20 e0       	ldi	r18, 0x00	; 0
+    2c0a:	a2 2f       	mov	r26, r18
+    2c0c:	b0 e0       	ldi	r27, 0x00	; 0
+    2c0e:	82 b7       	in	r24, 0x32	; 50
+    2c10:	fd 01       	movw	r30, r26
+    2c12:	ee 0f       	add	r30, r30
+    2c14:	ff 1f       	adc	r31, r31
+    2c16:	ec 0f       	add	r30, r28
+    2c18:	fd 1f       	adc	r31, r29
+    2c1a:	91 81       	ldd	r25, Z+1	; 0x01
+    2c1c:	9f 5f       	subi	r25, 0xFF	; 255
+    2c1e:	89 17       	cp	r24, r25
+    2c20:	b8 f0       	brcs	.+46     	; 0x2c50 <__vector_16+0xb4>
+    2c22:	95 b3       	in	r25, 0x15	; 21
+    2c24:	11 96       	adiw	r26, 0x01	; 1
+    2c26:	aa 0f       	add	r26, r26
+    2c28:	bb 1f       	adc	r27, r27
+    2c2a:	ac 0f       	add	r26, r28
+    2c2c:	bd 1f       	adc	r27, r29
+    2c2e:	8c 91       	ld	r24, X
+    2c30:	98 2b       	or	r25, r24
+    2c32:	95 bb       	out	0x15, r25	; 21
+    2c34:	25 30       	cpi	r18, 0x05	; 5
+    2c36:	61 f0       	breq	.+24     	; 0x2c50 <__vector_16+0xb4>
+    2c38:	2f 5f       	subi	r18, 0xFF	; 255
+    2c3a:	e2 2f       	mov	r30, r18
+    2c3c:	f0 e0       	ldi	r31, 0x00	; 0
+    2c3e:	ee 0f       	add	r30, r30
+    2c40:	ff 1f       	adc	r31, r31
+    2c42:	ec 0f       	add	r30, r28
+    2c44:	fd 1f       	adc	r31, r29
+    2c46:	81 81       	ldd	r24, Z+1	; 0x01
+    2c48:	8f 3f       	cpi	r24, 0xFF	; 255
+    2c4a:	f9 f2       	breq	.-66     	; 0x2c0a <__vector_16+0x6e>
+    2c4c:	81 bf       	out	0x31, r24	; 49
+    2c4e:	dd cf       	rjmp	.-70     	; 0x2c0a <__vector_16+0x6e>
+    2c50:	20 93 b8 06 	sts	0x06B8, r18
+    2c54:	ff 91       	pop	r31
+    2c56:	ef 91       	pop	r30
+    2c58:	df 91       	pop	r29
+    2c5a:	cf 91       	pop	r28
+    2c5c:	bf 91       	pop	r27
+    2c5e:	af 91       	pop	r26
+    2c60:	9f 91       	pop	r25
+    2c62:	8f 91       	pop	r24
+    2c64:	3f 91       	pop	r19
+    2c66:	2f 91       	pop	r18
+    2c68:	0f 90       	pop	r0
+    2c6a:	0b be       	out	0x3b, r0	; 59
+    2c6c:	0f 90       	pop	r0
+    2c6e:	0f be       	out	0x3f, r0	; 63
+    2c70:	0f 90       	pop	r0
+    2c72:	1f 90       	pop	r1
+    2c74:	18 95       	reti
+
+00002c76 <__vector_15>:
+    2c76:	1f 92       	push	r1
+    2c78:	0f 92       	push	r0
+    2c7a:	0f b6       	in	r0, 0x3f	; 63
+    2c7c:	0f 92       	push	r0
+    2c7e:	0b b6       	in	r0, 0x3b	; 59
+    2c80:	0f 92       	push	r0
+    2c82:	11 24       	eor	r1, r1
+    2c84:	2f 93       	push	r18
+    2c86:	4f 93       	push	r20
+    2c88:	5f 93       	push	r21
+    2c8a:	8f 93       	push	r24
+    2c8c:	9f 93       	push	r25
+    2c8e:	af 93       	push	r26
+    2c90:	bf 93       	push	r27
+    2c92:	ef 93       	push	r30
+    2c94:	ff 93       	push	r31
+    2c96:	40 91 64 03 	lds	r20, 0x0364
+    2c9a:	50 91 65 03 	lds	r21, 0x0365
+    2c9e:	20 91 b8 06 	lds	r18, 0x06B8
+    2ca2:	a2 2f       	mov	r26, r18
+    2ca4:	b0 e0       	ldi	r27, 0x00	; 0
+    2ca6:	82 b7       	in	r24, 0x32	; 50
+    2ca8:	fd 01       	movw	r30, r26
+    2caa:	ee 0f       	add	r30, r30
+    2cac:	ff 1f       	adc	r31, r31
+    2cae:	e4 0f       	add	r30, r20
+    2cb0:	f5 1f       	adc	r31, r21
+    2cb2:	91 81       	ldd	r25, Z+1	; 0x01
+    2cb4:	9f 5f       	subi	r25, 0xFF	; 255
+    2cb6:	89 17       	cp	r24, r25
+    2cb8:	b8 f0       	brcs	.+46     	; 0x2ce8 <__vector_15+0x72>
+    2cba:	95 b3       	in	r25, 0x15	; 21
+    2cbc:	11 96       	adiw	r26, 0x01	; 1
+    2cbe:	aa 0f       	add	r26, r26
+    2cc0:	bb 1f       	adc	r27, r27
+    2cc2:	a4 0f       	add	r26, r20
+    2cc4:	b5 1f       	adc	r27, r21
+    2cc6:	8c 91       	ld	r24, X
+    2cc8:	98 2b       	or	r25, r24
+    2cca:	95 bb       	out	0x15, r25	; 21
+    2ccc:	25 30       	cpi	r18, 0x05	; 5
+    2cce:	61 f0       	breq	.+24     	; 0x2ce8 <__vector_15+0x72>
+    2cd0:	2f 5f       	subi	r18, 0xFF	; 255
+    2cd2:	e2 2f       	mov	r30, r18
+    2cd4:	f0 e0       	ldi	r31, 0x00	; 0
+    2cd6:	ee 0f       	add	r30, r30
+    2cd8:	ff 1f       	adc	r31, r31
+    2cda:	e4 0f       	add	r30, r20
+    2cdc:	f5 1f       	adc	r31, r21
+    2cde:	81 81       	ldd	r24, Z+1	; 0x01
+    2ce0:	8f 3f       	cpi	r24, 0xFF	; 255
+    2ce2:	f9 f2       	breq	.-66     	; 0x2ca2 <__vector_15+0x2c>
+    2ce4:	81 bf       	out	0x31, r24	; 49
+    2ce6:	dd cf       	rjmp	.-70     	; 0x2ca2 <__vector_15+0x2c>
+    2ce8:	20 93 b8 06 	sts	0x06B8, r18
+    2cec:	ff 91       	pop	r31
+    2cee:	ef 91       	pop	r30
+    2cf0:	bf 91       	pop	r27
+    2cf2:	af 91       	pop	r26
+    2cf4:	9f 91       	pop	r25
+    2cf6:	8f 91       	pop	r24
+    2cf8:	5f 91       	pop	r21
+    2cfa:	4f 91       	pop	r20
+    2cfc:	2f 91       	pop	r18
+    2cfe:	0f 90       	pop	r0
+    2d00:	0b be       	out	0x3b, r0	; 59
+    2d02:	0f 90       	pop	r0
+    2d04:	0f be       	out	0x3f, r0	; 63
+    2d06:	0f 90       	pop	r0
+    2d08:	1f 90       	pop	r1
+    2d0a:	18 95       	reti
+
+00002d0c <apply_orbs>:
+    2d0c:	0f 93       	push	r16
+    2d0e:	1f 93       	push	r17
+    2d10:	cf 93       	push	r28
+    2d12:	df 93       	push	r29
+    2d14:	80 91 63 03 	lds	r24, 0x0363
+    2d18:	88 23       	and	r24, r24
+    2d1a:	09 f4       	brne	.+2      	; 0x2d1e <apply_orbs+0x12>
+    2d1c:	62 c1       	rjmp	.+708    	; 0x2fe2 <apply_orbs+0x2d6>
+    2d1e:	e0 91 66 03 	lds	r30, 0x0366
+    2d22:	f0 91 67 03 	lds	r31, 0x0367
+    2d26:	8f ef       	ldi	r24, 0xFF	; 255
+    2d28:	80 83       	st	Z, r24
+    2d2a:	80 91 53 0a 	lds	r24, 0x0A53
+    2d2e:	81 50       	subi	r24, 0x01	; 1
+    2d30:	81 83       	std	Z+1, r24	; 0x01
+    2d32:	8f 5f       	subi	r24, 0xFF	; 255
+    2d34:	91 e0       	ldi	r25, 0x01	; 1
+    2d36:	92 83       	std	Z+2, r25	; 0x02
+    2d38:	88 23       	and	r24, r24
+    2d3a:	11 f0       	breq	.+4      	; 0x2d40 <apply_orbs+0x34>
+    2d3c:	8e ef       	ldi	r24, 0xFE	; 254
+    2d3e:	80 83       	st	Z, r24
+    2d40:	80 91 54 0a 	lds	r24, 0x0A54
+    2d44:	81 50       	subi	r24, 0x01	; 1
+    2d46:	83 83       	std	Z+3, r24	; 0x03
+    2d48:	8f 5f       	subi	r24, 0xFF	; 255
+    2d4a:	92 e0       	ldi	r25, 0x02	; 2
+    2d4c:	94 83       	std	Z+4, r25	; 0x04
+    2d4e:	88 23       	and	r24, r24
+    2d50:	19 f0       	breq	.+6      	; 0x2d58 <apply_orbs+0x4c>
+    2d52:	80 81       	ld	r24, Z
+    2d54:	8d 7f       	andi	r24, 0xFD	; 253
+    2d56:	80 83       	st	Z, r24
+    2d58:	80 91 55 0a 	lds	r24, 0x0A55
+    2d5c:	81 50       	subi	r24, 0x01	; 1
+    2d5e:	85 83       	std	Z+5, r24	; 0x05
+    2d60:	8f 5f       	subi	r24, 0xFF	; 255
+    2d62:	94 e0       	ldi	r25, 0x04	; 4
+    2d64:	96 83       	std	Z+6, r25	; 0x06
+    2d66:	88 23       	and	r24, r24
+    2d68:	19 f0       	breq	.+6      	; 0x2d70 <apply_orbs+0x64>
+    2d6a:	80 81       	ld	r24, Z
+    2d6c:	8b 7f       	andi	r24, 0xFB	; 251
+    2d6e:	80 83       	st	Z, r24
+    2d70:	80 91 56 0a 	lds	r24, 0x0A56
+    2d74:	81 50       	subi	r24, 0x01	; 1
+    2d76:	87 83       	std	Z+7, r24	; 0x07
+    2d78:	8f 5f       	subi	r24, 0xFF	; 255
+    2d7a:	90 e1       	ldi	r25, 0x10	; 16
+    2d7c:	90 87       	std	Z+8, r25	; 0x08
+    2d7e:	88 23       	and	r24, r24
+    2d80:	19 f0       	breq	.+6      	; 0x2d88 <apply_orbs+0x7c>
+    2d82:	80 81       	ld	r24, Z
+    2d84:	8f 7e       	andi	r24, 0xEF	; 239
+    2d86:	80 83       	st	Z, r24
+    2d88:	80 91 57 0a 	lds	r24, 0x0A57
+    2d8c:	81 50       	subi	r24, 0x01	; 1
+    2d8e:	81 87       	std	Z+9, r24	; 0x09
+    2d90:	8f 5f       	subi	r24, 0xFF	; 255
+    2d92:	90 e2       	ldi	r25, 0x20	; 32
+    2d94:	92 87       	std	Z+10, r25	; 0x0a
+    2d96:	88 23       	and	r24, r24
+    2d98:	19 f0       	breq	.+6      	; 0x2da0 <apply_orbs+0x94>
+    2d9a:	80 81       	ld	r24, Z
+    2d9c:	8f 7d       	andi	r24, 0xDF	; 223
+    2d9e:	80 83       	st	Z, r24
+    2da0:	80 91 58 0a 	lds	r24, 0x0A58
+    2da4:	81 50       	subi	r24, 0x01	; 1
+    2da6:	83 87       	std	Z+11, r24	; 0x0b
+    2da8:	8f 5f       	subi	r24, 0xFF	; 255
+    2daa:	90 e4       	ldi	r25, 0x40	; 64
+    2dac:	94 87       	std	Z+12, r25	; 0x0c
+    2dae:	88 23       	and	r24, r24
+    2db0:	19 f0       	breq	.+6      	; 0x2db8 <apply_orbs+0xac>
+    2db2:	80 81       	ld	r24, Z
+    2db4:	8f 7b       	andi	r24, 0xBF	; 191
+    2db6:	80 83       	st	Z, r24
+    2db8:	91 81       	ldd	r25, Z+1	; 0x01
+    2dba:	83 81       	ldd	r24, Z+3	; 0x03
+    2dbc:	89 17       	cp	r24, r25
+    2dbe:	10 f0       	brcs	.+4      	; 0x2dc4 <apply_orbs+0xb8>
+    2dc0:	61 e0       	ldi	r22, 0x01	; 1
+    2dc2:	07 c0       	rjmp	.+14     	; 0x2dd2 <apply_orbs+0xc6>
+    2dc4:	81 83       	std	Z+1, r24	; 0x01
+    2dc6:	93 83       	std	Z+3, r25	; 0x03
+    2dc8:	92 81       	ldd	r25, Z+2	; 0x02
+    2dca:	84 81       	ldd	r24, Z+4	; 0x04
+    2dcc:	82 83       	std	Z+2, r24	; 0x02
+    2dce:	94 83       	std	Z+4, r25	; 0x04
+    2dd0:	60 e0       	ldi	r22, 0x00	; 0
+    2dd2:	df 01       	movw	r26, r30
+    2dd4:	15 96       	adiw	r26, 0x05	; 5
+    2dd6:	93 81       	ldd	r25, Z+3	; 0x03
+    2dd8:	85 81       	ldd	r24, Z+5	; 0x05
+    2dda:	89 17       	cp	r24, r25
+    2ddc:	58 f4       	brcc	.+22     	; 0x2df4 <apply_orbs+0xe8>
+    2dde:	83 83       	std	Z+3, r24	; 0x03
+    2de0:	95 83       	std	Z+5, r25	; 0x05
+    2de2:	94 81       	ldd	r25, Z+4	; 0x04
+    2de4:	11 96       	adiw	r26, 0x01	; 1
+    2de6:	8c 91       	ld	r24, X
+    2de8:	11 97       	sbiw	r26, 0x01	; 1
+    2dea:	84 83       	std	Z+4, r24	; 0x04
+    2dec:	11 96       	adiw	r26, 0x01	; 1
+    2dee:	9c 93       	st	X, r25
+    2df0:	11 97       	sbiw	r26, 0x01	; 1
+    2df2:	60 e0       	ldi	r22, 0x00	; 0
+    2df4:	8d 01       	movw	r16, r26
+    2df6:	0e 5f       	subi	r16, 0xFE	; 254
+    2df8:	1f 4f       	sbci	r17, 0xFF	; 255
+    2dfa:	95 81       	ldd	r25, Z+5	; 0x05
+    2dfc:	12 96       	adiw	r26, 0x02	; 2
+    2dfe:	8c 91       	ld	r24, X
+    2e00:	12 97       	sbiw	r26, 0x02	; 2
+    2e02:	89 17       	cp	r24, r25
+    2e04:	70 f4       	brcc	.+28     	; 0x2e22 <apply_orbs+0x116>
+    2e06:	85 83       	std	Z+5, r24	; 0x05
+    2e08:	12 96       	adiw	r26, 0x02	; 2
+    2e0a:	9c 93       	st	X, r25
+    2e0c:	12 97       	sbiw	r26, 0x02	; 2
+    2e0e:	11 96       	adiw	r26, 0x01	; 1
+    2e10:	9c 91       	ld	r25, X
+    2e12:	11 97       	sbiw	r26, 0x01	; 1
+    2e14:	e8 01       	movw	r28, r16
+    2e16:	89 81       	ldd	r24, Y+1	; 0x01
+    2e18:	11 96       	adiw	r26, 0x01	; 1
+    2e1a:	8c 93       	st	X, r24
+    2e1c:	11 97       	sbiw	r26, 0x01	; 1
+    2e1e:	99 83       	std	Y+1, r25	; 0x01
+    2e20:	60 e0       	ldi	r22, 0x00	; 0
+    2e22:	98 01       	movw	r18, r16
+    2e24:	2e 5f       	subi	r18, 0xFE	; 254
+    2e26:	3f 4f       	sbci	r19, 0xFF	; 255
+    2e28:	12 96       	adiw	r26, 0x02	; 2
+    2e2a:	9c 91       	ld	r25, X
+    2e2c:	12 97       	sbiw	r26, 0x02	; 2
+    2e2e:	e8 01       	movw	r28, r16
+    2e30:	8a 81       	ldd	r24, Y+2	; 0x02
+    2e32:	89 17       	cp	r24, r25
+    2e34:	60 f4       	brcc	.+24     	; 0x2e4e <apply_orbs+0x142>
+    2e36:	12 96       	adiw	r26, 0x02	; 2
+    2e38:	8c 93       	st	X, r24
+    2e3a:	12 97       	sbiw	r26, 0x02	; 2
+    2e3c:	9a 83       	std	Y+2, r25	; 0x02
+    2e3e:	99 81       	ldd	r25, Y+1	; 0x01
+    2e40:	e9 01       	movw	r28, r18
+    2e42:	89 81       	ldd	r24, Y+1	; 0x01
+    2e44:	e8 01       	movw	r28, r16
+    2e46:	89 83       	std	Y+1, r24	; 0x01
+    2e48:	e9 01       	movw	r28, r18
+    2e4a:	99 83       	std	Y+1, r25	; 0x01
+    2e4c:	60 e0       	ldi	r22, 0x00	; 0
+    2e4e:	a9 01       	movw	r20, r18
+    2e50:	4e 5f       	subi	r20, 0xFE	; 254
+    2e52:	5f 4f       	sbci	r21, 0xFF	; 255
+    2e54:	e8 01       	movw	r28, r16
+    2e56:	9a 81       	ldd	r25, Y+2	; 0x02
+    2e58:	e9 01       	movw	r28, r18
+    2e5a:	8a 81       	ldd	r24, Y+2	; 0x02
+    2e5c:	89 17       	cp	r24, r25
+    2e5e:	60 f4       	brcc	.+24     	; 0x2e78 <apply_orbs+0x16c>
+    2e60:	e8 01       	movw	r28, r16
+    2e62:	8a 83       	std	Y+2, r24	; 0x02
+    2e64:	e9 01       	movw	r28, r18
+    2e66:	9a 83       	std	Y+2, r25	; 0x02
+    2e68:	99 81       	ldd	r25, Y+1	; 0x01
+    2e6a:	ea 01       	movw	r28, r20
+    2e6c:	89 81       	ldd	r24, Y+1	; 0x01
+    2e6e:	e9 01       	movw	r28, r18
+    2e70:	89 83       	std	Y+1, r24	; 0x01
+    2e72:	ea 01       	movw	r28, r20
+    2e74:	99 83       	std	Y+1, r25	; 0x01
+    2e76:	03 c0       	rjmp	.+6      	; 0x2e7e <apply_orbs+0x172>
+    2e78:	66 23       	and	r22, r22
+    2e7a:	09 f0       	breq	.+2      	; 0x2e7e <apply_orbs+0x172>
+    2e7c:	9f c0       	rjmp	.+318    	; 0x2fbc <apply_orbs+0x2b0>
+    2e7e:	91 81       	ldd	r25, Z+1	; 0x01
+    2e80:	83 81       	ldd	r24, Z+3	; 0x03
+    2e82:	89 17       	cp	r24, r25
+    2e84:	10 f0       	brcs	.+4      	; 0x2e8a <apply_orbs+0x17e>
+    2e86:	91 e0       	ldi	r25, 0x01	; 1
+    2e88:	07 c0       	rjmp	.+14     	; 0x2e98 <apply_orbs+0x18c>
+    2e8a:	81 83       	std	Z+1, r24	; 0x01
+    2e8c:	93 83       	std	Z+3, r25	; 0x03
+    2e8e:	92 81       	ldd	r25, Z+2	; 0x02
+    2e90:	84 81       	ldd	r24, Z+4	; 0x04
+    2e92:	82 83       	std	Z+2, r24	; 0x02
+    2e94:	94 83       	std	Z+4, r25	; 0x04
+    2e96:	90 e0       	ldi	r25, 0x00	; 0
+    2e98:	43 81       	ldd	r20, Z+3	; 0x03
+    2e9a:	85 81       	ldd	r24, Z+5	; 0x05
+    2e9c:	84 17       	cp	r24, r20
+    2e9e:	58 f4       	brcc	.+22     	; 0x2eb6 <apply_orbs+0x1aa>
+    2ea0:	83 83       	std	Z+3, r24	; 0x03
+    2ea2:	45 83       	std	Z+5, r20	; 0x05
+    2ea4:	94 81       	ldd	r25, Z+4	; 0x04
+    2ea6:	11 96       	adiw	r26, 0x01	; 1
+    2ea8:	8c 91       	ld	r24, X
+    2eaa:	11 97       	sbiw	r26, 0x01	; 1
+    2eac:	84 83       	std	Z+4, r24	; 0x04
+    2eae:	11 96       	adiw	r26, 0x01	; 1
+    2eb0:	9c 93       	st	X, r25
+    2eb2:	11 97       	sbiw	r26, 0x01	; 1
+    2eb4:	90 e0       	ldi	r25, 0x00	; 0
+    2eb6:	45 81       	ldd	r20, Z+5	; 0x05
+    2eb8:	12 96       	adiw	r26, 0x02	; 2
+    2eba:	8c 91       	ld	r24, X
+    2ebc:	12 97       	sbiw	r26, 0x02	; 2
+    2ebe:	84 17       	cp	r24, r20
+    2ec0:	70 f4       	brcc	.+28     	; 0x2ede <apply_orbs+0x1d2>
+    2ec2:	85 83       	std	Z+5, r24	; 0x05
+    2ec4:	12 96       	adiw	r26, 0x02	; 2
+    2ec6:	4c 93       	st	X, r20
+    2ec8:	12 97       	sbiw	r26, 0x02	; 2
+    2eca:	11 96       	adiw	r26, 0x01	; 1
+    2ecc:	9c 91       	ld	r25, X
+    2ece:	11 97       	sbiw	r26, 0x01	; 1
+    2ed0:	e8 01       	movw	r28, r16
+    2ed2:	89 81       	ldd	r24, Y+1	; 0x01
+    2ed4:	11 96       	adiw	r26, 0x01	; 1
+    2ed6:	8c 93       	st	X, r24
+    2ed8:	11 97       	sbiw	r26, 0x01	; 1
+    2eda:	99 83       	std	Y+1, r25	; 0x01
+    2edc:	90 e0       	ldi	r25, 0x00	; 0
+    2ede:	12 96       	adiw	r26, 0x02	; 2
+    2ee0:	4c 91       	ld	r20, X
+    2ee2:	12 97       	sbiw	r26, 0x02	; 2
+    2ee4:	e8 01       	movw	r28, r16
+    2ee6:	8a 81       	ldd	r24, Y+2	; 0x02
+    2ee8:	84 17       	cp	r24, r20
+    2eea:	60 f4       	brcc	.+24     	; 0x2f04 <apply_orbs+0x1f8>
+    2eec:	12 96       	adiw	r26, 0x02	; 2
+    2eee:	8c 93       	st	X, r24
+    2ef0:	12 97       	sbiw	r26, 0x02	; 2
+    2ef2:	4a 83       	std	Y+2, r20	; 0x02
+    2ef4:	99 81       	ldd	r25, Y+1	; 0x01
+    2ef6:	e9 01       	movw	r28, r18
+    2ef8:	89 81       	ldd	r24, Y+1	; 0x01
+    2efa:	e8 01       	movw	r28, r16
+    2efc:	89 83       	std	Y+1, r24	; 0x01
+    2efe:	e9 01       	movw	r28, r18
+    2f00:	99 83       	std	Y+1, r25	; 0x01
+    2f02:	03 c0       	rjmp	.+6      	; 0x2f0a <apply_orbs+0x1fe>
+    2f04:	99 23       	and	r25, r25
+    2f06:	09 f0       	breq	.+2      	; 0x2f0a <apply_orbs+0x1fe>
+    2f08:	59 c0       	rjmp	.+178    	; 0x2fbc <apply_orbs+0x2b0>
+    2f0a:	91 81       	ldd	r25, Z+1	; 0x01
+    2f0c:	83 81       	ldd	r24, Z+3	; 0x03
+    2f0e:	89 17       	cp	r24, r25
+    2f10:	10 f0       	brcs	.+4      	; 0x2f16 <apply_orbs+0x20a>
+    2f12:	91 e0       	ldi	r25, 0x01	; 1
+    2f14:	07 c0       	rjmp	.+14     	; 0x2f24 <apply_orbs+0x218>
+    2f16:	81 83       	std	Z+1, r24	; 0x01
+    2f18:	93 83       	std	Z+3, r25	; 0x03
+    2f1a:	92 81       	ldd	r25, Z+2	; 0x02
+    2f1c:	84 81       	ldd	r24, Z+4	; 0x04
+    2f1e:	82 83       	std	Z+2, r24	; 0x02
+    2f20:	94 83       	std	Z+4, r25	; 0x04
+    2f22:	90 e0       	ldi	r25, 0x00	; 0
+    2f24:	23 81       	ldd	r18, Z+3	; 0x03
+    2f26:	85 81       	ldd	r24, Z+5	; 0x05
+    2f28:	82 17       	cp	r24, r18
+    2f2a:	58 f4       	brcc	.+22     	; 0x2f42 <apply_orbs+0x236>
+    2f2c:	83 83       	std	Z+3, r24	; 0x03
+    2f2e:	25 83       	std	Z+5, r18	; 0x05
+    2f30:	94 81       	ldd	r25, Z+4	; 0x04
+    2f32:	11 96       	adiw	r26, 0x01	; 1
+    2f34:	8c 91       	ld	r24, X
+    2f36:	11 97       	sbiw	r26, 0x01	; 1
+    2f38:	84 83       	std	Z+4, r24	; 0x04
+    2f3a:	11 96       	adiw	r26, 0x01	; 1
+    2f3c:	9c 93       	st	X, r25
+    2f3e:	11 97       	sbiw	r26, 0x01	; 1
+    2f40:	90 e0       	ldi	r25, 0x00	; 0
+    2f42:	25 81       	ldd	r18, Z+5	; 0x05
+    2f44:	12 96       	adiw	r26, 0x02	; 2
+    2f46:	8c 91       	ld	r24, X
+    2f48:	12 97       	sbiw	r26, 0x02	; 2
+    2f4a:	82 17       	cp	r24, r18
+    2f4c:	70 f4       	brcc	.+28     	; 0x2f6a <apply_orbs+0x25e>
+    2f4e:	85 83       	std	Z+5, r24	; 0x05
+    2f50:	12 96       	adiw	r26, 0x02	; 2
+    2f52:	2c 93       	st	X, r18
+    2f54:	12 97       	sbiw	r26, 0x02	; 2
+    2f56:	11 96       	adiw	r26, 0x01	; 1
+    2f58:	9c 91       	ld	r25, X
+    2f5a:	11 97       	sbiw	r26, 0x01	; 1
+    2f5c:	e8 01       	movw	r28, r16
+    2f5e:	89 81       	ldd	r24, Y+1	; 0x01
+    2f60:	11 96       	adiw	r26, 0x01	; 1
+    2f62:	8c 93       	st	X, r24
+    2f64:	11 97       	sbiw	r26, 0x01	; 1
+    2f66:	99 83       	std	Y+1, r25	; 0x01
+    2f68:	02 c0       	rjmp	.+4      	; 0x2f6e <apply_orbs+0x262>
+    2f6a:	99 23       	and	r25, r25
+    2f6c:	39 f5       	brne	.+78     	; 0x2fbc <apply_orbs+0x2b0>
+    2f6e:	91 81       	ldd	r25, Z+1	; 0x01
+    2f70:	83 81       	ldd	r24, Z+3	; 0x03
+    2f72:	89 17       	cp	r24, r25
+    2f74:	10 f0       	brcs	.+4      	; 0x2f7a <apply_orbs+0x26e>
+    2f76:	21 e0       	ldi	r18, 0x01	; 1
+    2f78:	07 c0       	rjmp	.+14     	; 0x2f88 <apply_orbs+0x27c>
+    2f7a:	81 83       	std	Z+1, r24	; 0x01
+    2f7c:	93 83       	std	Z+3, r25	; 0x03
+    2f7e:	92 81       	ldd	r25, Z+2	; 0x02
+    2f80:	84 81       	ldd	r24, Z+4	; 0x04
+    2f82:	82 83       	std	Z+2, r24	; 0x02
+    2f84:	94 83       	std	Z+4, r25	; 0x04
+    2f86:	20 e0       	ldi	r18, 0x00	; 0
+    2f88:	93 81       	ldd	r25, Z+3	; 0x03
+    2f8a:	85 81       	ldd	r24, Z+5	; 0x05
+    2f8c:	89 17       	cp	r24, r25
+    2f8e:	50 f4       	brcc	.+20     	; 0x2fa4 <apply_orbs+0x298>
+    2f90:	83 83       	std	Z+3, r24	; 0x03
+    2f92:	95 83       	std	Z+5, r25	; 0x05
+    2f94:	94 81       	ldd	r25, Z+4	; 0x04
+    2f96:	11 96       	adiw	r26, 0x01	; 1
+    2f98:	8c 91       	ld	r24, X
+    2f9a:	11 97       	sbiw	r26, 0x01	; 1
+    2f9c:	84 83       	std	Z+4, r24	; 0x04
+    2f9e:	11 96       	adiw	r26, 0x01	; 1
+    2fa0:	9c 93       	st	X, r25
+    2fa2:	02 c0       	rjmp	.+4      	; 0x2fa8 <apply_orbs+0x29c>
+    2fa4:	22 23       	and	r18, r18
+    2fa6:	51 f4       	brne	.+20     	; 0x2fbc <apply_orbs+0x2b0>
+    2fa8:	91 81       	ldd	r25, Z+1	; 0x01
+    2faa:	83 81       	ldd	r24, Z+3	; 0x03
+    2fac:	89 17       	cp	r24, r25
+    2fae:	30 f4       	brcc	.+12     	; 0x2fbc <apply_orbs+0x2b0>
+    2fb0:	81 83       	std	Z+1, r24	; 0x01
+    2fb2:	93 83       	std	Z+3, r25	; 0x03
+    2fb4:	92 81       	ldd	r25, Z+2	; 0x02
+    2fb6:	84 81       	ldd	r24, Z+4	; 0x04
+    2fb8:	82 83       	std	Z+2, r24	; 0x02
+    2fba:	94 83       	std	Z+4, r25	; 0x04
+    2fbc:	8f b7       	in	r24, 0x3f	; 63
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    char buf[40];
+    int i;
+    2fbe:	f8 94       	cli
+    2fc0:	20 91 68 03 	lds	r18, 0x0368
+    2fc4:	30 91 69 03 	lds	r19, 0x0369
+    2fc8:	30 93 67 03 	sts	0x0367, r19
+    2fcc:	20 93 66 03 	sts	0x0366, r18
+    2fd0:	f0 93 69 03 	sts	0x0369, r31
+    2fd4:	e0 93 68 03 	sts	0x0368, r30
+    2fd8:	8f bf       	out	0x3f, r24	; 63
+    2fda:	81 e0       	ldi	r24, 0x01	; 1
+    2fdc:	80 93 b7 06 	sts	0x06B7, r24
+    2fe0:	21 c0       	rjmp	.+66     	; 0x3024 <apply_orbs+0x318>
+    2fe2:	80 91 53 0a 	lds	r24, 0x0A53
+    2fe6:	81 11       	cpse	r24, r1
+    2fe8:	81 e0       	ldi	r24, 0x01	; 1
+    2fea:	28 2f       	mov	r18, r24
+    2fec:	80 91 54 0a 	lds	r24, 0x0A54
+    2ff0:	81 11       	cpse	r24, r1
+    2ff2:	22 60       	ori	r18, 0x02	; 2
+    2ff4:	80 91 55 0a 	lds	r24, 0x0A55
+    2ff8:	81 11       	cpse	r24, r1
+    2ffa:	24 60       	ori	r18, 0x04	; 4
+    2ffc:	80 91 56 0a 	lds	r24, 0x0A56
+    3000:	81 11       	cpse	r24, r1
+    3002:	20 61       	ori	r18, 0x10	; 16
+    3004:	80 91 57 0a 	lds	r24, 0x0A57
+    3008:	81 11       	cpse	r24, r1
+    300a:	20 62       	ori	r18, 0x20	; 32
+    300c:	80 91 58 0a 	lds	r24, 0x0A58
+    3010:	81 11       	cpse	r24, r1
+    3012:	20 64       	ori	r18, 0x40	; 64
+    3014:	9f b7       	in	r25, 0x3f	; 63
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    char buf[40];
+    int i;
+    3016:	f8 94       	cli
+    3018:	85 b3       	in	r24, 0x15	; 21
+    301a:	20 95       	com	r18
+    301c:	87 67       	ori	r24, 0x77	; 119
+    301e:	82 23       	and	r24, r18
+    3020:	85 bb       	out	0x15, r24	; 21
+    3022:	9f bf       	out	0x3f, r25	; 63
+    3024:	df 91       	pop	r29
+    3026:	cf 91       	pop	r28
+    3028:	1f 91       	pop	r17
+    302a:	0f 91       	pop	r16
+    302c:	08 95       	ret
+
+0000302e <orb_n_set>:
+    302e:	98 2f       	mov	r25, r24
+    3030:	3f b7       	in	r19, 0x3f	; 63
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    char buf[40];
+    int i;
+    3032:	f8 94       	cli
+    3034:	80 91 b9 06 	lds	r24, 0x06B9
+    3038:	88 23       	and	r24, r24
+    303a:	a9 f4       	brne	.+42     	; 0x3066 <orb_n_set+0x38>
+    303c:	81 e0       	ldi	r24, 0x01	; 1
+    303e:	80 93 b9 06 	sts	0x06B9, r24
+    3042:	3f bf       	out	0x3f, r19	; 63
+    3044:	89 2f       	mov	r24, r25
+    3046:	90 e0       	ldi	r25, 0x00	; 0
+    3048:	fc 01       	movw	r30, r24
+    304a:	ee 0f       	add	r30, r30
+    304c:	ff 1f       	adc	r31, r31
+    304e:	e8 0f       	add	r30, r24
+    3050:	f9 1f       	adc	r31, r25
+    3052:	ed 5a       	subi	r30, 0xAD	; 173
+    3054:	f5 4f       	sbci	r31, 0xF5	; 245
+    3056:	60 83       	st	Z, r22
+    3058:	41 83       	std	Z+1, r20	; 0x01
+    305a:	22 83       	std	Z+2, r18	; 0x02
+    305c:	0e 94 86 16 	call	0x2d0c	; 0x2d0c <apply_orbs>
+    3060:	10 92 b9 06 	sts	0x06B9, r1
+    3064:	08 95       	ret
+    3066:	3f bf       	out	0x3f, r19	; 63
+    3068:	08 95       	ret
+
+0000306a <orb1_set>:
+    306a:	28 2f       	mov	r18, r24
+    306c:	9f b7       	in	r25, 0x3f	; 63
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    char buf[40];
+    int i;
+    306e:	f8 94       	cli
+    3070:	80 91 b9 06 	lds	r24, 0x06B9
+    3074:	88 23       	and	r24, r24
+    3076:	79 f4       	brne	.+30     	; 0x3096 <orb1_set+0x2c>
+    3078:	81 e0       	ldi	r24, 0x01	; 1
+    307a:	80 93 b9 06 	sts	0x06B9, r24
+    307e:	9f bf       	out	0x3f, r25	; 63
+    3080:	20 93 53 0a 	sts	0x0A53, r18
+    3084:	60 93 54 0a 	sts	0x0A54, r22
+    3088:	40 93 55 0a 	sts	0x0A55, r20
+    308c:	0e 94 86 16 	call	0x2d0c	; 0x2d0c <apply_orbs>
+    3090:	10 92 b9 06 	sts	0x06B9, r1
+    3094:	08 95       	ret
+    3096:	9f bf       	out	0x3f, r25	; 63
+    3098:	08 95       	ret
+
+0000309a <orb2_set>:
+    309a:	28 2f       	mov	r18, r24
+    309c:	9f b7       	in	r25, 0x3f	; 63
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    char buf[40];
+    int i;
+    309e:	f8 94       	cli
+    30a0:	80 91 b9 06 	lds	r24, 0x06B9
+    30a4:	88 23       	and	r24, r24
+    30a6:	79 f4       	brne	.+30     	; 0x30c6 <orb2_set+0x2c>
+    30a8:	81 e0       	ldi	r24, 0x01	; 1
+    30aa:	80 93 b9 06 	sts	0x06B9, r24
+    30ae:	9f bf       	out	0x3f, r25	; 63
+    30b0:	20 93 56 0a 	sts	0x0A56, r18
+    30b4:	60 93 57 0a 	sts	0x0A57, r22
+    30b8:	40 93 58 0a 	sts	0x0A58, r20
+    30bc:	0e 94 86 16 	call	0x2d0c	; 0x2d0c <apply_orbs>
+    30c0:	10 92 b9 06 	sts	0x06B9, r1
+    30c4:	08 95       	ret
+    30c6:	9f bf       	out	0x3f, r25	; 63
+    30c8:	08 95       	ret
+
+000030ca <orb_set>:
+    30ca:	28 2f       	mov	r18, r24
+    30cc:	9f b7       	in	r25, 0x3f	; 63
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    char buf[40];
+    int i;
+    30ce:	f8 94       	cli
+    30d0:	80 91 b9 06 	lds	r24, 0x06B9
+    30d4:	88 23       	and	r24, r24
+    30d6:	a9 f4       	brne	.+42     	; 0x3102 <orb_set+0x38>
+    30d8:	81 e0       	ldi	r24, 0x01	; 1
+    30da:	80 93 b9 06 	sts	0x06B9, r24
+    30de:	9f bf       	out	0x3f, r25	; 63
+    30e0:	20 93 53 0a 	sts	0x0A53, r18
+    30e4:	60 93 54 0a 	sts	0x0A54, r22
+    30e8:	40 93 55 0a 	sts	0x0A55, r20
+    30ec:	20 93 56 0a 	sts	0x0A56, r18
+    30f0:	60 93 57 0a 	sts	0x0A57, r22
+    30f4:	40 93 58 0a 	sts	0x0A58, r20
+    30f8:	0e 94 86 16 	call	0x2d0c	; 0x2d0c <apply_orbs>
+    30fc:	10 92 b9 06 	sts	0x06B9, r1
+    3100:	08 95       	ret
+    3102:	9f bf       	out	0x3f, r25	; 63
+    3104:	08 95       	ret
+
+00003106 <orbs_set>:
+    3106:	ef 92       	push	r14
+    3108:	0f 93       	push	r16
+    310a:	38 2f       	mov	r19, r24
+    310c:	9f b7       	in	r25, 0x3f	; 63
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    char buf[40];
+    int i;
+    310e:	f8 94       	cli
+    3110:	80 91 b9 06 	lds	r24, 0x06B9
+    3114:	88 23       	and	r24, r24
+    3116:	a9 f4       	brne	.+42     	; 0x3142 <orbs_set+0x3c>
+    3118:	81 e0       	ldi	r24, 0x01	; 1
+    311a:	80 93 b9 06 	sts	0x06B9, r24
+    311e:	9f bf       	out	0x3f, r25	; 63
+    3120:	30 93 53 0a 	sts	0x0A53, r19
+    3124:	60 93 54 0a 	sts	0x0A54, r22
+    3128:	40 93 55 0a 	sts	0x0A55, r20
+    312c:	20 93 56 0a 	sts	0x0A56, r18
+    3130:	00 93 57 0a 	sts	0x0A57, r16
+    3134:	e0 92 58 0a 	sts	0x0A58, r14
+    3138:	0e 94 86 16 	call	0x2d0c	; 0x2d0c <apply_orbs>
+    313c:	10 92 b9 06 	sts	0x06B9, r1
+    3140:	01 c0       	rjmp	.+2      	; 0x3144 <orbs_set+0x3e>
+    3142:	9f bf       	out	0x3f, r25	; 63
+    3144:	0f 91       	pop	r16
+    3146:	ef 90       	pop	r14
+    3148:	08 95       	ret
+
+0000314a <orb_n_set_color>:
+    314a:	e6 2f       	mov	r30, r22
+    314c:	f0 e0       	ldi	r31, 0x00	; 0
+    314e:	62 95       	swap	r22
+    3150:	66 95       	lsr	r22
+    3152:	67 70       	andi	r22, 0x07	; 7
+    3154:	70 e0       	ldi	r23, 0x00	; 0
+    3156:	44 e2       	ldi	r20, 0x24	; 36
+    3158:	50 e0       	ldi	r21, 0x00	; 0
+    315a:	9b 01       	movw	r18, r22
+    315c:	24 9f       	mul	r18, r20
+    315e:	b0 01       	movw	r22, r0
+    3160:	25 9f       	mul	r18, r21
+    3162:	70 0d       	add	r23, r0
+    3164:	34 9f       	mul	r19, r20
+    3166:	70 0d       	add	r23, r0
+    3168:	11 24       	eor	r1, r1
+    316a:	9f 01       	movw	r18, r30
+    316c:	2c 71       	andi	r18, 0x1C	; 28
+    316e:	30 70       	andi	r19, 0x00	; 0
+    3170:	35 95       	asr	r19
+    3172:	27 95       	ror	r18
+    3174:	35 95       	asr	r19
+    3176:	27 95       	ror	r18
+    3178:	da 01       	movw	r26, r20
+    317a:	2a 9f       	mul	r18, r26
+    317c:	a0 01       	movw	r20, r0
+    317e:	2b 9f       	mul	r18, r27
+    3180:	50 0d       	add	r21, r0
+    3182:	3a 9f       	mul	r19, r26
+    3184:	50 0d       	add	r21, r0
+    3186:	11 24       	eor	r1, r1
+    3188:	e3 70       	andi	r30, 0x03	; 3
+    318a:	f0 70       	andi	r31, 0x00	; 0
+    318c:	25 e5       	ldi	r18, 0x55	; 85
+    318e:	30 e0       	ldi	r19, 0x00	; 0
+    3190:	d9 01       	movw	r26, r18
+    3192:	ea 9f       	mul	r30, r26
+    3194:	90 01       	movw	r18, r0
+    3196:	eb 9f       	mul	r30, r27
+    3198:	30 0d       	add	r19, r0
+    319a:	fa 9f       	mul	r31, r26
+    319c:	30 0d       	add	r19, r0
+    319e:	11 24       	eor	r1, r1
+    31a0:	0e 94 17 18 	call	0x302e	; 0x302e <orb_n_set>
+    31a4:	08 95       	ret
+
+000031a6 <orb1_set_color>:
+    31a6:	48 2f       	mov	r20, r24
+    31a8:	50 e0       	ldi	r21, 0x00	; 0
+    31aa:	82 95       	swap	r24
+    31ac:	86 95       	lsr	r24
+    31ae:	87 70       	andi	r24, 0x07	; 7
+    31b0:	e4 e2       	ldi	r30, 0x24	; 36
+    31b2:	f0 e0       	ldi	r31, 0x00	; 0
+    31b4:	9a 01       	movw	r18, r20
+    31b6:	2c 71       	andi	r18, 0x1C	; 28
+    31b8:	30 70       	andi	r19, 0x00	; 0
+    31ba:	35 95       	asr	r19
+    31bc:	27 95       	ror	r18
+    31be:	35 95       	asr	r19
+    31c0:	27 95       	ror	r18
+    31c2:	2e 9f       	mul	r18, r30
+    31c4:	b0 01       	movw	r22, r0
+    31c6:	2f 9f       	mul	r18, r31
+    31c8:	70 0d       	add	r23, r0
+    31ca:	3e 9f       	mul	r19, r30
+    31cc:	70 0d       	add	r23, r0
+    31ce:	11 24       	eor	r1, r1
+    31d0:	43 70       	andi	r20, 0x03	; 3
+    31d2:	50 70       	andi	r21, 0x00	; 0
+    31d4:	25 e5       	ldi	r18, 0x55	; 85
+    31d6:	30 e0       	ldi	r19, 0x00	; 0
+    31d8:	da 01       	movw	r26, r20
+    31da:	a2 9f       	mul	r26, r18
+    31dc:	a0 01       	movw	r20, r0
+    31de:	a3 9f       	mul	r26, r19
+    31e0:	50 0d       	add	r21, r0
+    31e2:	b2 9f       	mul	r27, r18
+    31e4:	50 0d       	add	r21, r0
+    31e6:	11 24       	eor	r1, r1
+    31e8:	8e 9f       	mul	r24, r30
+    31ea:	80 2d       	mov	r24, r0
+    31ec:	11 24       	eor	r1, r1
+    31ee:	0e 94 35 18 	call	0x306a	; 0x306a <orb1_set>
+    31f2:	08 95       	ret
+
+000031f4 <orb2_set_color>:
+    31f4:	48 2f       	mov	r20, r24
+    31f6:	50 e0       	ldi	r21, 0x00	; 0
+    31f8:	82 95       	swap	r24
+    31fa:	86 95       	lsr	r24
+    31fc:	87 70       	andi	r24, 0x07	; 7
+    31fe:	e4 e2       	ldi	r30, 0x24	; 36
+    3200:	f0 e0       	ldi	r31, 0x00	; 0
+    3202:	9a 01       	movw	r18, r20
+    3204:	2c 71       	andi	r18, 0x1C	; 28
+    3206:	30 70       	andi	r19, 0x00	; 0
+    3208:	35 95       	asr	r19
+    320a:	27 95       	ror	r18
+    320c:	35 95       	asr	r19
+    320e:	27 95       	ror	r18
+    3210:	2e 9f       	mul	r18, r30
+    3212:	b0 01       	movw	r22, r0
+    3214:	2f 9f       	mul	r18, r31
+    3216:	70 0d       	add	r23, r0
+    3218:	3e 9f       	mul	r19, r30
+    321a:	70 0d       	add	r23, r0
+    321c:	11 24       	eor	r1, r1
+    321e:	43 70       	andi	r20, 0x03	; 3
+    3220:	50 70       	andi	r21, 0x00	; 0
+    3222:	25 e5       	ldi	r18, 0x55	; 85
+    3224:	30 e0       	ldi	r19, 0x00	; 0
+    3226:	da 01       	movw	r26, r20
+    3228:	a2 9f       	mul	r26, r18
+    322a:	a0 01       	movw	r20, r0
+    322c:	a3 9f       	mul	r26, r19
+    322e:	50 0d       	add	r21, r0
+    3230:	b2 9f       	mul	r27, r18
+    3232:	50 0d       	add	r21, r0
+    3234:	11 24       	eor	r1, r1
+    3236:	8e 9f       	mul	r24, r30
+    3238:	80 2d       	mov	r24, r0
+    323a:	11 24       	eor	r1, r1
+    323c:	0e 94 4d 18 	call	0x309a	; 0x309a <orb2_set>
+    3240:	08 95       	ret
+
+00003242 <orb_set_color>:
+    3242:	48 2f       	mov	r20, r24
+    3244:	50 e0       	ldi	r21, 0x00	; 0
+    3246:	82 95       	swap	r24
+    3248:	86 95       	lsr	r24
+    324a:	87 70       	andi	r24, 0x07	; 7
+    324c:	e4 e2       	ldi	r30, 0x24	; 36
+    324e:	f0 e0       	ldi	r31, 0x00	; 0
+    3250:	9a 01       	movw	r18, r20
+    3252:	2c 71       	andi	r18, 0x1C	; 28
+    3254:	30 70       	andi	r19, 0x00	; 0
+    3256:	35 95       	asr	r19
+    3258:	27 95       	ror	r18
+    325a:	35 95       	asr	r19
+    325c:	27 95       	ror	r18
+    325e:	2e 9f       	mul	r18, r30
+    3260:	b0 01       	movw	r22, r0
+    3262:	2f 9f       	mul	r18, r31
+    3264:	70 0d       	add	r23, r0
+    3266:	3e 9f       	mul	r19, r30
+    3268:	70 0d       	add	r23, r0
+    326a:	11 24       	eor	r1, r1
+    326c:	43 70       	andi	r20, 0x03	; 3
+    326e:	50 70       	andi	r21, 0x00	; 0
+    3270:	25 e5       	ldi	r18, 0x55	; 85
+    3272:	30 e0       	ldi	r19, 0x00	; 0
+    3274:	da 01       	movw	r26, r20
+    3276:	a2 9f       	mul	r26, r18
+    3278:	a0 01       	movw	r20, r0
+    327a:	a3 9f       	mul	r26, r19
+    327c:	50 0d       	add	r21, r0
+    327e:	b2 9f       	mul	r27, r18
+    3280:	50 0d       	add	r21, r0
+    3282:	11 24       	eor	r1, r1
+    3284:	8e 9f       	mul	r24, r30
+    3286:	80 2d       	mov	r24, r0
+    3288:	11 24       	eor	r1, r1
+    328a:	0e 94 65 18 	call	0x30ca	; 0x30ca <orb_set>
+    328e:	08 95       	ret
+
+00003290 <orbs_set_color>:
+    3290:	af 92       	push	r10
+    3292:	bf 92       	push	r11
+    3294:	df 92       	push	r13
+    3296:	ef 92       	push	r14
+    3298:	ff 92       	push	r15
+    329a:	0f 93       	push	r16
+    329c:	1f 93       	push	r17
+    329e:	d8 2e       	mov	r13, r24
+    32a0:	48 2f       	mov	r20, r24
+    32a2:	50 e0       	ldi	r21, 0x00	; 0
+    32a4:	e6 2f       	mov	r30, r22
+    32a6:	f0 e0       	ldi	r31, 0x00	; 0
+    32a8:	d2 94       	swap	r13
+    32aa:	d6 94       	lsr	r13
+    32ac:	a7 e0       	ldi	r26, 0x07	; 7
+    32ae:	da 22       	and	r13, r26
+    32b0:	84 e2       	ldi	r24, 0x24	; 36
+    32b2:	90 e0       	ldi	r25, 0x00	; 0
+    32b4:	9a 01       	movw	r18, r20
+    32b6:	2c 71       	andi	r18, 0x1C	; 28
+    32b8:	30 70       	andi	r19, 0x00	; 0
+    32ba:	35 95       	asr	r19
+    32bc:	27 95       	ror	r18
+    32be:	35 95       	asr	r19
+    32c0:	27 95       	ror	r18
+    32c2:	28 9f       	mul	r18, r24
+    32c4:	50 01       	movw	r10, r0
+    32c6:	29 9f       	mul	r18, r25
+    32c8:	b0 0c       	add	r11, r0
+    32ca:	38 9f       	mul	r19, r24
+    32cc:	b0 0c       	add	r11, r0
+    32ce:	11 24       	eor	r1, r1
+    32d0:	43 70       	andi	r20, 0x03	; 3
+    32d2:	50 70       	andi	r21, 0x00	; 0
+    32d4:	a5 e5       	ldi	r26, 0x55	; 85
+    32d6:	b0 e0       	ldi	r27, 0x00	; 0
+    32d8:	9a 01       	movw	r18, r20
+    32da:	2a 9f       	mul	r18, r26
+    32dc:	a0 01       	movw	r20, r0
+    32de:	2b 9f       	mul	r18, r27
+    32e0:	50 0d       	add	r21, r0
+    32e2:	3a 9f       	mul	r19, r26
+    32e4:	50 0d       	add	r21, r0
+    32e6:	11 24       	eor	r1, r1
+    32e8:	62 95       	swap	r22
+    32ea:	66 95       	lsr	r22
+    32ec:	67 70       	andi	r22, 0x07	; 7
+    32ee:	70 e0       	ldi	r23, 0x00	; 0
+    32f0:	68 9f       	mul	r22, r24
+    32f2:	90 01       	movw	r18, r0
+    32f4:	69 9f       	mul	r22, r25
+    32f6:	30 0d       	add	r19, r0
+    32f8:	78 9f       	mul	r23, r24
+    32fa:	30 0d       	add	r19, r0
+    32fc:	11 24       	eor	r1, r1
+    32fe:	bf 01       	movw	r22, r30
+    3300:	6c 71       	andi	r22, 0x1C	; 28
+    3302:	70 70       	andi	r23, 0x00	; 0
+    3304:	75 95       	asr	r23
+    3306:	67 95       	ror	r22
+    3308:	75 95       	asr	r23
+    330a:	67 95       	ror	r22
+    330c:	68 9f       	mul	r22, r24
+    330e:	80 01       	movw	r16, r0
+    3310:	69 9f       	mul	r22, r25
+    3312:	10 0d       	add	r17, r0
+    3314:	78 9f       	mul	r23, r24
+    3316:	10 0d       	add	r17, r0
+    3318:	11 24       	eor	r1, r1
+    331a:	e3 70       	andi	r30, 0x03	; 3
+    331c:	f0 70       	andi	r31, 0x00	; 0
+    331e:	ea 9f       	mul	r30, r26
+    3320:	70 01       	movw	r14, r0
+    3322:	eb 9f       	mul	r30, r27
+    3324:	f0 0c       	add	r15, r0
+    3326:	fa 9f       	mul	r31, r26
+    3328:	f0 0c       	add	r15, r0
+    332a:	11 24       	eor	r1, r1
+    332c:	d8 9e       	mul	r13, r24
+    332e:	80 2d       	mov	r24, r0
+    3330:	11 24       	eor	r1, r1
+    3332:	6a 2d       	mov	r22, r10
+    3334:	0e 94 83 18 	call	0x3106	; 0x3106 <orbs_set>
+    3338:	1f 91       	pop	r17
+    333a:	0f 91       	pop	r16
+    333c:	ff 90       	pop	r15
+    333e:	ef 90       	pop	r14
+    3340:	df 90       	pop	r13
+    3342:	bf 90       	pop	r11
+    3344:	af 90       	pop	r10
+    3346:	08 95       	ret
+
+00003348 <orb_enable_timer>:
+    3348:	86 e0       	ldi	r24, 0x06	; 6
+    334a:	83 bf       	out	0x33, r24	; 51
+    334c:	87 b7       	in	r24, 0x37	; 55
+    334e:	83 60       	ori	r24, 0x03	; 3
+    3350:	87 bf       	out	0x37, r24	; 55
+    3352:	08 95       	ret
+
+00003354 <orb_disable_timer>:
+    3354:	87 b7       	in	r24, 0x37	; 55
+    3356:	8c 7f       	andi	r24, 0xFC	; 252
+    3358:	87 bf       	out	0x37, r24	; 55
+    335a:	08 95       	ret
+
+0000335c <orb_set_mode>:
+    335c:	81 30       	cpi	r24, 0x01	; 1
+    335e:	41 f4       	brne	.+16     	; 0x3370 <orb_set_mode+0x14>
+    3360:	87 b7       	in	r24, 0x37	; 55
+    3362:	8c 7f       	andi	r24, 0xFC	; 252
+    3364:	87 bf       	out	0x37, r24	; 55
+    3366:	10 92 63 03 	sts	0x0363, r1
+    336a:	0e 94 86 16 	call	0x2d0c	; 0x2d0c <apply_orbs>
+    336e:	08 95       	ret
+    3370:	81 e0       	ldi	r24, 0x01	; 1
+    3372:	80 93 63 03 	sts	0x0363, r24
+    3376:	0e 94 86 16 	call	0x2d0c	; 0x2d0c <apply_orbs>
+    337a:	86 e0       	ldi	r24, 0x06	; 6
+    337c:	83 bf       	out	0x33, r24	; 51
+    337e:	87 b7       	in	r24, 0x37	; 55
+    3380:	83 60       	ori	r24, 0x03	; 3
+    3382:	87 bf       	out	0x37, r24	; 55
+    3384:	08 95       	ret
+
+00003386 <orb_init_binary>:
+    3386:	85 b3       	in	r24, 0x15	; 21
+    3388:	87 67       	ori	r24, 0x77	; 119
+    338a:	85 bb       	out	0x15, r24	; 21
+    338c:	84 b3       	in	r24, 0x14	; 20
+    338e:	87 67       	ori	r24, 0x77	; 119
+    3390:	84 bb       	out	0x14, r24	; 20
+    3392:	80 e0       	ldi	r24, 0x00	; 0
+    3394:	60 e0       	ldi	r22, 0x00	; 0
+    3396:	40 e0       	ldi	r20, 0x00	; 0
+    3398:	0e 94 65 18 	call	0x30ca	; 0x30ca <orb_set>
+    339c:	81 e0       	ldi	r24, 0x01	; 1
+    339e:	0e 94 ae 19 	call	0x335c	; 0x335c <orb_set_mode>
+    33a2:	08 95       	ret
+
+000033a4 <orb_init_pwm>:
+    33a4:	85 b3       	in	r24, 0x15	; 21
+    33a6:	87 67       	ori	r24, 0x77	; 119
+    33a8:	85 bb       	out	0x15, r24	; 21
+    33aa:	84 b3       	in	r24, 0x14	; 20
+    33ac:	87 67       	ori	r24, 0x77	; 119
+    33ae:	84 bb       	out	0x14, r24	; 20
+    33b0:	80 e0       	ldi	r24, 0x00	; 0
+    33b2:	60 e0       	ldi	r22, 0x00	; 0
+    33b4:	40 e0       	ldi	r20, 0x00	; 0
+    33b6:	0e 94 65 18 	call	0x30ca	; 0x30ca <orb_set>
+    33ba:	80 e0       	ldi	r24, 0x00	; 0
+    33bc:	0e 94 ae 19 	call	0x335c	; 0x335c <orb_set_mode>
+    33c0:	08 95       	ret
+
+000033c2 <orb_init>:
+    33c2:	0e 94 d2 19 	call	0x33a4	; 0x33a4 <orb_init_pwm>
+    33c6:	08 95       	ret
+
+000033c8 <motors_init>:
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    char buf[40];
+    int i;
+    for (i = 0; i < length; i++) {
+        sprintf(buf, "%d: %d ", i, packet[i]);
+    33c8:	8b b3       	in	r24, 0x1b	; 27
+    33ca:	8f 70       	andi	r24, 0x0F	; 15
+    33cc:	8b bb       	out	0x1b, r24	; 27
+        usb_puts(buf);
+    33ce:	8a b3       	in	r24, 0x1a	; 26
+    33d0:	80 6f       	ori	r24, 0xF0	; 240
+    33d2:	8a bb       	out	0x1a, r24	; 26
+    }
+    33d4:	87 b3       	in	r24, 0x17	; 23
+    33d6:	80 66       	ori	r24, 0x60	; 96
+    33d8:	87 bb       	out	0x17, r24	; 23
+    usb_puts("\r\n");
+}*/
+
+    33da:	81 ea       	ldi	r24, 0xA1	; 161
+    33dc:	8f bd       	out	0x2f, r24	; 47
+    33de:	89 e0       	ldi	r24, 0x09	; 9
+    33e0:	8e bd       	out	0x2e, r24	; 46
+    33e2:	1b bc       	out	0x2b, r1	; 43
+    33e4:	1a bc       	out	0x2a, r1	; 42
+    33e6:	19 bc       	out	0x29, r1	; 41
+    33e8:	18 bc       	out	0x28, r1	; 40
+    33ea:	08 95       	ret
+
+000033ec <motor_l_set>:
+    33ec:	89 2b       	or	r24, r25
+    33ee:	51 f4       	brne	.+20     	; 0x3404 <motor_l_set+0x18>
+    33f0:	8b b3       	in	r24, 0x1b	; 27
+    33f2:	80 73       	andi	r24, 0x30	; 48
+    33f4:	80 31       	cpi	r24, 0x10	; 16
+    33f6:	11 f0       	breq	.+4      	; 0x33fc <motor_l_set+0x10>
+    33f8:	1b bc       	out	0x2b, r1	; 43
+    33fa:	1a bc       	out	0x2a, r1	; 42
+    33fc:	8b b3       	in	r24, 0x1b	; 27
+    33fe:	8f 7c       	andi	r24, 0xCF	; 207
+    3400:	80 61       	ori	r24, 0x10	; 16
+    3402:	09 c0       	rjmp	.+18     	; 0x3416 <motor_l_set+0x2a>
+    3404:	8b b3       	in	r24, 0x1b	; 27
+    3406:	80 73       	andi	r24, 0x30	; 48
+    3408:	80 32       	cpi	r24, 0x20	; 32
+    340a:	11 f0       	breq	.+4      	; 0x3410 <motor_l_set+0x24>
+    340c:	1b bc       	out	0x2b, r1	; 43
+    340e:	1a bc       	out	0x2a, r1	; 42
+    3410:	8b b3       	in	r24, 0x1b	; 27
+    3412:	8f 7c       	andi	r24, 0xCF	; 207
+    3414:	80 62       	ori	r24, 0x20	; 32
+    3416:	8b bb       	out	0x1b, r24	; 27
+    3418:	6a bd       	out	0x2a, r22	; 42
+    341a:	08 95       	ret
+
+0000341c <motor_r_set>:
+    341c:	89 2b       	or	r24, r25
+    341e:	51 f4       	brne	.+20     	; 0x3434 <motor_r_set+0x18>
+    3420:	8b b3       	in	r24, 0x1b	; 27
+    3422:	80 7c       	andi	r24, 0xC0	; 192
+    3424:	80 38       	cpi	r24, 0x80	; 128
+    3426:	11 f0       	breq	.+4      	; 0x342c <motor_r_set+0x10>
+    3428:	19 bc       	out	0x29, r1	; 41
+    342a:	18 bc       	out	0x28, r1	; 40
+    342c:	8b b3       	in	r24, 0x1b	; 27
+    342e:	8f 73       	andi	r24, 0x3F	; 63
+    3430:	80 68       	ori	r24, 0x80	; 128
+    3432:	09 c0       	rjmp	.+18     	; 0x3446 <motor_r_set+0x2a>
+    3434:	8b b3       	in	r24, 0x1b	; 27
+    3436:	80 7c       	andi	r24, 0xC0	; 192
+    3438:	80 34       	cpi	r24, 0x40	; 64
+    343a:	11 f0       	breq	.+4      	; 0x3440 <motor_r_set+0x24>
+    343c:	19 bc       	out	0x29, r1	; 41
+    343e:	18 bc       	out	0x28, r1	; 40
+    3440:	8b b3       	in	r24, 0x1b	; 27
+    3442:	8f 73       	andi	r24, 0x3F	; 63
+    3444:	80 64       	ori	r24, 0x40	; 64
+    3446:	8b bb       	out	0x1b, r24	; 27
+    3448:	68 bd       	out	0x28, r22	; 40
+    344a:	08 95       	ret
+
+0000344c <motor1_set>:
+    344c:	0e 94 f6 19 	call	0x33ec	; 0x33ec <motor_l_set>
+    3450:	08 95       	ret
+
+00003452 <motor2_set>:
+    3452:	0e 94 0e 1a 	call	0x341c	; 0x341c <motor_r_set>
+    3456:	08 95       	ret
+
+00003458 <motors_off>:
+    3458:	1a bc       	out	0x2a, r1	; 42
+    345a:	18 bc       	out	0x28, r1	; 40
+    345c:	08 95       	ret
+
+0000345e <linearize_distance>:
+    345e:	fc 01       	movw	r30, r24
+    3460:	84 31       	cpi	r24, 0x14	; 20
+    3462:	91 05       	cpc	r25, r1
+    3464:	54 f0       	brlt	.+20     	; 0x347a <linearize_distance+0x1c>
+    3466:	86 38       	cpi	r24, 0x86	; 134
+    3468:	91 05       	cpc	r25, r1
+    346a:	3c f4       	brge	.+14     	; 0x347a <linearize_distance+0x1c>
+    346c:	ee 0f       	add	r30, r30
+    346e:	ff 1f       	adc	r31, r31
+    3470:	ee 5b       	subi	r30, 0xBE	; 190
+    3472:	fc 4f       	sbci	r31, 0xFC	; 252
+    3474:	20 81       	ld	r18, Z
+    3476:	31 81       	ldd	r19, Z+1	; 0x01
+    3478:	02 c0       	rjmp	.+4      	; 0x347e <linearize_distance+0x20>
+    347a:	2f ef       	ldi	r18, 0xFF	; 255
+    347c:	3f ef       	ldi	r19, 0xFF	; 255
+    347e:	c9 01       	movw	r24, r18
+    3480:	08 95       	ret
+
+00003482 <range_read_distance>:
+    3482:	0e 94 a0 1c 	call	0x3940	; 0x3940 <analog8>
+    3486:	fc 01       	movw	r30, r24
+    3488:	84 31       	cpi	r24, 0x14	; 20
+    348a:	91 05       	cpc	r25, r1
+    348c:	54 f0       	brlt	.+20     	; 0x34a2 <range_read_distance+0x20>
+    348e:	86 38       	cpi	r24, 0x86	; 134
+    3490:	91 05       	cpc	r25, r1
+    3492:	3c f4       	brge	.+14     	; 0x34a2 <range_read_distance+0x20>
+    3494:	ee 0f       	add	r30, r30
+    3496:	ff 1f       	adc	r31, r31
+    3498:	ee 5b       	subi	r30, 0xBE	; 190
+    349a:	fc 4f       	sbci	r31, 0xFC	; 252
+    349c:	20 81       	ld	r18, Z
+    349e:	31 81       	ldd	r19, Z+1	; 0x01
+    34a0:	02 c0       	rjmp	.+4      	; 0x34a6 <range_read_distance+0x24>
+    34a2:	2f ef       	ldi	r18, 0xFF	; 255
+    34a4:	3f ef       	ldi	r19, 0xFF	; 255
+    34a6:	c9 01       	movw	r24, r18
+    34a8:	08 95       	ret
+
+000034aa <range_init>:
+    34aa:	84 e1       	ldi	r24, 0x14	; 20
+    34ac:	90 e0       	ldi	r25, 0x00	; 0
+    34ae:	60 e0       	ldi	r22, 0x00	; 0
+    34b0:	70 e0       	ldi	r23, 0x00	; 0
+    34b2:	0e 94 8a 0f 	call	0x1f14	; 0x1f14 <digital_output>
+    34b6:	08 95       	ret
+
+000034b8 <usb_init>:
+        sprintf(buf, "%d: %d ", i, packet[i]);
+        usb_puts(buf);
+    }
+    usb_puts("\r\n");
+}*/
+
+    34b8:	10 92 90 00 	sts	0x0090, r1
+    34bc:	88 e0       	ldi	r24, 0x08	; 8
+    34be:	89 b9       	out	0x09, r24	; 9
+    34c0:	59 9a       	sbi	0x0b, 1	; 11
+    34c2:	8a b1       	in	r24, 0x0a	; 10
+    34c4:	88 61       	ori	r24, 0x18	; 24
+    34c6:	8a b9       	out	0x0a, r24	; 10
+    34c8:	e5 e9       	ldi	r30, 0x95	; 149
+    34ca:	f0 e0       	ldi	r31, 0x00	; 0
+    34cc:	80 81       	ld	r24, Z
+    34ce:	86 60       	ori	r24, 0x06	; 6
+    34d0:	80 83       	st	Z, r24
+    34d2:	08 95       	ret
+
+000034d4 <xbee_init>:
+    34d4:	10 92 98 00 	sts	0x0098, r1
+    34d8:	87 e6       	ldi	r24, 0x67	; 103
+    34da:	80 93 99 00 	sts	0x0099, r24
+    34de:	eb e9       	ldi	r30, 0x9B	; 155
+    34e0:	f0 e0       	ldi	r31, 0x00	; 0
+    34e2:	80 81       	ld	r24, Z
+    34e4:	82 60       	ori	r24, 0x02	; 2
+    34e6:	80 83       	st	Z, r24
+    34e8:	ea e9       	ldi	r30, 0x9A	; 154
+    34ea:	f0 e0       	ldi	r31, 0x00	; 0
+    34ec:	80 81       	ld	r24, Z
+    34ee:	88 61       	ori	r24, 0x18	; 24
+    34f0:	80 83       	st	Z, r24
+    34f2:	ed e9       	ldi	r30, 0x9D	; 157
+    34f4:	f0 e0       	ldi	r31, 0x00	; 0
+    34f6:	80 81       	ld	r24, Z
+    34f8:	86 60       	ori	r24, 0x06	; 6
+    34fa:	80 83       	st	Z, r24
+    34fc:	08 95       	ret
+
+000034fe <usb_putc>:
+    34fe:	5d 9b       	sbis	0x0b, 5	; 11
+    3500:	fe cf       	rjmp	.-4      	; 0x34fe <usb_putc>
+    3502:	8c b9       	out	0x0c, r24	; 12
+    3504:	80 e0       	ldi	r24, 0x00	; 0
+    3506:	90 e0       	ldi	r25, 0x00	; 0
+    3508:	08 95       	ret
+
+0000350a <xbee_putc>:
+    350a:	98 2f       	mov	r25, r24
+    350c:	80 91 9b 00 	lds	r24, 0x009B
+    3510:	85 ff       	sbrs	r24, 5
+    3512:	fc cf       	rjmp	.-8      	; 0x350c <xbee_putc+0x2>
+    3514:	90 93 9c 00 	sts	0x009C, r25
+    3518:	80 e0       	ldi	r24, 0x00	; 0
+    351a:	90 e0       	ldi	r25, 0x00	; 0
+    351c:	08 95       	ret
+
+0000351e <usb_puts>:
+    351e:	fc 01       	movw	r30, r24
+    3520:	04 c0       	rjmp	.+8      	; 0x352a <usb_puts+0xc>
+    3522:	5d 9b       	sbis	0x0b, 5	; 11
+    3524:	fe cf       	rjmp	.-4      	; 0x3522 <usb_puts+0x4>
+    3526:	8c b9       	out	0x0c, r24	; 12
+    3528:	31 96       	adiw	r30, 0x01	; 1
+    352a:	80 81       	ld	r24, Z
+    352c:	88 23       	and	r24, r24
+    352e:	c9 f7       	brne	.-14     	; 0x3522 <usb_puts+0x4>
+    3530:	80 e0       	ldi	r24, 0x00	; 0
+    3532:	90 e0       	ldi	r25, 0x00	; 0
+    3534:	08 95       	ret
+
+00003536 <usb_getc>:
+    3536:	5f 9b       	sbis	0x0b, 7	; 11
+    3538:	fe cf       	rjmp	.-4      	; 0x3536 <usb_getc>
+    353a:	8c b1       	in	r24, 0x0c	; 12
+    353c:	90 e0       	ldi	r25, 0x00	; 0
+    353e:	08 95       	ret
+
+00003540 <xbee_getc>:
+    3540:	80 91 9b 00 	lds	r24, 0x009B
+    3544:	87 ff       	sbrs	r24, 7
+    3546:	fc cf       	rjmp	.-8      	; 0x3540 <xbee_getc>
+    3548:	80 91 9c 00 	lds	r24, 0x009C
+    354c:	90 e0       	ldi	r25, 0x00	; 0
+    354e:	08 95       	ret
+
+00003550 <usb_getc_nb>:
+    3550:	fc 01       	movw	r30, r24
+    3552:	5f 99       	sbic	0x0b, 7	; 11
+    3554:	03 c0       	rjmp	.+6      	; 0x355c <usb_getc_nb+0xc>
+    3556:	2f ef       	ldi	r18, 0xFF	; 255
+    3558:	3f ef       	ldi	r19, 0xFF	; 255
+    355a:	04 c0       	rjmp	.+8      	; 0x3564 <usb_getc_nb+0x14>
+    355c:	8c b1       	in	r24, 0x0c	; 12
+    355e:	80 83       	st	Z, r24
+    3560:	20 e0       	ldi	r18, 0x00	; 0
+    3562:	30 e0       	ldi	r19, 0x00	; 0
+    3564:	c9 01       	movw	r24, r18
+    3566:	08 95       	ret
+
+00003568 <xbee_getc_nb>:
+    3568:	fc 01       	movw	r30, r24
+    356a:	80 91 9b 00 	lds	r24, 0x009B
+    356e:	87 fd       	sbrc	r24, 7
+    3570:	03 c0       	rjmp	.+6      	; 0x3578 <xbee_getc_nb+0x10>
+    3572:	2f ef       	ldi	r18, 0xFF	; 255
+    3574:	3f ef       	ldi	r19, 0xFF	; 255
+    3576:	05 c0       	rjmp	.+10     	; 0x3582 <xbee_getc_nb+0x1a>
+    3578:	80 91 9c 00 	lds	r24, 0x009C
+    357c:	80 83       	st	Z, r24
+    357e:	20 e0       	ldi	r18, 0x00	; 0
+    3580:	30 e0       	ldi	r19, 0x00	; 0
+    3582:	c9 01       	movw	r24, r18
+    3584:	08 95       	ret
+
+00003586 <usb_puti>:
+    3586:	0f 93       	push	r16
+    3588:	1f 93       	push	r17
+    358a:	df 93       	push	r29
+    358c:	cf 93       	push	r28
+    358e:	00 d0       	rcall	.+0      	; 0x3590 <usb_puti+0xa>
+    3590:	00 d0       	rcall	.+0      	; 0x3592 <usb_puti+0xc>
+    3592:	00 d0       	rcall	.+0      	; 0x3594 <usb_puti+0xe>
+    3594:	cd b7       	in	r28, 0x3d	; 61
+    3596:	de b7       	in	r29, 0x3e	; 62
+    3598:	9c 01       	movw	r18, r24
+    359a:	de 01       	movw	r26, r28
+    359c:	11 96       	adiw	r26, 0x01	; 1
+    359e:	ef e5       	ldi	r30, 0x5F	; 95
+    35a0:	f4 e0       	ldi	r31, 0x04	; 4
+    35a2:	86 e0       	ldi	r24, 0x06	; 6
+    35a4:	01 90       	ld	r0, Z+
+    35a6:	0d 92       	st	X+, r0
+    35a8:	81 50       	subi	r24, 0x01	; 1
+    35aa:	e1 f7       	brne	.-8      	; 0x35a4 <usb_puti+0x1e>
+    35ac:	37 ff       	sbrs	r19, 7
+    35ae:	07 c0       	rjmp	.+14     	; 0x35be <usb_puti+0x38>
+    35b0:	5d 9b       	sbis	0x0b, 5	; 11
+    35b2:	fe cf       	rjmp	.-4      	; 0x35b0 <usb_puti+0x2a>
+    35b4:	8d e2       	ldi	r24, 0x2D	; 45
+    35b6:	8c b9       	out	0x0c, r24	; 12
+    35b8:	30 95       	com	r19
+    35ba:	21 95       	neg	r18
+    35bc:	3f 4f       	sbci	r19, 0xFF	; 255
+    35be:	46 e0       	ldi	r20, 0x06	; 6
+    35c0:	8e 01       	movw	r16, r28
+    35c2:	0f 5f       	subi	r16, 0xFF	; 255
+    35c4:	1f 4f       	sbci	r17, 0xFF	; 255
+    35c6:	41 50       	subi	r20, 0x01	; 1
+    35c8:	f8 01       	movw	r30, r16
+    35ca:	e4 0f       	add	r30, r20
+    35cc:	f1 1d       	adc	r31, r1
+    35ce:	c9 01       	movw	r24, r18
+    35d0:	6a e0       	ldi	r22, 0x0A	; 10
+    35d2:	70 e0       	ldi	r23, 0x00	; 0
+    35d4:	0e 94 13 32 	call	0x6426	; 0x6426 <__divmodhi4>
+    35d8:	80 5d       	subi	r24, 0xD0	; 208
+    35da:	80 83       	st	Z, r24
+    35dc:	c9 01       	movw	r24, r18
+    35de:	6a e0       	ldi	r22, 0x0A	; 10
+    35e0:	70 e0       	ldi	r23, 0x00	; 0
+    35e2:	0e 94 13 32 	call	0x6426	; 0x6426 <__divmodhi4>
+    35e6:	9b 01       	movw	r18, r22
+    35e8:	61 15       	cp	r22, r1
+    35ea:	71 05       	cpc	r23, r1
+    35ec:	61 f7       	brne	.-40     	; 0x35c6 <usb_puti+0x40>
+    35ee:	09 c0       	rjmp	.+18     	; 0x3602 <usb_puti+0x7c>
+    35f0:	fc 01       	movw	r30, r24
+    35f2:	e4 0f       	add	r30, r20
+    35f4:	f1 1d       	adc	r31, r1
+    35f6:	e0 81       	ld	r30, Z
+    35f8:	5d 9b       	sbis	0x0b, 5	; 11
+    35fa:	fe cf       	rjmp	.-4      	; 0x35f8 <usb_puti+0x72>
+    35fc:	ec b9       	out	0x0c, r30	; 12
+    35fe:	4f 5f       	subi	r20, 0xFF	; 255
+    3600:	02 c0       	rjmp	.+4      	; 0x3606 <usb_puti+0x80>
+    3602:	ce 01       	movw	r24, r28
+    3604:	01 96       	adiw	r24, 0x01	; 1
+    3606:	46 30       	cpi	r20, 0x06	; 6
+    3608:	98 f3       	brcs	.-26     	; 0x35f0 <usb_puti+0x6a>
+    360a:	80 e0       	ldi	r24, 0x00	; 0
+    360c:	90 e0       	ldi	r25, 0x00	; 0
+    360e:	26 96       	adiw	r28, 0x06	; 6
+    3610:	0f b6       	in	r0, 0x3f	; 63
+    3612:	f8 94       	cli
+    3614:	de bf       	out	0x3e, r29	; 62
+    3616:	0f be       	out	0x3f, r0	; 63
+    3618:	cd bf       	out	0x3d, r28	; 61
+    361a:	cf 91       	pop	r28
+    361c:	df 91       	pop	r29
+    361e:	1f 91       	pop	r17
+    3620:	0f 91       	pop	r16
+    3622:	08 95       	ret
+
+00003624 <hex_digit>:
+    3624:	80 31       	cpi	r24, 0x10	; 16
+    3626:	10 f0       	brcs	.+4      	; 0x362c <hex_digit+0x8>
+    3628:	8f e3       	ldi	r24, 0x3F	; 63
+    362a:	08 95       	ret
+    362c:	e8 2f       	mov	r30, r24
+    362e:	f0 e0       	ldi	r31, 0x00	; 0
+    3630:	e2 5b       	subi	r30, 0xB2	; 178
+    3632:	fb 4f       	sbci	r31, 0xFB	; 251
+    3634:	80 81       	ld	r24, Z
+    3636:	08 95       	ret
+
+00003638 <usb_puth16>:
+    3638:	9c 01       	movw	r18, r24
+    363a:	e3 2f       	mov	r30, r19
+    363c:	e2 95       	swap	r30
+    363e:	ef 70       	andi	r30, 0x0F	; 15
+    3640:	f0 e0       	ldi	r31, 0x00	; 0
+    3642:	e2 5b       	subi	r30, 0xB2	; 178
+    3644:	fb 4f       	sbci	r31, 0xFB	; 251
+    3646:	e0 81       	ld	r30, Z
+    3648:	5d 9b       	sbis	0x0b, 5	; 11
+    364a:	fe cf       	rjmp	.-4      	; 0x3648 <usb_puth16+0x10>
+    364c:	ec b9       	out	0x0c, r30	; 12
+    364e:	5d 9b       	sbis	0x0b, 5	; 11
+    3650:	fe cf       	rjmp	.-4      	; 0x364e <usb_puth16+0x16>
+    3652:	e3 2f       	mov	r30, r19
+    3654:	f0 e0       	ldi	r31, 0x00	; 0
+    3656:	ef 70       	andi	r30, 0x0F	; 15
+    3658:	f0 70       	andi	r31, 0x00	; 0
+    365a:	e2 5b       	subi	r30, 0xB2	; 178
+    365c:	fb 4f       	sbci	r31, 0xFB	; 251
+    365e:	80 81       	ld	r24, Z
+    3660:	8c b9       	out	0x0c, r24	; 12
+    3662:	5d 9b       	sbis	0x0b, 5	; 11
+    3664:	fe cf       	rjmp	.-4      	; 0x3662 <usb_puth16+0x2a>
+    3666:	f9 01       	movw	r30, r18
+    3668:	84 e0       	ldi	r24, 0x04	; 4
+    366a:	f6 95       	lsr	r31
+    366c:	e7 95       	ror	r30
+    366e:	8a 95       	dec	r24
+    3670:	e1 f7       	brne	.-8      	; 0x366a <usb_puth16+0x32>
+    3672:	f0 e0       	ldi	r31, 0x00	; 0
+    3674:	ef 70       	andi	r30, 0x0F	; 15
+    3676:	f0 70       	andi	r31, 0x00	; 0
+    3678:	e2 5b       	subi	r30, 0xB2	; 178
+    367a:	fb 4f       	sbci	r31, 0xFB	; 251
+    367c:	80 81       	ld	r24, Z
+    367e:	8c b9       	out	0x0c, r24	; 12
+    3680:	5d 9b       	sbis	0x0b, 5	; 11
+    3682:	fe cf       	rjmp	.-4      	; 0x3680 <usb_puth16+0x48>
+    3684:	e2 2f       	mov	r30, r18
+    3686:	f0 e0       	ldi	r31, 0x00	; 0
+    3688:	ef 70       	andi	r30, 0x0F	; 15
+    368a:	f0 70       	andi	r31, 0x00	; 0
+    368c:	e2 5b       	subi	r30, 0xB2	; 178
+    368e:	fb 4f       	sbci	r31, 0xFB	; 251
+    3690:	80 81       	ld	r24, Z
+    3692:	8c b9       	out	0x0c, r24	; 12
+    3694:	08 95       	ret
+
+00003696 <usb_puth8>:
+    3696:	e8 2f       	mov	r30, r24
+    3698:	e2 95       	swap	r30
+    369a:	ef 70       	andi	r30, 0x0F	; 15
+    369c:	f0 e0       	ldi	r31, 0x00	; 0
+    369e:	e2 5b       	subi	r30, 0xB2	; 178
+    36a0:	fb 4f       	sbci	r31, 0xFB	; 251
+    36a2:	e0 81       	ld	r30, Z
+    36a4:	5d 9b       	sbis	0x0b, 5	; 11
+    36a6:	fe cf       	rjmp	.-4      	; 0x36a4 <usb_puth8+0xe>
+    36a8:	ec b9       	out	0x0c, r30	; 12
+    36aa:	5d 9b       	sbis	0x0b, 5	; 11
+    36ac:	fe cf       	rjmp	.-4      	; 0x36aa <usb_puth8+0x14>
+    36ae:	e8 2f       	mov	r30, r24
+    36b0:	f0 e0       	ldi	r31, 0x00	; 0
+    36b2:	ef 70       	andi	r30, 0x0F	; 15
+    36b4:	f0 70       	andi	r31, 0x00	; 0
+    36b6:	e2 5b       	subi	r30, 0xB2	; 178
+    36b8:	fb 4f       	sbci	r31, 0xFB	; 251
+    36ba:	80 81       	ld	r24, Z
+    36bc:	8c b9       	out	0x0c, r24	; 12
+    36be:	08 95       	ret
+
+000036c0 <usb_puts_P>:
+    36c0:	ef 92       	push	r14
+    36c2:	ff 92       	push	r15
+    36c4:	0f 93       	push	r16
+    36c6:	1f 93       	push	r17
+    36c8:	df 93       	push	r29
+    36ca:	cf 93       	push	r28
+    36cc:	0f 92       	push	r0
+    36ce:	cd b7       	in	r28, 0x3d	; 61
+    36d0:	de b7       	in	r29, 0x3e	; 62
+    36d2:	8c 01       	movw	r16, r24
+    36d4:	7e 01       	movw	r14, r28
+    36d6:	08 94       	sec
+    36d8:	e1 1c       	adc	r14, r1
+    36da:	f1 1c       	adc	r15, r1
+    36dc:	05 c0       	rjmp	.+10     	; 0x36e8 <usb_puts_P+0x28>
+    36de:	5d 9b       	sbis	0x0b, 5	; 11
+    36e0:	fe cf       	rjmp	.-4      	; 0x36de <usb_puts_P+0x1e>
+    36e2:	8c b9       	out	0x0c, r24	; 12
+    36e4:	0f 5f       	subi	r16, 0xFF	; 255
+    36e6:	1f 4f       	sbci	r17, 0xFF	; 255
+    36e8:	c7 01       	movw	r24, r14
+    36ea:	b8 01       	movw	r22, r16
+    36ec:	41 e0       	ldi	r20, 0x01	; 1
+    36ee:	50 e0       	ldi	r21, 0x00	; 0
+    36f0:	0e 94 78 2f 	call	0x5ef0	; 0x5ef0 <memcpy_P>
+    36f4:	89 81       	ldd	r24, Y+1	; 0x01
+    36f6:	88 23       	and	r24, r24
+    36f8:	91 f7       	brne	.-28     	; 0x36de <usb_puts_P+0x1e>
+    36fa:	0f 90       	pop	r0
+    36fc:	cf 91       	pop	r28
+    36fe:	df 91       	pop	r29
+    3700:	1f 91       	pop	r17
+    3702:	0f 91       	pop	r16
+    3704:	ff 90       	pop	r15
+    3706:	ef 90       	pop	r14
+    3708:	08 95       	ret
+
+0000370a <spi_init>:
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    wl_register_packet_group(&swarm_pgh);*/
+
+    wl_token_ring_register();
+    wl_token_ring_join();
+    370a:	23 ed       	ldi	r18, 0xD3	; 211
+    370c:	2d b9       	out	0x0d, r18	; 13
+
+    370e:	21 e0       	ldi	r18, 0x01	; 1
+    3710:	2e b9       	out	0x0e, r18	; 14
+    usb_puts("initialized\r\n");
+
+    /*char packet[] = { 0x0, 0x1, 0x0, 0x3, 0x4, 0x0, 0x6, 0x7, 0x8, 0x0, 0xa, 0xb, 0xc, 0xd, 0x0, 0xf, 0x0 };
+    3712:	27 b3       	in	r18, 0x17	; 23
+    3714:	27 60       	ori	r18, 0x07	; 7
+    3716:	27 bb       	out	0x17, r18	; 23
+    int length = 17;
+    3718:	bb 98       	cbi	0x17, 3	; 23
+
+    int num = 0;*/
+
+    371a:	c0 9a       	sbi	0x18, 0	; 24
+    while (1)
+    {
+	    wl_do();
+    371c:	90 93 bc 06 	sts	0x06BC, r25
+    3720:	80 93 bb 06 	sts	0x06BB, r24
+        /*packet[16] = num;
+    3724:	70 93 be 06 	sts	0x06BE, r23
+    3728:	60 93 bd 06 	sts	0x06BD, r22
+        wl_send_global_packet(SWARM_PACKET_GROUP_ID, 0, packet, length, 0);
+    372c:	10 92 ba 06 	sts	0x06BA, r1
+        usb_puts("sent ");
+        usb_puti(num);
+    3730:	08 95       	ret
+
+00003732 <spi_transfer>:
+    }
+}
+
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+    3732:	80 93 ba 06 	sts	0x06BA, r24
+
+    3736:	c0 98       	cbi	0x18, 0	; 24
+    char buf[40];
+    3738:	8f ef       	ldi	r24, 0xFF	; 255
+    373a:	8f b9       	out	0x0f, r24	; 15
+    int i;
+    373c:	08 95       	ret
+
+0000373e <__vector_17>:
+    for (i = 0; i < length; i++) {
+        sprintf(buf, "%d: %d ", i, packet[i]);
+        usb_puts(buf);
+    373e:	1f 92       	push	r1
+    3740:	0f 92       	push	r0
+    3742:	0f b6       	in	r0, 0x3f	; 63
+    3744:	0f 92       	push	r0
+    3746:	0b b6       	in	r0, 0x3b	; 59
+    3748:	0f 92       	push	r0
+    374a:	11 24       	eor	r1, r1
+    374c:	2f 93       	push	r18
+    374e:	3f 93       	push	r19
+    3750:	4f 93       	push	r20
+    3752:	5f 93       	push	r21
+    3754:	6f 93       	push	r22
+    3756:	7f 93       	push	r23
+    3758:	8f 93       	push	r24
+    375a:	9f 93       	push	r25
+    375c:	af 93       	push	r26
+    375e:	bf 93       	push	r27
+    3760:	ef 93       	push	r30
+    3762:	ff 93       	push	r31
+    }
+    usb_puts("\r\n");
+}*/
+    3764:	80 91 ba 06 	lds	r24, 0x06BA
+    3768:	88 23       	and	r24, r24
+    376a:	d1 f0       	breq	.+52     	; 0x37a0 <__vector_17+0x62>
+
+    376c:	8f b1       	in	r24, 0x0f	; 15
+    376e:	e0 91 bb 06 	lds	r30, 0x06BB
+    3772:	f0 91 bc 06 	lds	r31, 0x06BC
+    3776:	09 95       	icall
+    3778:	80 91 ba 06 	lds	r24, 0x06BA
+    377c:	81 50       	subi	r24, 0x01	; 1
+    377e:	80 93 ba 06 	sts	0x06BA, r24
+    3782:	80 91 ba 06 	lds	r24, 0x06BA
+    3786:	88 23       	and	r24, r24
+    3788:	49 f4       	brne	.+18     	; 0x379c <__vector_17+0x5e>
+    378a:	c0 9a       	sbi	0x18, 0	; 24
+    378c:	e0 91 bd 06 	lds	r30, 0x06BD
+    3790:	f0 91 be 06 	lds	r31, 0x06BE
+    3794:	30 97       	sbiw	r30, 0x00	; 0
+    3796:	21 f0       	breq	.+8      	; 0x37a0 <__vector_17+0x62>
+    3798:	09 95       	icall
+    379a:	02 c0       	rjmp	.+4      	; 0x37a0 <__vector_17+0x62>
+    379c:	8f ef       	ldi	r24, 0xFF	; 255
+    379e:	8f b9       	out	0x0f, r24	; 15
+    37a0:	ff 91       	pop	r31
+    37a2:	ef 91       	pop	r30
+    37a4:	bf 91       	pop	r27
+    37a6:	af 91       	pop	r26
+    37a8:	9f 91       	pop	r25
+    37aa:	8f 91       	pop	r24
+    37ac:	7f 91       	pop	r23
+    37ae:	6f 91       	pop	r22
+    37b0:	5f 91       	pop	r21
+    37b2:	4f 91       	pop	r20
+    37b4:	3f 91       	pop	r19
+    37b6:	2f 91       	pop	r18
+    37b8:	0f 90       	pop	r0
+    37ba:	0b be       	out	0x3b, r0	; 59
+    37bc:	0f 90       	pop	r0
+    37be:	0f be       	out	0x3f, r0	; 63
+    37c0:	0f 90       	pop	r0
+    37c2:	1f 90       	pop	r1
+    37c4:	18 95       	reti
+
+000037c6 <delay_ms>:
+    37c6:	20 e4       	ldi	r18, 0x40	; 64
+    37c8:	36 e0       	ldi	r19, 0x06	; 6
+    37ca:	04 c0       	rjmp	.+8      	; 0x37d4 <delay_ms+0xe>
+    37cc:	f9 01       	movw	r30, r18
+    37ce:	31 97       	sbiw	r30, 0x01	; 1
+    37d0:	f1 f7       	brne	.-4      	; 0x37ce <delay_ms+0x8>
+    37d2:	01 97       	sbiw	r24, 0x01	; 1
+    37d4:	18 16       	cp	r1, r24
+    37d6:	19 06       	cpc	r1, r25
+    37d8:	cc f3       	brlt	.-14     	; 0x37cc <delay_ms+0x6>
+    37da:	08 95       	ret
+
+000037dc <rtc_init>:
+    37dc:	10 92 89 00 	sts	0x0089, r1
+    37e0:	10 92 88 00 	sts	0x0088, r1
+    37e4:	ea e8       	ldi	r30, 0x8A	; 138
+    37e6:	f0 e0       	ldi	r31, 0x00	; 0
+    37e8:	20 81       	ld	r18, Z
+    37ea:	28 60       	ori	r18, 0x08	; 8
+    37ec:	20 83       	st	Z, r18
+    37ee:	20 81       	ld	r18, Z
+    37f0:	22 60       	ori	r18, 0x02	; 2
+    37f2:	20 83       	st	Z, r18
+    37f4:	24 e2       	ldi	r18, 0x24	; 36
+    37f6:	34 ef       	ldi	r19, 0xF4	; 244
+    37f8:	30 93 87 00 	sts	0x0087, r19
+    37fc:	20 93 86 00 	sts	0x0086, r18
+    3800:	ed e7       	ldi	r30, 0x7D	; 125
+    3802:	f0 e0       	ldi	r31, 0x00	; 0
+    3804:	20 81       	ld	r18, Z
+    3806:	20 61       	ori	r18, 0x10	; 16
+    3808:	20 83       	st	Z, r18
+    380a:	70 93 c4 06 	sts	0x06C4, r23
+    380e:	60 93 c3 06 	sts	0x06C3, r22
+    3812:	90 93 66 04 	sts	0x0466, r25
+    3816:	80 93 65 04 	sts	0x0465, r24
+    381a:	08 95       	ret
+
+0000381c <rtc_get>:
+    381c:	20 91 c1 06 	lds	r18, 0x06C1
+    3820:	30 91 c2 06 	lds	r19, 0x06C2
+    3824:	c9 01       	movw	r24, r18
+    3826:	08 95       	ret
+
+00003828 <rtc_reset>:
+    3828:	10 92 c2 06 	sts	0x06C2, r1
+    382c:	10 92 c1 06 	sts	0x06C1, r1
+    3830:	08 95       	ret
+
+00003832 <__vector_26>:
+    3832:	1f 92       	push	r1
+    3834:	0f 92       	push	r0
+    3836:	0f b6       	in	r0, 0x3f	; 63
+    3838:	0f 92       	push	r0
+    383a:	0b b6       	in	r0, 0x3b	; 59
+    383c:	0f 92       	push	r0
+    383e:	11 24       	eor	r1, r1
+    3840:	2f 93       	push	r18
+    3842:	3f 93       	push	r19
+    3844:	4f 93       	push	r20
+    3846:	5f 93       	push	r21
+    3848:	6f 93       	push	r22
+    384a:	7f 93       	push	r23
+    384c:	8f 93       	push	r24
+    384e:	9f 93       	push	r25
+    3850:	af 93       	push	r26
+    3852:	bf 93       	push	r27
+    3854:	ef 93       	push	r30
+    3856:	ff 93       	push	r31
+    3858:	20 91 bf 06 	lds	r18, 0x06BF
+    385c:	30 91 c0 06 	lds	r19, 0x06C0
+    3860:	80 91 65 04 	lds	r24, 0x0465
+    3864:	90 91 66 04 	lds	r25, 0x0466
+    3868:	28 17       	cp	r18, r24
+    386a:	39 07       	cpc	r19, r25
+    386c:	a1 f4       	brne	.+40     	; 0x3896 <__vector_26+0x64>
+    386e:	80 91 c1 06 	lds	r24, 0x06C1
+    3872:	90 91 c2 06 	lds	r25, 0x06C2
+    3876:	01 96       	adiw	r24, 0x01	; 1
+    3878:	90 93 c2 06 	sts	0x06C2, r25
+    387c:	80 93 c1 06 	sts	0x06C1, r24
+    3880:	e0 91 c3 06 	lds	r30, 0x06C3
+    3884:	f0 91 c4 06 	lds	r31, 0x06C4
+    3888:	30 97       	sbiw	r30, 0x00	; 0
+    388a:	09 f0       	breq	.+2      	; 0x388e <__vector_26+0x5c>
+    388c:	09 95       	icall
+    388e:	10 92 c0 06 	sts	0x06C0, r1
+    3892:	10 92 bf 06 	sts	0x06BF, r1
+    3896:	80 91 bf 06 	lds	r24, 0x06BF
+    389a:	90 91 c0 06 	lds	r25, 0x06C0
+    389e:	01 96       	adiw	r24, 0x01	; 1
+    38a0:	90 93 c0 06 	sts	0x06C0, r25
+    38a4:	80 93 bf 06 	sts	0x06BF, r24
+    38a8:	ff 91       	pop	r31
+    38aa:	ef 91       	pop	r30
+    38ac:	bf 91       	pop	r27
+    38ae:	af 91       	pop	r26
+    38b0:	9f 91       	pop	r25
+    38b2:	8f 91       	pop	r24
+    38b4:	7f 91       	pop	r23
+    38b6:	6f 91       	pop	r22
+    38b8:	5f 91       	pop	r21
+    38ba:	4f 91       	pop	r20
+    38bc:	3f 91       	pop	r19
+    38be:	2f 91       	pop	r18
+    38c0:	0f 90       	pop	r0
+    38c2:	0b be       	out	0x3b, r0	; 59
+    38c4:	0f 90       	pop	r0
+    38c6:	0f be       	out	0x3f, r0	; 63
+    38c8:	0f 90       	pop	r0
+    38ca:	1f 90       	pop	r1
+    38cc:	18 95       	reti
+
+000038ce <analog_init>:
+    38ce:	ac 01       	movw	r20, r24
+    38d0:	20 e0       	ldi	r18, 0x00	; 0
+    38d2:	30 e0       	ldi	r19, 0x00	; 0
+    38d4:	f9 01       	movw	r30, r18
+    38d6:	ee 0f       	add	r30, r30
+    38d8:	ff 1f       	adc	r31, r31
+    38da:	e2 0f       	add	r30, r18
+    38dc:	f3 1f       	adc	r31, r19
+    38de:	e3 5a       	subi	r30, 0xA3	; 163
+    38e0:	f5 4f       	sbci	r31, 0xF5	; 245
+    38e2:	12 82       	std	Z+2, r1	; 0x02
+    38e4:	11 82       	std	Z+1, r1	; 0x01
+    38e6:	10 82       	st	Z, r1
+    38e8:	2f 5f       	subi	r18, 0xFF	; 255
+    38ea:	3f 4f       	sbci	r19, 0xFF	; 255
+    38ec:	2b 30       	cpi	r18, 0x0B	; 11
+    38ee:	31 05       	cpc	r19, r1
+    38f0:	89 f7       	brne	.-30     	; 0x38d4 <analog_init+0x6>
+    38f2:	17 b8       	out	0x07, r1	; 7
+    38f4:	87 b1       	in	r24, 0x07	; 7
+    38f6:	81 66       	ori	r24, 0x61	; 97
+    38f8:	87 b9       	out	0x07, r24	; 7
+    38fa:	16 b8       	out	0x06, r1	; 6
+    38fc:	86 b1       	in	r24, 0x06	; 6
+    38fe:	87 68       	ori	r24, 0x87	; 135
+    3900:	86 b9       	out	0x06, r24	; 6
+    3902:	80 91 64 00 	lds	r24, 0x0064
+    3906:	8c 61       	ori	r24, 0x1C	; 28
+    3908:	80 93 64 00 	sts	0x0064, r24
+    390c:	80 91 65 00 	lds	r24, 0x0065
+    3910:	83 7e       	andi	r24, 0xE3	; 227
+    3912:	80 93 65 00 	sts	0x0065, r24
+    3916:	21 e0       	ldi	r18, 0x01	; 1
+    3918:	30 e0       	ldi	r19, 0x00	; 0
+    391a:	30 93 ca 06 	sts	0x06CA, r19
+    391e:	20 93 c9 06 	sts	0x06C9, r18
+    3922:	45 2b       	or	r20, r21
+    3924:	61 f0       	breq	.+24     	; 0x393e <analog_init+0x70>
+    3926:	80 91 c5 06 	lds	r24, 0x06C5
+    392a:	90 91 c6 06 	lds	r25, 0x06C6
+    392e:	01 97       	sbiw	r24, 0x01	; 1
+    3930:	31 f0       	breq	.+12     	; 0x393e <analog_init+0x70>
+    3932:	33 9a       	sbi	0x06, 3	; 6
+    3934:	36 9a       	sbi	0x06, 6	; 6
+    3936:	30 93 c6 06 	sts	0x06C6, r19
+    393a:	20 93 c5 06 	sts	0x06C5, r18
+    393e:	08 95       	ret
+
+00003940 <analog8>:
+    3940:	00 97       	sbiw	r24, 0x00	; 0
+    3942:	19 f4       	brne	.+6      	; 0x394a <analog8+0xa>
+    3944:	20 e0       	ldi	r18, 0x00	; 0
+    3946:	30 e0       	ldi	r19, 0x00	; 0
+    3948:	0b c0       	rjmp	.+22     	; 0x3960 <analog8+0x20>
+    394a:	01 97       	sbiw	r24, 0x01	; 1
+    394c:	fc 01       	movw	r30, r24
+    394e:	ee 0f       	add	r30, r30
+    3950:	ff 1f       	adc	r31, r31
+    3952:	e8 0f       	add	r30, r24
+    3954:	f9 1f       	adc	r31, r25
+    3956:	e3 5a       	subi	r30, 0xA3	; 163
+    3958:	f5 4f       	sbci	r31, 0xF5	; 245
+    395a:	80 81       	ld	r24, Z
+    395c:	28 2f       	mov	r18, r24
+    395e:	30 e0       	ldi	r19, 0x00	; 0
+    3960:	c9 01       	movw	r24, r18
+    3962:	08 95       	ret
+
+00003964 <analog10>:
+    3964:	00 97       	sbiw	r24, 0x00	; 0
+    3966:	19 f4       	brne	.+6      	; 0x396e <analog10+0xa>
+    3968:	20 e0       	ldi	r18, 0x00	; 0
+    396a:	30 e0       	ldi	r19, 0x00	; 0
+    396c:	0a c0       	rjmp	.+20     	; 0x3982 <analog10+0x1e>
+    396e:	01 97       	sbiw	r24, 0x01	; 1
+    3970:	fc 01       	movw	r30, r24
+    3972:	ee 0f       	add	r30, r30
+    3974:	ff 1f       	adc	r31, r31
+    3976:	e8 0f       	add	r30, r24
+    3978:	f9 1f       	adc	r31, r25
+    397a:	e3 5a       	subi	r30, 0xA3	; 163
+    397c:	f5 4f       	sbci	r31, 0xF5	; 245
+    397e:	21 81       	ldd	r18, Z+1	; 0x01
+    3980:	32 81       	ldd	r19, Z+2	; 0x02
+    3982:	c9 01       	movw	r24, r18
+    3984:	08 95       	ret
+
+00003986 <analog_start_loop>:
+    3986:	80 91 c5 06 	lds	r24, 0x06C5
+    398a:	90 91 c6 06 	lds	r25, 0x06C6
+    398e:	01 97       	sbiw	r24, 0x01	; 1
+    3990:	41 f0       	breq	.+16     	; 0x39a2 <analog_start_loop+0x1c>
+    3992:	33 9a       	sbi	0x06, 3	; 6
+    3994:	36 9a       	sbi	0x06, 6	; 6
+    3996:	81 e0       	ldi	r24, 0x01	; 1
+    3998:	90 e0       	ldi	r25, 0x00	; 0
+    399a:	90 93 c6 06 	sts	0x06C6, r25
+    399e:	80 93 c5 06 	sts	0x06C5, r24
+    39a2:	08 95       	ret
+
+000039a4 <analog_stop_loop>:
+    39a4:	81 e0       	ldi	r24, 0x01	; 1
+    39a6:	90 e0       	ldi	r25, 0x00	; 0
+    39a8:	90 93 c8 06 	sts	0x06C8, r25
+    39ac:	80 93 c7 06 	sts	0x06C7, r24
+    39b0:	08 95       	ret
+
+000039b2 <analog_loop_status>:
+    39b2:	20 91 c5 06 	lds	r18, 0x06C5
+    39b6:	30 91 c6 06 	lds	r19, 0x06C6
+    39ba:	c9 01       	movw	r24, r18
+    39bc:	08 95       	ret
+
+000039be <analog_get8>:
+    39be:	9c 01       	movw	r18, r24
+    39c0:	36 99       	sbic	0x06, 6	; 6
+    39c2:	fe cf       	rjmp	.-4      	; 0x39c0 <analog_get8+0x2>
+    39c4:	27 30       	cpi	r18, 0x07	; 7
+    39c6:	31 05       	cpc	r19, r1
+    39c8:	24 f4       	brge	.+8      	; 0x39d2 <analog_get8+0x14>
+    39ca:	82 2f       	mov	r24, r18
+    39cc:	80 5a       	subi	r24, 0xA0	; 160
+    39ce:	87 b9       	out	0x07, r24	; 7
+    39d0:	14 c0       	rjmp	.+40     	; 0x39fa <analog_get8+0x3c>
+    39d2:	87 e6       	ldi	r24, 0x67	; 103
+    39d4:	87 b9       	out	0x07, r24	; 7
+    39d6:	c9 01       	movw	r24, r18
+    39d8:	08 97       	sbiw	r24, 0x08	; 8
+    39da:	20 91 65 00 	lds	r18, 0x0065
+    39de:	38 2f       	mov	r19, r24
+    39e0:	34 70       	andi	r19, 0x04	; 4
+    39e2:	23 7e       	andi	r18, 0xE3	; 227
+    39e4:	32 2b       	or	r19, r18
+    39e6:	83 70       	andi	r24, 0x03	; 3
+    39e8:	90 70       	andi	r25, 0x00	; 0
+    39ea:	43 e0       	ldi	r20, 0x03	; 3
+    39ec:	88 0f       	add	r24, r24
+    39ee:	99 1f       	adc	r25, r25
+    39f0:	4a 95       	dec	r20
+    39f2:	e1 f7       	brne	.-8      	; 0x39ec <analog_get8+0x2e>
+    39f4:	38 2b       	or	r19, r24
+    39f6:	30 93 65 00 	sts	0x0065, r19
+    39fa:	36 9a       	sbi	0x06, 6	; 6
+    39fc:	36 99       	sbic	0x06, 6	; 6
+    39fe:	fe cf       	rjmp	.-4      	; 0x39fc <analog_get8+0x3e>
+    3a00:	85 b1       	in	r24, 0x05	; 5
+    3a02:	90 e0       	ldi	r25, 0x00	; 0
+    3a04:	08 95       	ret
+
+00003a06 <analog_get10>:
+    3a06:	9c 01       	movw	r18, r24
+    3a08:	36 99       	sbic	0x06, 6	; 6
+    3a0a:	fe cf       	rjmp	.-4      	; 0x3a08 <analog_get10+0x2>
+    3a0c:	27 30       	cpi	r18, 0x07	; 7
+    3a0e:	31 05       	cpc	r19, r1
+    3a10:	24 f4       	brge	.+8      	; 0x3a1a <analog_get10+0x14>
+    3a12:	82 2f       	mov	r24, r18
+    3a14:	80 5a       	subi	r24, 0xA0	; 160
+    3a16:	87 b9       	out	0x07, r24	; 7
+    3a18:	14 c0       	rjmp	.+40     	; 0x3a42 <analog_get10+0x3c>
+    3a1a:	87 e6       	ldi	r24, 0x67	; 103
+    3a1c:	87 b9       	out	0x07, r24	; 7
+    3a1e:	c9 01       	movw	r24, r18
+    3a20:	08 97       	sbiw	r24, 0x08	; 8
+    3a22:	20 91 65 00 	lds	r18, 0x0065
+    3a26:	38 2f       	mov	r19, r24
+    3a28:	34 70       	andi	r19, 0x04	; 4
+    3a2a:	23 7e       	andi	r18, 0xE3	; 227
+    3a2c:	32 2b       	or	r19, r18
+    3a2e:	83 70       	andi	r24, 0x03	; 3
+    3a30:	90 70       	andi	r25, 0x00	; 0
+    3a32:	73 e0       	ldi	r23, 0x03	; 3
+    3a34:	88 0f       	add	r24, r24
+    3a36:	99 1f       	adc	r25, r25
+    3a38:	7a 95       	dec	r23
+    3a3a:	e1 f7       	brne	.-8      	; 0x3a34 <analog_get10+0x2e>
+    3a3c:	38 2b       	or	r19, r24
+    3a3e:	30 93 65 00 	sts	0x0065, r19
+    3a42:	36 9a       	sbi	0x06, 6	; 6
+    3a44:	36 99       	sbic	0x06, 6	; 6
+    3a46:	fe cf       	rjmp	.-4      	; 0x3a44 <analog_get10+0x3e>
+    3a48:	24 b1       	in	r18, 0x04	; 4
+    3a4a:	85 b1       	in	r24, 0x05	; 5
+    3a4c:	30 e0       	ldi	r19, 0x00	; 0
+    3a4e:	66 e0       	ldi	r22, 0x06	; 6
+    3a50:	35 95       	asr	r19
+    3a52:	27 95       	ror	r18
+    3a54:	6a 95       	dec	r22
+    3a56:	e1 f7       	brne	.-8      	; 0x3a50 <analog_get10+0x4a>
+    3a58:	90 e0       	ldi	r25, 0x00	; 0
+    3a5a:	88 0f       	add	r24, r24
+    3a5c:	99 1f       	adc	r25, r25
+    3a5e:	88 0f       	add	r24, r24
+    3a60:	99 1f       	adc	r25, r25
+    3a62:	28 2b       	or	r18, r24
+    3a64:	39 2b       	or	r19, r25
+    3a66:	c9 01       	movw	r24, r18
+    3a68:	08 95       	ret
+
+00003a6a <wheel>:
+    3a6a:	80 91 78 0a 	lds	r24, 0x0A78
+    3a6e:	90 e0       	ldi	r25, 0x00	; 0
+    3a70:	08 95       	ret
+
+00003a72 <set_adc_mux>:
+    3a72:	e5 e6       	ldi	r30, 0x65	; 101
+    3a74:	f0 e0       	ldi	r31, 0x00	; 0
+    3a76:	20 81       	ld	r18, Z
+    3a78:	38 2f       	mov	r19, r24
+    3a7a:	34 70       	andi	r19, 0x04	; 4
+    3a7c:	23 7e       	andi	r18, 0xE3	; 227
+    3a7e:	32 2b       	or	r19, r18
+    3a80:	83 70       	andi	r24, 0x03	; 3
+    3a82:	90 70       	andi	r25, 0x00	; 0
+    3a84:	a3 e0       	ldi	r26, 0x03	; 3
+    3a86:	88 0f       	add	r24, r24
+    3a88:	99 1f       	adc	r25, r25
+    3a8a:	aa 95       	dec	r26
+    3a8c:	e1 f7       	brne	.-8      	; 0x3a86 <set_adc_mux+0x14>
+    3a8e:	38 2b       	or	r19, r24
+    3a90:	30 83       	st	Z, r19
+    3a92:	08 95       	ret
+
+00003a94 <__vector_21>:
+    3a94:	1f 92       	push	r1
+    3a96:	0f 92       	push	r0
+    3a98:	0f b6       	in	r0, 0x3f	; 63
+    3a9a:	0f 92       	push	r0
+    3a9c:	0b b6       	in	r0, 0x3b	; 59
+    3a9e:	0f 92       	push	r0
+    3aa0:	11 24       	eor	r1, r1
+    3aa2:	2f 93       	push	r18
+    3aa4:	3f 93       	push	r19
+    3aa6:	4f 93       	push	r20
+    3aa8:	5f 93       	push	r21
+    3aaa:	6f 93       	push	r22
+    3aac:	8f 93       	push	r24
+    3aae:	9f 93       	push	r25
+    3ab0:	ef 93       	push	r30
+    3ab2:	ff 93       	push	r31
+    3ab4:	80 91 c5 06 	lds	r24, 0x06C5
+    3ab8:	90 91 c6 06 	lds	r25, 0x06C6
+    3abc:	01 97       	sbiw	r24, 0x01	; 1
+    3abe:	09 f0       	breq	.+2      	; 0x3ac2 <__vector_21+0x2e>
+    3ac0:	8d c0       	rjmp	.+282    	; 0x3bdc <__vector_21+0x148>
+    3ac2:	87 b1       	in	r24, 0x07	; 7
+    3ac4:	88 23       	and	r24, r24
+    3ac6:	61 f1       	breq	.+88     	; 0x3b20 <__vector_21+0x8c>
+    3ac8:	24 b1       	in	r18, 0x04	; 4
+    3aca:	65 b1       	in	r22, 0x05	; 5
+    3acc:	40 91 c9 06 	lds	r20, 0x06C9
+    3ad0:	50 91 ca 06 	lds	r21, 0x06CA
+    3ad4:	41 50       	subi	r20, 0x01	; 1
+    3ad6:	50 40       	sbci	r21, 0x00	; 0
+    3ad8:	30 e0       	ldi	r19, 0x00	; 0
+    3ada:	f6 e0       	ldi	r31, 0x06	; 6
+    3adc:	35 95       	asr	r19
+    3ade:	27 95       	ror	r18
+    3ae0:	fa 95       	dec	r31
+    3ae2:	e1 f7       	brne	.-8      	; 0x3adc <__vector_21+0x48>
+    3ae4:	86 2f       	mov	r24, r22
+    3ae6:	90 e0       	ldi	r25, 0x00	; 0
+    3ae8:	88 0f       	add	r24, r24
+    3aea:	99 1f       	adc	r25, r25
+    3aec:	88 0f       	add	r24, r24
+    3aee:	99 1f       	adc	r25, r25
+    3af0:	28 2b       	or	r18, r24
+    3af2:	39 2b       	or	r19, r25
+    3af4:	fa 01       	movw	r30, r20
+    3af6:	ee 0f       	add	r30, r30
+    3af8:	ff 1f       	adc	r31, r31
+    3afa:	e4 0f       	add	r30, r20
+    3afc:	f5 1f       	adc	r31, r21
+    3afe:	e3 5a       	subi	r30, 0xA3	; 163
+    3b00:	f5 4f       	sbci	r31, 0xF5	; 245
+    3b02:	32 83       	std	Z+2, r19	; 0x02
+    3b04:	21 83       	std	Z+1, r18	; 0x01
+    3b06:	80 91 c9 06 	lds	r24, 0x06C9
+    3b0a:	90 91 ca 06 	lds	r25, 0x06CA
+    3b0e:	01 97       	sbiw	r24, 0x01	; 1
+    3b10:	fc 01       	movw	r30, r24
+    3b12:	ee 0f       	add	r30, r30
+    3b14:	ff 1f       	adc	r31, r31
+    3b16:	e8 0f       	add	r30, r24
+    3b18:	f9 1f       	adc	r31, r25
+    3b1a:	e3 5a       	subi	r30, 0xA3	; 163
+    3b1c:	f5 4f       	sbci	r31, 0xF5	; 245
+    3b1e:	60 83       	st	Z, r22
+    3b20:	80 91 c9 06 	lds	r24, 0x06C9
+    3b24:	90 91 ca 06 	lds	r25, 0x06CA
+    3b28:	06 97       	sbiw	r24, 0x06	; 6
+    3b2a:	71 f4       	brne	.+28     	; 0x3b48 <__vector_21+0xb4>
+    3b2c:	87 e6       	ldi	r24, 0x67	; 103
+    3b2e:	87 b9       	out	0x07, r24	; 7
+    3b30:	80 91 65 00 	lds	r24, 0x0065
+    3b34:	83 7e       	andi	r24, 0xE3	; 227
+    3b36:	80 93 65 00 	sts	0x0065, r24
+    3b3a:	88 e0       	ldi	r24, 0x08	; 8
+    3b3c:	90 e0       	ldi	r25, 0x00	; 0
+    3b3e:	90 93 ca 06 	sts	0x06CA, r25
+    3b42:	80 93 c9 06 	sts	0x06C9, r24
+    3b46:	3a c0       	rjmp	.+116    	; 0x3bbc <__vector_21+0x128>
+    3b48:	80 91 c9 06 	lds	r24, 0x06C9
+    3b4c:	90 91 ca 06 	lds	r25, 0x06CA
+    3b50:	0b 97       	sbiw	r24, 0x0b	; 11
+    3b52:	39 f4       	brne	.+14     	; 0x3b62 <__vector_21+0xce>
+    3b54:	81 e0       	ldi	r24, 0x01	; 1
+    3b56:	90 e0       	ldi	r25, 0x00	; 0
+    3b58:	90 93 ca 06 	sts	0x06CA, r25
+    3b5c:	80 93 c9 06 	sts	0x06C9, r24
+    3b60:	0f c0       	rjmp	.+30     	; 0x3b80 <__vector_21+0xec>
+    3b62:	80 91 c9 06 	lds	r24, 0x06C9
+    3b66:	90 91 ca 06 	lds	r25, 0x06CA
+    3b6a:	01 96       	adiw	r24, 0x01	; 1
+    3b6c:	90 93 ca 06 	sts	0x06CA, r25
+    3b70:	80 93 c9 06 	sts	0x06C9, r24
+    3b74:	80 91 c9 06 	lds	r24, 0x06C9
+    3b78:	90 91 ca 06 	lds	r25, 0x06CA
+    3b7c:	07 97       	sbiw	r24, 0x07	; 7
+    3b7e:	3c f4       	brge	.+14     	; 0x3b8e <__vector_21+0xfa>
+    3b80:	80 91 c9 06 	lds	r24, 0x06C9
+    3b84:	90 91 ca 06 	lds	r25, 0x06CA
+    3b88:	80 66       	ori	r24, 0x60	; 96
+    3b8a:	87 b9       	out	0x07, r24	; 7
+    3b8c:	17 c0       	rjmp	.+46     	; 0x3bbc <__vector_21+0x128>
+    3b8e:	87 e6       	ldi	r24, 0x67	; 103
+    3b90:	87 b9       	out	0x07, r24	; 7
+    3b92:	80 91 c9 06 	lds	r24, 0x06C9
+    3b96:	90 91 ca 06 	lds	r25, 0x06CA
+    3b9a:	08 97       	sbiw	r24, 0x08	; 8
+    3b9c:	20 91 65 00 	lds	r18, 0x0065
+    3ba0:	38 2f       	mov	r19, r24
+    3ba2:	34 70       	andi	r19, 0x04	; 4
+    3ba4:	23 7e       	andi	r18, 0xE3	; 227
+    3ba6:	32 2b       	or	r19, r18
+    3ba8:	83 70       	andi	r24, 0x03	; 3
+    3baa:	90 70       	andi	r25, 0x00	; 0
+    3bac:	23 e0       	ldi	r18, 0x03	; 3
+    3bae:	88 0f       	add	r24, r24
+    3bb0:	99 1f       	adc	r25, r25
+    3bb2:	2a 95       	dec	r18
+    3bb4:	e1 f7       	brne	.-8      	; 0x3bae <__vector_21+0x11a>
+    3bb6:	38 2b       	or	r19, r24
+    3bb8:	30 93 65 00 	sts	0x0065, r19
+    3bbc:	80 91 c7 06 	lds	r24, 0x06C7
+    3bc0:	90 91 c8 06 	lds	r25, 0x06C8
+    3bc4:	89 2b       	or	r24, r25
+    3bc6:	49 f0       	breq	.+18     	; 0x3bda <__vector_21+0x146>
+    3bc8:	10 92 c8 06 	sts	0x06C8, r1
+    3bcc:	10 92 c7 06 	sts	0x06C7, r1
+    3bd0:	10 92 c6 06 	sts	0x06C6, r1
+    3bd4:	10 92 c5 06 	sts	0x06C5, r1
+    3bd8:	01 c0       	rjmp	.+2      	; 0x3bdc <__vector_21+0x148>
+    3bda:	36 9a       	sbi	0x06, 6	; 6
+    3bdc:	ff 91       	pop	r31
+    3bde:	ef 91       	pop	r30
+    3be0:	9f 91       	pop	r25
+    3be2:	8f 91       	pop	r24
+    3be4:	6f 91       	pop	r22
+    3be6:	5f 91       	pop	r21
+    3be8:	4f 91       	pop	r20
+    3bea:	3f 91       	pop	r19
+    3bec:	2f 91       	pop	r18
+    3bee:	0f 90       	pop	r0
+    3bf0:	0b be       	out	0x3b, r0	; 59
+    3bf2:	0f 90       	pop	r0
+    3bf4:	0f be       	out	0x3f, r0	; 63
+    3bf6:	0f 90       	pop	r0
+    3bf8:	1f 90       	pop	r1
+    3bfa:	18 95       	reti
+
+00003bfc <buzzer_init>:
+        usb_puts(buf);
+    }
+    usb_puts("\r\n");
+}*/
+
+    3bfc:	08 95       	ret
+
+00003bfe <buzzer_set_val>:
+    3bfe:	9c e1       	ldi	r25, 0x1C	; 28
+    3c00:	95 bd       	out	0x25, r25	; 37
+    3c02:	bf 9a       	sbi	0x17, 7	; 23
+    3c04:	83 bd       	out	0x23, r24	; 35
+    3c06:	08 95       	ret
+
+00003c08 <buzzer_set_freq>:
+    3c08:	9c 01       	movw	r18, r24
+    3c0a:	40 e0       	ldi	r20, 0x00	; 0
+    3c0c:	50 e0       	ldi	r21, 0x00	; 0
+    3c0e:	64 e2       	ldi	r22, 0x24	; 36
+    3c10:	74 ef       	ldi	r23, 0xF4	; 244
+    3c12:	80 e0       	ldi	r24, 0x00	; 0
+    3c14:	90 e0       	ldi	r25, 0x00	; 0
+    3c16:	0e 94 26 32 	call	0x644c	; 0x644c <__divmodsi4>
+    3c1a:	21 50       	subi	r18, 0x01	; 1
+    3c1c:	30 40       	sbci	r19, 0x00	; 0
+    3c1e:	37 ff       	sbrs	r19, 7
+    3c20:	02 c0       	rjmp	.+4      	; 0x3c26 <buzzer_set_freq+0x1e>
+    3c22:	20 e0       	ldi	r18, 0x00	; 0
+    3c24:	30 e0       	ldi	r19, 0x00	; 0
+    3c26:	8c e1       	ldi	r24, 0x1C	; 28
+    3c28:	85 bd       	out	0x25, r24	; 37
+    3c2a:	bf 9a       	sbi	0x17, 7	; 23
+    3c2c:	2f 3f       	cpi	r18, 0xFF	; 255
+    3c2e:	31 05       	cpc	r19, r1
+    3c30:	19 f0       	breq	.+6      	; 0x3c38 <buzzer_set_freq+0x30>
+    3c32:	14 f0       	brlt	.+4      	; 0x3c38 <buzzer_set_freq+0x30>
+    3c34:	2f ef       	ldi	r18, 0xFF	; 255
+    3c36:	30 e0       	ldi	r19, 0x00	; 0
+    3c38:	23 bd       	out	0x23, r18	; 35
+    3c3a:	08 95       	ret
+
+00003c3c <buzzer_off>:
+    3c3c:	85 b5       	in	r24, 0x25	; 37
+    3c3e:	88 7f       	andi	r24, 0xF8	; 248
+    3c40:	85 bd       	out	0x25, r24	; 37
+    3c42:	c6 98       	cbi	0x18, 6	; 24
+    3c44:	08 95       	ret
+
+00003c46 <buzzer_chirp>:
+    3c46:	0f 93       	push	r16
+    3c48:	1f 93       	push	r17
+    3c4a:	8c 01       	movw	r16, r24
+    3c4c:	cb 01       	movw	r24, r22
+    3c4e:	0e 94 04 1e 	call	0x3c08	; 0x3c08 <buzzer_set_freq>
+    3c52:	c8 01       	movw	r24, r16
+    3c54:	0e 94 e3 1b 	call	0x37c6	; 0x37c6 <delay_ms>
+    3c58:	85 b5       	in	r24, 0x25	; 37
+    3c5a:	88 7f       	andi	r24, 0xF8	; 248
+    3c5c:	85 bd       	out	0x25, r24	; 37
+    3c5e:	c6 98       	cbi	0x18, 6	; 24
+    3c60:	1f 91       	pop	r17
+    3c62:	0f 91       	pop	r16
+    3c64:	08 95       	ret
+
+00003c66 <__ashldi3>:
+    3c66:	ef 92       	push	r14
+    3c68:	ff 92       	push	r15
+    3c6a:	0f 93       	push	r16
+    3c6c:	df 93       	push	r29
+    3c6e:	cf 93       	push	r28
+    3c70:	cd b7       	in	r28, 0x3d	; 61
+    3c72:	de b7       	in	r29, 0x3e	; 62
+    3c74:	60 97       	sbiw	r28, 0x10	; 16
+    3c76:	0f b6       	in	r0, 0x3f	; 63
+    3c78:	f8 94       	cli
+    3c7a:	de bf       	out	0x3e, r29	; 62
+    3c7c:	0f be       	out	0x3f, r0	; 63
+    3c7e:	cd bf       	out	0x3d, r28	; 61
+    3c80:	a8 2f       	mov	r26, r24
+    3c82:	00 23       	and	r16, r16
+    3c84:	09 f4       	brne	.+2      	; 0x3c88 <__ashldi3+0x22>
+    3c86:	61 c0       	rjmp	.+194    	; 0x3d4a <__ashldi3+0xe4>
+    3c88:	7e 01       	movw	r14, r28
+    3c8a:	08 94       	sec
+    3c8c:	e1 1c       	adc	r14, r1
+    3c8e:	f1 1c       	adc	r15, r1
+    3c90:	88 e0       	ldi	r24, 0x08	; 8
+    3c92:	f7 01       	movw	r30, r14
+    3c94:	11 92       	st	Z+, r1
+    3c96:	8a 95       	dec	r24
+    3c98:	e9 f7       	brne	.-6      	; 0x3c94 <__ashldi3+0x2e>
+    3c9a:	29 83       	std	Y+1, r18	; 0x01
+    3c9c:	3a 83       	std	Y+2, r19	; 0x02
+    3c9e:	4b 83       	std	Y+3, r20	; 0x03
+    3ca0:	5c 83       	std	Y+4, r21	; 0x04
+    3ca2:	6d 83       	std	Y+5, r22	; 0x05
+    3ca4:	7e 83       	std	Y+6, r23	; 0x06
+    3ca6:	af 83       	std	Y+7, r26	; 0x07
+    3ca8:	98 87       	std	Y+8, r25	; 0x08
+    3caa:	80 e2       	ldi	r24, 0x20	; 32
+    3cac:	80 1b       	sub	r24, r16
+    3cae:	e8 2f       	mov	r30, r24
+    3cb0:	ff 27       	eor	r31, r31
+    3cb2:	e7 fd       	sbrc	r30, 7
+    3cb4:	f0 95       	com	r31
+    3cb6:	49 81       	ldd	r20, Y+1	; 0x01
+    3cb8:	5a 81       	ldd	r21, Y+2	; 0x02
+    3cba:	6b 81       	ldd	r22, Y+3	; 0x03
+    3cbc:	7c 81       	ldd	r23, Y+4	; 0x04
+    3cbe:	18 16       	cp	r1, r24
+    3cc0:	84 f0       	brlt	.+32     	; 0x3ce2 <__ashldi3+0x7c>
+    3cc2:	19 86       	std	Y+9, r1	; 0x09
+    3cc4:	1a 86       	std	Y+10, r1	; 0x0a
+    3cc6:	1b 86       	std	Y+11, r1	; 0x0b
+    3cc8:	1c 86       	std	Y+12, r1	; 0x0c
+    3cca:	88 27       	eor	r24, r24
+    3ccc:	99 27       	eor	r25, r25
+    3cce:	8e 1b       	sub	r24, r30
+    3cd0:	9f 0b       	sbc	r25, r31
+    3cd2:	04 c0       	rjmp	.+8      	; 0x3cdc <__ashldi3+0x76>
+    3cd4:	44 0f       	add	r20, r20
+    3cd6:	55 1f       	adc	r21, r21
+    3cd8:	66 1f       	adc	r22, r22
+    3cda:	77 1f       	adc	r23, r23
+    3cdc:	8a 95       	dec	r24
+    3cde:	d2 f7       	brpl	.-12     	; 0x3cd4 <__ashldi3+0x6e>
+    3ce0:	28 c0       	rjmp	.+80     	; 0x3d32 <__ashldi3+0xcc>
+    3ce2:	20 2f       	mov	r18, r16
+    3ce4:	33 27       	eor	r19, r19
+    3ce6:	27 fd       	sbrc	r18, 7
+    3ce8:	30 95       	com	r19
+    3cea:	db 01       	movw	r26, r22
+    3cec:	ca 01       	movw	r24, r20
+    3cee:	02 2e       	mov	r0, r18
+    3cf0:	04 c0       	rjmp	.+8      	; 0x3cfa <__ashldi3+0x94>
+    3cf2:	88 0f       	add	r24, r24
+    3cf4:	99 1f       	adc	r25, r25
+    3cf6:	aa 1f       	adc	r26, r26
+    3cf8:	bb 1f       	adc	r27, r27
+    3cfa:	0a 94       	dec	r0
+    3cfc:	d2 f7       	brpl	.-12     	; 0x3cf2 <__ashldi3+0x8c>
+    3cfe:	89 87       	std	Y+9, r24	; 0x09
+    3d00:	9a 87       	std	Y+10, r25	; 0x0a
+    3d02:	ab 87       	std	Y+11, r26	; 0x0b
+    3d04:	bc 87       	std	Y+12, r27	; 0x0c
+    3d06:	04 c0       	rjmp	.+8      	; 0x3d10 <__ashldi3+0xaa>
+    3d08:	76 95       	lsr	r23
+    3d0a:	67 95       	ror	r22
+    3d0c:	57 95       	ror	r21
+    3d0e:	47 95       	ror	r20
+    3d10:	ea 95       	dec	r30
+    3d12:	d2 f7       	brpl	.-12     	; 0x3d08 <__ashldi3+0xa2>
+    3d14:	8d 81       	ldd	r24, Y+5	; 0x05
+    3d16:	9e 81       	ldd	r25, Y+6	; 0x06
+    3d18:	af 81       	ldd	r26, Y+7	; 0x07
+    3d1a:	b8 85       	ldd	r27, Y+8	; 0x08
+    3d1c:	04 c0       	rjmp	.+8      	; 0x3d26 <__ashldi3+0xc0>
+    3d1e:	88 0f       	add	r24, r24
+    3d20:	99 1f       	adc	r25, r25
+    3d22:	aa 1f       	adc	r26, r26
+    3d24:	bb 1f       	adc	r27, r27
+    3d26:	2a 95       	dec	r18
+    3d28:	d2 f7       	brpl	.-12     	; 0x3d1e <__ashldi3+0xb8>
+    3d2a:	48 2b       	or	r20, r24
+    3d2c:	59 2b       	or	r21, r25
+    3d2e:	6a 2b       	or	r22, r26
+    3d30:	7b 2b       	or	r23, r27
+    3d32:	4d 87       	std	Y+13, r20	; 0x0d
+    3d34:	5e 87       	std	Y+14, r21	; 0x0e
+    3d36:	6f 87       	std	Y+15, r22	; 0x0f
+    3d38:	78 8b       	std	Y+16, r23	; 0x10
+    3d3a:	29 85       	ldd	r18, Y+9	; 0x09
+    3d3c:	3a 85       	ldd	r19, Y+10	; 0x0a
+    3d3e:	4b 85       	ldd	r20, Y+11	; 0x0b
+    3d40:	5c 85       	ldd	r21, Y+12	; 0x0c
+    3d42:	6d 85       	ldd	r22, Y+13	; 0x0d
+    3d44:	7e 85       	ldd	r23, Y+14	; 0x0e
+    3d46:	af 85       	ldd	r26, Y+15	; 0x0f
+    3d48:	98 89       	ldd	r25, Y+16	; 0x10
+    3d4a:	8a 2f       	mov	r24, r26
+    3d4c:	60 96       	adiw	r28, 0x10	; 16
+    3d4e:	0f b6       	in	r0, 0x3f	; 63
+    3d50:	f8 94       	cli
+    3d52:	de bf       	out	0x3e, r29	; 62
+    3d54:	0f be       	out	0x3f, r0	; 63
+    3d56:	cd bf       	out	0x3d, r28	; 61
+    3d58:	cf 91       	pop	r28
+    3d5a:	df 91       	pop	r29
+    3d5c:	0f 91       	pop	r16
+    3d5e:	ff 90       	pop	r15
+    3d60:	ef 90       	pop	r14
+    3d62:	08 95       	ret
+
+00003d64 <__divdi3>:
+    3d64:	a2 e7       	ldi	r26, 0x72	; 114
+    3d66:	b0 e0       	ldi	r27, 0x00	; 0
+    3d68:	e8 eb       	ldi	r30, 0xB8	; 184
+    3d6a:	fe e1       	ldi	r31, 0x1E	; 30
+    3d6c:	0c 94 96 32 	jmp	0x652c	; 0x652c <__prologue_saves__>
+    3d70:	98 2e       	mov	r9, r24
+    3d72:	89 2e       	mov	r8, r25
+    3d74:	71 2e       	mov	r7, r17
+    3d76:	88 e0       	ldi	r24, 0x08	; 8
+    3d78:	fe 01       	movw	r30, r28
+    3d7a:	31 96       	adiw	r30, 0x01	; 1
+    3d7c:	df 01       	movw	r26, r30
+    3d7e:	68 2e       	mov	r6, r24
+    3d80:	1d 92       	st	X+, r1
+    3d82:	6a 94       	dec	r6
+    3d84:	e9 f7       	brne	.-6      	; 0x3d80 <__divdi3+0x1c>
+    3d86:	29 83       	std	Y+1, r18	; 0x01
+    3d88:	3a 83       	std	Y+2, r19	; 0x02
+    3d8a:	4b 83       	std	Y+3, r20	; 0x03
+    3d8c:	5c 83       	std	Y+4, r21	; 0x04
+    3d8e:	6d 83       	std	Y+5, r22	; 0x05
+    3d90:	7e 83       	std	Y+6, r23	; 0x06
+    3d92:	9f 82       	std	Y+7, r9	; 0x07
+    3d94:	98 87       	std	Y+8, r25	; 0x08
+    3d96:	fe 01       	movw	r30, r28
+    3d98:	39 96       	adiw	r30, 0x09	; 9
+    3d9a:	df 01       	movw	r26, r30
+    3d9c:	1d 92       	st	X+, r1
+    3d9e:	8a 95       	dec	r24
+    3da0:	e9 f7       	brne	.-6      	; 0x3d9c <__divdi3+0x38>
+    3da2:	a9 86       	std	Y+9, r10	; 0x09
+    3da4:	ba 86       	std	Y+10, r11	; 0x0a
+    3da6:	cb 86       	std	Y+11, r12	; 0x0b
+    3da8:	dc 86       	std	Y+12, r13	; 0x0c
+    3daa:	ed 86       	std	Y+13, r14	; 0x0d
+    3dac:	fe 86       	std	Y+14, r15	; 0x0e
+    3dae:	0f 87       	std	Y+15, r16	; 0x0f
+    3db0:	18 8b       	std	Y+16, r17	; 0x10
+    3db2:	8d 81       	ldd	r24, Y+5	; 0x05
+    3db4:	9e 81       	ldd	r25, Y+6	; 0x06
+    3db6:	af 81       	ldd	r26, Y+7	; 0x07
+    3db8:	b8 85       	ldd	r27, Y+8	; 0x08
+    3dba:	b7 fd       	sbrc	r27, 7
+    3dbc:	07 c0       	rjmp	.+14     	; 0x3dcc <__divdi3+0x68>
+    3dbe:	e1 96       	adiw	r28, 0x31	; 49
+    3dc0:	1c ae       	std	Y+60, r1	; 0x3c
+    3dc2:	1d ae       	std	Y+61, r1	; 0x3d
+    3dc4:	1e ae       	std	Y+62, r1	; 0x3e
+    3dc6:	1f ae       	std	Y+63, r1	; 0x3f
+    3dc8:	e1 97       	sbiw	r28, 0x31	; 49
+    3dca:	64 c0       	rjmp	.+200    	; 0x3e94 <__divdi3+0x130>
+    3dcc:	21 95       	neg	r18
+    3dce:	81 e0       	ldi	r24, 0x01	; 1
+    3dd0:	12 16       	cp	r1, r18
+    3dd2:	08 f0       	brcs	.+2      	; 0x3dd6 <__divdi3+0x72>
+    3dd4:	80 e0       	ldi	r24, 0x00	; 0
+    3dd6:	31 95       	neg	r19
+    3dd8:	91 e0       	ldi	r25, 0x01	; 1
+    3dda:	13 16       	cp	r1, r19
+    3ddc:	08 f0       	brcs	.+2      	; 0x3de0 <__divdi3+0x7c>
+    3dde:	90 e0       	ldi	r25, 0x00	; 0
+    3de0:	b3 2f       	mov	r27, r19
+    3de2:	b8 1b       	sub	r27, r24
+    3de4:	81 e0       	ldi	r24, 0x01	; 1
+    3de6:	3b 17       	cp	r19, r27
+    3de8:	08 f0       	brcs	.+2      	; 0x3dec <__divdi3+0x88>
+    3dea:	80 e0       	ldi	r24, 0x00	; 0
+    3dec:	98 2b       	or	r25, r24
+    3dee:	41 95       	neg	r20
+    3df0:	31 e0       	ldi	r19, 0x01	; 1
+    3df2:	14 16       	cp	r1, r20
+    3df4:	08 f0       	brcs	.+2      	; 0x3df8 <__divdi3+0x94>
+    3df6:	30 e0       	ldi	r19, 0x00	; 0
+    3df8:	a4 2f       	mov	r26, r20
+    3dfa:	a9 1b       	sub	r26, r25
+    3dfc:	81 e0       	ldi	r24, 0x01	; 1
+    3dfe:	4a 17       	cp	r20, r26
+    3e00:	08 f0       	brcs	.+2      	; 0x3e04 <__divdi3+0xa0>
+    3e02:	80 e0       	ldi	r24, 0x00	; 0
+    3e04:	38 2b       	or	r19, r24
+    3e06:	51 95       	neg	r21
+    3e08:	91 e0       	ldi	r25, 0x01	; 1
+    3e0a:	15 16       	cp	r1, r21
+    3e0c:	08 f0       	brcs	.+2      	; 0x3e10 <__divdi3+0xac>
+    3e0e:	90 e0       	ldi	r25, 0x00	; 0
+    3e10:	f5 2f       	mov	r31, r21
+    3e12:	f3 1b       	sub	r31, r19
+    3e14:	81 e0       	ldi	r24, 0x01	; 1
+    3e16:	5f 17       	cp	r21, r31
+    3e18:	08 f0       	brcs	.+2      	; 0x3e1c <__divdi3+0xb8>
+    3e1a:	80 e0       	ldi	r24, 0x00	; 0
+    3e1c:	98 2b       	or	r25, r24
+    3e1e:	61 95       	neg	r22
+    3e20:	31 e0       	ldi	r19, 0x01	; 1
+    3e22:	16 16       	cp	r1, r22
+    3e24:	08 f0       	brcs	.+2      	; 0x3e28 <__divdi3+0xc4>
+    3e26:	30 e0       	ldi	r19, 0x00	; 0
+    3e28:	e6 2f       	mov	r30, r22
+    3e2a:	e9 1b       	sub	r30, r25
+    3e2c:	81 e0       	ldi	r24, 0x01	; 1
+    3e2e:	6e 17       	cp	r22, r30
+    3e30:	08 f0       	brcs	.+2      	; 0x3e34 <__divdi3+0xd0>
+    3e32:	80 e0       	ldi	r24, 0x00	; 0
+    3e34:	38 2b       	or	r19, r24
+    3e36:	71 95       	neg	r23
+    3e38:	41 e0       	ldi	r20, 0x01	; 1
+    3e3a:	17 16       	cp	r1, r23
+    3e3c:	08 f0       	brcs	.+2      	; 0x3e40 <__divdi3+0xdc>
+    3e3e:	40 e0       	ldi	r20, 0x00	; 0
+    3e40:	57 2f       	mov	r21, r23
+    3e42:	53 1b       	sub	r21, r19
+    3e44:	81 e0       	ldi	r24, 0x01	; 1
+    3e46:	75 17       	cp	r23, r21
+    3e48:	08 f0       	brcs	.+2      	; 0x3e4c <__divdi3+0xe8>
+    3e4a:	80 e0       	ldi	r24, 0x00	; 0
+    3e4c:	48 2b       	or	r20, r24
+    3e4e:	89 2d       	mov	r24, r9
+    3e50:	81 95       	neg	r24
+    3e52:	91 e0       	ldi	r25, 0x01	; 1
+    3e54:	18 16       	cp	r1, r24
+    3e56:	08 f0       	brcs	.+2      	; 0x3e5a <__divdi3+0xf6>
+    3e58:	90 e0       	ldi	r25, 0x00	; 0
+    3e5a:	68 2e       	mov	r6, r24
+    3e5c:	64 1a       	sub	r6, r20
+    3e5e:	46 2d       	mov	r20, r6
+    3e60:	31 e0       	ldi	r19, 0x01	; 1
+    3e62:	86 15       	cp	r24, r6
+    3e64:	08 f0       	brcs	.+2      	; 0x3e68 <__divdi3+0x104>
+    3e66:	30 e0       	ldi	r19, 0x00	; 0
+    3e68:	93 2b       	or	r25, r19
+    3e6a:	88 2d       	mov	r24, r8
+    3e6c:	81 95       	neg	r24
+    3e6e:	89 1b       	sub	r24, r25
+    3e70:	29 83       	std	Y+1, r18	; 0x01
+    3e72:	ba 83       	std	Y+2, r27	; 0x02
+    3e74:	ab 83       	std	Y+3, r26	; 0x03
+    3e76:	fc 83       	std	Y+4, r31	; 0x04
+    3e78:	ed 83       	std	Y+5, r30	; 0x05
+    3e7a:	5e 83       	std	Y+6, r21	; 0x06
+    3e7c:	4f 83       	std	Y+7, r20	; 0x07
+    3e7e:	88 87       	std	Y+8, r24	; 0x08
+    3e80:	2f ef       	ldi	r18, 0xFF	; 255
+    3e82:	3f ef       	ldi	r19, 0xFF	; 255
+    3e84:	4f ef       	ldi	r20, 0xFF	; 255
+    3e86:	5f ef       	ldi	r21, 0xFF	; 255
+    3e88:	e1 96       	adiw	r28, 0x31	; 49
+    3e8a:	2c af       	std	Y+60, r18	; 0x3c
+    3e8c:	3d af       	std	Y+61, r19	; 0x3d
+    3e8e:	4e af       	std	Y+62, r20	; 0x3e
+    3e90:	5f af       	std	Y+63, r21	; 0x3f
+    3e92:	e1 97       	sbiw	r28, 0x31	; 49
+    3e94:	8d 85       	ldd	r24, Y+13	; 0x0d
+    3e96:	9e 85       	ldd	r25, Y+14	; 0x0e
+    3e98:	af 85       	ldd	r26, Y+15	; 0x0f
+    3e9a:	b8 89       	ldd	r27, Y+16	; 0x10
+    3e9c:	b7 ff       	sbrs	r27, 7
+    3e9e:	6a c0       	rjmp	.+212    	; 0x3f74 <__divdi3+0x210>
+    3ea0:	e1 96       	adiw	r28, 0x31	; 49
+    3ea2:	4c ad       	ldd	r20, Y+60	; 0x3c
+    3ea4:	5d ad       	ldd	r21, Y+61	; 0x3d
+    3ea6:	6e ad       	ldd	r22, Y+62	; 0x3e
+    3ea8:	7f ad       	ldd	r23, Y+63	; 0x3f
+    3eaa:	e1 97       	sbiw	r28, 0x31	; 49
+    3eac:	40 95       	com	r20
+    3eae:	50 95       	com	r21
+    3eb0:	60 95       	com	r22
+    3eb2:	70 95       	com	r23
+    3eb4:	e1 96       	adiw	r28, 0x31	; 49
+    3eb6:	4c af       	std	Y+60, r20	; 0x3c
+    3eb8:	5d af       	std	Y+61, r21	; 0x3d
+    3eba:	6e af       	std	Y+62, r22	; 0x3e
+    3ebc:	7f af       	std	Y+63, r23	; 0x3f
+    3ebe:	e1 97       	sbiw	r28, 0x31	; 49
+    3ec0:	a1 94       	neg	r10
+    3ec2:	81 e0       	ldi	r24, 0x01	; 1
+    3ec4:	1a 14       	cp	r1, r10
+    3ec6:	08 f0       	brcs	.+2      	; 0x3eca <__divdi3+0x166>
+    3ec8:	80 e0       	ldi	r24, 0x00	; 0
+    3eca:	b1 94       	neg	r11
+    3ecc:	91 e0       	ldi	r25, 0x01	; 1
+    3ece:	1b 14       	cp	r1, r11
+    3ed0:	08 f0       	brcs	.+2      	; 0x3ed4 <__divdi3+0x170>
+    3ed2:	90 e0       	ldi	r25, 0x00	; 0
+    3ed4:	6b 2d       	mov	r22, r11
+    3ed6:	68 1b       	sub	r22, r24
+    3ed8:	81 e0       	ldi	r24, 0x01	; 1
+    3eda:	b6 16       	cp	r11, r22
+    3edc:	08 f0       	brcs	.+2      	; 0x3ee0 <__divdi3+0x17c>
+    3ede:	80 e0       	ldi	r24, 0x00	; 0
+    3ee0:	98 2b       	or	r25, r24
+    3ee2:	c1 94       	neg	r12
+    3ee4:	21 e0       	ldi	r18, 0x01	; 1
+    3ee6:	1c 14       	cp	r1, r12
+    3ee8:	08 f0       	brcs	.+2      	; 0x3eec <__divdi3+0x188>
+    3eea:	20 e0       	ldi	r18, 0x00	; 0
+    3eec:	5c 2d       	mov	r21, r12
+    3eee:	59 1b       	sub	r21, r25
+    3ef0:	81 e0       	ldi	r24, 0x01	; 1
+    3ef2:	c5 16       	cp	r12, r21
+    3ef4:	08 f0       	brcs	.+2      	; 0x3ef8 <__divdi3+0x194>
+    3ef6:	80 e0       	ldi	r24, 0x00	; 0
+    3ef8:	28 2b       	or	r18, r24
+    3efa:	d1 94       	neg	r13
+    3efc:	91 e0       	ldi	r25, 0x01	; 1
+    3efe:	1d 14       	cp	r1, r13
+    3f00:	08 f0       	brcs	.+2      	; 0x3f04 <__divdi3+0x1a0>
+    3f02:	90 e0       	ldi	r25, 0x00	; 0
+    3f04:	4d 2d       	mov	r20, r13
+    3f06:	42 1b       	sub	r20, r18
+    3f08:	81 e0       	ldi	r24, 0x01	; 1
+    3f0a:	d4 16       	cp	r13, r20
+    3f0c:	08 f0       	brcs	.+2      	; 0x3f10 <__divdi3+0x1ac>
+    3f0e:	80 e0       	ldi	r24, 0x00	; 0
+    3f10:	98 2b       	or	r25, r24
+    3f12:	e1 94       	neg	r14
+    3f14:	21 e0       	ldi	r18, 0x01	; 1
+    3f16:	1e 14       	cp	r1, r14
+    3f18:	08 f0       	brcs	.+2      	; 0x3f1c <__divdi3+0x1b8>
+    3f1a:	20 e0       	ldi	r18, 0x00	; 0
+    3f1c:	3e 2d       	mov	r19, r14
+    3f1e:	39 1b       	sub	r19, r25
+    3f20:	81 e0       	ldi	r24, 0x01	; 1
+    3f22:	e3 16       	cp	r14, r19
+    3f24:	08 f0       	brcs	.+2      	; 0x3f28 <__divdi3+0x1c4>
+    3f26:	80 e0       	ldi	r24, 0x00	; 0
+    3f28:	28 2b       	or	r18, r24
+    3f2a:	f1 94       	neg	r15
+    3f2c:	91 e0       	ldi	r25, 0x01	; 1
+    3f2e:	1f 14       	cp	r1, r15
+    3f30:	08 f0       	brcs	.+2      	; 0x3f34 <__divdi3+0x1d0>
+    3f32:	90 e0       	ldi	r25, 0x00	; 0
+    3f34:	7f 2d       	mov	r23, r15
+    3f36:	72 1b       	sub	r23, r18
+    3f38:	27 2f       	mov	r18, r23
+    3f3a:	81 e0       	ldi	r24, 0x01	; 1
+    3f3c:	f7 16       	cp	r15, r23
+    3f3e:	08 f0       	brcs	.+2      	; 0x3f42 <__divdi3+0x1de>
+    3f40:	80 e0       	ldi	r24, 0x00	; 0
+    3f42:	98 2b       	or	r25, r24
+    3f44:	01 95       	neg	r16
+    3f46:	11 e0       	ldi	r17, 0x01	; 1
+    3f48:	10 16       	cp	r1, r16
+    3f4a:	08 f0       	brcs	.+2      	; 0x3f4e <__divdi3+0x1ea>
+    3f4c:	10 e0       	ldi	r17, 0x00	; 0
+    3f4e:	80 2f       	mov	r24, r16
+    3f50:	89 1b       	sub	r24, r25
+    3f52:	98 2f       	mov	r25, r24
+    3f54:	81 e0       	ldi	r24, 0x01	; 1
+    3f56:	09 17       	cp	r16, r25
+    3f58:	08 f0       	brcs	.+2      	; 0x3f5c <__divdi3+0x1f8>
+    3f5a:	80 e0       	ldi	r24, 0x00	; 0
+    3f5c:	18 2b       	or	r17, r24
+    3f5e:	87 2d       	mov	r24, r7
+    3f60:	81 95       	neg	r24
+    3f62:	81 1b       	sub	r24, r17
+    3f64:	a9 86       	std	Y+9, r10	; 0x09
+    3f66:	6a 87       	std	Y+10, r22	; 0x0a
+    3f68:	5b 87       	std	Y+11, r21	; 0x0b
+    3f6a:	4c 87       	std	Y+12, r20	; 0x0c
+    3f6c:	3d 87       	std	Y+13, r19	; 0x0d
+    3f6e:	2e 87       	std	Y+14, r18	; 0x0e
+    3f70:	9f 87       	std	Y+15, r25	; 0x0f
+    3f72:	88 8b       	std	Y+16, r24	; 0x10
+    3f74:	99 81       	ldd	r25, Y+1	; 0x01
+    3f76:	2a 81       	ldd	r18, Y+2	; 0x02
+    3f78:	3b 81       	ldd	r19, Y+3	; 0x03
+    3f7a:	4c 81       	ldd	r20, Y+4	; 0x04
+    3f7c:	5d 81       	ldd	r21, Y+5	; 0x05
+    3f7e:	6e 81       	ldd	r22, Y+6	; 0x06
+    3f80:	7f 81       	ldd	r23, Y+7	; 0x07
+    3f82:	a8 85       	ldd	r26, Y+8	; 0x08
+    3f84:	b9 85       	ldd	r27, Y+9	; 0x09
+    3f86:	1a 85       	ldd	r17, Y+10	; 0x0a
+    3f88:	0b 85       	ldd	r16, Y+11	; 0x0b
+    3f8a:	fc 84       	ldd	r15, Y+12	; 0x0c
+    3f8c:	ed 84       	ldd	r14, Y+13	; 0x0d
+    3f8e:	de 84       	ldd	r13, Y+14	; 0x0e
+    3f90:	cf 84       	ldd	r12, Y+15	; 0x0f
+    3f92:	b8 88       	ldd	r11, Y+16	; 0x10
+    3f94:	88 e0       	ldi	r24, 0x08	; 8
+    3f96:	e1 e1       	ldi	r30, 0x11	; 17
+    3f98:	8e 2e       	mov	r8, r30
+    3f9a:	91 2c       	mov	r9, r1
+    3f9c:	8c 0e       	add	r8, r28
+    3f9e:	9d 1e       	adc	r9, r29
+    3fa0:	f4 01       	movw	r30, r8
+    3fa2:	68 2e       	mov	r6, r24
+    3fa4:	11 92       	st	Z+, r1
+    3fa6:	6a 94       	dec	r6
+    3fa8:	e9 f7       	brne	.-6      	; 0x3fa4 <__divdi3+0x240>
+    3faa:	99 8b       	std	Y+17, r25	; 0x11
+    3fac:	2a 8b       	std	Y+18, r18	; 0x12
+    3fae:	3b 8b       	std	Y+19, r19	; 0x13
+    3fb0:	4c 8b       	std	Y+20, r20	; 0x14
+    3fb2:	5d 8b       	std	Y+21, r21	; 0x15
+    3fb4:	6e 8b       	std	Y+22, r22	; 0x16
+    3fb6:	7f 8b       	std	Y+23, r23	; 0x17
+    3fb8:	a8 8f       	std	Y+24, r26	; 0x18
+    3fba:	9e 01       	movw	r18, r28
+    3fbc:	27 5e       	subi	r18, 0xE7	; 231
+    3fbe:	3f 4f       	sbci	r19, 0xFF	; 255
+    3fc0:	f9 01       	movw	r30, r18
+    3fc2:	11 92       	st	Z+, r1
+    3fc4:	8a 95       	dec	r24
+    3fc6:	e9 f7       	brne	.-6      	; 0x3fc2 <__divdi3+0x25e>
+    3fc8:	b9 8f       	std	Y+25, r27	; 0x19
+    3fca:	1a 8f       	std	Y+26, r17	; 0x1a
+    3fcc:	0b 8f       	std	Y+27, r16	; 0x1b
+    3fce:	fc 8e       	std	Y+28, r15	; 0x1c
+    3fd0:	ed 8e       	std	Y+29, r14	; 0x1d
+    3fd2:	de 8e       	std	Y+30, r13	; 0x1e
+    3fd4:	cf 8e       	std	Y+31, r12	; 0x1f
+    3fd6:	b8 a2       	std	Y+32, r11	; 0x20
+    3fd8:	29 8c       	ldd	r2, Y+25	; 0x19
+    3fda:	3a 8c       	ldd	r3, Y+26	; 0x1a
+    3fdc:	4b 8c       	ldd	r4, Y+27	; 0x1b
+    3fde:	5c 8c       	ldd	r5, Y+28	; 0x1c
+    3fe0:	ed 8c       	ldd	r14, Y+29	; 0x1d
+    3fe2:	fe 8c       	ldd	r15, Y+30	; 0x1e
+    3fe4:	0f 8d       	ldd	r16, Y+31	; 0x1f
+    3fe6:	18 a1       	ldd	r17, Y+32	; 0x20
+    3fe8:	69 88       	ldd	r6, Y+17	; 0x11
+    3fea:	7a 88       	ldd	r7, Y+18	; 0x12
+    3fec:	8b 88       	ldd	r8, Y+19	; 0x13
+    3fee:	9c 88       	ldd	r9, Y+20	; 0x14
+    3ff0:	21 96       	adiw	r28, 0x01	; 1
+    3ff2:	6c ae       	std	Y+60, r6	; 0x3c
+    3ff4:	7d ae       	std	Y+61, r7	; 0x3d
+    3ff6:	8e ae       	std	Y+62, r8	; 0x3e
+    3ff8:	9f ae       	std	Y+63, r9	; 0x3f
+    3ffa:	21 97       	sbiw	r28, 0x01	; 1
+    3ffc:	6d 88       	ldd	r6, Y+21	; 0x15
+    3ffe:	7e 88       	ldd	r7, Y+22	; 0x16
+    4000:	8f 88       	ldd	r8, Y+23	; 0x17
+    4002:	98 8c       	ldd	r9, Y+24	; 0x18
+    4004:	e1 14       	cp	r14, r1
+    4006:	f1 04       	cpc	r15, r1
+    4008:	01 05       	cpc	r16, r1
+    400a:	11 05       	cpc	r17, r1
+    400c:	09 f0       	breq	.+2      	; 0x4010 <__divdi3+0x2ac>
+    400e:	d9 c3       	rjmp	.+1970   	; 0x47c2 <__divdi3+0xa5e>
+    4010:	62 14       	cp	r6, r2
+    4012:	73 04       	cpc	r7, r3
+    4014:	84 04       	cpc	r8, r4
+    4016:	95 04       	cpc	r9, r5
+    4018:	08 f0       	brcs	.+2      	; 0x401c <__divdi3+0x2b8>
+    401a:	57 c1       	rjmp	.+686    	; 0x42ca <__divdi3+0x566>
+    401c:	00 e0       	ldi	r16, 0x00	; 0
+    401e:	20 16       	cp	r2, r16
+    4020:	00 e0       	ldi	r16, 0x00	; 0
+    4022:	30 06       	cpc	r3, r16
+    4024:	01 e0       	ldi	r16, 0x01	; 1
+    4026:	40 06       	cpc	r4, r16
+    4028:	00 e0       	ldi	r16, 0x00	; 0
+    402a:	50 06       	cpc	r5, r16
+    402c:	88 f4       	brcc	.+34     	; 0x4050 <__divdi3+0x2ec>
+    402e:	1f ef       	ldi	r17, 0xFF	; 255
+    4030:	21 16       	cp	r2, r17
+    4032:	31 04       	cpc	r3, r1
+    4034:	41 04       	cpc	r4, r1
+    4036:	51 04       	cpc	r5, r1
+    4038:	39 f0       	breq	.+14     	; 0x4048 <__divdi3+0x2e4>
+    403a:	30 f0       	brcs	.+12     	; 0x4048 <__divdi3+0x2e4>
+    403c:	48 e0       	ldi	r20, 0x08	; 8
+    403e:	e4 2e       	mov	r14, r20
+    4040:	f1 2c       	mov	r15, r1
+    4042:	01 2d       	mov	r16, r1
+    4044:	11 2d       	mov	r17, r1
+    4046:	18 c0       	rjmp	.+48     	; 0x4078 <__divdi3+0x314>
+    4048:	ee 24       	eor	r14, r14
+    404a:	ff 24       	eor	r15, r15
+    404c:	87 01       	movw	r16, r14
+    404e:	14 c0       	rjmp	.+40     	; 0x4078 <__divdi3+0x314>
+    4050:	20 e0       	ldi	r18, 0x00	; 0
+    4052:	22 16       	cp	r2, r18
+    4054:	20 e0       	ldi	r18, 0x00	; 0
+    4056:	32 06       	cpc	r3, r18
+    4058:	20 e0       	ldi	r18, 0x00	; 0
+    405a:	42 06       	cpc	r4, r18
+    405c:	21 e0       	ldi	r18, 0x01	; 1
+    405e:	52 06       	cpc	r5, r18
+    4060:	30 f0       	brcs	.+12     	; 0x406e <__divdi3+0x30a>
+    4062:	38 e1       	ldi	r19, 0x18	; 24
+    4064:	e3 2e       	mov	r14, r19
+    4066:	f1 2c       	mov	r15, r1
+    4068:	01 2d       	mov	r16, r1
+    406a:	11 2d       	mov	r17, r1
+    406c:	05 c0       	rjmp	.+10     	; 0x4078 <__divdi3+0x314>
+    406e:	20 e1       	ldi	r18, 0x10	; 16
+    4070:	e2 2e       	mov	r14, r18
+    4072:	f1 2c       	mov	r15, r1
+    4074:	01 2d       	mov	r16, r1
+    4076:	11 2d       	mov	r17, r1
+    4078:	d2 01       	movw	r26, r4
+    407a:	c1 01       	movw	r24, r2
+    407c:	0e 2c       	mov	r0, r14
+    407e:	04 c0       	rjmp	.+8      	; 0x4088 <__divdi3+0x324>
+    4080:	b6 95       	lsr	r27
+    4082:	a7 95       	ror	r26
+    4084:	97 95       	ror	r25
+    4086:	87 95       	ror	r24
+    4088:	0a 94       	dec	r0
+    408a:	d2 f7       	brpl	.-12     	; 0x4080 <__divdi3+0x31c>
+    408c:	89 59       	subi	r24, 0x99	; 153
+    408e:	9b 4f       	sbci	r25, 0xFB	; 251
+    4090:	dc 01       	movw	r26, r24
+    4092:	2c 91       	ld	r18, X
+    4094:	80 e2       	ldi	r24, 0x20	; 32
+    4096:	90 e0       	ldi	r25, 0x00	; 0
+    4098:	a0 e0       	ldi	r26, 0x00	; 0
+    409a:	b0 e0       	ldi	r27, 0x00	; 0
+    409c:	8e 19       	sub	r24, r14
+    409e:	9f 09       	sbc	r25, r15
+    40a0:	a0 0b       	sbc	r26, r16
+    40a2:	b1 0b       	sbc	r27, r17
+    40a4:	7c 01       	movw	r14, r24
+    40a6:	8d 01       	movw	r16, r26
+    40a8:	e2 1a       	sub	r14, r18
+    40aa:	f1 08       	sbc	r15, r1
+    40ac:	01 09       	sbc	r16, r1
+    40ae:	11 09       	sbc	r17, r1
+    40b0:	e1 14       	cp	r14, r1
+    40b2:	f1 04       	cpc	r15, r1
+    40b4:	01 05       	cpc	r16, r1
+    40b6:	11 05       	cpc	r17, r1
+    40b8:	d1 f1       	breq	.+116    	; 0x412e <__divdi3+0x3ca>
+    40ba:	0e 2c       	mov	r0, r14
+    40bc:	04 c0       	rjmp	.+8      	; 0x40c6 <__divdi3+0x362>
+    40be:	22 0c       	add	r2, r2
+    40c0:	33 1c       	adc	r3, r3
+    40c2:	44 1c       	adc	r4, r4
+    40c4:	55 1c       	adc	r5, r5
+    40c6:	0a 94       	dec	r0
+    40c8:	d2 f7       	brpl	.-12     	; 0x40be <__divdi3+0x35a>
+    40ca:	a4 01       	movw	r20, r8
+    40cc:	93 01       	movw	r18, r6
+    40ce:	0e 2c       	mov	r0, r14
+    40d0:	04 c0       	rjmp	.+8      	; 0x40da <__divdi3+0x376>
+    40d2:	22 0f       	add	r18, r18
+    40d4:	33 1f       	adc	r19, r19
+    40d6:	44 1f       	adc	r20, r20
+    40d8:	55 1f       	adc	r21, r21
+    40da:	0a 94       	dec	r0
+    40dc:	d2 f7       	brpl	.-12     	; 0x40d2 <__divdi3+0x36e>
+    40de:	80 e2       	ldi	r24, 0x20	; 32
+    40e0:	90 e0       	ldi	r25, 0x00	; 0
+    40e2:	8e 19       	sub	r24, r14
+    40e4:	9f 09       	sbc	r25, r15
+    40e6:	21 96       	adiw	r28, 0x01	; 1
+    40e8:	6c ac       	ldd	r6, Y+60	; 0x3c
+    40ea:	7d ac       	ldd	r7, Y+61	; 0x3d
+    40ec:	8e ac       	ldd	r8, Y+62	; 0x3e
+    40ee:	9f ac       	ldd	r9, Y+63	; 0x3f
+    40f0:	21 97       	sbiw	r28, 0x01	; 1
+    40f2:	04 c0       	rjmp	.+8      	; 0x40fc <__divdi3+0x398>
+    40f4:	96 94       	lsr	r9
+    40f6:	87 94       	ror	r8
+    40f8:	77 94       	ror	r7
+    40fa:	67 94       	ror	r6
+    40fc:	8a 95       	dec	r24
+    40fe:	d2 f7       	brpl	.-12     	; 0x40f4 <__divdi3+0x390>
+    4100:	62 2a       	or	r6, r18
+    4102:	73 2a       	or	r7, r19
+    4104:	84 2a       	or	r8, r20
+    4106:	95 2a       	or	r9, r21
+    4108:	21 96       	adiw	r28, 0x01	; 1
+    410a:	ac ac       	ldd	r10, Y+60	; 0x3c
+    410c:	bd ac       	ldd	r11, Y+61	; 0x3d
+    410e:	ce ac       	ldd	r12, Y+62	; 0x3e
+    4110:	df ac       	ldd	r13, Y+63	; 0x3f
+    4112:	21 97       	sbiw	r28, 0x01	; 1
+    4114:	04 c0       	rjmp	.+8      	; 0x411e <__divdi3+0x3ba>
+    4116:	aa 0c       	add	r10, r10
+    4118:	bb 1c       	adc	r11, r11
+    411a:	cc 1c       	adc	r12, r12
+    411c:	dd 1c       	adc	r13, r13
+    411e:	ea 94       	dec	r14
+    4120:	d2 f7       	brpl	.-12     	; 0x4116 <__divdi3+0x3b2>
+    4122:	21 96       	adiw	r28, 0x01	; 1
+    4124:	ac ae       	std	Y+60, r10	; 0x3c
+    4126:	bd ae       	std	Y+61, r11	; 0x3d
+    4128:	ce ae       	std	Y+62, r12	; 0x3e
+    412a:	df ae       	std	Y+63, r13	; 0x3f
+    412c:	21 97       	sbiw	r28, 0x01	; 1
+    412e:	62 01       	movw	r12, r4
+    4130:	ee 24       	eor	r14, r14
+    4132:	ff 24       	eor	r15, r15
+    4134:	29 96       	adiw	r28, 0x09	; 9
+    4136:	cc ae       	std	Y+60, r12	; 0x3c
+    4138:	dd ae       	std	Y+61, r13	; 0x3d
+    413a:	ee ae       	std	Y+62, r14	; 0x3e
+    413c:	ff ae       	std	Y+63, r15	; 0x3f
+    413e:	29 97       	sbiw	r28, 0x09	; 9
+    4140:	92 01       	movw	r18, r4
+    4142:	81 01       	movw	r16, r2
+    4144:	20 70       	andi	r18, 0x00	; 0
+    4146:	30 70       	andi	r19, 0x00	; 0
+    4148:	2d 96       	adiw	r28, 0x0d	; 13
+    414a:	0c af       	std	Y+60, r16	; 0x3c
+    414c:	1d af       	std	Y+61, r17	; 0x3d
+    414e:	2e af       	std	Y+62, r18	; 0x3e
+    4150:	3f af       	std	Y+63, r19	; 0x3f
+    4152:	2d 97       	sbiw	r28, 0x0d	; 13
+    4154:	c4 01       	movw	r24, r8
+    4156:	b3 01       	movw	r22, r6
+    4158:	a7 01       	movw	r20, r14
+    415a:	96 01       	movw	r18, r12
+    415c:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    4160:	7b 01       	movw	r14, r22
+    4162:	8c 01       	movw	r16, r24
+    4164:	c4 01       	movw	r24, r8
+    4166:	b3 01       	movw	r22, r6
+    4168:	29 96       	adiw	r28, 0x09	; 9
+    416a:	2c ad       	ldd	r18, Y+60	; 0x3c
+    416c:	3d ad       	ldd	r19, Y+61	; 0x3d
+    416e:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4170:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4172:	29 97       	sbiw	r28, 0x09	; 9
+    4174:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    4178:	c9 01       	movw	r24, r18
+    417a:	da 01       	movw	r26, r20
+    417c:	3c 01       	movw	r6, r24
+    417e:	4d 01       	movw	r8, r26
+    4180:	c4 01       	movw	r24, r8
+    4182:	b3 01       	movw	r22, r6
+    4184:	2d 96       	adiw	r28, 0x0d	; 13
+    4186:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4188:	3d ad       	ldd	r19, Y+61	; 0x3d
+    418a:	4e ad       	ldd	r20, Y+62	; 0x3e
+    418c:	5f ad       	ldd	r21, Y+63	; 0x3f
+    418e:	2d 97       	sbiw	r28, 0x0d	; 13
+    4190:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    4194:	9b 01       	movw	r18, r22
+    4196:	ac 01       	movw	r20, r24
+    4198:	87 01       	movw	r16, r14
+    419a:	ff 24       	eor	r15, r15
+    419c:	ee 24       	eor	r14, r14
+    419e:	21 96       	adiw	r28, 0x01	; 1
+    41a0:	ac ac       	ldd	r10, Y+60	; 0x3c
+    41a2:	bd ac       	ldd	r11, Y+61	; 0x3d
+    41a4:	ce ac       	ldd	r12, Y+62	; 0x3e
+    41a6:	df ac       	ldd	r13, Y+63	; 0x3f
+    41a8:	21 97       	sbiw	r28, 0x01	; 1
+    41aa:	c6 01       	movw	r24, r12
+    41ac:	aa 27       	eor	r26, r26
+    41ae:	bb 27       	eor	r27, r27
+    41b0:	57 01       	movw	r10, r14
+    41b2:	68 01       	movw	r12, r16
+    41b4:	a8 2a       	or	r10, r24
+    41b6:	b9 2a       	or	r11, r25
+    41b8:	ca 2a       	or	r12, r26
+    41ba:	db 2a       	or	r13, r27
+    41bc:	a2 16       	cp	r10, r18
+    41be:	b3 06       	cpc	r11, r19
+    41c0:	c4 06       	cpc	r12, r20
+    41c2:	d5 06       	cpc	r13, r21
+    41c4:	e0 f4       	brcc	.+56     	; 0x41fe <__divdi3+0x49a>
+    41c6:	08 94       	sec
+    41c8:	61 08       	sbc	r6, r1
+    41ca:	71 08       	sbc	r7, r1
+    41cc:	81 08       	sbc	r8, r1
+    41ce:	91 08       	sbc	r9, r1
+    41d0:	a2 0c       	add	r10, r2
+    41d2:	b3 1c       	adc	r11, r3
+    41d4:	c4 1c       	adc	r12, r4
+    41d6:	d5 1c       	adc	r13, r5
+    41d8:	a2 14       	cp	r10, r2
+    41da:	b3 04       	cpc	r11, r3
+    41dc:	c4 04       	cpc	r12, r4
+    41de:	d5 04       	cpc	r13, r5
+    41e0:	70 f0       	brcs	.+28     	; 0x41fe <__divdi3+0x49a>
+    41e2:	a2 16       	cp	r10, r18
+    41e4:	b3 06       	cpc	r11, r19
+    41e6:	c4 06       	cpc	r12, r20
+    41e8:	d5 06       	cpc	r13, r21
+    41ea:	48 f4       	brcc	.+18     	; 0x41fe <__divdi3+0x49a>
+    41ec:	08 94       	sec
+    41ee:	61 08       	sbc	r6, r1
+    41f0:	71 08       	sbc	r7, r1
+    41f2:	81 08       	sbc	r8, r1
+    41f4:	91 08       	sbc	r9, r1
+    41f6:	a2 0c       	add	r10, r2
+    41f8:	b3 1c       	adc	r11, r3
+    41fa:	c4 1c       	adc	r12, r4
+    41fc:	d5 1c       	adc	r13, r5
+    41fe:	a2 1a       	sub	r10, r18
+    4200:	b3 0a       	sbc	r11, r19
+    4202:	c4 0a       	sbc	r12, r20
+    4204:	d5 0a       	sbc	r13, r21
+    4206:	c6 01       	movw	r24, r12
+    4208:	b5 01       	movw	r22, r10
+    420a:	29 96       	adiw	r28, 0x09	; 9
+    420c:	2c ad       	ldd	r18, Y+60	; 0x3c
+    420e:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4210:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4212:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4214:	29 97       	sbiw	r28, 0x09	; 9
+    4216:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    421a:	7b 01       	movw	r14, r22
+    421c:	8c 01       	movw	r16, r24
+    421e:	c6 01       	movw	r24, r12
+    4220:	b5 01       	movw	r22, r10
+    4222:	29 96       	adiw	r28, 0x09	; 9
+    4224:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4226:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4228:	4e ad       	ldd	r20, Y+62	; 0x3e
+    422a:	5f ad       	ldd	r21, Y+63	; 0x3f
+    422c:	29 97       	sbiw	r28, 0x09	; 9
+    422e:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    4232:	c9 01       	movw	r24, r18
+    4234:	da 01       	movw	r26, r20
+    4236:	5c 01       	movw	r10, r24
+    4238:	6d 01       	movw	r12, r26
+    423a:	c6 01       	movw	r24, r12
+    423c:	b5 01       	movw	r22, r10
+    423e:	2d 96       	adiw	r28, 0x0d	; 13
+    4240:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4242:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4244:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4246:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4248:	2d 97       	sbiw	r28, 0x0d	; 13
+    424a:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    424e:	9b 01       	movw	r18, r22
+    4250:	ac 01       	movw	r20, r24
+    4252:	87 01       	movw	r16, r14
+    4254:	ff 24       	eor	r15, r15
+    4256:	ee 24       	eor	r14, r14
+    4258:	21 96       	adiw	r28, 0x01	; 1
+    425a:	8c ad       	ldd	r24, Y+60	; 0x3c
+    425c:	9d ad       	ldd	r25, Y+61	; 0x3d
+    425e:	ae ad       	ldd	r26, Y+62	; 0x3e
+    4260:	bf ad       	ldd	r27, Y+63	; 0x3f
+    4262:	21 97       	sbiw	r28, 0x01	; 1
+    4264:	a0 70       	andi	r26, 0x00	; 0
+    4266:	b0 70       	andi	r27, 0x00	; 0
+    4268:	e8 2a       	or	r14, r24
+    426a:	f9 2a       	or	r15, r25
+    426c:	0a 2b       	or	r16, r26
+    426e:	1b 2b       	or	r17, r27
+    4270:	e2 16       	cp	r14, r18
+    4272:	f3 06       	cpc	r15, r19
+    4274:	04 07       	cpc	r16, r20
+    4276:	15 07       	cpc	r17, r21
+    4278:	c0 f4       	brcc	.+48     	; 0x42aa <__divdi3+0x546>
+    427a:	08 94       	sec
+    427c:	a1 08       	sbc	r10, r1
+    427e:	b1 08       	sbc	r11, r1
+    4280:	c1 08       	sbc	r12, r1
+    4282:	d1 08       	sbc	r13, r1
+    4284:	e2 0c       	add	r14, r2
+    4286:	f3 1c       	adc	r15, r3
+    4288:	04 1d       	adc	r16, r4
+    428a:	15 1d       	adc	r17, r5
+    428c:	e2 14       	cp	r14, r2
+    428e:	f3 04       	cpc	r15, r3
+    4290:	04 05       	cpc	r16, r4
+    4292:	15 05       	cpc	r17, r5
+    4294:	50 f0       	brcs	.+20     	; 0x42aa <__divdi3+0x546>
+    4296:	e2 16       	cp	r14, r18
+    4298:	f3 06       	cpc	r15, r19
+    429a:	04 07       	cpc	r16, r20
+    429c:	15 07       	cpc	r17, r21
+    429e:	28 f4       	brcc	.+10     	; 0x42aa <__divdi3+0x546>
+    42a0:	08 94       	sec
+    42a2:	a1 08       	sbc	r10, r1
+    42a4:	b1 08       	sbc	r11, r1
+    42a6:	c1 08       	sbc	r12, r1
+    42a8:	d1 08       	sbc	r13, r1
+    42aa:	d3 01       	movw	r26, r6
+    42ac:	99 27       	eor	r25, r25
+    42ae:	88 27       	eor	r24, r24
+    42b0:	86 01       	movw	r16, r12
+    42b2:	75 01       	movw	r14, r10
+    42b4:	e8 2a       	or	r14, r24
+    42b6:	f9 2a       	or	r15, r25
+    42b8:	0a 2b       	or	r16, r26
+    42ba:	1b 2b       	or	r17, r27
+    42bc:	25 96       	adiw	r28, 0x05	; 5
+    42be:	ec ae       	std	Y+60, r14	; 0x3c
+    42c0:	fd ae       	std	Y+61, r15	; 0x3d
+    42c2:	0e af       	std	Y+62, r16	; 0x3e
+    42c4:	1f af       	std	Y+63, r17	; 0x3f
+    42c6:	25 97       	sbiw	r28, 0x05	; 5
+    42c8:	eb c4       	rjmp	.+2518   	; 0x4ca0 <__divdi3+0xf3c>
+    42ca:	21 14       	cp	r2, r1
+    42cc:	31 04       	cpc	r3, r1
+    42ce:	41 04       	cpc	r4, r1
+    42d0:	51 04       	cpc	r5, r1
+    42d2:	71 f4       	brne	.+28     	; 0x42f0 <__divdi3+0x58c>
+    42d4:	61 e0       	ldi	r22, 0x01	; 1
+    42d6:	70 e0       	ldi	r23, 0x00	; 0
+    42d8:	80 e0       	ldi	r24, 0x00	; 0
+    42da:	90 e0       	ldi	r25, 0x00	; 0
+    42dc:	20 e0       	ldi	r18, 0x00	; 0
+    42de:	30 e0       	ldi	r19, 0x00	; 0
+    42e0:	40 e0       	ldi	r20, 0x00	; 0
+    42e2:	50 e0       	ldi	r21, 0x00	; 0
+    42e4:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    42e8:	c9 01       	movw	r24, r18
+    42ea:	da 01       	movw	r26, r20
+    42ec:	1c 01       	movw	r2, r24
+    42ee:	2d 01       	movw	r4, r26
+    42f0:	00 e0       	ldi	r16, 0x00	; 0
+    42f2:	20 16       	cp	r2, r16
+    42f4:	00 e0       	ldi	r16, 0x00	; 0
+    42f6:	30 06       	cpc	r3, r16
+    42f8:	01 e0       	ldi	r16, 0x01	; 1
+    42fa:	40 06       	cpc	r4, r16
+    42fc:	00 e0       	ldi	r16, 0x00	; 0
+    42fe:	50 06       	cpc	r5, r16
+    4300:	88 f4       	brcc	.+34     	; 0x4324 <__divdi3+0x5c0>
+    4302:	1f ef       	ldi	r17, 0xFF	; 255
+    4304:	21 16       	cp	r2, r17
+    4306:	31 04       	cpc	r3, r1
+    4308:	41 04       	cpc	r4, r1
+    430a:	51 04       	cpc	r5, r1
+    430c:	31 f0       	breq	.+12     	; 0x431a <__divdi3+0x5b6>
+    430e:	28 f0       	brcs	.+10     	; 0x431a <__divdi3+0x5b6>
+    4310:	48 e0       	ldi	r20, 0x08	; 8
+    4312:	50 e0       	ldi	r21, 0x00	; 0
+    4314:	60 e0       	ldi	r22, 0x00	; 0
+    4316:	70 e0       	ldi	r23, 0x00	; 0
+    4318:	17 c0       	rjmp	.+46     	; 0x4348 <__divdi3+0x5e4>
+    431a:	40 e0       	ldi	r20, 0x00	; 0
+    431c:	50 e0       	ldi	r21, 0x00	; 0
+    431e:	60 e0       	ldi	r22, 0x00	; 0
+    4320:	70 e0       	ldi	r23, 0x00	; 0
+    4322:	12 c0       	rjmp	.+36     	; 0x4348 <__divdi3+0x5e4>
+    4324:	20 e0       	ldi	r18, 0x00	; 0
+    4326:	22 16       	cp	r2, r18
+    4328:	20 e0       	ldi	r18, 0x00	; 0
+    432a:	32 06       	cpc	r3, r18
+    432c:	20 e0       	ldi	r18, 0x00	; 0
+    432e:	42 06       	cpc	r4, r18
+    4330:	21 e0       	ldi	r18, 0x01	; 1
+    4332:	52 06       	cpc	r5, r18
+    4334:	28 f0       	brcs	.+10     	; 0x4340 <__divdi3+0x5dc>
+    4336:	48 e1       	ldi	r20, 0x18	; 24
+    4338:	50 e0       	ldi	r21, 0x00	; 0
+    433a:	60 e0       	ldi	r22, 0x00	; 0
+    433c:	70 e0       	ldi	r23, 0x00	; 0
+    433e:	04 c0       	rjmp	.+8      	; 0x4348 <__divdi3+0x5e4>
+    4340:	40 e1       	ldi	r20, 0x10	; 16
+    4342:	50 e0       	ldi	r21, 0x00	; 0
+    4344:	60 e0       	ldi	r22, 0x00	; 0
+    4346:	70 e0       	ldi	r23, 0x00	; 0
+    4348:	d2 01       	movw	r26, r4
+    434a:	c1 01       	movw	r24, r2
+    434c:	04 2e       	mov	r0, r20
+    434e:	04 c0       	rjmp	.+8      	; 0x4358 <__divdi3+0x5f4>
+    4350:	b6 95       	lsr	r27
+    4352:	a7 95       	ror	r26
+    4354:	97 95       	ror	r25
+    4356:	87 95       	ror	r24
+    4358:	0a 94       	dec	r0
+    435a:	d2 f7       	brpl	.-12     	; 0x4350 <__divdi3+0x5ec>
+    435c:	89 59       	subi	r24, 0x99	; 153
+    435e:	9b 4f       	sbci	r25, 0xFB	; 251
+    4360:	dc 01       	movw	r26, r24
+    4362:	2c 91       	ld	r18, X
+    4364:	e0 e2       	ldi	r30, 0x20	; 32
+    4366:	ee 2e       	mov	r14, r30
+    4368:	f1 2c       	mov	r15, r1
+    436a:	01 2d       	mov	r16, r1
+    436c:	11 2d       	mov	r17, r1
+    436e:	d8 01       	movw	r26, r16
+    4370:	c7 01       	movw	r24, r14
+    4372:	84 1b       	sub	r24, r20
+    4374:	95 0b       	sbc	r25, r21
+    4376:	a6 0b       	sbc	r26, r22
+    4378:	b7 0b       	sbc	r27, r23
+    437a:	82 1b       	sub	r24, r18
+    437c:	91 09       	sbc	r25, r1
+    437e:	a1 09       	sbc	r26, r1
+    4380:	b1 09       	sbc	r27, r1
+    4382:	00 97       	sbiw	r24, 0x00	; 0
+    4384:	a1 05       	cpc	r26, r1
+    4386:	b1 05       	cpc	r27, r1
+    4388:	61 f4       	brne	.+24     	; 0x43a2 <__divdi3+0x63e>
+    438a:	64 01       	movw	r12, r8
+    438c:	53 01       	movw	r10, r6
+    438e:	a2 18       	sub	r10, r2
+    4390:	b3 08       	sbc	r11, r3
+    4392:	c4 08       	sbc	r12, r4
+    4394:	d5 08       	sbc	r13, r5
+    4396:	31 e0       	ldi	r19, 0x01	; 1
+    4398:	63 2e       	mov	r6, r19
+    439a:	71 2c       	mov	r7, r1
+    439c:	81 2c       	mov	r8, r1
+    439e:	91 2c       	mov	r9, r1
+    43a0:	24 c1       	rjmp	.+584    	; 0x45ea <__divdi3+0x886>
+    43a2:	e3 96       	adiw	r28, 0x33	; 51
+    43a4:	8f af       	std	Y+63, r24	; 0x3f
+    43a6:	e3 97       	sbiw	r28, 0x33	; 51
+    43a8:	08 2e       	mov	r0, r24
+    43aa:	04 c0       	rjmp	.+8      	; 0x43b4 <__divdi3+0x650>
+    43ac:	22 0c       	add	r2, r2
+    43ae:	33 1c       	adc	r3, r3
+    43b0:	44 1c       	adc	r4, r4
+    43b2:	55 1c       	adc	r5, r5
+    43b4:	0a 94       	dec	r0
+    43b6:	d2 f7       	brpl	.-12     	; 0x43ac <__divdi3+0x648>
+    43b8:	ee 2d       	mov	r30, r14
+    43ba:	e8 1b       	sub	r30, r24
+    43bc:	64 01       	movw	r12, r8
+    43be:	53 01       	movw	r10, r6
+    43c0:	0e 2e       	mov	r0, r30
+    43c2:	04 c0       	rjmp	.+8      	; 0x43cc <__divdi3+0x668>
+    43c4:	d6 94       	lsr	r13
+    43c6:	c7 94       	ror	r12
+    43c8:	b7 94       	ror	r11
+    43ca:	a7 94       	ror	r10
+    43cc:	0a 94       	dec	r0
+    43ce:	d2 f7       	brpl	.-12     	; 0x43c4 <__divdi3+0x660>
+    43d0:	a4 01       	movw	r20, r8
+    43d2:	93 01       	movw	r18, r6
+    43d4:	e3 96       	adiw	r28, 0x33	; 51
+    43d6:	0f ac       	ldd	r0, Y+63	; 0x3f
+    43d8:	e3 97       	sbiw	r28, 0x33	; 51
+    43da:	04 c0       	rjmp	.+8      	; 0x43e4 <__divdi3+0x680>
+    43dc:	22 0f       	add	r18, r18
+    43de:	33 1f       	adc	r19, r19
+    43e0:	44 1f       	adc	r20, r20
+    43e2:	55 1f       	adc	r21, r21
+    43e4:	0a 94       	dec	r0
+    43e6:	d2 f7       	brpl	.-12     	; 0x43dc <__divdi3+0x678>
+    43e8:	21 96       	adiw	r28, 0x01	; 1
+    43ea:	6c ac       	ldd	r6, Y+60	; 0x3c
+    43ec:	7d ac       	ldd	r7, Y+61	; 0x3d
+    43ee:	8e ac       	ldd	r8, Y+62	; 0x3e
+    43f0:	9f ac       	ldd	r9, Y+63	; 0x3f
+    43f2:	21 97       	sbiw	r28, 0x01	; 1
+    43f4:	0e 2e       	mov	r0, r30
+    43f6:	04 c0       	rjmp	.+8      	; 0x4400 <__divdi3+0x69c>
+    43f8:	96 94       	lsr	r9
+    43fa:	87 94       	ror	r8
+    43fc:	77 94       	ror	r7
+    43fe:	67 94       	ror	r6
+    4400:	0a 94       	dec	r0
+    4402:	d2 f7       	brpl	.-12     	; 0x43f8 <__divdi3+0x694>
+    4404:	84 01       	movw	r16, r8
+    4406:	73 01       	movw	r14, r6
+    4408:	e2 2a       	or	r14, r18
+    440a:	f3 2a       	or	r15, r19
+    440c:	04 2b       	or	r16, r20
+    440e:	15 2b       	or	r17, r21
+    4410:	e9 ae       	std	Y+57, r14	; 0x39
+    4412:	fa ae       	std	Y+58, r15	; 0x3a
+    4414:	0b af       	std	Y+59, r16	; 0x3b
+    4416:	1c af       	std	Y+60, r17	; 0x3c
+    4418:	32 01       	movw	r6, r4
+    441a:	88 24       	eor	r8, r8
+    441c:	99 24       	eor	r9, r9
+    441e:	92 01       	movw	r18, r4
+    4420:	81 01       	movw	r16, r2
+    4422:	20 70       	andi	r18, 0x00	; 0
+    4424:	30 70       	andi	r19, 0x00	; 0
+    4426:	61 96       	adiw	r28, 0x11	; 17
+    4428:	0c af       	std	Y+60, r16	; 0x3c
+    442a:	1d af       	std	Y+61, r17	; 0x3d
+    442c:	2e af       	std	Y+62, r18	; 0x3e
+    442e:	3f af       	std	Y+63, r19	; 0x3f
+    4430:	61 97       	sbiw	r28, 0x11	; 17
+    4432:	c6 01       	movw	r24, r12
+    4434:	b5 01       	movw	r22, r10
+    4436:	a4 01       	movw	r20, r8
+    4438:	93 01       	movw	r18, r6
+    443a:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    443e:	7b 01       	movw	r14, r22
+    4440:	8c 01       	movw	r16, r24
+    4442:	c6 01       	movw	r24, r12
+    4444:	b5 01       	movw	r22, r10
+    4446:	a4 01       	movw	r20, r8
+    4448:	93 01       	movw	r18, r6
+    444a:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    444e:	c9 01       	movw	r24, r18
+    4450:	da 01       	movw	r26, r20
+    4452:	65 96       	adiw	r28, 0x15	; 21
+    4454:	8c af       	std	Y+60, r24	; 0x3c
+    4456:	9d af       	std	Y+61, r25	; 0x3d
+    4458:	ae af       	std	Y+62, r26	; 0x3e
+    445a:	bf af       	std	Y+63, r27	; 0x3f
+    445c:	65 97       	sbiw	r28, 0x15	; 21
+    445e:	bc 01       	movw	r22, r24
+    4460:	cd 01       	movw	r24, r26
+    4462:	61 96       	adiw	r28, 0x11	; 17
+    4464:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4466:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4468:	4e ad       	ldd	r20, Y+62	; 0x3e
+    446a:	5f ad       	ldd	r21, Y+63	; 0x3f
+    446c:	61 97       	sbiw	r28, 0x11	; 17
+    446e:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    4472:	9b 01       	movw	r18, r22
+    4474:	ac 01       	movw	r20, r24
+    4476:	87 01       	movw	r16, r14
+    4478:	ff 24       	eor	r15, r15
+    447a:	ee 24       	eor	r14, r14
+    447c:	a9 ac       	ldd	r10, Y+57	; 0x39
+    447e:	ba ac       	ldd	r11, Y+58	; 0x3a
+    4480:	cb ac       	ldd	r12, Y+59	; 0x3b
+    4482:	dc ac       	ldd	r13, Y+60	; 0x3c
+    4484:	c6 01       	movw	r24, r12
+    4486:	aa 27       	eor	r26, r26
+    4488:	bb 27       	eor	r27, r27
+    448a:	5c 01       	movw	r10, r24
+    448c:	6d 01       	movw	r12, r26
+    448e:	ae 28       	or	r10, r14
+    4490:	bf 28       	or	r11, r15
+    4492:	c0 2a       	or	r12, r16
+    4494:	d1 2a       	or	r13, r17
+    4496:	a2 16       	cp	r10, r18
+    4498:	b3 06       	cpc	r11, r19
+    449a:	c4 06       	cpc	r12, r20
+    449c:	d5 06       	cpc	r13, r21
+    449e:	60 f5       	brcc	.+88     	; 0x44f8 <__divdi3+0x794>
+    44a0:	65 96       	adiw	r28, 0x15	; 21
+    44a2:	6c ad       	ldd	r22, Y+60	; 0x3c
+    44a4:	7d ad       	ldd	r23, Y+61	; 0x3d
+    44a6:	8e ad       	ldd	r24, Y+62	; 0x3e
+    44a8:	9f ad       	ldd	r25, Y+63	; 0x3f
+    44aa:	65 97       	sbiw	r28, 0x15	; 21
+    44ac:	61 50       	subi	r22, 0x01	; 1
+    44ae:	70 40       	sbci	r23, 0x00	; 0
+    44b0:	80 40       	sbci	r24, 0x00	; 0
+    44b2:	90 40       	sbci	r25, 0x00	; 0
+    44b4:	65 96       	adiw	r28, 0x15	; 21
+    44b6:	6c af       	std	Y+60, r22	; 0x3c
+    44b8:	7d af       	std	Y+61, r23	; 0x3d
+    44ba:	8e af       	std	Y+62, r24	; 0x3e
+    44bc:	9f af       	std	Y+63, r25	; 0x3f
+    44be:	65 97       	sbiw	r28, 0x15	; 21
+    44c0:	a2 0c       	add	r10, r2
+    44c2:	b3 1c       	adc	r11, r3
+    44c4:	c4 1c       	adc	r12, r4
+    44c6:	d5 1c       	adc	r13, r5
+    44c8:	a2 14       	cp	r10, r2
+    44ca:	b3 04       	cpc	r11, r3
+    44cc:	c4 04       	cpc	r12, r4
+    44ce:	d5 04       	cpc	r13, r5
+    44d0:	98 f0       	brcs	.+38     	; 0x44f8 <__divdi3+0x794>
+    44d2:	a2 16       	cp	r10, r18
+    44d4:	b3 06       	cpc	r11, r19
+    44d6:	c4 06       	cpc	r12, r20
+    44d8:	d5 06       	cpc	r13, r21
+    44da:	70 f4       	brcc	.+28     	; 0x44f8 <__divdi3+0x794>
+    44dc:	61 50       	subi	r22, 0x01	; 1
+    44de:	70 40       	sbci	r23, 0x00	; 0
+    44e0:	80 40       	sbci	r24, 0x00	; 0
+    44e2:	90 40       	sbci	r25, 0x00	; 0
+    44e4:	65 96       	adiw	r28, 0x15	; 21
+    44e6:	6c af       	std	Y+60, r22	; 0x3c
+    44e8:	7d af       	std	Y+61, r23	; 0x3d
+    44ea:	8e af       	std	Y+62, r24	; 0x3e
+    44ec:	9f af       	std	Y+63, r25	; 0x3f
+    44ee:	65 97       	sbiw	r28, 0x15	; 21
+    44f0:	a2 0c       	add	r10, r2
+    44f2:	b3 1c       	adc	r11, r3
+    44f4:	c4 1c       	adc	r12, r4
+    44f6:	d5 1c       	adc	r13, r5
+    44f8:	a2 1a       	sub	r10, r18
+    44fa:	b3 0a       	sbc	r11, r19
+    44fc:	c4 0a       	sbc	r12, r20
+    44fe:	d5 0a       	sbc	r13, r21
+    4500:	c6 01       	movw	r24, r12
+    4502:	b5 01       	movw	r22, r10
+    4504:	a4 01       	movw	r20, r8
+    4506:	93 01       	movw	r18, r6
+    4508:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    450c:	7b 01       	movw	r14, r22
+    450e:	8c 01       	movw	r16, r24
+    4510:	c6 01       	movw	r24, r12
+    4512:	b5 01       	movw	r22, r10
+    4514:	a4 01       	movw	r20, r8
+    4516:	93 01       	movw	r18, r6
+    4518:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    451c:	c9 01       	movw	r24, r18
+    451e:	da 01       	movw	r26, r20
+    4520:	3c 01       	movw	r6, r24
+    4522:	4d 01       	movw	r8, r26
+    4524:	c4 01       	movw	r24, r8
+    4526:	b3 01       	movw	r22, r6
+    4528:	61 96       	adiw	r28, 0x11	; 17
+    452a:	2c ad       	ldd	r18, Y+60	; 0x3c
+    452c:	3d ad       	ldd	r19, Y+61	; 0x3d
+    452e:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4530:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4532:	61 97       	sbiw	r28, 0x11	; 17
+    4534:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    4538:	9b 01       	movw	r18, r22
+    453a:	ac 01       	movw	r20, r24
+    453c:	87 01       	movw	r16, r14
+    453e:	ff 24       	eor	r15, r15
+    4540:	ee 24       	eor	r14, r14
+    4542:	89 ad       	ldd	r24, Y+57	; 0x39
+    4544:	9a ad       	ldd	r25, Y+58	; 0x3a
+    4546:	ab ad       	ldd	r26, Y+59	; 0x3b
+    4548:	bc ad       	ldd	r27, Y+60	; 0x3c
+    454a:	a0 70       	andi	r26, 0x00	; 0
+    454c:	b0 70       	andi	r27, 0x00	; 0
+    454e:	57 01       	movw	r10, r14
+    4550:	68 01       	movw	r12, r16
+    4552:	a8 2a       	or	r10, r24
+    4554:	b9 2a       	or	r11, r25
+    4556:	ca 2a       	or	r12, r26
+    4558:	db 2a       	or	r13, r27
+    455a:	a2 16       	cp	r10, r18
+    455c:	b3 06       	cpc	r11, r19
+    455e:	c4 06       	cpc	r12, r20
+    4560:	d5 06       	cpc	r13, r21
+    4562:	e0 f4       	brcc	.+56     	; 0x459c <__divdi3+0x838>
+    4564:	08 94       	sec
+    4566:	61 08       	sbc	r6, r1
+    4568:	71 08       	sbc	r7, r1
+    456a:	81 08       	sbc	r8, r1
+    456c:	91 08       	sbc	r9, r1
+    456e:	a2 0c       	add	r10, r2
+    4570:	b3 1c       	adc	r11, r3
+    4572:	c4 1c       	adc	r12, r4
+    4574:	d5 1c       	adc	r13, r5
+    4576:	a2 14       	cp	r10, r2
+    4578:	b3 04       	cpc	r11, r3
+    457a:	c4 04       	cpc	r12, r4
+    457c:	d5 04       	cpc	r13, r5
+    457e:	70 f0       	brcs	.+28     	; 0x459c <__divdi3+0x838>
+    4580:	a2 16       	cp	r10, r18
+    4582:	b3 06       	cpc	r11, r19
+    4584:	c4 06       	cpc	r12, r20
+    4586:	d5 06       	cpc	r13, r21
+    4588:	48 f4       	brcc	.+18     	; 0x459c <__divdi3+0x838>
+    458a:	08 94       	sec
+    458c:	61 08       	sbc	r6, r1
+    458e:	71 08       	sbc	r7, r1
+    4590:	81 08       	sbc	r8, r1
+    4592:	91 08       	sbc	r9, r1
+    4594:	a2 0c       	add	r10, r2
+    4596:	b3 1c       	adc	r11, r3
+    4598:	c4 1c       	adc	r12, r4
+    459a:	d5 1c       	adc	r13, r5
+    459c:	21 96       	adiw	r28, 0x01	; 1
+    459e:	8c ad       	ldd	r24, Y+60	; 0x3c
+    45a0:	9d ad       	ldd	r25, Y+61	; 0x3d
+    45a2:	ae ad       	ldd	r26, Y+62	; 0x3e
+    45a4:	bf ad       	ldd	r27, Y+63	; 0x3f
+    45a6:	21 97       	sbiw	r28, 0x01	; 1
+    45a8:	e3 96       	adiw	r28, 0x33	; 51
+    45aa:	0f ac       	ldd	r0, Y+63	; 0x3f
+    45ac:	e3 97       	sbiw	r28, 0x33	; 51
+    45ae:	04 c0       	rjmp	.+8      	; 0x45b8 <__divdi3+0x854>
+    45b0:	88 0f       	add	r24, r24
+    45b2:	99 1f       	adc	r25, r25
+    45b4:	aa 1f       	adc	r26, r26
+    45b6:	bb 1f       	adc	r27, r27
+    45b8:	0a 94       	dec	r0
+    45ba:	d2 f7       	brpl	.-12     	; 0x45b0 <__divdi3+0x84c>
+    45bc:	21 96       	adiw	r28, 0x01	; 1
+    45be:	8c af       	std	Y+60, r24	; 0x3c
+    45c0:	9d af       	std	Y+61, r25	; 0x3d
+    45c2:	ae af       	std	Y+62, r26	; 0x3e
+    45c4:	bf af       	std	Y+63, r27	; 0x3f
+    45c6:	21 97       	sbiw	r28, 0x01	; 1
+    45c8:	a2 1a       	sub	r10, r18
+    45ca:	b3 0a       	sbc	r11, r19
+    45cc:	c4 0a       	sbc	r12, r20
+    45ce:	d5 0a       	sbc	r13, r21
+    45d0:	65 96       	adiw	r28, 0x15	; 21
+    45d2:	ec ac       	ldd	r14, Y+60	; 0x3c
+    45d4:	fd ac       	ldd	r15, Y+61	; 0x3d
+    45d6:	0e ad       	ldd	r16, Y+62	; 0x3e
+    45d8:	1f ad       	ldd	r17, Y+63	; 0x3f
+    45da:	65 97       	sbiw	r28, 0x15	; 21
+    45dc:	d7 01       	movw	r26, r14
+    45de:	99 27       	eor	r25, r25
+    45e0:	88 27       	eor	r24, r24
+    45e2:	68 2a       	or	r6, r24
+    45e4:	79 2a       	or	r7, r25
+    45e6:	8a 2a       	or	r8, r26
+    45e8:	9b 2a       	or	r9, r27
+    45ea:	82 01       	movw	r16, r4
+    45ec:	22 27       	eor	r18, r18
+    45ee:	33 27       	eor	r19, r19
+    45f0:	69 96       	adiw	r28, 0x19	; 25
+    45f2:	0c af       	std	Y+60, r16	; 0x3c
+    45f4:	1d af       	std	Y+61, r17	; 0x3d
+    45f6:	2e af       	std	Y+62, r18	; 0x3e
+    45f8:	3f af       	std	Y+63, r19	; 0x3f
+    45fa:	69 97       	sbiw	r28, 0x19	; 25
+    45fc:	a2 01       	movw	r20, r4
+    45fe:	91 01       	movw	r18, r2
+    4600:	40 70       	andi	r20, 0x00	; 0
+    4602:	50 70       	andi	r21, 0x00	; 0
+    4604:	6d 96       	adiw	r28, 0x1d	; 29
+    4606:	2c af       	std	Y+60, r18	; 0x3c
+    4608:	3d af       	std	Y+61, r19	; 0x3d
+    460a:	4e af       	std	Y+62, r20	; 0x3e
+    460c:	5f af       	std	Y+63, r21	; 0x3f
+    460e:	6d 97       	sbiw	r28, 0x1d	; 29
+    4610:	c6 01       	movw	r24, r12
+    4612:	b5 01       	movw	r22, r10
+    4614:	69 96       	adiw	r28, 0x19	; 25
+    4616:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4618:	3d ad       	ldd	r19, Y+61	; 0x3d
+    461a:	4e ad       	ldd	r20, Y+62	; 0x3e
+    461c:	5f ad       	ldd	r21, Y+63	; 0x3f
+    461e:	69 97       	sbiw	r28, 0x19	; 25
+    4620:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    4624:	7b 01       	movw	r14, r22
+    4626:	8c 01       	movw	r16, r24
+    4628:	c6 01       	movw	r24, r12
+    462a:	b5 01       	movw	r22, r10
+    462c:	69 96       	adiw	r28, 0x19	; 25
+    462e:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4630:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4632:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4634:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4636:	69 97       	sbiw	r28, 0x19	; 25
+    4638:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    463c:	c9 01       	movw	r24, r18
+    463e:	da 01       	movw	r26, r20
+    4640:	a1 96       	adiw	r28, 0x21	; 33
+    4642:	8c af       	std	Y+60, r24	; 0x3c
+    4644:	9d af       	std	Y+61, r25	; 0x3d
+    4646:	ae af       	std	Y+62, r26	; 0x3e
+    4648:	bf af       	std	Y+63, r27	; 0x3f
+    464a:	a1 97       	sbiw	r28, 0x21	; 33
+    464c:	bc 01       	movw	r22, r24
+    464e:	cd 01       	movw	r24, r26
+    4650:	6d 96       	adiw	r28, 0x1d	; 29
+    4652:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4654:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4656:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4658:	5f ad       	ldd	r21, Y+63	; 0x3f
+    465a:	6d 97       	sbiw	r28, 0x1d	; 29
+    465c:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    4660:	9b 01       	movw	r18, r22
+    4662:	ac 01       	movw	r20, r24
+    4664:	87 01       	movw	r16, r14
+    4666:	ff 24       	eor	r15, r15
+    4668:	ee 24       	eor	r14, r14
+    466a:	21 96       	adiw	r28, 0x01	; 1
+    466c:	ac ac       	ldd	r10, Y+60	; 0x3c
+    466e:	bd ac       	ldd	r11, Y+61	; 0x3d
+    4670:	ce ac       	ldd	r12, Y+62	; 0x3e
+    4672:	df ac       	ldd	r13, Y+63	; 0x3f
+    4674:	21 97       	sbiw	r28, 0x01	; 1
+    4676:	c6 01       	movw	r24, r12
+    4678:	aa 27       	eor	r26, r26
+    467a:	bb 27       	eor	r27, r27
+    467c:	57 01       	movw	r10, r14
+    467e:	68 01       	movw	r12, r16
+    4680:	a8 2a       	or	r10, r24
+    4682:	b9 2a       	or	r11, r25
+    4684:	ca 2a       	or	r12, r26
+    4686:	db 2a       	or	r13, r27
+    4688:	a2 16       	cp	r10, r18
+    468a:	b3 06       	cpc	r11, r19
+    468c:	c4 06       	cpc	r12, r20
+    468e:	d5 06       	cpc	r13, r21
+    4690:	60 f5       	brcc	.+88     	; 0x46ea <__divdi3+0x986>
+    4692:	a1 96       	adiw	r28, 0x21	; 33
+    4694:	6c ad       	ldd	r22, Y+60	; 0x3c
+    4696:	7d ad       	ldd	r23, Y+61	; 0x3d
+    4698:	8e ad       	ldd	r24, Y+62	; 0x3e
+    469a:	9f ad       	ldd	r25, Y+63	; 0x3f
+    469c:	a1 97       	sbiw	r28, 0x21	; 33
+    469e:	61 50       	subi	r22, 0x01	; 1
+    46a0:	70 40       	sbci	r23, 0x00	; 0
+    46a2:	80 40       	sbci	r24, 0x00	; 0
+    46a4:	90 40       	sbci	r25, 0x00	; 0
+    46a6:	a1 96       	adiw	r28, 0x21	; 33
+    46a8:	6c af       	std	Y+60, r22	; 0x3c
+    46aa:	7d af       	std	Y+61, r23	; 0x3d
+    46ac:	8e af       	std	Y+62, r24	; 0x3e
+    46ae:	9f af       	std	Y+63, r25	; 0x3f
+    46b0:	a1 97       	sbiw	r28, 0x21	; 33
+    46b2:	a2 0c       	add	r10, r2
+    46b4:	b3 1c       	adc	r11, r3
+    46b6:	c4 1c       	adc	r12, r4
+    46b8:	d5 1c       	adc	r13, r5
+    46ba:	a2 14       	cp	r10, r2
+    46bc:	b3 04       	cpc	r11, r3
+    46be:	c4 04       	cpc	r12, r4
+    46c0:	d5 04       	cpc	r13, r5
+    46c2:	98 f0       	brcs	.+38     	; 0x46ea <__divdi3+0x986>
+    46c4:	a2 16       	cp	r10, r18
+    46c6:	b3 06       	cpc	r11, r19
+    46c8:	c4 06       	cpc	r12, r20
+    46ca:	d5 06       	cpc	r13, r21
+    46cc:	70 f4       	brcc	.+28     	; 0x46ea <__divdi3+0x986>
+    46ce:	61 50       	subi	r22, 0x01	; 1
+    46d0:	70 40       	sbci	r23, 0x00	; 0
+    46d2:	80 40       	sbci	r24, 0x00	; 0
+    46d4:	90 40       	sbci	r25, 0x00	; 0
+    46d6:	a1 96       	adiw	r28, 0x21	; 33
+    46d8:	6c af       	std	Y+60, r22	; 0x3c
+    46da:	7d af       	std	Y+61, r23	; 0x3d
+    46dc:	8e af       	std	Y+62, r24	; 0x3e
+    46de:	9f af       	std	Y+63, r25	; 0x3f
+    46e0:	a1 97       	sbiw	r28, 0x21	; 33
+    46e2:	a2 0c       	add	r10, r2
+    46e4:	b3 1c       	adc	r11, r3
+    46e6:	c4 1c       	adc	r12, r4
+    46e8:	d5 1c       	adc	r13, r5
+    46ea:	a2 1a       	sub	r10, r18
+    46ec:	b3 0a       	sbc	r11, r19
+    46ee:	c4 0a       	sbc	r12, r20
+    46f0:	d5 0a       	sbc	r13, r21
+    46f2:	c6 01       	movw	r24, r12
+    46f4:	b5 01       	movw	r22, r10
+    46f6:	69 96       	adiw	r28, 0x19	; 25
+    46f8:	2c ad       	ldd	r18, Y+60	; 0x3c
+    46fa:	3d ad       	ldd	r19, Y+61	; 0x3d
+    46fc:	4e ad       	ldd	r20, Y+62	; 0x3e
+    46fe:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4700:	69 97       	sbiw	r28, 0x19	; 25
+    4702:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    4706:	7b 01       	movw	r14, r22
+    4708:	8c 01       	movw	r16, r24
+    470a:	c6 01       	movw	r24, r12
+    470c:	b5 01       	movw	r22, r10
+    470e:	69 96       	adiw	r28, 0x19	; 25
+    4710:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4712:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4714:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4716:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4718:	69 97       	sbiw	r28, 0x19	; 25
+    471a:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    471e:	c9 01       	movw	r24, r18
+    4720:	da 01       	movw	r26, r20
+    4722:	5c 01       	movw	r10, r24
+    4724:	6d 01       	movw	r12, r26
+    4726:	c6 01       	movw	r24, r12
+    4728:	b5 01       	movw	r22, r10
+    472a:	6d 96       	adiw	r28, 0x1d	; 29
+    472c:	2c ad       	ldd	r18, Y+60	; 0x3c
+    472e:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4730:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4732:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4734:	6d 97       	sbiw	r28, 0x1d	; 29
+    4736:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    473a:	9b 01       	movw	r18, r22
+    473c:	ac 01       	movw	r20, r24
+    473e:	87 01       	movw	r16, r14
+    4740:	ff 24       	eor	r15, r15
+    4742:	ee 24       	eor	r14, r14
+    4744:	21 96       	adiw	r28, 0x01	; 1
+    4746:	8c ad       	ldd	r24, Y+60	; 0x3c
+    4748:	9d ad       	ldd	r25, Y+61	; 0x3d
+    474a:	ae ad       	ldd	r26, Y+62	; 0x3e
+    474c:	bf ad       	ldd	r27, Y+63	; 0x3f
+    474e:	21 97       	sbiw	r28, 0x01	; 1
+    4750:	a0 70       	andi	r26, 0x00	; 0
+    4752:	b0 70       	andi	r27, 0x00	; 0
+    4754:	e8 2a       	or	r14, r24
+    4756:	f9 2a       	or	r15, r25
+    4758:	0a 2b       	or	r16, r26
+    475a:	1b 2b       	or	r17, r27
+    475c:	e2 16       	cp	r14, r18
+    475e:	f3 06       	cpc	r15, r19
+    4760:	04 07       	cpc	r16, r20
+    4762:	15 07       	cpc	r17, r21
+    4764:	c0 f4       	brcc	.+48     	; 0x4796 <__divdi3+0xa32>
+    4766:	08 94       	sec
+    4768:	a1 08       	sbc	r10, r1
+    476a:	b1 08       	sbc	r11, r1
+    476c:	c1 08       	sbc	r12, r1
+    476e:	d1 08       	sbc	r13, r1
+    4770:	e2 0c       	add	r14, r2
+    4772:	f3 1c       	adc	r15, r3
+    4774:	04 1d       	adc	r16, r4
+    4776:	15 1d       	adc	r17, r5
+    4778:	e2 14       	cp	r14, r2
+    477a:	f3 04       	cpc	r15, r3
+    477c:	04 05       	cpc	r16, r4
+    477e:	15 05       	cpc	r17, r5
+    4780:	50 f0       	brcs	.+20     	; 0x4796 <__divdi3+0xa32>
+    4782:	e2 16       	cp	r14, r18
+    4784:	f3 06       	cpc	r15, r19
+    4786:	04 07       	cpc	r16, r20
+    4788:	15 07       	cpc	r17, r21
+    478a:	28 f4       	brcc	.+10     	; 0x4796 <__divdi3+0xa32>
+    478c:	08 94       	sec
+    478e:	a1 08       	sbc	r10, r1
+    4790:	b1 08       	sbc	r11, r1
+    4792:	c1 08       	sbc	r12, r1
+    4794:	d1 08       	sbc	r13, r1
+    4796:	a1 96       	adiw	r28, 0x21	; 33
+    4798:	ec ac       	ldd	r14, Y+60	; 0x3c
+    479a:	fd ac       	ldd	r15, Y+61	; 0x3d
+    479c:	0e ad       	ldd	r16, Y+62	; 0x3e
+    479e:	1f ad       	ldd	r17, Y+63	; 0x3f
+    47a0:	a1 97       	sbiw	r28, 0x21	; 33
+    47a2:	d7 01       	movw	r26, r14
+    47a4:	99 27       	eor	r25, r25
+    47a6:	88 27       	eor	r24, r24
+    47a8:	96 01       	movw	r18, r12
+    47aa:	85 01       	movw	r16, r10
+    47ac:	08 2b       	or	r16, r24
+    47ae:	19 2b       	or	r17, r25
+    47b0:	2a 2b       	or	r18, r26
+    47b2:	3b 2b       	or	r19, r27
+    47b4:	25 96       	adiw	r28, 0x05	; 5
+    47b6:	0c af       	std	Y+60, r16	; 0x3c
+    47b8:	1d af       	std	Y+61, r17	; 0x3d
+    47ba:	2e af       	std	Y+62, r18	; 0x3e
+    47bc:	3f af       	std	Y+63, r19	; 0x3f
+    47be:	25 97       	sbiw	r28, 0x05	; 5
+    47c0:	72 c2       	rjmp	.+1252   	; 0x4ca6 <__divdi3+0xf42>
+    47c2:	6e 14       	cp	r6, r14
+    47c4:	7f 04       	cpc	r7, r15
+    47c6:	80 06       	cpc	r8, r16
+    47c8:	91 06       	cpc	r9, r17
+    47ca:	08 f4       	brcc	.+2      	; 0x47ce <__divdi3+0xa6a>
+    47cc:	5f c2       	rjmp	.+1214   	; 0x4c8c <__divdi3+0xf28>
+    47ce:	20 e0       	ldi	r18, 0x00	; 0
+    47d0:	e2 16       	cp	r14, r18
+    47d2:	20 e0       	ldi	r18, 0x00	; 0
+    47d4:	f2 06       	cpc	r15, r18
+    47d6:	21 e0       	ldi	r18, 0x01	; 1
+    47d8:	02 07       	cpc	r16, r18
+    47da:	20 e0       	ldi	r18, 0x00	; 0
+    47dc:	12 07       	cpc	r17, r18
+    47de:	88 f4       	brcc	.+34     	; 0x4802 <__divdi3+0xa9e>
+    47e0:	3f ef       	ldi	r19, 0xFF	; 255
+    47e2:	e3 16       	cp	r14, r19
+    47e4:	f1 04       	cpc	r15, r1
+    47e6:	01 05       	cpc	r16, r1
+    47e8:	11 05       	cpc	r17, r1
+    47ea:	31 f0       	breq	.+12     	; 0x47f8 <__divdi3+0xa94>
+    47ec:	28 f0       	brcs	.+10     	; 0x47f8 <__divdi3+0xa94>
+    47ee:	48 e0       	ldi	r20, 0x08	; 8
+    47f0:	50 e0       	ldi	r21, 0x00	; 0
+    47f2:	60 e0       	ldi	r22, 0x00	; 0
+    47f4:	70 e0       	ldi	r23, 0x00	; 0
+    47f6:	17 c0       	rjmp	.+46     	; 0x4826 <__divdi3+0xac2>
+    47f8:	40 e0       	ldi	r20, 0x00	; 0
+    47fa:	50 e0       	ldi	r21, 0x00	; 0
+    47fc:	60 e0       	ldi	r22, 0x00	; 0
+    47fe:	70 e0       	ldi	r23, 0x00	; 0
+    4800:	12 c0       	rjmp	.+36     	; 0x4826 <__divdi3+0xac2>
+    4802:	40 e0       	ldi	r20, 0x00	; 0
+    4804:	e4 16       	cp	r14, r20
+    4806:	40 e0       	ldi	r20, 0x00	; 0
+    4808:	f4 06       	cpc	r15, r20
+    480a:	40 e0       	ldi	r20, 0x00	; 0
+    480c:	04 07       	cpc	r16, r20
+    480e:	41 e0       	ldi	r20, 0x01	; 1
+    4810:	14 07       	cpc	r17, r20
+    4812:	28 f0       	brcs	.+10     	; 0x481e <__divdi3+0xaba>
+    4814:	48 e1       	ldi	r20, 0x18	; 24
+    4816:	50 e0       	ldi	r21, 0x00	; 0
+    4818:	60 e0       	ldi	r22, 0x00	; 0
+    481a:	70 e0       	ldi	r23, 0x00	; 0
+    481c:	04 c0       	rjmp	.+8      	; 0x4826 <__divdi3+0xac2>
+    481e:	40 e1       	ldi	r20, 0x10	; 16
+    4820:	50 e0       	ldi	r21, 0x00	; 0
+    4822:	60 e0       	ldi	r22, 0x00	; 0
+    4824:	70 e0       	ldi	r23, 0x00	; 0
+    4826:	d8 01       	movw	r26, r16
+    4828:	c7 01       	movw	r24, r14
+    482a:	04 2e       	mov	r0, r20
+    482c:	04 c0       	rjmp	.+8      	; 0x4836 <__divdi3+0xad2>
+    482e:	b6 95       	lsr	r27
+    4830:	a7 95       	ror	r26
+    4832:	97 95       	ror	r25
+    4834:	87 95       	ror	r24
+    4836:	0a 94       	dec	r0
+    4838:	d2 f7       	brpl	.-12     	; 0x482e <__divdi3+0xaca>
+    483a:	89 59       	subi	r24, 0x99	; 153
+    483c:	9b 4f       	sbci	r25, 0xFB	; 251
+    483e:	dc 01       	movw	r26, r24
+    4840:	2c 91       	ld	r18, X
+    4842:	30 e2       	ldi	r19, 0x20	; 32
+    4844:	a3 2e       	mov	r10, r19
+    4846:	b1 2c       	mov	r11, r1
+    4848:	c1 2c       	mov	r12, r1
+    484a:	d1 2c       	mov	r13, r1
+    484c:	d6 01       	movw	r26, r12
+    484e:	c5 01       	movw	r24, r10
+    4850:	84 1b       	sub	r24, r20
+    4852:	95 0b       	sbc	r25, r21
+    4854:	a6 0b       	sbc	r26, r22
+    4856:	b7 0b       	sbc	r27, r23
+    4858:	82 1b       	sub	r24, r18
+    485a:	91 09       	sbc	r25, r1
+    485c:	a1 09       	sbc	r26, r1
+    485e:	b1 09       	sbc	r27, r1
+    4860:	00 97       	sbiw	r24, 0x00	; 0
+    4862:	a1 05       	cpc	r26, r1
+    4864:	b1 05       	cpc	r27, r1
+    4866:	99 f4       	brne	.+38     	; 0x488e <__divdi3+0xb2a>
+    4868:	e6 14       	cp	r14, r6
+    486a:	f7 04       	cpc	r15, r7
+    486c:	08 05       	cpc	r16, r8
+    486e:	19 05       	cpc	r17, r9
+    4870:	08 f4       	brcc	.+2      	; 0x4874 <__divdi3+0xb10>
+    4872:	fe c1       	rjmp	.+1020   	; 0x4c70 <__divdi3+0xf0c>
+    4874:	21 96       	adiw	r28, 0x01	; 1
+    4876:	6c ac       	ldd	r6, Y+60	; 0x3c
+    4878:	7d ac       	ldd	r7, Y+61	; 0x3d
+    487a:	8e ac       	ldd	r8, Y+62	; 0x3e
+    487c:	9f ac       	ldd	r9, Y+63	; 0x3f
+    487e:	21 97       	sbiw	r28, 0x01	; 1
+    4880:	62 14       	cp	r6, r2
+    4882:	73 04       	cpc	r7, r3
+    4884:	84 04       	cpc	r8, r4
+    4886:	95 04       	cpc	r9, r5
+    4888:	08 f0       	brcs	.+2      	; 0x488c <__divdi3+0xb28>
+    488a:	f2 c1       	rjmp	.+996    	; 0x4c70 <__divdi3+0xf0c>
+    488c:	ff c1       	rjmp	.+1022   	; 0x4c8c <__divdi3+0xf28>
+    488e:	e2 96       	adiw	r28, 0x32	; 50
+    4890:	8f af       	std	Y+63, r24	; 0x3f
+    4892:	e2 97       	sbiw	r28, 0x32	; 50
+    4894:	08 2e       	mov	r0, r24
+    4896:	04 c0       	rjmp	.+8      	; 0x48a0 <__divdi3+0xb3c>
+    4898:	ee 0c       	add	r14, r14
+    489a:	ff 1c       	adc	r15, r15
+    489c:	00 1f       	adc	r16, r16
+    489e:	11 1f       	adc	r17, r17
+    48a0:	0a 94       	dec	r0
+    48a2:	d2 f7       	brpl	.-12     	; 0x4898 <__divdi3+0xb34>
+    48a4:	6a 2d       	mov	r22, r10
+    48a6:	68 1b       	sub	r22, r24
+    48a8:	d2 01       	movw	r26, r4
+    48aa:	c1 01       	movw	r24, r2
+    48ac:	06 2e       	mov	r0, r22
+    48ae:	04 c0       	rjmp	.+8      	; 0x48b8 <__divdi3+0xb54>
+    48b0:	b6 95       	lsr	r27
+    48b2:	a7 95       	ror	r26
+    48b4:	97 95       	ror	r25
+    48b6:	87 95       	ror	r24
+    48b8:	0a 94       	dec	r0
+    48ba:	d2 f7       	brpl	.-12     	; 0x48b0 <__divdi3+0xb4c>
+    48bc:	5c 01       	movw	r10, r24
+    48be:	6d 01       	movw	r12, r26
+    48c0:	ae 28       	or	r10, r14
+    48c2:	bf 28       	or	r11, r15
+    48c4:	c0 2a       	or	r12, r16
+    48c6:	d1 2a       	or	r13, r17
+    48c8:	ad aa       	std	Y+53, r10	; 0x35
+    48ca:	be aa       	std	Y+54, r11	; 0x36
+    48cc:	cf aa       	std	Y+55, r12	; 0x37
+    48ce:	d8 ae       	std	Y+56, r13	; 0x38
+    48d0:	72 01       	movw	r14, r4
+    48d2:	61 01       	movw	r12, r2
+    48d4:	e2 96       	adiw	r28, 0x32	; 50
+    48d6:	0f ac       	ldd	r0, Y+63	; 0x3f
+    48d8:	e2 97       	sbiw	r28, 0x32	; 50
+    48da:	04 c0       	rjmp	.+8      	; 0x48e4 <__divdi3+0xb80>
+    48dc:	cc 0c       	add	r12, r12
+    48de:	dd 1c       	adc	r13, r13
+    48e0:	ee 1c       	adc	r14, r14
+    48e2:	ff 1c       	adc	r15, r15
+    48e4:	0a 94       	dec	r0
+    48e6:	d2 f7       	brpl	.-12     	; 0x48dc <__divdi3+0xb78>
+    48e8:	c9 aa       	std	Y+49, r12	; 0x31
+    48ea:	da aa       	std	Y+50, r13	; 0x32
+    48ec:	eb aa       	std	Y+51, r14	; 0x33
+    48ee:	fc aa       	std	Y+52, r15	; 0x34
+    48f0:	64 01       	movw	r12, r8
+    48f2:	53 01       	movw	r10, r6
+    48f4:	06 2e       	mov	r0, r22
+    48f6:	04 c0       	rjmp	.+8      	; 0x4900 <__divdi3+0xb9c>
+    48f8:	d6 94       	lsr	r13
+    48fa:	c7 94       	ror	r12
+    48fc:	b7 94       	ror	r11
+    48fe:	a7 94       	ror	r10
+    4900:	0a 94       	dec	r0
+    4902:	d2 f7       	brpl	.-12     	; 0x48f8 <__divdi3+0xb94>
+    4904:	d4 01       	movw	r26, r8
+    4906:	c3 01       	movw	r24, r6
+    4908:	e2 96       	adiw	r28, 0x32	; 50
+    490a:	0f ac       	ldd	r0, Y+63	; 0x3f
+    490c:	e2 97       	sbiw	r28, 0x32	; 50
+    490e:	04 c0       	rjmp	.+8      	; 0x4918 <__divdi3+0xbb4>
+    4910:	88 0f       	add	r24, r24
+    4912:	99 1f       	adc	r25, r25
+    4914:	aa 1f       	adc	r26, r26
+    4916:	bb 1f       	adc	r27, r27
+    4918:	0a 94       	dec	r0
+    491a:	d2 f7       	brpl	.-12     	; 0x4910 <__divdi3+0xbac>
+    491c:	21 96       	adiw	r28, 0x01	; 1
+    491e:	ec ac       	ldd	r14, Y+60	; 0x3c
+    4920:	fd ac       	ldd	r15, Y+61	; 0x3d
+    4922:	0e ad       	ldd	r16, Y+62	; 0x3e
+    4924:	1f ad       	ldd	r17, Y+63	; 0x3f
+    4926:	21 97       	sbiw	r28, 0x01	; 1
+    4928:	04 c0       	rjmp	.+8      	; 0x4932 <__divdi3+0xbce>
+    492a:	16 95       	lsr	r17
+    492c:	07 95       	ror	r16
+    492e:	f7 94       	ror	r15
+    4930:	e7 94       	ror	r14
+    4932:	6a 95       	dec	r22
+    4934:	d2 f7       	brpl	.-12     	; 0x492a <__divdi3+0xbc6>
+    4936:	37 01       	movw	r6, r14
+    4938:	48 01       	movw	r8, r16
+    493a:	68 2a       	or	r6, r24
+    493c:	79 2a       	or	r7, r25
+    493e:	8a 2a       	or	r8, r26
+    4940:	9b 2a       	or	r9, r27
+    4942:	6d a6       	std	Y+45, r6	; 0x2d
+    4944:	7e a6       	std	Y+46, r7	; 0x2e
+    4946:	8f a6       	std	Y+47, r8	; 0x2f
+    4948:	98 aa       	std	Y+48, r9	; 0x30
+    494a:	ed a8       	ldd	r14, Y+53	; 0x35
+    494c:	fe a8       	ldd	r15, Y+54	; 0x36
+    494e:	0f a9       	ldd	r16, Y+55	; 0x37
+    4950:	18 ad       	ldd	r17, Y+56	; 0x38
+    4952:	38 01       	movw	r6, r16
+    4954:	88 24       	eor	r8, r8
+    4956:	99 24       	eor	r9, r9
+    4958:	98 01       	movw	r18, r16
+    495a:	87 01       	movw	r16, r14
+    495c:	20 70       	andi	r18, 0x00	; 0
+    495e:	30 70       	andi	r19, 0x00	; 0
+    4960:	a5 96       	adiw	r28, 0x25	; 37
+    4962:	0c af       	std	Y+60, r16	; 0x3c
+    4964:	1d af       	std	Y+61, r17	; 0x3d
+    4966:	2e af       	std	Y+62, r18	; 0x3e
+    4968:	3f af       	std	Y+63, r19	; 0x3f
+    496a:	a5 97       	sbiw	r28, 0x25	; 37
+    496c:	c6 01       	movw	r24, r12
+    496e:	b5 01       	movw	r22, r10
+    4970:	a4 01       	movw	r20, r8
+    4972:	93 01       	movw	r18, r6
+    4974:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    4978:	7b 01       	movw	r14, r22
+    497a:	8c 01       	movw	r16, r24
+    497c:	c6 01       	movw	r24, r12
+    497e:	b5 01       	movw	r22, r10
+    4980:	a4 01       	movw	r20, r8
+    4982:	93 01       	movw	r18, r6
+    4984:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    4988:	c9 01       	movw	r24, r18
+    498a:	da 01       	movw	r26, r20
+    498c:	1c 01       	movw	r2, r24
+    498e:	2d 01       	movw	r4, r26
+    4990:	c2 01       	movw	r24, r4
+    4992:	b1 01       	movw	r22, r2
+    4994:	a5 96       	adiw	r28, 0x25	; 37
+    4996:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4998:	3d ad       	ldd	r19, Y+61	; 0x3d
+    499a:	4e ad       	ldd	r20, Y+62	; 0x3e
+    499c:	5f ad       	ldd	r21, Y+63	; 0x3f
+    499e:	a5 97       	sbiw	r28, 0x25	; 37
+    49a0:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    49a4:	9b 01       	movw	r18, r22
+    49a6:	ac 01       	movw	r20, r24
+    49a8:	87 01       	movw	r16, r14
+    49aa:	ff 24       	eor	r15, r15
+    49ac:	ee 24       	eor	r14, r14
+    49ae:	ad a4       	ldd	r10, Y+45	; 0x2d
+    49b0:	be a4       	ldd	r11, Y+46	; 0x2e
+    49b2:	cf a4       	ldd	r12, Y+47	; 0x2f
+    49b4:	d8 a8       	ldd	r13, Y+48	; 0x30
+    49b6:	c6 01       	movw	r24, r12
+    49b8:	aa 27       	eor	r26, r26
+    49ba:	bb 27       	eor	r27, r27
+    49bc:	57 01       	movw	r10, r14
+    49be:	68 01       	movw	r12, r16
+    49c0:	a8 2a       	or	r10, r24
+    49c2:	b9 2a       	or	r11, r25
+    49c4:	ca 2a       	or	r12, r26
+    49c6:	db 2a       	or	r13, r27
+    49c8:	a2 16       	cp	r10, r18
+    49ca:	b3 06       	cpc	r11, r19
+    49cc:	c4 06       	cpc	r12, r20
+    49ce:	d5 06       	cpc	r13, r21
+    49d0:	00 f5       	brcc	.+64     	; 0x4a12 <__divdi3+0xcae>
+    49d2:	08 94       	sec
+    49d4:	21 08       	sbc	r2, r1
+    49d6:	31 08       	sbc	r3, r1
+    49d8:	41 08       	sbc	r4, r1
+    49da:	51 08       	sbc	r5, r1
+    49dc:	ed a8       	ldd	r14, Y+53	; 0x35
+    49de:	fe a8       	ldd	r15, Y+54	; 0x36
+    49e0:	0f a9       	ldd	r16, Y+55	; 0x37
+    49e2:	18 ad       	ldd	r17, Y+56	; 0x38
+    49e4:	ae 0c       	add	r10, r14
+    49e6:	bf 1c       	adc	r11, r15
+    49e8:	c0 1e       	adc	r12, r16
+    49ea:	d1 1e       	adc	r13, r17
+    49ec:	ae 14       	cp	r10, r14
+    49ee:	bf 04       	cpc	r11, r15
+    49f0:	c0 06       	cpc	r12, r16
+    49f2:	d1 06       	cpc	r13, r17
+    49f4:	70 f0       	brcs	.+28     	; 0x4a12 <__divdi3+0xcae>
+    49f6:	a2 16       	cp	r10, r18
+    49f8:	b3 06       	cpc	r11, r19
+    49fa:	c4 06       	cpc	r12, r20
+    49fc:	d5 06       	cpc	r13, r21
+    49fe:	48 f4       	brcc	.+18     	; 0x4a12 <__divdi3+0xcae>
+    4a00:	08 94       	sec
+    4a02:	21 08       	sbc	r2, r1
+    4a04:	31 08       	sbc	r3, r1
+    4a06:	41 08       	sbc	r4, r1
+    4a08:	51 08       	sbc	r5, r1
+    4a0a:	ae 0c       	add	r10, r14
+    4a0c:	bf 1c       	adc	r11, r15
+    4a0e:	c0 1e       	adc	r12, r16
+    4a10:	d1 1e       	adc	r13, r17
+    4a12:	a2 1a       	sub	r10, r18
+    4a14:	b3 0a       	sbc	r11, r19
+    4a16:	c4 0a       	sbc	r12, r20
+    4a18:	d5 0a       	sbc	r13, r21
+    4a1a:	c6 01       	movw	r24, r12
+    4a1c:	b5 01       	movw	r22, r10
+    4a1e:	a4 01       	movw	r20, r8
+    4a20:	93 01       	movw	r18, r6
+    4a22:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    4a26:	7b 01       	movw	r14, r22
+    4a28:	8c 01       	movw	r16, r24
+    4a2a:	c6 01       	movw	r24, r12
+    4a2c:	b5 01       	movw	r22, r10
+    4a2e:	a4 01       	movw	r20, r8
+    4a30:	93 01       	movw	r18, r6
+    4a32:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    4a36:	c9 01       	movw	r24, r18
+    4a38:	da 01       	movw	r26, r20
+    4a3a:	3c 01       	movw	r6, r24
+    4a3c:	4d 01       	movw	r8, r26
+    4a3e:	c4 01       	movw	r24, r8
+    4a40:	b3 01       	movw	r22, r6
+    4a42:	a5 96       	adiw	r28, 0x25	; 37
+    4a44:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4a46:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4a48:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4a4a:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4a4c:	a5 97       	sbiw	r28, 0x25	; 37
+    4a4e:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    4a52:	9b 01       	movw	r18, r22
+    4a54:	ac 01       	movw	r20, r24
+    4a56:	87 01       	movw	r16, r14
+    4a58:	ff 24       	eor	r15, r15
+    4a5a:	ee 24       	eor	r14, r14
+    4a5c:	8d a5       	ldd	r24, Y+45	; 0x2d
+    4a5e:	9e a5       	ldd	r25, Y+46	; 0x2e
+    4a60:	af a5       	ldd	r26, Y+47	; 0x2f
+    4a62:	b8 a9       	ldd	r27, Y+48	; 0x30
+    4a64:	a0 70       	andi	r26, 0x00	; 0
+    4a66:	b0 70       	andi	r27, 0x00	; 0
+    4a68:	57 01       	movw	r10, r14
+    4a6a:	68 01       	movw	r12, r16
+    4a6c:	a8 2a       	or	r10, r24
+    4a6e:	b9 2a       	or	r11, r25
+    4a70:	ca 2a       	or	r12, r26
+    4a72:	db 2a       	or	r13, r27
+    4a74:	a2 16       	cp	r10, r18
+    4a76:	b3 06       	cpc	r11, r19
+    4a78:	c4 06       	cpc	r12, r20
+    4a7a:	d5 06       	cpc	r13, r21
+    4a7c:	00 f5       	brcc	.+64     	; 0x4abe <__divdi3+0xd5a>
+    4a7e:	08 94       	sec
+    4a80:	61 08       	sbc	r6, r1
+    4a82:	71 08       	sbc	r7, r1
+    4a84:	81 08       	sbc	r8, r1
+    4a86:	91 08       	sbc	r9, r1
+    4a88:	6d a9       	ldd	r22, Y+53	; 0x35
+    4a8a:	7e a9       	ldd	r23, Y+54	; 0x36
+    4a8c:	8f a9       	ldd	r24, Y+55	; 0x37
+    4a8e:	98 ad       	ldd	r25, Y+56	; 0x38
+    4a90:	a6 0e       	add	r10, r22
+    4a92:	b7 1e       	adc	r11, r23
+    4a94:	c8 1e       	adc	r12, r24
+    4a96:	d9 1e       	adc	r13, r25
+    4a98:	a6 16       	cp	r10, r22
+    4a9a:	b7 06       	cpc	r11, r23
+    4a9c:	c8 06       	cpc	r12, r24
+    4a9e:	d9 06       	cpc	r13, r25
+    4aa0:	70 f0       	brcs	.+28     	; 0x4abe <__divdi3+0xd5a>
+    4aa2:	a2 16       	cp	r10, r18
+    4aa4:	b3 06       	cpc	r11, r19
+    4aa6:	c4 06       	cpc	r12, r20
+    4aa8:	d5 06       	cpc	r13, r21
+    4aaa:	48 f4       	brcc	.+18     	; 0x4abe <__divdi3+0xd5a>
+    4aac:	08 94       	sec
+    4aae:	61 08       	sbc	r6, r1
+    4ab0:	71 08       	sbc	r7, r1
+    4ab2:	81 08       	sbc	r8, r1
+    4ab4:	91 08       	sbc	r9, r1
+    4ab6:	a6 0e       	add	r10, r22
+    4ab8:	b7 1e       	adc	r11, r23
+    4aba:	c8 1e       	adc	r12, r24
+    4abc:	d9 1e       	adc	r13, r25
+    4abe:	d6 01       	movw	r26, r12
+    4ac0:	c5 01       	movw	r24, r10
+    4ac2:	82 1b       	sub	r24, r18
+    4ac4:	93 0b       	sbc	r25, r19
+    4ac6:	a4 0b       	sbc	r26, r20
+    4ac8:	b5 0b       	sbc	r27, r21
+    4aca:	89 a7       	std	Y+41, r24	; 0x29
+    4acc:	9a a7       	std	Y+42, r25	; 0x2a
+    4ace:	ab a7       	std	Y+43, r26	; 0x2b
+    4ad0:	bc a7       	std	Y+44, r27	; 0x2c
+    4ad2:	d1 01       	movw	r26, r2
+    4ad4:	99 27       	eor	r25, r25
+    4ad6:	88 27       	eor	r24, r24
+    4ad8:	64 01       	movw	r12, r8
+    4ada:	53 01       	movw	r10, r6
+    4adc:	a8 2a       	or	r10, r24
+    4ade:	b9 2a       	or	r11, r25
+    4ae0:	ca 2a       	or	r12, r26
+    4ae2:	db 2a       	or	r13, r27
+    4ae4:	25 96       	adiw	r28, 0x05	; 5
+    4ae6:	ac ae       	std	Y+60, r10	; 0x3c
+    4ae8:	bd ae       	std	Y+61, r11	; 0x3d
+    4aea:	ce ae       	std	Y+62, r12	; 0x3e
+    4aec:	df ae       	std	Y+63, r13	; 0x3f
+    4aee:	25 97       	sbiw	r28, 0x05	; 5
+    4af0:	86 01       	movw	r16, r12
+    4af2:	75 01       	movw	r14, r10
+    4af4:	2f ef       	ldi	r18, 0xFF	; 255
+    4af6:	3f ef       	ldi	r19, 0xFF	; 255
+    4af8:	40 e0       	ldi	r20, 0x00	; 0
+    4afa:	50 e0       	ldi	r21, 0x00	; 0
+    4afc:	e2 22       	and	r14, r18
+    4afe:	f3 22       	and	r15, r19
+    4b00:	04 23       	and	r16, r20
+    4b02:	15 23       	and	r17, r21
+    4b04:	a6 01       	movw	r20, r12
+    4b06:	66 27       	eor	r22, r22
+    4b08:	77 27       	eor	r23, r23
+    4b0a:	ad 96       	adiw	r28, 0x2d	; 45
+    4b0c:	4c af       	std	Y+60, r20	; 0x3c
+    4b0e:	5d af       	std	Y+61, r21	; 0x3d
+    4b10:	6e af       	std	Y+62, r22	; 0x3e
+    4b12:	7f af       	std	Y+63, r23	; 0x3f
+    4b14:	ad 97       	sbiw	r28, 0x2d	; 45
+    4b16:	a9 a8       	ldd	r10, Y+49	; 0x31
+    4b18:	ba a8       	ldd	r11, Y+50	; 0x32
+    4b1a:	cb a8       	ldd	r12, Y+51	; 0x33
+    4b1c:	dc a8       	ldd	r13, Y+52	; 0x34
+    4b1e:	6f ef       	ldi	r22, 0xFF	; 255
+    4b20:	7f ef       	ldi	r23, 0xFF	; 255
+    4b22:	80 e0       	ldi	r24, 0x00	; 0
+    4b24:	90 e0       	ldi	r25, 0x00	; 0
+    4b26:	a6 22       	and	r10, r22
+    4b28:	b7 22       	and	r11, r23
+    4b2a:	c8 22       	and	r12, r24
+    4b2c:	d9 22       	and	r13, r25
+    4b2e:	89 a9       	ldd	r24, Y+49	; 0x31
+    4b30:	9a a9       	ldd	r25, Y+50	; 0x32
+    4b32:	ab a9       	ldd	r26, Y+51	; 0x33
+    4b34:	bc a9       	ldd	r27, Y+52	; 0x34
+    4b36:	1d 01       	movw	r2, r26
+    4b38:	44 24       	eor	r4, r4
+    4b3a:	55 24       	eor	r5, r5
+    4b3c:	c8 01       	movw	r24, r16
+    4b3e:	b7 01       	movw	r22, r14
+    4b40:	a6 01       	movw	r20, r12
+    4b42:	95 01       	movw	r18, r10
+    4b44:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    4b48:	a9 96       	adiw	r28, 0x29	; 41
+    4b4a:	6c af       	std	Y+60, r22	; 0x3c
+    4b4c:	7d af       	std	Y+61, r23	; 0x3d
+    4b4e:	8e af       	std	Y+62, r24	; 0x3e
+    4b50:	9f af       	std	Y+63, r25	; 0x3f
+    4b52:	a9 97       	sbiw	r28, 0x29	; 41
+    4b54:	c8 01       	movw	r24, r16
+    4b56:	b7 01       	movw	r22, r14
+    4b58:	a2 01       	movw	r20, r4
+    4b5a:	91 01       	movw	r18, r2
+    4b5c:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    4b60:	3b 01       	movw	r6, r22
+    4b62:	4c 01       	movw	r8, r24
+    4b64:	ad 96       	adiw	r28, 0x2d	; 45
+    4b66:	6c ad       	ldd	r22, Y+60	; 0x3c
+    4b68:	7d ad       	ldd	r23, Y+61	; 0x3d
+    4b6a:	8e ad       	ldd	r24, Y+62	; 0x3e
+    4b6c:	9f ad       	ldd	r25, Y+63	; 0x3f
+    4b6e:	ad 97       	sbiw	r28, 0x2d	; 45
+    4b70:	a6 01       	movw	r20, r12
+    4b72:	95 01       	movw	r18, r10
+    4b74:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    4b78:	7b 01       	movw	r14, r22
+    4b7a:	8c 01       	movw	r16, r24
+    4b7c:	ad 96       	adiw	r28, 0x2d	; 45
+    4b7e:	6c ad       	ldd	r22, Y+60	; 0x3c
+    4b80:	7d ad       	ldd	r23, Y+61	; 0x3d
+    4b82:	8e ad       	ldd	r24, Y+62	; 0x3e
+    4b84:	9f ad       	ldd	r25, Y+63	; 0x3f
+    4b86:	ad 97       	sbiw	r28, 0x2d	; 45
+    4b88:	a2 01       	movw	r20, r4
+    4b8a:	91 01       	movw	r18, r2
+    4b8c:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    4b90:	5b 01       	movw	r10, r22
+    4b92:	6c 01       	movw	r12, r24
+    4b94:	a8 01       	movw	r20, r16
+    4b96:	97 01       	movw	r18, r14
+    4b98:	26 0d       	add	r18, r6
+    4b9a:	37 1d       	adc	r19, r7
+    4b9c:	48 1d       	adc	r20, r8
+    4b9e:	59 1d       	adc	r21, r9
+    4ba0:	a9 96       	adiw	r28, 0x29	; 41
+    4ba2:	6c ac       	ldd	r6, Y+60	; 0x3c
+    4ba4:	7d ac       	ldd	r7, Y+61	; 0x3d
+    4ba6:	8e ac       	ldd	r8, Y+62	; 0x3e
+    4ba8:	9f ac       	ldd	r9, Y+63	; 0x3f
+    4baa:	a9 97       	sbiw	r28, 0x29	; 41
+    4bac:	c4 01       	movw	r24, r8
+    4bae:	aa 27       	eor	r26, r26
+    4bb0:	bb 27       	eor	r27, r27
+    4bb2:	28 0f       	add	r18, r24
+    4bb4:	39 1f       	adc	r19, r25
+    4bb6:	4a 1f       	adc	r20, r26
+    4bb8:	5b 1f       	adc	r21, r27
+    4bba:	2e 15       	cp	r18, r14
+    4bbc:	3f 05       	cpc	r19, r15
+    4bbe:	40 07       	cpc	r20, r16
+    4bc0:	51 07       	cpc	r21, r17
+    4bc2:	48 f4       	brcc	.+18     	; 0x4bd6 <__divdi3+0xe72>
+    4bc4:	e1 2c       	mov	r14, r1
+    4bc6:	f1 2c       	mov	r15, r1
+    4bc8:	61 e0       	ldi	r22, 0x01	; 1
+    4bca:	06 2f       	mov	r16, r22
+    4bcc:	11 2d       	mov	r17, r1
+    4bce:	ae 0c       	add	r10, r14
+    4bd0:	bf 1c       	adc	r11, r15
+    4bd2:	c0 1e       	adc	r12, r16
+    4bd4:	d1 1e       	adc	r13, r17
+    4bd6:	ca 01       	movw	r24, r20
+    4bd8:	aa 27       	eor	r26, r26
+    4bda:	bb 27       	eor	r27, r27
+    4bdc:	bc 01       	movw	r22, r24
+    4bde:	cd 01       	movw	r24, r26
+    4be0:	6a 0d       	add	r22, r10
+    4be2:	7b 1d       	adc	r23, r11
+    4be4:	8c 1d       	adc	r24, r12
+    4be6:	9d 1d       	adc	r25, r13
+    4be8:	69 a4       	ldd	r6, Y+41	; 0x29
+    4bea:	7a a4       	ldd	r7, Y+42	; 0x2a
+    4bec:	8b a4       	ldd	r8, Y+43	; 0x2b
+    4bee:	9c a4       	ldd	r9, Y+44	; 0x2c
+    4bf0:	66 16       	cp	r6, r22
+    4bf2:	77 06       	cpc	r7, r23
+    4bf4:	88 06       	cpc	r8, r24
+    4bf6:	99 06       	cpc	r9, r25
+    4bf8:	50 f1       	brcs	.+84     	; 0x4c4e <__divdi3+0xeea>
+    4bfa:	66 15       	cp	r22, r6
+    4bfc:	77 05       	cpc	r23, r7
+    4bfe:	88 05       	cpc	r24, r8
+    4c00:	99 05       	cpc	r25, r9
+    4c02:	09 f0       	breq	.+2      	; 0x4c06 <__divdi3+0xea2>
+    4c04:	4d c0       	rjmp	.+154    	; 0x4ca0 <__divdi3+0xf3c>
+    4c06:	d9 01       	movw	r26, r18
+    4c08:	99 27       	eor	r25, r25
+    4c0a:	88 27       	eor	r24, r24
+    4c0c:	a9 96       	adiw	r28, 0x29	; 41
+    4c0e:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4c10:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4c12:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4c14:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4c16:	a9 97       	sbiw	r28, 0x29	; 41
+    4c18:	40 70       	andi	r20, 0x00	; 0
+    4c1a:	50 70       	andi	r21, 0x00	; 0
+    4c1c:	82 0f       	add	r24, r18
+    4c1e:	93 1f       	adc	r25, r19
+    4c20:	a4 1f       	adc	r26, r20
+    4c22:	b5 1f       	adc	r27, r21
+    4c24:	21 96       	adiw	r28, 0x01	; 1
+    4c26:	2c ad       	ldd	r18, Y+60	; 0x3c
+    4c28:	3d ad       	ldd	r19, Y+61	; 0x3d
+    4c2a:	4e ad       	ldd	r20, Y+62	; 0x3e
+    4c2c:	5f ad       	ldd	r21, Y+63	; 0x3f
+    4c2e:	21 97       	sbiw	r28, 0x01	; 1
+    4c30:	e2 96       	adiw	r28, 0x32	; 50
+    4c32:	0f ac       	ldd	r0, Y+63	; 0x3f
+    4c34:	e2 97       	sbiw	r28, 0x32	; 50
+    4c36:	04 c0       	rjmp	.+8      	; 0x4c40 <__divdi3+0xedc>
+    4c38:	22 0f       	add	r18, r18
+    4c3a:	33 1f       	adc	r19, r19
+    4c3c:	44 1f       	adc	r20, r20
+    4c3e:	55 1f       	adc	r21, r21
+    4c40:	0a 94       	dec	r0
+    4c42:	d2 f7       	brpl	.-12     	; 0x4c38 <__divdi3+0xed4>
+    4c44:	28 17       	cp	r18, r24
+    4c46:	39 07       	cpc	r19, r25
+    4c48:	4a 07       	cpc	r20, r26
+    4c4a:	5b 07       	cpc	r21, r27
+    4c4c:	48 f5       	brcc	.+82     	; 0x4ca0 <__divdi3+0xf3c>
+    4c4e:	25 96       	adiw	r28, 0x05	; 5
+    4c50:	0c ad       	ldd	r16, Y+60	; 0x3c
+    4c52:	1d ad       	ldd	r17, Y+61	; 0x3d
+    4c54:	2e ad       	ldd	r18, Y+62	; 0x3e
+    4c56:	3f ad       	ldd	r19, Y+63	; 0x3f
+    4c58:	25 97       	sbiw	r28, 0x05	; 5
+    4c5a:	01 50       	subi	r16, 0x01	; 1
+    4c5c:	10 40       	sbci	r17, 0x00	; 0
+    4c5e:	20 40       	sbci	r18, 0x00	; 0
+    4c60:	30 40       	sbci	r19, 0x00	; 0
+    4c62:	25 96       	adiw	r28, 0x05	; 5
+    4c64:	0c af       	std	Y+60, r16	; 0x3c
+    4c66:	1d af       	std	Y+61, r17	; 0x3d
+    4c68:	2e af       	std	Y+62, r18	; 0x3e
+    4c6a:	3f af       	std	Y+63, r19	; 0x3f
+    4c6c:	25 97       	sbiw	r28, 0x05	; 5
+    4c6e:	18 c0       	rjmp	.+48     	; 0x4ca0 <__divdi3+0xf3c>
+    4c70:	66 24       	eor	r6, r6
+    4c72:	77 24       	eor	r7, r7
+    4c74:	43 01       	movw	r8, r6
+    4c76:	21 e0       	ldi	r18, 0x01	; 1
+    4c78:	30 e0       	ldi	r19, 0x00	; 0
+    4c7a:	40 e0       	ldi	r20, 0x00	; 0
+    4c7c:	50 e0       	ldi	r21, 0x00	; 0
+    4c7e:	25 96       	adiw	r28, 0x05	; 5
+    4c80:	2c af       	std	Y+60, r18	; 0x3c
+    4c82:	3d af       	std	Y+61, r19	; 0x3d
+    4c84:	4e af       	std	Y+62, r20	; 0x3e
+    4c86:	5f af       	std	Y+63, r21	; 0x3f
+    4c88:	25 97       	sbiw	r28, 0x05	; 5
+    4c8a:	0d c0       	rjmp	.+26     	; 0x4ca6 <__divdi3+0xf42>
+    4c8c:	66 24       	eor	r6, r6
+    4c8e:	77 24       	eor	r7, r7
+    4c90:	43 01       	movw	r8, r6
+    4c92:	25 96       	adiw	r28, 0x05	; 5
+    4c94:	1c ae       	std	Y+60, r1	; 0x3c
+    4c96:	1d ae       	std	Y+61, r1	; 0x3d
+    4c98:	1e ae       	std	Y+62, r1	; 0x3e
+    4c9a:	1f ae       	std	Y+63, r1	; 0x3f
+    4c9c:	25 97       	sbiw	r28, 0x05	; 5
+    4c9e:	03 c0       	rjmp	.+6      	; 0x4ca6 <__divdi3+0xf42>
+    4ca0:	66 24       	eor	r6, r6
+    4ca2:	77 24       	eor	r7, r7
+    4ca4:	43 01       	movw	r8, r6
+    4ca6:	fe 01       	movw	r30, r28
+    4ca8:	b1 96       	adiw	r30, 0x21	; 33
+    4caa:	88 e0       	ldi	r24, 0x08	; 8
+    4cac:	df 01       	movw	r26, r30
+    4cae:	1d 92       	st	X+, r1
+    4cb0:	8a 95       	dec	r24
+    4cb2:	e9 f7       	brne	.-6      	; 0x4cae <__divdi3+0xf4a>
+    4cb4:	25 96       	adiw	r28, 0x05	; 5
+    4cb6:	ac ac       	ldd	r10, Y+60	; 0x3c
+    4cb8:	bd ac       	ldd	r11, Y+61	; 0x3d
+    4cba:	ce ac       	ldd	r12, Y+62	; 0x3e
+    4cbc:	df ac       	ldd	r13, Y+63	; 0x3f
+    4cbe:	25 97       	sbiw	r28, 0x05	; 5
+    4cc0:	a9 a2       	std	Y+33, r10	; 0x21
+    4cc2:	ba a2       	std	Y+34, r11	; 0x22
+    4cc4:	cb a2       	std	Y+35, r12	; 0x23
+    4cc6:	dc a2       	std	Y+36, r13	; 0x24
+    4cc8:	6d a2       	std	Y+37, r6	; 0x25
+    4cca:	7e a2       	std	Y+38, r7	; 0x26
+    4ccc:	8f a2       	std	Y+39, r8	; 0x27
+    4cce:	98 a6       	std	Y+40, r9	; 0x28
+    4cd0:	22 96       	adiw	r28, 0x02	; 2
+    4cd2:	2f ad       	ldd	r18, Y+63	; 0x3f
+    4cd4:	22 97       	sbiw	r28, 0x02	; 2
+    4cd6:	3a a1       	ldd	r19, Y+34	; 0x22
+    4cd8:	4b a1       	ldd	r20, Y+35	; 0x23
+    4cda:	5c a1       	ldd	r21, Y+36	; 0x24
+    4cdc:	66 2d       	mov	r22, r6
+    4cde:	7e a1       	ldd	r23, Y+38	; 0x26
+    4ce0:	df a0       	ldd	r13, Y+39	; 0x27
+    4ce2:	98 a5       	ldd	r25, Y+40	; 0x28
+    4ce4:	e1 96       	adiw	r28, 0x31	; 49
+    4ce6:	ec ac       	ldd	r14, Y+60	; 0x3c
+    4ce8:	fd ac       	ldd	r15, Y+61	; 0x3d
+    4cea:	0e ad       	ldd	r16, Y+62	; 0x3e
+    4cec:	1f ad       	ldd	r17, Y+63	; 0x3f
+    4cee:	e1 97       	sbiw	r28, 0x31	; 49
+    4cf0:	e1 14       	cp	r14, r1
+    4cf2:	f1 04       	cpc	r15, r1
+    4cf4:	01 05       	cpc	r16, r1
+    4cf6:	11 05       	cpc	r17, r1
+    4cf8:	09 f4       	brne	.+2      	; 0x4cfc <__divdi3+0xf98>
+    4cfa:	56 c0       	rjmp	.+172    	; 0x4da8 <__divdi3+0x1044>
+    4cfc:	21 95       	neg	r18
+    4cfe:	81 e0       	ldi	r24, 0x01	; 1
+    4d00:	12 16       	cp	r1, r18
+    4d02:	08 f0       	brcs	.+2      	; 0x4d06 <__divdi3+0xfa2>
+    4d04:	80 e0       	ldi	r24, 0x00	; 0
+    4d06:	31 95       	neg	r19
+    4d08:	e1 e0       	ldi	r30, 0x01	; 1
+    4d0a:	13 16       	cp	r1, r19
+    4d0c:	08 f0       	brcs	.+2      	; 0x4d10 <__divdi3+0xfac>
+    4d0e:	e0 e0       	ldi	r30, 0x00	; 0
+    4d10:	93 2e       	mov	r9, r19
+    4d12:	98 1a       	sub	r9, r24
+    4d14:	81 e0       	ldi	r24, 0x01	; 1
+    4d16:	39 15       	cp	r19, r9
+    4d18:	08 f0       	brcs	.+2      	; 0x4d1c <__divdi3+0xfb8>
+    4d1a:	80 e0       	ldi	r24, 0x00	; 0
+    4d1c:	e8 2b       	or	r30, r24
+    4d1e:	41 95       	neg	r20
+    4d20:	f1 e0       	ldi	r31, 0x01	; 1
+    4d22:	14 16       	cp	r1, r20
+    4d24:	08 f0       	brcs	.+2      	; 0x4d28 <__divdi3+0xfc4>
+    4d26:	f0 e0       	ldi	r31, 0x00	; 0
+    4d28:	a4 2e       	mov	r10, r20
+    4d2a:	ae 1a       	sub	r10, r30
+    4d2c:	81 e0       	ldi	r24, 0x01	; 1
+    4d2e:	4a 15       	cp	r20, r10
+    4d30:	08 f0       	brcs	.+2      	; 0x4d34 <__divdi3+0xfd0>
+    4d32:	80 e0       	ldi	r24, 0x00	; 0
+    4d34:	f8 2b       	or	r31, r24
+    4d36:	51 95       	neg	r21
+    4d38:	e1 e0       	ldi	r30, 0x01	; 1
+    4d3a:	15 16       	cp	r1, r21
+    4d3c:	08 f0       	brcs	.+2      	; 0x4d40 <__divdi3+0xfdc>
+    4d3e:	e0 e0       	ldi	r30, 0x00	; 0
+    4d40:	b5 2e       	mov	r11, r21
+    4d42:	bf 1a       	sub	r11, r31
+    4d44:	81 e0       	ldi	r24, 0x01	; 1
+    4d46:	5b 15       	cp	r21, r11
+    4d48:	08 f0       	brcs	.+2      	; 0x4d4c <__divdi3+0xfe8>
+    4d4a:	80 e0       	ldi	r24, 0x00	; 0
+    4d4c:	e8 2b       	or	r30, r24
+    4d4e:	61 95       	neg	r22
+    4d50:	f1 e0       	ldi	r31, 0x01	; 1
+    4d52:	16 16       	cp	r1, r22
+    4d54:	08 f0       	brcs	.+2      	; 0x4d58 <__divdi3+0xff4>
+    4d56:	f0 e0       	ldi	r31, 0x00	; 0
+    4d58:	a6 2f       	mov	r26, r22
+    4d5a:	ae 1b       	sub	r26, r30
+    4d5c:	81 e0       	ldi	r24, 0x01	; 1
+    4d5e:	6a 17       	cp	r22, r26
+    4d60:	08 f0       	brcs	.+2      	; 0x4d64 <__divdi3+0x1000>
+    4d62:	80 e0       	ldi	r24, 0x00	; 0
+    4d64:	f8 2b       	or	r31, r24
+    4d66:	71 95       	neg	r23
+    4d68:	e1 e0       	ldi	r30, 0x01	; 1
+    4d6a:	17 16       	cp	r1, r23
+    4d6c:	08 f0       	brcs	.+2      	; 0x4d70 <__divdi3+0x100c>
+    4d6e:	e0 e0       	ldi	r30, 0x00	; 0
+    4d70:	c7 2e       	mov	r12, r23
+    4d72:	cf 1a       	sub	r12, r31
+    4d74:	81 e0       	ldi	r24, 0x01	; 1
+    4d76:	7c 15       	cp	r23, r12
+    4d78:	08 f0       	brcs	.+2      	; 0x4d7c <__divdi3+0x1018>
+    4d7a:	80 e0       	ldi	r24, 0x00	; 0
+    4d7c:	e8 2b       	or	r30, r24
+    4d7e:	8d 2d       	mov	r24, r13
+    4d80:	81 95       	neg	r24
+    4d82:	f1 e0       	ldi	r31, 0x01	; 1
+    4d84:	18 16       	cp	r1, r24
+    4d86:	08 f0       	brcs	.+2      	; 0x4d8a <__divdi3+0x1026>
+    4d88:	f0 e0       	ldi	r31, 0x00	; 0
+    4d8a:	d8 2e       	mov	r13, r24
+    4d8c:	de 1a       	sub	r13, r30
+    4d8e:	e1 e0       	ldi	r30, 0x01	; 1
+    4d90:	8d 15       	cp	r24, r13
+    4d92:	08 f0       	brcs	.+2      	; 0x4d96 <__divdi3+0x1032>
+    4d94:	e0 e0       	ldi	r30, 0x00	; 0
+    4d96:	fe 2b       	or	r31, r30
+    4d98:	89 2f       	mov	r24, r25
+    4d9a:	81 95       	neg	r24
+    4d9c:	39 2d       	mov	r19, r9
+    4d9e:	a5 01       	movw	r20, r10
+    4da0:	6a 2f       	mov	r22, r26
+    4da2:	7c 2d       	mov	r23, r12
+    4da4:	98 2f       	mov	r25, r24
+    4da6:	9f 1b       	sub	r25, r31
+    4da8:	8d 2d       	mov	r24, r13
+    4daa:	ce 58       	subi	r28, 0x8E	; 142
+    4dac:	df 4f       	sbci	r29, 0xFF	; 255
+    4dae:	e2 e1       	ldi	r30, 0x12	; 18
+    4db0:	0c 94 b2 32 	jmp	0x6564	; 0x6564 <__epilogue_restores__>
+
+00004db4 <__moddi3>:
+    4db4:	a7 e7       	ldi	r26, 0x77	; 119
+    4db6:	b0 e0       	ldi	r27, 0x00	; 0
+    4db8:	e0 ee       	ldi	r30, 0xE0	; 224
+    4dba:	f6 e2       	ldi	r31, 0x26	; 38
+    4dbc:	0c 94 96 32 	jmp	0x652c	; 0x652c <__prologue_saves__>
+    4dc0:	98 2e       	mov	r9, r24
+    4dc2:	89 2e       	mov	r8, r25
+    4dc4:	71 2e       	mov	r7, r17
+    4dc6:	88 e0       	ldi	r24, 0x08	; 8
+    4dc8:	fe 01       	movw	r30, r28
+    4dca:	31 96       	adiw	r30, 0x01	; 1
+    4dcc:	df 01       	movw	r26, r30
+    4dce:	68 2e       	mov	r6, r24
+    4dd0:	1d 92       	st	X+, r1
+    4dd2:	6a 94       	dec	r6
+    4dd4:	e9 f7       	brne	.-6      	; 0x4dd0 <__moddi3+0x1c>
+    4dd6:	29 83       	std	Y+1, r18	; 0x01
+    4dd8:	3a 83       	std	Y+2, r19	; 0x02
+    4dda:	4b 83       	std	Y+3, r20	; 0x03
+    4ddc:	5c 83       	std	Y+4, r21	; 0x04
+    4dde:	6d 83       	std	Y+5, r22	; 0x05
+    4de0:	7e 83       	std	Y+6, r23	; 0x06
+    4de2:	9f 82       	std	Y+7, r9	; 0x07
+    4de4:	98 87       	std	Y+8, r25	; 0x08
+    4de6:	fe 01       	movw	r30, r28
+    4de8:	39 96       	adiw	r30, 0x09	; 9
+    4dea:	df 01       	movw	r26, r30
+    4dec:	1d 92       	st	X+, r1
+    4dee:	8a 95       	dec	r24
+    4df0:	e9 f7       	brne	.-6      	; 0x4dec <__moddi3+0x38>
+    4df2:	a9 86       	std	Y+9, r10	; 0x09
+    4df4:	ba 86       	std	Y+10, r11	; 0x0a
+    4df6:	cb 86       	std	Y+11, r12	; 0x0b
+    4df8:	dc 86       	std	Y+12, r13	; 0x0c
+    4dfa:	ed 86       	std	Y+13, r14	; 0x0d
+    4dfc:	fe 86       	std	Y+14, r15	; 0x0e
+    4dfe:	0f 87       	std	Y+15, r16	; 0x0f
+    4e00:	18 8b       	std	Y+16, r17	; 0x10
+    4e02:	8d 81       	ldd	r24, Y+5	; 0x05
+    4e04:	9e 81       	ldd	r25, Y+6	; 0x06
+    4e06:	af 81       	ldd	r26, Y+7	; 0x07
+    4e08:	b8 85       	ldd	r27, Y+8	; 0x08
+    4e0a:	b7 fd       	sbrc	r27, 7
+    4e0c:	07 c0       	rjmp	.+14     	; 0x4e1c <__moddi3+0x68>
+    4e0e:	e1 96       	adiw	r28, 0x31	; 49
+    4e10:	1c ae       	std	Y+60, r1	; 0x3c
+    4e12:	1d ae       	std	Y+61, r1	; 0x3d
+    4e14:	1e ae       	std	Y+62, r1	; 0x3e
+    4e16:	1f ae       	std	Y+63, r1	; 0x3f
+    4e18:	e1 97       	sbiw	r28, 0x31	; 49
+    4e1a:	64 c0       	rjmp	.+200    	; 0x4ee4 <__moddi3+0x130>
+    4e1c:	21 95       	neg	r18
+    4e1e:	81 e0       	ldi	r24, 0x01	; 1
+    4e20:	12 16       	cp	r1, r18
+    4e22:	08 f0       	brcs	.+2      	; 0x4e26 <__moddi3+0x72>
+    4e24:	80 e0       	ldi	r24, 0x00	; 0
+    4e26:	31 95       	neg	r19
+    4e28:	91 e0       	ldi	r25, 0x01	; 1
+    4e2a:	13 16       	cp	r1, r19
+    4e2c:	08 f0       	brcs	.+2      	; 0x4e30 <__moddi3+0x7c>
+    4e2e:	90 e0       	ldi	r25, 0x00	; 0
+    4e30:	b3 2f       	mov	r27, r19
+    4e32:	b8 1b       	sub	r27, r24
+    4e34:	81 e0       	ldi	r24, 0x01	; 1
+    4e36:	3b 17       	cp	r19, r27
+    4e38:	08 f0       	brcs	.+2      	; 0x4e3c <__moddi3+0x88>
+    4e3a:	80 e0       	ldi	r24, 0x00	; 0
+    4e3c:	98 2b       	or	r25, r24
+    4e3e:	41 95       	neg	r20
+    4e40:	31 e0       	ldi	r19, 0x01	; 1
+    4e42:	14 16       	cp	r1, r20
+    4e44:	08 f0       	brcs	.+2      	; 0x4e48 <__moddi3+0x94>
+    4e46:	30 e0       	ldi	r19, 0x00	; 0
+    4e48:	a4 2f       	mov	r26, r20
+    4e4a:	a9 1b       	sub	r26, r25
+    4e4c:	81 e0       	ldi	r24, 0x01	; 1
+    4e4e:	4a 17       	cp	r20, r26
+    4e50:	08 f0       	brcs	.+2      	; 0x4e54 <__moddi3+0xa0>
+    4e52:	80 e0       	ldi	r24, 0x00	; 0
+    4e54:	38 2b       	or	r19, r24
+    4e56:	51 95       	neg	r21
+    4e58:	91 e0       	ldi	r25, 0x01	; 1
+    4e5a:	15 16       	cp	r1, r21
+    4e5c:	08 f0       	brcs	.+2      	; 0x4e60 <__moddi3+0xac>
+    4e5e:	90 e0       	ldi	r25, 0x00	; 0
+    4e60:	f5 2f       	mov	r31, r21
+    4e62:	f3 1b       	sub	r31, r19
+    4e64:	81 e0       	ldi	r24, 0x01	; 1
+    4e66:	5f 17       	cp	r21, r31
+    4e68:	08 f0       	brcs	.+2      	; 0x4e6c <__moddi3+0xb8>
+    4e6a:	80 e0       	ldi	r24, 0x00	; 0
+    4e6c:	98 2b       	or	r25, r24
+    4e6e:	61 95       	neg	r22
+    4e70:	31 e0       	ldi	r19, 0x01	; 1
+    4e72:	16 16       	cp	r1, r22
+    4e74:	08 f0       	brcs	.+2      	; 0x4e78 <__moddi3+0xc4>
+    4e76:	30 e0       	ldi	r19, 0x00	; 0
+    4e78:	e6 2f       	mov	r30, r22
+    4e7a:	e9 1b       	sub	r30, r25
+    4e7c:	81 e0       	ldi	r24, 0x01	; 1
+    4e7e:	6e 17       	cp	r22, r30
+    4e80:	08 f0       	brcs	.+2      	; 0x4e84 <__moddi3+0xd0>
+    4e82:	80 e0       	ldi	r24, 0x00	; 0
+    4e84:	38 2b       	or	r19, r24
+    4e86:	71 95       	neg	r23
+    4e88:	41 e0       	ldi	r20, 0x01	; 1
+    4e8a:	17 16       	cp	r1, r23
+    4e8c:	08 f0       	brcs	.+2      	; 0x4e90 <__moddi3+0xdc>
+    4e8e:	40 e0       	ldi	r20, 0x00	; 0
+    4e90:	57 2f       	mov	r21, r23
+    4e92:	53 1b       	sub	r21, r19
+    4e94:	81 e0       	ldi	r24, 0x01	; 1
+    4e96:	75 17       	cp	r23, r21
+    4e98:	08 f0       	brcs	.+2      	; 0x4e9c <__moddi3+0xe8>
+    4e9a:	80 e0       	ldi	r24, 0x00	; 0
+    4e9c:	48 2b       	or	r20, r24
+    4e9e:	89 2d       	mov	r24, r9
+    4ea0:	81 95       	neg	r24
+    4ea2:	91 e0       	ldi	r25, 0x01	; 1
+    4ea4:	18 16       	cp	r1, r24
+    4ea6:	08 f0       	brcs	.+2      	; 0x4eaa <__moddi3+0xf6>
+    4ea8:	90 e0       	ldi	r25, 0x00	; 0
+    4eaa:	68 2e       	mov	r6, r24
+    4eac:	64 1a       	sub	r6, r20
+    4eae:	46 2d       	mov	r20, r6
+    4eb0:	31 e0       	ldi	r19, 0x01	; 1
+    4eb2:	86 15       	cp	r24, r6
+    4eb4:	08 f0       	brcs	.+2      	; 0x4eb8 <__moddi3+0x104>
+    4eb6:	30 e0       	ldi	r19, 0x00	; 0
+    4eb8:	93 2b       	or	r25, r19
+    4eba:	88 2d       	mov	r24, r8
+    4ebc:	81 95       	neg	r24
+    4ebe:	89 1b       	sub	r24, r25
+    4ec0:	29 83       	std	Y+1, r18	; 0x01
+    4ec2:	ba 83       	std	Y+2, r27	; 0x02
+    4ec4:	ab 83       	std	Y+3, r26	; 0x03
+    4ec6:	fc 83       	std	Y+4, r31	; 0x04
+    4ec8:	ed 83       	std	Y+5, r30	; 0x05
+    4eca:	5e 83       	std	Y+6, r21	; 0x06
+    4ecc:	4f 83       	std	Y+7, r20	; 0x07
+    4ece:	88 87       	std	Y+8, r24	; 0x08
+    4ed0:	2f ef       	ldi	r18, 0xFF	; 255
+    4ed2:	3f ef       	ldi	r19, 0xFF	; 255
+    4ed4:	4f ef       	ldi	r20, 0xFF	; 255
+    4ed6:	5f ef       	ldi	r21, 0xFF	; 255
+    4ed8:	e1 96       	adiw	r28, 0x31	; 49
+    4eda:	2c af       	std	Y+60, r18	; 0x3c
+    4edc:	3d af       	std	Y+61, r19	; 0x3d
+    4ede:	4e af       	std	Y+62, r20	; 0x3e
+    4ee0:	5f af       	std	Y+63, r21	; 0x3f
+    4ee2:	e1 97       	sbiw	r28, 0x31	; 49
+    4ee4:	8d 85       	ldd	r24, Y+13	; 0x0d
+    4ee6:	9e 85       	ldd	r25, Y+14	; 0x0e
+    4ee8:	af 85       	ldd	r26, Y+15	; 0x0f
+    4eea:	b8 89       	ldd	r27, Y+16	; 0x10
+    4eec:	b7 ff       	sbrs	r27, 7
+    4eee:	5a c0       	rjmp	.+180    	; 0x4fa4 <__moddi3+0x1f0>
+    4ef0:	a1 94       	neg	r10
+    4ef2:	81 e0       	ldi	r24, 0x01	; 1
+    4ef4:	1a 14       	cp	r1, r10
+    4ef6:	08 f0       	brcs	.+2      	; 0x4efa <__moddi3+0x146>
+    4ef8:	80 e0       	ldi	r24, 0x00	; 0
+    4efa:	b1 94       	neg	r11
+    4efc:	91 e0       	ldi	r25, 0x01	; 1
+    4efe:	1b 14       	cp	r1, r11
+    4f00:	08 f0       	brcs	.+2      	; 0x4f04 <__moddi3+0x150>
+    4f02:	90 e0       	ldi	r25, 0x00	; 0
+    4f04:	6b 2d       	mov	r22, r11
+    4f06:	68 1b       	sub	r22, r24
+    4f08:	81 e0       	ldi	r24, 0x01	; 1
+    4f0a:	b6 16       	cp	r11, r22
+    4f0c:	08 f0       	brcs	.+2      	; 0x4f10 <__moddi3+0x15c>
+    4f0e:	80 e0       	ldi	r24, 0x00	; 0
+    4f10:	98 2b       	or	r25, r24
+    4f12:	c1 94       	neg	r12
+    4f14:	21 e0       	ldi	r18, 0x01	; 1
+    4f16:	1c 14       	cp	r1, r12
+    4f18:	08 f0       	brcs	.+2      	; 0x4f1c <__moddi3+0x168>
+    4f1a:	20 e0       	ldi	r18, 0x00	; 0
+    4f1c:	5c 2d       	mov	r21, r12
+    4f1e:	59 1b       	sub	r21, r25
+    4f20:	81 e0       	ldi	r24, 0x01	; 1
+    4f22:	c5 16       	cp	r12, r21
+    4f24:	08 f0       	brcs	.+2      	; 0x4f28 <__moddi3+0x174>
+    4f26:	80 e0       	ldi	r24, 0x00	; 0
+    4f28:	28 2b       	or	r18, r24
+    4f2a:	d1 94       	neg	r13
+    4f2c:	91 e0       	ldi	r25, 0x01	; 1
+    4f2e:	1d 14       	cp	r1, r13
+    4f30:	08 f0       	brcs	.+2      	; 0x4f34 <__moddi3+0x180>
+    4f32:	90 e0       	ldi	r25, 0x00	; 0
+    4f34:	4d 2d       	mov	r20, r13
+    4f36:	42 1b       	sub	r20, r18
+    4f38:	81 e0       	ldi	r24, 0x01	; 1
+    4f3a:	d4 16       	cp	r13, r20
+    4f3c:	08 f0       	brcs	.+2      	; 0x4f40 <__moddi3+0x18c>
+    4f3e:	80 e0       	ldi	r24, 0x00	; 0
+    4f40:	98 2b       	or	r25, r24
+    4f42:	e1 94       	neg	r14
+    4f44:	21 e0       	ldi	r18, 0x01	; 1
+    4f46:	1e 14       	cp	r1, r14
+    4f48:	08 f0       	brcs	.+2      	; 0x4f4c <__moddi3+0x198>
+    4f4a:	20 e0       	ldi	r18, 0x00	; 0
+    4f4c:	3e 2d       	mov	r19, r14
+    4f4e:	39 1b       	sub	r19, r25
+    4f50:	81 e0       	ldi	r24, 0x01	; 1
+    4f52:	e3 16       	cp	r14, r19
+    4f54:	08 f0       	brcs	.+2      	; 0x4f58 <__moddi3+0x1a4>
+    4f56:	80 e0       	ldi	r24, 0x00	; 0
+    4f58:	28 2b       	or	r18, r24
+    4f5a:	f1 94       	neg	r15
+    4f5c:	91 e0       	ldi	r25, 0x01	; 1
+    4f5e:	1f 14       	cp	r1, r15
+    4f60:	08 f0       	brcs	.+2      	; 0x4f64 <__moddi3+0x1b0>
+    4f62:	90 e0       	ldi	r25, 0x00	; 0
+    4f64:	7f 2d       	mov	r23, r15
+    4f66:	72 1b       	sub	r23, r18
+    4f68:	27 2f       	mov	r18, r23
+    4f6a:	81 e0       	ldi	r24, 0x01	; 1
+    4f6c:	f7 16       	cp	r15, r23
+    4f6e:	08 f0       	brcs	.+2      	; 0x4f72 <__moddi3+0x1be>
+    4f70:	80 e0       	ldi	r24, 0x00	; 0
+    4f72:	98 2b       	or	r25, r24
+    4f74:	01 95       	neg	r16
+    4f76:	11 e0       	ldi	r17, 0x01	; 1
+    4f78:	10 16       	cp	r1, r16
+    4f7a:	08 f0       	brcs	.+2      	; 0x4f7e <__moddi3+0x1ca>
+    4f7c:	10 e0       	ldi	r17, 0x00	; 0
+    4f7e:	80 2f       	mov	r24, r16
+    4f80:	89 1b       	sub	r24, r25
+    4f82:	98 2f       	mov	r25, r24
+    4f84:	81 e0       	ldi	r24, 0x01	; 1
+    4f86:	09 17       	cp	r16, r25
+    4f88:	08 f0       	brcs	.+2      	; 0x4f8c <__moddi3+0x1d8>
+    4f8a:	80 e0       	ldi	r24, 0x00	; 0
+    4f8c:	18 2b       	or	r17, r24
+    4f8e:	87 2d       	mov	r24, r7
+    4f90:	81 95       	neg	r24
+    4f92:	81 1b       	sub	r24, r17
+    4f94:	a9 86       	std	Y+9, r10	; 0x09
+    4f96:	6a 87       	std	Y+10, r22	; 0x0a
+    4f98:	5b 87       	std	Y+11, r21	; 0x0b
+    4f9a:	4c 87       	std	Y+12, r20	; 0x0c
+    4f9c:	3d 87       	std	Y+13, r19	; 0x0d
+    4f9e:	2e 87       	std	Y+14, r18	; 0x0e
+    4fa0:	9f 87       	std	Y+15, r25	; 0x0f
+    4fa2:	88 8b       	std	Y+16, r24	; 0x10
+    4fa4:	99 81       	ldd	r25, Y+1	; 0x01
+    4fa6:	2a 81       	ldd	r18, Y+2	; 0x02
+    4fa8:	3b 81       	ldd	r19, Y+3	; 0x03
+    4faa:	4c 81       	ldd	r20, Y+4	; 0x04
+    4fac:	5d 81       	ldd	r21, Y+5	; 0x05
+    4fae:	6e 81       	ldd	r22, Y+6	; 0x06
+    4fb0:	7f 81       	ldd	r23, Y+7	; 0x07
+    4fb2:	a8 85       	ldd	r26, Y+8	; 0x08
+    4fb4:	b9 85       	ldd	r27, Y+9	; 0x09
+    4fb6:	1a 85       	ldd	r17, Y+10	; 0x0a
+    4fb8:	0b 85       	ldd	r16, Y+11	; 0x0b
+    4fba:	fc 84       	ldd	r15, Y+12	; 0x0c
+    4fbc:	ed 84       	ldd	r14, Y+13	; 0x0d
+    4fbe:	de 84       	ldd	r13, Y+14	; 0x0e
+    4fc0:	cf 84       	ldd	r12, Y+15	; 0x0f
+    4fc2:	b8 88       	ldd	r11, Y+16	; 0x10
+    4fc4:	88 e0       	ldi	r24, 0x08	; 8
+    4fc6:	e9 e1       	ldi	r30, 0x19	; 25
+    4fc8:	8e 2e       	mov	r8, r30
+    4fca:	91 2c       	mov	r9, r1
+    4fcc:	8c 0e       	add	r8, r28
+    4fce:	9d 1e       	adc	r9, r29
+    4fd0:	f4 01       	movw	r30, r8
+    4fd2:	68 2e       	mov	r6, r24
+    4fd4:	11 92       	st	Z+, r1
+    4fd6:	6a 94       	dec	r6
+    4fd8:	e9 f7       	brne	.-6      	; 0x4fd4 <__moddi3+0x220>
+    4fda:	99 8f       	std	Y+25, r25	; 0x19
+    4fdc:	2a 8f       	std	Y+26, r18	; 0x1a
+    4fde:	3b 8f       	std	Y+27, r19	; 0x1b
+    4fe0:	4c 8f       	std	Y+28, r20	; 0x1c
+    4fe2:	5d 8f       	std	Y+29, r21	; 0x1d
+    4fe4:	6e 8f       	std	Y+30, r22	; 0x1e
+    4fe6:	7f 8f       	std	Y+31, r23	; 0x1f
+    4fe8:	a8 a3       	std	Y+32, r26	; 0x20
+    4fea:	9e 01       	movw	r18, r28
+    4fec:	2f 5d       	subi	r18, 0xDF	; 223
+    4fee:	3f 4f       	sbci	r19, 0xFF	; 255
+    4ff0:	f9 01       	movw	r30, r18
+    4ff2:	11 92       	st	Z+, r1
+    4ff4:	8a 95       	dec	r24
+    4ff6:	e9 f7       	brne	.-6      	; 0x4ff2 <__moddi3+0x23e>
+    4ff8:	b9 a3       	std	Y+33, r27	; 0x21
+    4ffa:	1a a3       	std	Y+34, r17	; 0x22
+    4ffc:	0b a3       	std	Y+35, r16	; 0x23
+    4ffe:	fc a2       	std	Y+36, r15	; 0x24
+    5000:	ed a2       	std	Y+37, r14	; 0x25
+    5002:	de a2       	std	Y+38, r13	; 0x26
+    5004:	cf a2       	std	Y+39, r12	; 0x27
+    5006:	b8 a6       	std	Y+40, r11	; 0x28
+    5008:	29 a0       	ldd	r2, Y+33	; 0x21
+    500a:	3a a0       	ldd	r3, Y+34	; 0x22
+    500c:	4b a0       	ldd	r4, Y+35	; 0x23
+    500e:	5c a0       	ldd	r5, Y+36	; 0x24
+    5010:	ad a0       	ldd	r10, Y+37	; 0x25
+    5012:	be a0       	ldd	r11, Y+38	; 0x26
+    5014:	cf a0       	ldd	r12, Y+39	; 0x27
+    5016:	d8 a4       	ldd	r13, Y+40	; 0x28
+    5018:	49 8d       	ldd	r20, Y+25	; 0x19
+    501a:	5a 8d       	ldd	r21, Y+26	; 0x1a
+    501c:	6b 8d       	ldd	r22, Y+27	; 0x1b
+    501e:	7c 8d       	ldd	r23, Y+28	; 0x1c
+    5020:	e5 96       	adiw	r28, 0x35	; 53
+    5022:	4f af       	std	Y+63, r20	; 0x3f
+    5024:	e5 97       	sbiw	r28, 0x35	; 53
+    5026:	e6 96       	adiw	r28, 0x36	; 54
+    5028:	5f af       	std	Y+63, r21	; 0x3f
+    502a:	e6 97       	sbiw	r28, 0x36	; 54
+    502c:	e7 96       	adiw	r28, 0x37	; 55
+    502e:	6f af       	std	Y+63, r22	; 0x3f
+    5030:	e7 97       	sbiw	r28, 0x37	; 55
+    5032:	e8 96       	adiw	r28, 0x38	; 56
+    5034:	7f af       	std	Y+63, r23	; 0x3f
+    5036:	e8 97       	sbiw	r28, 0x38	; 56
+    5038:	e8 96       	adiw	r28, 0x38	; 56
+    503a:	6c ac       	ldd	r6, Y+60	; 0x3c
+    503c:	7d ac       	ldd	r7, Y+61	; 0x3d
+    503e:	8e ac       	ldd	r8, Y+62	; 0x3e
+    5040:	9f ac       	ldd	r9, Y+63	; 0x3f
+    5042:	e8 97       	sbiw	r28, 0x38	; 56
+    5044:	2d 96       	adiw	r28, 0x0d	; 13
+    5046:	6c ae       	std	Y+60, r6	; 0x3c
+    5048:	7d ae       	std	Y+61, r7	; 0x3d
+    504a:	8e ae       	std	Y+62, r8	; 0x3e
+    504c:	9f ae       	std	Y+63, r9	; 0x3f
+    504e:	2d 97       	sbiw	r28, 0x0d	; 13
+    5050:	8d 8d       	ldd	r24, Y+29	; 0x1d
+    5052:	9e 8d       	ldd	r25, Y+30	; 0x1e
+    5054:	2f 8d       	ldd	r18, Y+31	; 0x1f
+    5056:	38 a1       	ldd	r19, Y+32	; 0x20
+    5058:	3c 01       	movw	r6, r24
+    505a:	49 01       	movw	r8, r18
+    505c:	61 96       	adiw	r28, 0x11	; 17
+    505e:	6c ae       	std	Y+60, r6	; 0x3c
+    5060:	7d ae       	std	Y+61, r7	; 0x3d
+    5062:	8e ae       	std	Y+62, r8	; 0x3e
+    5064:	9f ae       	std	Y+63, r9	; 0x3f
+    5066:	61 97       	sbiw	r28, 0x11	; 17
+    5068:	a1 14       	cp	r10, r1
+    506a:	b1 04       	cpc	r11, r1
+    506c:	c1 04       	cpc	r12, r1
+    506e:	d1 04       	cpc	r13, r1
+    5070:	09 f0       	breq	.+2      	; 0x5074 <__moddi3+0x2c0>
+    5072:	28 c3       	rjmp	.+1616   	; 0x56c4 <__moddi3+0x910>
+    5074:	62 14       	cp	r6, r2
+    5076:	73 04       	cpc	r7, r3
+    5078:	84 04       	cpc	r8, r4
+    507a:	95 04       	cpc	r9, r5
+    507c:	08 f0       	brcs	.+2      	; 0x5080 <__moddi3+0x2cc>
+    507e:	0e c1       	rjmp	.+540    	; 0x529c <__moddi3+0x4e8>
+    5080:	00 e0       	ldi	r16, 0x00	; 0
+    5082:	20 16       	cp	r2, r16
+    5084:	00 e0       	ldi	r16, 0x00	; 0
+    5086:	30 06       	cpc	r3, r16
+    5088:	01 e0       	ldi	r16, 0x01	; 1
+    508a:	40 06       	cpc	r4, r16
+    508c:	00 e0       	ldi	r16, 0x00	; 0
+    508e:	50 06       	cpc	r5, r16
+    5090:	88 f4       	brcc	.+34     	; 0x50b4 <__moddi3+0x300>
+    5092:	1f ef       	ldi	r17, 0xFF	; 255
+    5094:	21 16       	cp	r2, r17
+    5096:	31 04       	cpc	r3, r1
+    5098:	41 04       	cpc	r4, r1
+    509a:	51 04       	cpc	r5, r1
+    509c:	39 f0       	breq	.+14     	; 0x50ac <__moddi3+0x2f8>
+    509e:	30 f0       	brcs	.+12     	; 0x50ac <__moddi3+0x2f8>
+    50a0:	18 e0       	ldi	r17, 0x08	; 8
+    50a2:	e1 2e       	mov	r14, r17
+    50a4:	f1 2c       	mov	r15, r1
+    50a6:	01 2d       	mov	r16, r1
+    50a8:	11 2d       	mov	r17, r1
+    50aa:	18 c0       	rjmp	.+48     	; 0x50dc <__moddi3+0x328>
+    50ac:	ee 24       	eor	r14, r14
+    50ae:	ff 24       	eor	r15, r15
+    50b0:	87 01       	movw	r16, r14
+    50b2:	14 c0       	rjmp	.+40     	; 0x50dc <__moddi3+0x328>
+    50b4:	20 e0       	ldi	r18, 0x00	; 0
+    50b6:	22 16       	cp	r2, r18
+    50b8:	20 e0       	ldi	r18, 0x00	; 0
+    50ba:	32 06       	cpc	r3, r18
+    50bc:	20 e0       	ldi	r18, 0x00	; 0
+    50be:	42 06       	cpc	r4, r18
+    50c0:	21 e0       	ldi	r18, 0x01	; 1
+    50c2:	52 06       	cpc	r5, r18
+    50c4:	30 f0       	brcs	.+12     	; 0x50d2 <__moddi3+0x31e>
+    50c6:	b8 e1       	ldi	r27, 0x18	; 24
+    50c8:	eb 2e       	mov	r14, r27
+    50ca:	f1 2c       	mov	r15, r1
+    50cc:	01 2d       	mov	r16, r1
+    50ce:	11 2d       	mov	r17, r1
+    50d0:	05 c0       	rjmp	.+10     	; 0x50dc <__moddi3+0x328>
+    50d2:	a0 e1       	ldi	r26, 0x10	; 16
+    50d4:	ea 2e       	mov	r14, r26
+    50d6:	f1 2c       	mov	r15, r1
+    50d8:	01 2d       	mov	r16, r1
+    50da:	11 2d       	mov	r17, r1
+    50dc:	d2 01       	movw	r26, r4
+    50de:	c1 01       	movw	r24, r2
+    50e0:	0e 2c       	mov	r0, r14
+    50e2:	04 c0       	rjmp	.+8      	; 0x50ec <__moddi3+0x338>
+    50e4:	b6 95       	lsr	r27
+    50e6:	a7 95       	ror	r26
+    50e8:	97 95       	ror	r25
+    50ea:	87 95       	ror	r24
+    50ec:	0a 94       	dec	r0
+    50ee:	d2 f7       	brpl	.-12     	; 0x50e4 <__moddi3+0x330>
+    50f0:	89 59       	subi	r24, 0x99	; 153
+    50f2:	9b 4f       	sbci	r25, 0xFB	; 251
+    50f4:	dc 01       	movw	r26, r24
+    50f6:	2c 91       	ld	r18, X
+    50f8:	80 e2       	ldi	r24, 0x20	; 32
+    50fa:	90 e0       	ldi	r25, 0x00	; 0
+    50fc:	a0 e0       	ldi	r26, 0x00	; 0
+    50fe:	b0 e0       	ldi	r27, 0x00	; 0
+    5100:	8e 19       	sub	r24, r14
+    5102:	9f 09       	sbc	r25, r15
+    5104:	a0 0b       	sbc	r26, r16
+    5106:	b1 0b       	sbc	r27, r17
+    5108:	5c 01       	movw	r10, r24
+    510a:	6d 01       	movw	r12, r26
+    510c:	a2 1a       	sub	r10, r18
+    510e:	b1 08       	sbc	r11, r1
+    5110:	c1 08       	sbc	r12, r1
+    5112:	d1 08       	sbc	r13, r1
+    5114:	65 96       	adiw	r28, 0x15	; 21
+    5116:	ac ae       	std	Y+60, r10	; 0x3c
+    5118:	bd ae       	std	Y+61, r11	; 0x3d
+    511a:	ce ae       	std	Y+62, r12	; 0x3e
+    511c:	df ae       	std	Y+63, r13	; 0x3f
+    511e:	65 97       	sbiw	r28, 0x15	; 21
+    5120:	a1 14       	cp	r10, r1
+    5122:	b1 04       	cpc	r11, r1
+    5124:	c1 04       	cpc	r12, r1
+    5126:	d1 04       	cpc	r13, r1
+    5128:	09 f4       	brne	.+2      	; 0x512c <__moddi3+0x378>
+    512a:	45 c0       	rjmp	.+138    	; 0x51b6 <__moddi3+0x402>
+    512c:	62 96       	adiw	r28, 0x12	; 18
+    512e:	6f ad       	ldd	r22, Y+63	; 0x3f
+    5130:	62 97       	sbiw	r28, 0x12	; 18
+    5132:	06 2e       	mov	r0, r22
+    5134:	04 c0       	rjmp	.+8      	; 0x513e <__moddi3+0x38a>
+    5136:	22 0c       	add	r2, r2
+    5138:	33 1c       	adc	r3, r3
+    513a:	44 1c       	adc	r4, r4
+    513c:	55 1c       	adc	r5, r5
+    513e:	0a 94       	dec	r0
+    5140:	d2 f7       	brpl	.-12     	; 0x5136 <__moddi3+0x382>
+    5142:	a4 01       	movw	r20, r8
+    5144:	93 01       	movw	r18, r6
+    5146:	06 2e       	mov	r0, r22
+    5148:	04 c0       	rjmp	.+8      	; 0x5152 <__moddi3+0x39e>
+    514a:	22 0f       	add	r18, r18
+    514c:	33 1f       	adc	r19, r19
+    514e:	44 1f       	adc	r20, r20
+    5150:	55 1f       	adc	r21, r21
+    5152:	0a 94       	dec	r0
+    5154:	d2 f7       	brpl	.-12     	; 0x514a <__moddi3+0x396>
+    5156:	80 e2       	ldi	r24, 0x20	; 32
+    5158:	90 e0       	ldi	r25, 0x00	; 0
+    515a:	8a 19       	sub	r24, r10
+    515c:	9b 09       	sbc	r25, r11
+    515e:	e8 96       	adiw	r28, 0x38	; 56
+    5160:	cc ac       	ldd	r12, Y+60	; 0x3c
+    5162:	dd ac       	ldd	r13, Y+61	; 0x3d
+    5164:	ee ac       	ldd	r14, Y+62	; 0x3e
+    5166:	ff ac       	ldd	r15, Y+63	; 0x3f
+    5168:	e8 97       	sbiw	r28, 0x38	; 56
+    516a:	04 c0       	rjmp	.+8      	; 0x5174 <__moddi3+0x3c0>
+    516c:	f6 94       	lsr	r15
+    516e:	e7 94       	ror	r14
+    5170:	d7 94       	ror	r13
+    5172:	c7 94       	ror	r12
+    5174:	8a 95       	dec	r24
+    5176:	d2 f7       	brpl	.-12     	; 0x516c <__moddi3+0x3b8>
+    5178:	87 01       	movw	r16, r14
+    517a:	76 01       	movw	r14, r12
+    517c:	e2 2a       	or	r14, r18
+    517e:	f3 2a       	or	r15, r19
+    5180:	04 2b       	or	r16, r20
+    5182:	15 2b       	or	r17, r21
+    5184:	61 96       	adiw	r28, 0x11	; 17
+    5186:	ec ae       	std	Y+60, r14	; 0x3c
+    5188:	fd ae       	std	Y+61, r15	; 0x3d
+    518a:	0e af       	std	Y+62, r16	; 0x3e
+    518c:	1f af       	std	Y+63, r17	; 0x3f
+    518e:	61 97       	sbiw	r28, 0x11	; 17
+    5190:	e8 96       	adiw	r28, 0x38	; 56
+    5192:	0c ad       	ldd	r16, Y+60	; 0x3c
+    5194:	1d ad       	ldd	r17, Y+61	; 0x3d
+    5196:	2e ad       	ldd	r18, Y+62	; 0x3e
+    5198:	3f ad       	ldd	r19, Y+63	; 0x3f
+    519a:	e8 97       	sbiw	r28, 0x38	; 56
+    519c:	04 c0       	rjmp	.+8      	; 0x51a6 <__moddi3+0x3f2>
+    519e:	00 0f       	add	r16, r16
+    51a0:	11 1f       	adc	r17, r17
+    51a2:	22 1f       	adc	r18, r18
+    51a4:	33 1f       	adc	r19, r19
+    51a6:	6a 95       	dec	r22
+    51a8:	d2 f7       	brpl	.-12     	; 0x519e <__moddi3+0x3ea>
+    51aa:	2d 96       	adiw	r28, 0x0d	; 13
+    51ac:	0c af       	std	Y+60, r16	; 0x3c
+    51ae:	1d af       	std	Y+61, r17	; 0x3d
+    51b0:	2e af       	std	Y+62, r18	; 0x3e
+    51b2:	3f af       	std	Y+63, r19	; 0x3f
+    51b4:	2d 97       	sbiw	r28, 0x0d	; 13
+    51b6:	32 01       	movw	r6, r4
+    51b8:	88 24       	eor	r8, r8
+    51ba:	99 24       	eor	r9, r9
+    51bc:	a2 01       	movw	r20, r4
+    51be:	91 01       	movw	r18, r2
+    51c0:	40 70       	andi	r20, 0x00	; 0
+    51c2:	50 70       	andi	r21, 0x00	; 0
+    51c4:	69 96       	adiw	r28, 0x19	; 25
+    51c6:	2c af       	std	Y+60, r18	; 0x3c
+    51c8:	3d af       	std	Y+61, r19	; 0x3d
+    51ca:	4e af       	std	Y+62, r20	; 0x3e
+    51cc:	5f af       	std	Y+63, r21	; 0x3f
+    51ce:	69 97       	sbiw	r28, 0x19	; 25
+    51d0:	61 96       	adiw	r28, 0x11	; 17
+    51d2:	6c ad       	ldd	r22, Y+60	; 0x3c
+    51d4:	7d ad       	ldd	r23, Y+61	; 0x3d
+    51d6:	8e ad       	ldd	r24, Y+62	; 0x3e
+    51d8:	9f ad       	ldd	r25, Y+63	; 0x3f
+    51da:	61 97       	sbiw	r28, 0x11	; 17
+    51dc:	a4 01       	movw	r20, r8
+    51de:	93 01       	movw	r18, r6
+    51e0:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    51e4:	7b 01       	movw	r14, r22
+    51e6:	8c 01       	movw	r16, r24
+    51e8:	61 96       	adiw	r28, 0x11	; 17
+    51ea:	6c ad       	ldd	r22, Y+60	; 0x3c
+    51ec:	7d ad       	ldd	r23, Y+61	; 0x3d
+    51ee:	8e ad       	ldd	r24, Y+62	; 0x3e
+    51f0:	9f ad       	ldd	r25, Y+63	; 0x3f
+    51f2:	61 97       	sbiw	r28, 0x11	; 17
+    51f4:	a4 01       	movw	r20, r8
+    51f6:	93 01       	movw	r18, r6
+    51f8:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    51fc:	ca 01       	movw	r24, r20
+    51fe:	b9 01       	movw	r22, r18
+    5200:	69 96       	adiw	r28, 0x19	; 25
+    5202:	2c ad       	ldd	r18, Y+60	; 0x3c
+    5204:	3d ad       	ldd	r19, Y+61	; 0x3d
+    5206:	4e ad       	ldd	r20, Y+62	; 0x3e
+    5208:	5f ad       	ldd	r21, Y+63	; 0x3f
+    520a:	69 97       	sbiw	r28, 0x19	; 25
+    520c:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    5210:	9b 01       	movw	r18, r22
+    5212:	ac 01       	movw	r20, r24
+    5214:	87 01       	movw	r16, r14
+    5216:	ff 24       	eor	r15, r15
+    5218:	ee 24       	eor	r14, r14
+    521a:	2d 96       	adiw	r28, 0x0d	; 13
+    521c:	ac ac       	ldd	r10, Y+60	; 0x3c
+    521e:	bd ac       	ldd	r11, Y+61	; 0x3d
+    5220:	ce ac       	ldd	r12, Y+62	; 0x3e
+    5222:	df ac       	ldd	r13, Y+63	; 0x3f
+    5224:	2d 97       	sbiw	r28, 0x0d	; 13
+    5226:	c6 01       	movw	r24, r12
+    5228:	aa 27       	eor	r26, r26
+    522a:	bb 27       	eor	r27, r27
+    522c:	57 01       	movw	r10, r14
+    522e:	68 01       	movw	r12, r16
+    5230:	a8 2a       	or	r10, r24
+    5232:	b9 2a       	or	r11, r25
+    5234:	ca 2a       	or	r12, r26
+    5236:	db 2a       	or	r13, r27
+    5238:	a2 16       	cp	r10, r18
+    523a:	b3 06       	cpc	r11, r19
+    523c:	c4 06       	cpc	r12, r20
+    523e:	d5 06       	cpc	r13, r21
+    5240:	90 f4       	brcc	.+36     	; 0x5266 <__moddi3+0x4b2>
+    5242:	a2 0c       	add	r10, r2
+    5244:	b3 1c       	adc	r11, r3
+    5246:	c4 1c       	adc	r12, r4
+    5248:	d5 1c       	adc	r13, r5
+    524a:	a2 14       	cp	r10, r2
+    524c:	b3 04       	cpc	r11, r3
+    524e:	c4 04       	cpc	r12, r4
+    5250:	d5 04       	cpc	r13, r5
+    5252:	48 f0       	brcs	.+18     	; 0x5266 <__moddi3+0x4b2>
+    5254:	a2 16       	cp	r10, r18
+    5256:	b3 06       	cpc	r11, r19
+    5258:	c4 06       	cpc	r12, r20
+    525a:	d5 06       	cpc	r13, r21
+    525c:	20 f4       	brcc	.+8      	; 0x5266 <__moddi3+0x4b2>
+    525e:	a2 0c       	add	r10, r2
+    5260:	b3 1c       	adc	r11, r3
+    5262:	c4 1c       	adc	r12, r4
+    5264:	d5 1c       	adc	r13, r5
+    5266:	a2 1a       	sub	r10, r18
+    5268:	b3 0a       	sbc	r11, r19
+    526a:	c4 0a       	sbc	r12, r20
+    526c:	d5 0a       	sbc	r13, r21
+    526e:	c6 01       	movw	r24, r12
+    5270:	b5 01       	movw	r22, r10
+    5272:	a4 01       	movw	r20, r8
+    5274:	93 01       	movw	r18, r6
+    5276:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    527a:	7b 01       	movw	r14, r22
+    527c:	8c 01       	movw	r16, r24
+    527e:	c6 01       	movw	r24, r12
+    5280:	b5 01       	movw	r22, r10
+    5282:	a4 01       	movw	r20, r8
+    5284:	93 01       	movw	r18, r6
+    5286:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    528a:	ca 01       	movw	r24, r20
+    528c:	b9 01       	movw	r22, r18
+    528e:	69 96       	adiw	r28, 0x19	; 25
+    5290:	2c ad       	ldd	r18, Y+60	; 0x3c
+    5292:	3d ad       	ldd	r19, Y+61	; 0x3d
+    5294:	4e ad       	ldd	r20, Y+62	; 0x3e
+    5296:	5f ad       	ldd	r21, Y+63	; 0x3f
+    5298:	69 97       	sbiw	r28, 0x19	; 25
+    529a:	c8 c1       	rjmp	.+912    	; 0x562c <__moddi3+0x878>
+    529c:	21 14       	cp	r2, r1
+    529e:	31 04       	cpc	r3, r1
+    52a0:	41 04       	cpc	r4, r1
+    52a2:	51 04       	cpc	r5, r1
+    52a4:	71 f4       	brne	.+28     	; 0x52c2 <__moddi3+0x50e>
+    52a6:	61 e0       	ldi	r22, 0x01	; 1
+    52a8:	70 e0       	ldi	r23, 0x00	; 0
+    52aa:	80 e0       	ldi	r24, 0x00	; 0
+    52ac:	90 e0       	ldi	r25, 0x00	; 0
+    52ae:	20 e0       	ldi	r18, 0x00	; 0
+    52b0:	30 e0       	ldi	r19, 0x00	; 0
+    52b2:	40 e0       	ldi	r20, 0x00	; 0
+    52b4:	50 e0       	ldi	r21, 0x00	; 0
+    52b6:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    52ba:	c9 01       	movw	r24, r18
+    52bc:	da 01       	movw	r26, r20
+    52be:	1c 01       	movw	r2, r24
+    52c0:	2d 01       	movw	r4, r26
+    52c2:	00 e0       	ldi	r16, 0x00	; 0
+    52c4:	20 16       	cp	r2, r16
+    52c6:	00 e0       	ldi	r16, 0x00	; 0
+    52c8:	30 06       	cpc	r3, r16
+    52ca:	01 e0       	ldi	r16, 0x01	; 1
+    52cc:	40 06       	cpc	r4, r16
+    52ce:	00 e0       	ldi	r16, 0x00	; 0
+    52d0:	50 06       	cpc	r5, r16
+    52d2:	88 f4       	brcc	.+34     	; 0x52f6 <__moddi3+0x542>
+    52d4:	1f ef       	ldi	r17, 0xFF	; 255
+    52d6:	21 16       	cp	r2, r17
+    52d8:	31 04       	cpc	r3, r1
+    52da:	41 04       	cpc	r4, r1
+    52dc:	51 04       	cpc	r5, r1
+    52de:	39 f0       	breq	.+14     	; 0x52ee <__moddi3+0x53a>
+    52e0:	30 f0       	brcs	.+12     	; 0x52ee <__moddi3+0x53a>
+    52e2:	68 e0       	ldi	r22, 0x08	; 8
+    52e4:	e6 2e       	mov	r14, r22
+    52e6:	f1 2c       	mov	r15, r1
+    52e8:	01 2d       	mov	r16, r1
+    52ea:	11 2d       	mov	r17, r1
+    52ec:	18 c0       	rjmp	.+48     	; 0x531e <__moddi3+0x56a>
+    52ee:	ee 24       	eor	r14, r14
+    52f0:	ff 24       	eor	r15, r15
+    52f2:	87 01       	movw	r16, r14
+    52f4:	14 c0       	rjmp	.+40     	; 0x531e <__moddi3+0x56a>
+    52f6:	20 e0       	ldi	r18, 0x00	; 0
+    52f8:	22 16       	cp	r2, r18
+    52fa:	20 e0       	ldi	r18, 0x00	; 0
+    52fc:	32 06       	cpc	r3, r18
+    52fe:	20 e0       	ldi	r18, 0x00	; 0
+    5300:	42 06       	cpc	r4, r18
+    5302:	21 e0       	ldi	r18, 0x01	; 1
+    5304:	52 06       	cpc	r5, r18
+    5306:	30 f0       	brcs	.+12     	; 0x5314 <__moddi3+0x560>
+    5308:	58 e1       	ldi	r21, 0x18	; 24
+    530a:	e5 2e       	mov	r14, r21
+    530c:	f1 2c       	mov	r15, r1
+    530e:	01 2d       	mov	r16, r1
+    5310:	11 2d       	mov	r17, r1
+    5312:	05 c0       	rjmp	.+10     	; 0x531e <__moddi3+0x56a>
+    5314:	40 e1       	ldi	r20, 0x10	; 16
+    5316:	e4 2e       	mov	r14, r20
+    5318:	f1 2c       	mov	r15, r1
+    531a:	01 2d       	mov	r16, r1
+    531c:	11 2d       	mov	r17, r1
+    531e:	d2 01       	movw	r26, r4
+    5320:	c1 01       	movw	r24, r2
+    5322:	0e 2c       	mov	r0, r14
+    5324:	04 c0       	rjmp	.+8      	; 0x532e <__moddi3+0x57a>
+    5326:	b6 95       	lsr	r27
+    5328:	a7 95       	ror	r26
+    532a:	97 95       	ror	r25
+    532c:	87 95       	ror	r24
+    532e:	0a 94       	dec	r0
+    5330:	d2 f7       	brpl	.-12     	; 0x5326 <__moddi3+0x572>
+    5332:	89 59       	subi	r24, 0x99	; 153
+    5334:	9b 4f       	sbci	r25, 0xFB	; 251
+    5336:	dc 01       	movw	r26, r24
+    5338:	2c 91       	ld	r18, X
+    533a:	30 e2       	ldi	r19, 0x20	; 32
+    533c:	a3 2e       	mov	r10, r19
+    533e:	b1 2c       	mov	r11, r1
+    5340:	c1 2c       	mov	r12, r1
+    5342:	d1 2c       	mov	r13, r1
+    5344:	d6 01       	movw	r26, r12
+    5346:	c5 01       	movw	r24, r10
+    5348:	8e 19       	sub	r24, r14
+    534a:	9f 09       	sbc	r25, r15
+    534c:	a0 0b       	sbc	r26, r16
+    534e:	b1 0b       	sbc	r27, r17
+    5350:	7c 01       	movw	r14, r24
+    5352:	8d 01       	movw	r16, r26
+    5354:	e2 1a       	sub	r14, r18
+    5356:	f1 08       	sbc	r15, r1
+    5358:	01 09       	sbc	r16, r1
+    535a:	11 09       	sbc	r17, r1
+    535c:	65 96       	adiw	r28, 0x15	; 21
+    535e:	ec ae       	std	Y+60, r14	; 0x3c
+    5360:	fd ae       	std	Y+61, r15	; 0x3d
+    5362:	0e af       	std	Y+62, r16	; 0x3e
+    5364:	1f af       	std	Y+63, r17	; 0x3f
+    5366:	65 97       	sbiw	r28, 0x15	; 21
+    5368:	e1 14       	cp	r14, r1
+    536a:	f1 04       	cpc	r15, r1
+    536c:	01 05       	cpc	r16, r1
+    536e:	11 05       	cpc	r17, r1
+    5370:	39 f4       	brne	.+14     	; 0x5380 <__moddi3+0x5cc>
+    5372:	64 01       	movw	r12, r8
+    5374:	53 01       	movw	r10, r6
+    5376:	a2 18       	sub	r10, r2
+    5378:	b3 08       	sbc	r11, r3
+    537a:	c4 08       	sbc	r12, r4
+    537c:	d5 08       	sbc	r13, r5
+    537e:	ec c0       	rjmp	.+472    	; 0x5558 <__moddi3+0x7a4>
+    5380:	62 96       	adiw	r28, 0x12	; 18
+    5382:	ff ac       	ldd	r15, Y+63	; 0x3f
+    5384:	62 97       	sbiw	r28, 0x12	; 18
+    5386:	e4 96       	adiw	r28, 0x34	; 52
+    5388:	ff ae       	std	Y+63, r15	; 0x3f
+    538a:	e4 97       	sbiw	r28, 0x34	; 52
+    538c:	0f 2c       	mov	r0, r15
+    538e:	04 c0       	rjmp	.+8      	; 0x5398 <__moddi3+0x5e4>
+    5390:	22 0c       	add	r2, r2
+    5392:	33 1c       	adc	r3, r3
+    5394:	44 1c       	adc	r4, r4
+    5396:	55 1c       	adc	r5, r5
+    5398:	0a 94       	dec	r0
+    539a:	d2 f7       	brpl	.-12     	; 0x5390 <__moddi3+0x5dc>
+    539c:	8a 2d       	mov	r24, r10
+    539e:	8f 19       	sub	r24, r15
+    53a0:	64 01       	movw	r12, r8
+    53a2:	53 01       	movw	r10, r6
+    53a4:	08 2e       	mov	r0, r24
+    53a6:	04 c0       	rjmp	.+8      	; 0x53b0 <__moddi3+0x5fc>
+    53a8:	d6 94       	lsr	r13
+    53aa:	c7 94       	ror	r12
+    53ac:	b7 94       	ror	r11
+    53ae:	a7 94       	ror	r10
+    53b0:	0a 94       	dec	r0
+    53b2:	d2 f7       	brpl	.-12     	; 0x53a8 <__moddi3+0x5f4>
+    53b4:	a4 01       	movw	r20, r8
+    53b6:	93 01       	movw	r18, r6
+    53b8:	04 c0       	rjmp	.+8      	; 0x53c2 <__moddi3+0x60e>
+    53ba:	22 0f       	add	r18, r18
+    53bc:	33 1f       	adc	r19, r19
+    53be:	44 1f       	adc	r20, r20
+    53c0:	55 1f       	adc	r21, r21
+    53c2:	fa 94       	dec	r15
+    53c4:	d2 f7       	brpl	.-12     	; 0x53ba <__moddi3+0x606>
+    53c6:	e8 96       	adiw	r28, 0x38	; 56
+    53c8:	6c ac       	ldd	r6, Y+60	; 0x3c
+    53ca:	7d ac       	ldd	r7, Y+61	; 0x3d
+    53cc:	8e ac       	ldd	r8, Y+62	; 0x3e
+    53ce:	9f ac       	ldd	r9, Y+63	; 0x3f
+    53d0:	e8 97       	sbiw	r28, 0x38	; 56
+    53d2:	04 c0       	rjmp	.+8      	; 0x53dc <__moddi3+0x628>
+    53d4:	96 94       	lsr	r9
+    53d6:	87 94       	ror	r8
+    53d8:	77 94       	ror	r7
+    53da:	67 94       	ror	r6
+    53dc:	8a 95       	dec	r24
+    53de:	d2 f7       	brpl	.-12     	; 0x53d4 <__moddi3+0x620>
+    53e0:	84 01       	movw	r16, r8
+    53e2:	73 01       	movw	r14, r6
+    53e4:	e2 2a       	or	r14, r18
+    53e6:	f3 2a       	or	r15, r19
+    53e8:	04 2b       	or	r16, r20
+    53ea:	15 2b       	or	r17, r21
+    53ec:	29 96       	adiw	r28, 0x09	; 9
+    53ee:	ec ae       	std	Y+60, r14	; 0x3c
+    53f0:	fd ae       	std	Y+61, r15	; 0x3d
+    53f2:	0e af       	std	Y+62, r16	; 0x3e
+    53f4:	1f af       	std	Y+63, r17	; 0x3f
+    53f6:	29 97       	sbiw	r28, 0x09	; 9
+    53f8:	32 01       	movw	r6, r4
+    53fa:	88 24       	eor	r8, r8
+    53fc:	99 24       	eor	r9, r9
+    53fe:	92 01       	movw	r18, r4
+    5400:	81 01       	movw	r16, r2
+    5402:	20 70       	andi	r18, 0x00	; 0
+    5404:	30 70       	andi	r19, 0x00	; 0
+    5406:	6d 96       	adiw	r28, 0x1d	; 29
+    5408:	0c af       	std	Y+60, r16	; 0x3c
+    540a:	1d af       	std	Y+61, r17	; 0x3d
+    540c:	2e af       	std	Y+62, r18	; 0x3e
+    540e:	3f af       	std	Y+63, r19	; 0x3f
+    5410:	6d 97       	sbiw	r28, 0x1d	; 29
+    5412:	c6 01       	movw	r24, r12
+    5414:	b5 01       	movw	r22, r10
+    5416:	a4 01       	movw	r20, r8
+    5418:	93 01       	movw	r18, r6
+    541a:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    541e:	7b 01       	movw	r14, r22
+    5420:	8c 01       	movw	r16, r24
+    5422:	c6 01       	movw	r24, r12
+    5424:	b5 01       	movw	r22, r10
+    5426:	a4 01       	movw	r20, r8
+    5428:	93 01       	movw	r18, r6
+    542a:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    542e:	ca 01       	movw	r24, r20
+    5430:	b9 01       	movw	r22, r18
+    5432:	6d 96       	adiw	r28, 0x1d	; 29
+    5434:	2c ad       	ldd	r18, Y+60	; 0x3c
+    5436:	3d ad       	ldd	r19, Y+61	; 0x3d
+    5438:	4e ad       	ldd	r20, Y+62	; 0x3e
+    543a:	5f ad       	ldd	r21, Y+63	; 0x3f
+    543c:	6d 97       	sbiw	r28, 0x1d	; 29
+    543e:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    5442:	9b 01       	movw	r18, r22
+    5444:	ac 01       	movw	r20, r24
+    5446:	87 01       	movw	r16, r14
+    5448:	ff 24       	eor	r15, r15
+    544a:	ee 24       	eor	r14, r14
+    544c:	29 96       	adiw	r28, 0x09	; 9
+    544e:	ac ac       	ldd	r10, Y+60	; 0x3c
+    5450:	bd ac       	ldd	r11, Y+61	; 0x3d
+    5452:	ce ac       	ldd	r12, Y+62	; 0x3e
+    5454:	df ac       	ldd	r13, Y+63	; 0x3f
+    5456:	29 97       	sbiw	r28, 0x09	; 9
+    5458:	c6 01       	movw	r24, r12
+    545a:	aa 27       	eor	r26, r26
+    545c:	bb 27       	eor	r27, r27
+    545e:	5c 01       	movw	r10, r24
+    5460:	6d 01       	movw	r12, r26
+    5462:	ae 28       	or	r10, r14
+    5464:	bf 28       	or	r11, r15
+    5466:	c0 2a       	or	r12, r16
+    5468:	d1 2a       	or	r13, r17
+    546a:	a2 16       	cp	r10, r18
+    546c:	b3 06       	cpc	r11, r19
+    546e:	c4 06       	cpc	r12, r20
+    5470:	d5 06       	cpc	r13, r21
+    5472:	90 f4       	brcc	.+36     	; 0x5498 <__moddi3+0x6e4>
+    5474:	a2 0c       	add	r10, r2
+    5476:	b3 1c       	adc	r11, r3
+    5478:	c4 1c       	adc	r12, r4
+    547a:	d5 1c       	adc	r13, r5
+    547c:	a2 14       	cp	r10, r2
+    547e:	b3 04       	cpc	r11, r3
+    5480:	c4 04       	cpc	r12, r4
+    5482:	d5 04       	cpc	r13, r5
+    5484:	48 f0       	brcs	.+18     	; 0x5498 <__moddi3+0x6e4>
+    5486:	a2 16       	cp	r10, r18
+    5488:	b3 06       	cpc	r11, r19
+    548a:	c4 06       	cpc	r12, r20
+    548c:	d5 06       	cpc	r13, r21
+    548e:	20 f4       	brcc	.+8      	; 0x5498 <__moddi3+0x6e4>
+    5490:	a2 0c       	add	r10, r2
+    5492:	b3 1c       	adc	r11, r3
+    5494:	c4 1c       	adc	r12, r4
+    5496:	d5 1c       	adc	r13, r5
+    5498:	a2 1a       	sub	r10, r18
+    549a:	b3 0a       	sbc	r11, r19
+    549c:	c4 0a       	sbc	r12, r20
+    549e:	d5 0a       	sbc	r13, r21
+    54a0:	c6 01       	movw	r24, r12
+    54a2:	b5 01       	movw	r22, r10
+    54a4:	a4 01       	movw	r20, r8
+    54a6:	93 01       	movw	r18, r6
+    54a8:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    54ac:	7b 01       	movw	r14, r22
+    54ae:	8c 01       	movw	r16, r24
+    54b0:	c6 01       	movw	r24, r12
+    54b2:	b5 01       	movw	r22, r10
+    54b4:	a4 01       	movw	r20, r8
+    54b6:	93 01       	movw	r18, r6
+    54b8:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    54bc:	ca 01       	movw	r24, r20
+    54be:	b9 01       	movw	r22, r18
+    54c0:	6d 96       	adiw	r28, 0x1d	; 29
+    54c2:	2c ad       	ldd	r18, Y+60	; 0x3c
+    54c4:	3d ad       	ldd	r19, Y+61	; 0x3d
+    54c6:	4e ad       	ldd	r20, Y+62	; 0x3e
+    54c8:	5f ad       	ldd	r21, Y+63	; 0x3f
+    54ca:	6d 97       	sbiw	r28, 0x1d	; 29
+    54cc:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    54d0:	9b 01       	movw	r18, r22
+    54d2:	ac 01       	movw	r20, r24
+    54d4:	87 01       	movw	r16, r14
+    54d6:	ff 24       	eor	r15, r15
+    54d8:	ee 24       	eor	r14, r14
+    54da:	29 96       	adiw	r28, 0x09	; 9
+    54dc:	8c ad       	ldd	r24, Y+60	; 0x3c
+    54de:	9d ad       	ldd	r25, Y+61	; 0x3d
+    54e0:	ae ad       	ldd	r26, Y+62	; 0x3e
+    54e2:	bf ad       	ldd	r27, Y+63	; 0x3f
+    54e4:	29 97       	sbiw	r28, 0x09	; 9
+    54e6:	a0 70       	andi	r26, 0x00	; 0
+    54e8:	b0 70       	andi	r27, 0x00	; 0
+    54ea:	57 01       	movw	r10, r14
+    54ec:	68 01       	movw	r12, r16
+    54ee:	a8 2a       	or	r10, r24
+    54f0:	b9 2a       	or	r11, r25
+    54f2:	ca 2a       	or	r12, r26
+    54f4:	db 2a       	or	r13, r27
+    54f6:	a2 16       	cp	r10, r18
+    54f8:	b3 06       	cpc	r11, r19
+    54fa:	c4 06       	cpc	r12, r20
+    54fc:	d5 06       	cpc	r13, r21
+    54fe:	90 f4       	brcc	.+36     	; 0x5524 <__moddi3+0x770>
+    5500:	a2 0c       	add	r10, r2
+    5502:	b3 1c       	adc	r11, r3
+    5504:	c4 1c       	adc	r12, r4
+    5506:	d5 1c       	adc	r13, r5
+    5508:	a2 14       	cp	r10, r2
+    550a:	b3 04       	cpc	r11, r3
+    550c:	c4 04       	cpc	r12, r4
+    550e:	d5 04       	cpc	r13, r5
+    5510:	48 f0       	brcs	.+18     	; 0x5524 <__moddi3+0x770>
+    5512:	a2 16       	cp	r10, r18
+    5514:	b3 06       	cpc	r11, r19
+    5516:	c4 06       	cpc	r12, r20
+    5518:	d5 06       	cpc	r13, r21
+    551a:	20 f4       	brcc	.+8      	; 0x5524 <__moddi3+0x770>
+    551c:	a2 0c       	add	r10, r2
+    551e:	b3 1c       	adc	r11, r3
+    5520:	c4 1c       	adc	r12, r4
+    5522:	d5 1c       	adc	r13, r5
+    5524:	e8 96       	adiw	r28, 0x38	; 56
+    5526:	ec ac       	ldd	r14, Y+60	; 0x3c
+    5528:	fd ac       	ldd	r15, Y+61	; 0x3d
+    552a:	0e ad       	ldd	r16, Y+62	; 0x3e
+    552c:	1f ad       	ldd	r17, Y+63	; 0x3f
+    552e:	e8 97       	sbiw	r28, 0x38	; 56
+    5530:	e4 96       	adiw	r28, 0x34	; 52
+    5532:	0f ac       	ldd	r0, Y+63	; 0x3f
+    5534:	e4 97       	sbiw	r28, 0x34	; 52
+    5536:	04 c0       	rjmp	.+8      	; 0x5540 <__moddi3+0x78c>
+    5538:	ee 0c       	add	r14, r14
+    553a:	ff 1c       	adc	r15, r15
+    553c:	00 1f       	adc	r16, r16
+    553e:	11 1f       	adc	r17, r17
+    5540:	0a 94       	dec	r0
+    5542:	d2 f7       	brpl	.-12     	; 0x5538 <__moddi3+0x784>
+    5544:	2d 96       	adiw	r28, 0x0d	; 13
+    5546:	ec ae       	std	Y+60, r14	; 0x3c
+    5548:	fd ae       	std	Y+61, r15	; 0x3d
+    554a:	0e af       	std	Y+62, r16	; 0x3e
+    554c:	1f af       	std	Y+63, r17	; 0x3f
+    554e:	2d 97       	sbiw	r28, 0x0d	; 13
+    5550:	a2 1a       	sub	r10, r18
+    5552:	b3 0a       	sbc	r11, r19
+    5554:	c4 0a       	sbc	r12, r20
+    5556:	d5 0a       	sbc	r13, r21
+    5558:	32 01       	movw	r6, r4
+    555a:	88 24       	eor	r8, r8
+    555c:	99 24       	eor	r9, r9
+    555e:	92 01       	movw	r18, r4
+    5560:	81 01       	movw	r16, r2
+    5562:	20 70       	andi	r18, 0x00	; 0
+    5564:	30 70       	andi	r19, 0x00	; 0
+    5566:	a1 96       	adiw	r28, 0x21	; 33
+    5568:	0c af       	std	Y+60, r16	; 0x3c
+    556a:	1d af       	std	Y+61, r17	; 0x3d
+    556c:	2e af       	std	Y+62, r18	; 0x3e
+    556e:	3f af       	std	Y+63, r19	; 0x3f
+    5570:	a1 97       	sbiw	r28, 0x21	; 33
+    5572:	c6 01       	movw	r24, r12
+    5574:	b5 01       	movw	r22, r10
+    5576:	a4 01       	movw	r20, r8
+    5578:	93 01       	movw	r18, r6
+    557a:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    557e:	7b 01       	movw	r14, r22
+    5580:	8c 01       	movw	r16, r24
+    5582:	c6 01       	movw	r24, r12
+    5584:	b5 01       	movw	r22, r10
+    5586:	a4 01       	movw	r20, r8
+    5588:	93 01       	movw	r18, r6
+    558a:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    558e:	ca 01       	movw	r24, r20
+    5590:	b9 01       	movw	r22, r18
+    5592:	a1 96       	adiw	r28, 0x21	; 33
+    5594:	2c ad       	ldd	r18, Y+60	; 0x3c
+    5596:	3d ad       	ldd	r19, Y+61	; 0x3d
+    5598:	4e ad       	ldd	r20, Y+62	; 0x3e
+    559a:	5f ad       	ldd	r21, Y+63	; 0x3f
+    559c:	a1 97       	sbiw	r28, 0x21	; 33
+    559e:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    55a2:	9b 01       	movw	r18, r22
+    55a4:	ac 01       	movw	r20, r24
+    55a6:	87 01       	movw	r16, r14
+    55a8:	ff 24       	eor	r15, r15
+    55aa:	ee 24       	eor	r14, r14
+    55ac:	2d 96       	adiw	r28, 0x0d	; 13
+    55ae:	ac ac       	ldd	r10, Y+60	; 0x3c
+    55b0:	bd ac       	ldd	r11, Y+61	; 0x3d
+    55b2:	ce ac       	ldd	r12, Y+62	; 0x3e
+    55b4:	df ac       	ldd	r13, Y+63	; 0x3f
+    55b6:	2d 97       	sbiw	r28, 0x0d	; 13
+    55b8:	c6 01       	movw	r24, r12
+    55ba:	aa 27       	eor	r26, r26
+    55bc:	bb 27       	eor	r27, r27
+    55be:	57 01       	movw	r10, r14
+    55c0:	68 01       	movw	r12, r16
+    55c2:	a8 2a       	or	r10, r24
+    55c4:	b9 2a       	or	r11, r25
+    55c6:	ca 2a       	or	r12, r26
+    55c8:	db 2a       	or	r13, r27
+    55ca:	a2 16       	cp	r10, r18
+    55cc:	b3 06       	cpc	r11, r19
+    55ce:	c4 06       	cpc	r12, r20
+    55d0:	d5 06       	cpc	r13, r21
+    55d2:	90 f4       	brcc	.+36     	; 0x55f8 <__moddi3+0x844>
+    55d4:	a2 0c       	add	r10, r2
+    55d6:	b3 1c       	adc	r11, r3
+    55d8:	c4 1c       	adc	r12, r4
+    55da:	d5 1c       	adc	r13, r5
+    55dc:	a2 14       	cp	r10, r2
+    55de:	b3 04       	cpc	r11, r3
+    55e0:	c4 04       	cpc	r12, r4
+    55e2:	d5 04       	cpc	r13, r5
+    55e4:	48 f0       	brcs	.+18     	; 0x55f8 <__moddi3+0x844>
+    55e6:	a2 16       	cp	r10, r18
+    55e8:	b3 06       	cpc	r11, r19
+    55ea:	c4 06       	cpc	r12, r20
+    55ec:	d5 06       	cpc	r13, r21
+    55ee:	20 f4       	brcc	.+8      	; 0x55f8 <__moddi3+0x844>
+    55f0:	a2 0c       	add	r10, r2
+    55f2:	b3 1c       	adc	r11, r3
+    55f4:	c4 1c       	adc	r12, r4
+    55f6:	d5 1c       	adc	r13, r5
+    55f8:	a2 1a       	sub	r10, r18
+    55fa:	b3 0a       	sbc	r11, r19
+    55fc:	c4 0a       	sbc	r12, r20
+    55fe:	d5 0a       	sbc	r13, r21
+    5600:	c6 01       	movw	r24, r12
+    5602:	b5 01       	movw	r22, r10
+    5604:	a4 01       	movw	r20, r8
+    5606:	93 01       	movw	r18, r6
+    5608:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    560c:	7b 01       	movw	r14, r22
+    560e:	8c 01       	movw	r16, r24
+    5610:	c6 01       	movw	r24, r12
+    5612:	b5 01       	movw	r22, r10
+    5614:	a4 01       	movw	r20, r8
+    5616:	93 01       	movw	r18, r6
+    5618:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    561c:	ca 01       	movw	r24, r20
+    561e:	b9 01       	movw	r22, r18
+    5620:	a1 96       	adiw	r28, 0x21	; 33
+    5622:	2c ad       	ldd	r18, Y+60	; 0x3c
+    5624:	3d ad       	ldd	r19, Y+61	; 0x3d
+    5626:	4e ad       	ldd	r20, Y+62	; 0x3e
+    5628:	5f ad       	ldd	r21, Y+63	; 0x3f
+    562a:	a1 97       	sbiw	r28, 0x21	; 33
+    562c:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    5630:	9b 01       	movw	r18, r22
+    5632:	ac 01       	movw	r20, r24
+    5634:	87 01       	movw	r16, r14
+    5636:	ff 24       	eor	r15, r15
+    5638:	ee 24       	eor	r14, r14
+    563a:	2d 96       	adiw	r28, 0x0d	; 13
+    563c:	8c ad       	ldd	r24, Y+60	; 0x3c
+    563e:	9d ad       	ldd	r25, Y+61	; 0x3d
+    5640:	ae ad       	ldd	r26, Y+62	; 0x3e
+    5642:	bf ad       	ldd	r27, Y+63	; 0x3f
+    5644:	2d 97       	sbiw	r28, 0x0d	; 13
+    5646:	a0 70       	andi	r26, 0x00	; 0
+    5648:	b0 70       	andi	r27, 0x00	; 0
+    564a:	e8 2a       	or	r14, r24
+    564c:	f9 2a       	or	r15, r25
+    564e:	0a 2b       	or	r16, r26
+    5650:	1b 2b       	or	r17, r27
+    5652:	e2 16       	cp	r14, r18
+    5654:	f3 06       	cpc	r15, r19
+    5656:	04 07       	cpc	r16, r20
+    5658:	15 07       	cpc	r17, r21
+    565a:	90 f4       	brcc	.+36     	; 0x5680 <__moddi3+0x8cc>
+    565c:	e2 0c       	add	r14, r2
+    565e:	f3 1c       	adc	r15, r3
+    5660:	04 1d       	adc	r16, r4
+    5662:	15 1d       	adc	r17, r5
+    5664:	e2 14       	cp	r14, r2
+    5666:	f3 04       	cpc	r15, r3
+    5668:	04 05       	cpc	r16, r4
+    566a:	15 05       	cpc	r17, r5
+    566c:	48 f0       	brcs	.+18     	; 0x5680 <__moddi3+0x8cc>
+    566e:	e2 16       	cp	r14, r18
+    5670:	f3 06       	cpc	r15, r19
+    5672:	04 07       	cpc	r16, r20
+    5674:	15 07       	cpc	r17, r21
+    5676:	20 f4       	brcc	.+8      	; 0x5680 <__moddi3+0x8cc>
+    5678:	e2 0c       	add	r14, r2
+    567a:	f3 1c       	adc	r15, r3
+    567c:	04 1d       	adc	r16, r4
+    567e:	15 1d       	adc	r17, r5
+    5680:	e2 1a       	sub	r14, r18
+    5682:	f3 0a       	sbc	r15, r19
+    5684:	04 0b       	sbc	r16, r20
+    5686:	15 0b       	sbc	r17, r21
+    5688:	d8 01       	movw	r26, r16
+    568a:	c7 01       	movw	r24, r14
+    568c:	62 96       	adiw	r28, 0x12	; 18
+    568e:	0f ac       	ldd	r0, Y+63	; 0x3f
+    5690:	62 97       	sbiw	r28, 0x12	; 18
+    5692:	04 c0       	rjmp	.+8      	; 0x569c <__moddi3+0x8e8>
+    5694:	b6 95       	lsr	r27
+    5696:	a7 95       	ror	r26
+    5698:	97 95       	ror	r25
+    569a:	87 95       	ror	r24
+    569c:	0a 94       	dec	r0
+    569e:	d2 f7       	brpl	.-12     	; 0x5694 <__moddi3+0x8e0>
+    56a0:	89 a7       	std	Y+41, r24	; 0x29
+    56a2:	9a a7       	std	Y+42, r25	; 0x2a
+    56a4:	ab a7       	std	Y+43, r26	; 0x2b
+    56a6:	bc a7       	std	Y+44, r27	; 0x2c
+    56a8:	1d a6       	std	Y+45, r1	; 0x2d
+    56aa:	1e a6       	std	Y+46, r1	; 0x2e
+    56ac:	1f a6       	std	Y+47, r1	; 0x2f
+    56ae:	18 aa       	std	Y+48, r1	; 0x30
+    56b0:	89 8b       	std	Y+17, r24	; 0x11
+    56b2:	8a a5       	ldd	r24, Y+42	; 0x2a
+    56b4:	8a 8b       	std	Y+18, r24	; 0x12
+    56b6:	8b a5       	ldd	r24, Y+43	; 0x2b
+    56b8:	8b 8b       	std	Y+19, r24	; 0x13
+    56ba:	8c a5       	ldd	r24, Y+44	; 0x2c
+    56bc:	8c 8b       	std	Y+20, r24	; 0x14
+    56be:	8d a5       	ldd	r24, Y+45	; 0x2d
+    56c0:	8d 8b       	std	Y+21, r24	; 0x15
+    56c2:	2f c3       	rjmp	.+1630   	; 0x5d22 <__moddi3+0xf6e>
+    56c4:	6a 14       	cp	r6, r10
+    56c6:	7b 04       	cpc	r7, r11
+    56c8:	8c 04       	cpc	r8, r12
+    56ca:	9d 04       	cpc	r9, r13
+    56cc:	48 f4       	brcc	.+18     	; 0x56e0 <__moddi3+0x92c>
+    56ce:	49 8b       	std	Y+17, r20	; 0x11
+    56d0:	5a 8b       	std	Y+18, r21	; 0x12
+    56d2:	6b 8b       	std	Y+19, r22	; 0x13
+    56d4:	7c 8b       	std	Y+20, r23	; 0x14
+    56d6:	8d 8b       	std	Y+21, r24	; 0x15
+    56d8:	9e 8b       	std	Y+22, r25	; 0x16
+    56da:	2f 8b       	std	Y+23, r18	; 0x17
+    56dc:	38 8f       	std	Y+24, r19	; 0x18
+    56de:	27 c3       	rjmp	.+1614   	; 0x5d2e <__moddi3+0xf7a>
+    56e0:	00 e0       	ldi	r16, 0x00	; 0
+    56e2:	a0 16       	cp	r10, r16
+    56e4:	00 e0       	ldi	r16, 0x00	; 0
+    56e6:	b0 06       	cpc	r11, r16
+    56e8:	01 e0       	ldi	r16, 0x01	; 1
+    56ea:	c0 06       	cpc	r12, r16
+    56ec:	00 e0       	ldi	r16, 0x00	; 0
+    56ee:	d0 06       	cpc	r13, r16
+    56f0:	88 f4       	brcc	.+34     	; 0x5714 <__moddi3+0x960>
+    56f2:	1f ef       	ldi	r17, 0xFF	; 255
+    56f4:	a1 16       	cp	r10, r17
+    56f6:	b1 04       	cpc	r11, r1
+    56f8:	c1 04       	cpc	r12, r1
+    56fa:	d1 04       	cpc	r13, r1
+    56fc:	39 f0       	breq	.+14     	; 0x570c <__moddi3+0x958>
+    56fe:	30 f0       	brcs	.+12     	; 0x570c <__moddi3+0x958>
+    5700:	98 e0       	ldi	r25, 0x08	; 8
+    5702:	e9 2e       	mov	r14, r25
+    5704:	f1 2c       	mov	r15, r1
+    5706:	01 2d       	mov	r16, r1
+    5708:	11 2d       	mov	r17, r1
+    570a:	18 c0       	rjmp	.+48     	; 0x573c <__moddi3+0x988>
+    570c:	ee 24       	eor	r14, r14
+    570e:	ff 24       	eor	r15, r15
+    5710:	87 01       	movw	r16, r14
+    5712:	14 c0       	rjmp	.+40     	; 0x573c <__moddi3+0x988>
+    5714:	20 e0       	ldi	r18, 0x00	; 0
+    5716:	a2 16       	cp	r10, r18
+    5718:	20 e0       	ldi	r18, 0x00	; 0
+    571a:	b2 06       	cpc	r11, r18
+    571c:	20 e0       	ldi	r18, 0x00	; 0
+    571e:	c2 06       	cpc	r12, r18
+    5720:	21 e0       	ldi	r18, 0x01	; 1
+    5722:	d2 06       	cpc	r13, r18
+    5724:	30 f0       	brcs	.+12     	; 0x5732 <__moddi3+0x97e>
+    5726:	88 e1       	ldi	r24, 0x18	; 24
+    5728:	e8 2e       	mov	r14, r24
+    572a:	f1 2c       	mov	r15, r1
+    572c:	01 2d       	mov	r16, r1
+    572e:	11 2d       	mov	r17, r1
+    5730:	05 c0       	rjmp	.+10     	; 0x573c <__moddi3+0x988>
+    5732:	00 e1       	ldi	r16, 0x10	; 16
+    5734:	e0 2e       	mov	r14, r16
+    5736:	f1 2c       	mov	r15, r1
+    5738:	01 2d       	mov	r16, r1
+    573a:	11 2d       	mov	r17, r1
+    573c:	d6 01       	movw	r26, r12
+    573e:	c5 01       	movw	r24, r10
+    5740:	0e 2c       	mov	r0, r14
+    5742:	04 c0       	rjmp	.+8      	; 0x574c <__moddi3+0x998>
+    5744:	b6 95       	lsr	r27
+    5746:	a7 95       	ror	r26
+    5748:	97 95       	ror	r25
+    574a:	87 95       	ror	r24
+    574c:	0a 94       	dec	r0
+    574e:	d2 f7       	brpl	.-12     	; 0x5744 <__moddi3+0x990>
+    5750:	89 59       	subi	r24, 0x99	; 153
+    5752:	9b 4f       	sbci	r25, 0xFB	; 251
+    5754:	dc 01       	movw	r26, r24
+    5756:	2c 91       	ld	r18, X
+    5758:	80 e2       	ldi	r24, 0x20	; 32
+    575a:	90 e0       	ldi	r25, 0x00	; 0
+    575c:	a0 e0       	ldi	r26, 0x00	; 0
+    575e:	b0 e0       	ldi	r27, 0x00	; 0
+    5760:	8e 19       	sub	r24, r14
+    5762:	9f 09       	sbc	r25, r15
+    5764:	a0 0b       	sbc	r26, r16
+    5766:	b1 0b       	sbc	r27, r17
+    5768:	82 1b       	sub	r24, r18
+    576a:	91 09       	sbc	r25, r1
+    576c:	a1 09       	sbc	r26, r1
+    576e:	b1 09       	sbc	r27, r1
+    5770:	00 97       	sbiw	r24, 0x00	; 0
+    5772:	a1 05       	cpc	r26, r1
+    5774:	b1 05       	cpc	r27, r1
+    5776:	09 f0       	breq	.+2      	; 0x577a <__moddi3+0x9c6>
+    5778:	59 c0       	rjmp	.+178    	; 0x582c <__moddi3+0xa78>
+    577a:	a6 14       	cp	r10, r6
+    577c:	b7 04       	cpc	r11, r7
+    577e:	c8 04       	cpc	r12, r8
+    5780:	d9 04       	cpc	r13, r9
+    5782:	70 f0       	brcs	.+28     	; 0x57a0 <__moddi3+0x9ec>
+    5784:	e8 96       	adiw	r28, 0x38	; 56
+    5786:	ec ac       	ldd	r14, Y+60	; 0x3c
+    5788:	fd ac       	ldd	r15, Y+61	; 0x3d
+    578a:	0e ad       	ldd	r16, Y+62	; 0x3e
+    578c:	1f ad       	ldd	r17, Y+63	; 0x3f
+    578e:	e8 97       	sbiw	r28, 0x38	; 56
+    5790:	e2 14       	cp	r14, r2
+    5792:	f3 04       	cpc	r15, r3
+    5794:	04 05       	cpc	r16, r4
+    5796:	15 05       	cpc	r17, r5
+    5798:	18 f4       	brcc	.+6      	; 0x57a0 <__moddi3+0x9ec>
+    579a:	d8 01       	movw	r26, r16
+    579c:	c7 01       	movw	r24, r14
+    579e:	2f c0       	rjmp	.+94     	; 0x57fe <__moddi3+0xa4a>
+    57a0:	e8 96       	adiw	r28, 0x38	; 56
+    57a2:	8c ad       	ldd	r24, Y+60	; 0x3c
+    57a4:	9d ad       	ldd	r25, Y+61	; 0x3d
+    57a6:	ae ad       	ldd	r26, Y+62	; 0x3e
+    57a8:	bf ad       	ldd	r27, Y+63	; 0x3f
+    57aa:	e8 97       	sbiw	r28, 0x38	; 56
+    57ac:	82 19       	sub	r24, r2
+    57ae:	93 09       	sbc	r25, r3
+    57b0:	a4 09       	sbc	r26, r4
+    57b2:	b5 09       	sbc	r27, r5
+    57b4:	a4 01       	movw	r20, r8
+    57b6:	93 01       	movw	r18, r6
+    57b8:	2a 19       	sub	r18, r10
+    57ba:	3b 09       	sbc	r19, r11
+    57bc:	4c 09       	sbc	r20, r12
+    57be:	5d 09       	sbc	r21, r13
+    57c0:	aa 24       	eor	r10, r10
+    57c2:	bb 24       	eor	r11, r11
+    57c4:	65 01       	movw	r12, r10
+    57c6:	e8 96       	adiw	r28, 0x38	; 56
+    57c8:	6c ac       	ldd	r6, Y+60	; 0x3c
+    57ca:	7d ac       	ldd	r7, Y+61	; 0x3d
+    57cc:	8e ac       	ldd	r8, Y+62	; 0x3e
+    57ce:	9f ac       	ldd	r9, Y+63	; 0x3f
+    57d0:	e8 97       	sbiw	r28, 0x38	; 56
+    57d2:	68 16       	cp	r6, r24
+    57d4:	79 06       	cpc	r7, r25
+    57d6:	8a 06       	cpc	r8, r26
+    57d8:	9b 06       	cpc	r9, r27
+    57da:	28 f4       	brcc	.+10     	; 0x57e6 <__moddi3+0xa32>
+    57dc:	11 e0       	ldi	r17, 0x01	; 1
+    57de:	a1 2e       	mov	r10, r17
+    57e0:	b1 2c       	mov	r11, r1
+    57e2:	c1 2c       	mov	r12, r1
+    57e4:	d1 2c       	mov	r13, r1
+    57e6:	79 01       	movw	r14, r18
+    57e8:	8a 01       	movw	r16, r20
+    57ea:	ea 18       	sub	r14, r10
+    57ec:	fb 08       	sbc	r15, r11
+    57ee:	0c 09       	sbc	r16, r12
+    57f0:	1d 09       	sbc	r17, r13
+    57f2:	61 96       	adiw	r28, 0x11	; 17
+    57f4:	ec ae       	std	Y+60, r14	; 0x3c
+    57f6:	fd ae       	std	Y+61, r15	; 0x3d
+    57f8:	0e af       	std	Y+62, r16	; 0x3e
+    57fa:	1f af       	std	Y+63, r17	; 0x3f
+    57fc:	61 97       	sbiw	r28, 0x11	; 17
+    57fe:	89 a7       	std	Y+41, r24	; 0x29
+    5800:	9a a7       	std	Y+42, r25	; 0x2a
+    5802:	ab a7       	std	Y+43, r26	; 0x2b
+    5804:	bc a7       	std	Y+44, r27	; 0x2c
+    5806:	61 96       	adiw	r28, 0x11	; 17
+    5808:	0c ad       	ldd	r16, Y+60	; 0x3c
+    580a:	1d ad       	ldd	r17, Y+61	; 0x3d
+    580c:	2e ad       	ldd	r18, Y+62	; 0x3e
+    580e:	3f ad       	ldd	r19, Y+63	; 0x3f
+    5810:	61 97       	sbiw	r28, 0x11	; 17
+    5812:	0d a7       	std	Y+45, r16	; 0x2d
+    5814:	1e a7       	std	Y+46, r17	; 0x2e
+    5816:	2f a7       	std	Y+47, r18	; 0x2f
+    5818:	38 ab       	std	Y+48, r19	; 0x30
+    581a:	89 8b       	std	Y+17, r24	; 0x11
+    581c:	8a a5       	ldd	r24, Y+42	; 0x2a
+    581e:	8a 8b       	std	Y+18, r24	; 0x12
+    5820:	8b a5       	ldd	r24, Y+43	; 0x2b
+    5822:	8b 8b       	std	Y+19, r24	; 0x13
+    5824:	8c a5       	ldd	r24, Y+44	; 0x2c
+    5826:	8c 8b       	std	Y+20, r24	; 0x14
+    5828:	0d 8b       	std	Y+21, r16	; 0x15
+    582a:	7b c2       	rjmp	.+1270   	; 0x5d22 <__moddi3+0xf6e>
+    582c:	e3 96       	adiw	r28, 0x33	; 51
+    582e:	8f af       	std	Y+63, r24	; 0x3f
+    5830:	e3 97       	sbiw	r28, 0x33	; 51
+    5832:	a6 01       	movw	r20, r12
+    5834:	95 01       	movw	r18, r10
+    5836:	08 2e       	mov	r0, r24
+    5838:	04 c0       	rjmp	.+8      	; 0x5842 <__moddi3+0xa8e>
+    583a:	22 0f       	add	r18, r18
+    583c:	33 1f       	adc	r19, r19
+    583e:	44 1f       	adc	r20, r20
+    5840:	55 1f       	adc	r21, r21
+    5842:	0a 94       	dec	r0
+    5844:	d2 f7       	brpl	.-12     	; 0x583a <__moddi3+0xa86>
+    5846:	10 e2       	ldi	r17, 0x20	; 32
+    5848:	18 1b       	sub	r17, r24
+    584a:	e2 96       	adiw	r28, 0x32	; 50
+    584c:	1f af       	std	Y+63, r17	; 0x3f
+    584e:	e2 97       	sbiw	r28, 0x32	; 50
+    5850:	d2 01       	movw	r26, r4
+    5852:	c1 01       	movw	r24, r2
+    5854:	01 2e       	mov	r0, r17
+    5856:	04 c0       	rjmp	.+8      	; 0x5860 <__moddi3+0xaac>
+    5858:	b6 95       	lsr	r27
+    585a:	a7 95       	ror	r26
+    585c:	97 95       	ror	r25
+    585e:	87 95       	ror	r24
+    5860:	0a 94       	dec	r0
+    5862:	d2 f7       	brpl	.-12     	; 0x5858 <__moddi3+0xaa4>
+    5864:	5c 01       	movw	r10, r24
+    5866:	6d 01       	movw	r12, r26
+    5868:	a2 2a       	or	r10, r18
+    586a:	b3 2a       	or	r11, r19
+    586c:	c4 2a       	or	r12, r20
+    586e:	d5 2a       	or	r13, r21
+    5870:	25 96       	adiw	r28, 0x05	; 5
+    5872:	ac ae       	std	Y+60, r10	; 0x3c
+    5874:	bd ae       	std	Y+61, r11	; 0x3d
+    5876:	ce ae       	std	Y+62, r12	; 0x3e
+    5878:	df ae       	std	Y+63, r13	; 0x3f
+    587a:	25 97       	sbiw	r28, 0x05	; 5
+    587c:	72 01       	movw	r14, r4
+    587e:	61 01       	movw	r12, r2
+    5880:	e3 96       	adiw	r28, 0x33	; 51
+    5882:	0f ac       	ldd	r0, Y+63	; 0x3f
+    5884:	e3 97       	sbiw	r28, 0x33	; 51
+    5886:	04 c0       	rjmp	.+8      	; 0x5890 <__moddi3+0xadc>
+    5888:	cc 0c       	add	r12, r12
+    588a:	dd 1c       	adc	r13, r13
+    588c:	ee 1c       	adc	r14, r14
+    588e:	ff 1c       	adc	r15, r15
+    5890:	0a 94       	dec	r0
+    5892:	d2 f7       	brpl	.-12     	; 0x5888 <__moddi3+0xad4>
+    5894:	21 96       	adiw	r28, 0x01	; 1
+    5896:	cc ae       	std	Y+60, r12	; 0x3c
+    5898:	dd ae       	std	Y+61, r13	; 0x3d
+    589a:	ee ae       	std	Y+62, r14	; 0x3e
+    589c:	ff ae       	std	Y+63, r15	; 0x3f
+    589e:	21 97       	sbiw	r28, 0x01	; 1
+    58a0:	64 01       	movw	r12, r8
+    58a2:	53 01       	movw	r10, r6
+    58a4:	01 2e       	mov	r0, r17
+    58a6:	04 c0       	rjmp	.+8      	; 0x58b0 <__moddi3+0xafc>
+    58a8:	d6 94       	lsr	r13
+    58aa:	c7 94       	ror	r12
+    58ac:	b7 94       	ror	r11
+    58ae:	a7 94       	ror	r10
+    58b0:	0a 94       	dec	r0
+    58b2:	d2 f7       	brpl	.-12     	; 0x58a8 <__moddi3+0xaf4>
+    58b4:	a4 01       	movw	r20, r8
+    58b6:	93 01       	movw	r18, r6
+    58b8:	e3 96       	adiw	r28, 0x33	; 51
+    58ba:	0f ac       	ldd	r0, Y+63	; 0x3f
+    58bc:	e3 97       	sbiw	r28, 0x33	; 51
+    58be:	04 c0       	rjmp	.+8      	; 0x58c8 <__moddi3+0xb14>
+    58c0:	22 0f       	add	r18, r18
+    58c2:	33 1f       	adc	r19, r19
+    58c4:	44 1f       	adc	r20, r20
+    58c6:	55 1f       	adc	r21, r21
+    58c8:	0a 94       	dec	r0
+    58ca:	d2 f7       	brpl	.-12     	; 0x58c0 <__moddi3+0xb0c>
+    58cc:	e8 96       	adiw	r28, 0x38	; 56
+    58ce:	8c ad       	ldd	r24, Y+60	; 0x3c
+    58d0:	9d ad       	ldd	r25, Y+61	; 0x3d
+    58d2:	ae ad       	ldd	r26, Y+62	; 0x3e
+    58d4:	bf ad       	ldd	r27, Y+63	; 0x3f
+    58d6:	e8 97       	sbiw	r28, 0x38	; 56
+    58d8:	04 c0       	rjmp	.+8      	; 0x58e2 <__moddi3+0xb2e>
+    58da:	b6 95       	lsr	r27
+    58dc:	a7 95       	ror	r26
+    58de:	97 95       	ror	r25
+    58e0:	87 95       	ror	r24
+    58e2:	1a 95       	dec	r17
+    58e4:	d2 f7       	brpl	.-12     	; 0x58da <__moddi3+0xb26>
+    58e6:	7c 01       	movw	r14, r24
+    58e8:	8d 01       	movw	r16, r26
+    58ea:	e2 2a       	or	r14, r18
+    58ec:	f3 2a       	or	r15, r19
+    58ee:	04 2b       	or	r16, r20
+    58f0:	15 2b       	or	r17, r21
+    58f2:	e9 ae       	std	Y+57, r14	; 0x39
+    58f4:	fa ae       	std	Y+58, r15	; 0x3a
+    58f6:	0b af       	std	Y+59, r16	; 0x3b
+    58f8:	1c af       	std	Y+60, r17	; 0x3c
+    58fa:	e8 96       	adiw	r28, 0x38	; 56
+    58fc:	0c ad       	ldd	r16, Y+60	; 0x3c
+    58fe:	1d ad       	ldd	r17, Y+61	; 0x3d
+    5900:	2e ad       	ldd	r18, Y+62	; 0x3e
+    5902:	3f ad       	ldd	r19, Y+63	; 0x3f
+    5904:	e8 97       	sbiw	r28, 0x38	; 56
+    5906:	e3 96       	adiw	r28, 0x33	; 51
+    5908:	0f ac       	ldd	r0, Y+63	; 0x3f
+    590a:	e3 97       	sbiw	r28, 0x33	; 51
+    590c:	04 c0       	rjmp	.+8      	; 0x5916 <__moddi3+0xb62>
+    590e:	00 0f       	add	r16, r16
+    5910:	11 1f       	adc	r17, r17
+    5912:	22 1f       	adc	r18, r18
+    5914:	33 1f       	adc	r19, r19
+    5916:	0a 94       	dec	r0
+    5918:	d2 f7       	brpl	.-12     	; 0x590e <__moddi3+0xb5a>
+    591a:	0d ab       	std	Y+53, r16	; 0x35
+    591c:	1e ab       	std	Y+54, r17	; 0x36
+    591e:	2f ab       	std	Y+55, r18	; 0x37
+    5920:	38 af       	std	Y+56, r19	; 0x38
+    5922:	25 96       	adiw	r28, 0x05	; 5
+    5924:	2c ad       	ldd	r18, Y+60	; 0x3c
+    5926:	3d ad       	ldd	r19, Y+61	; 0x3d
+    5928:	4e ad       	ldd	r20, Y+62	; 0x3e
+    592a:	5f ad       	ldd	r21, Y+63	; 0x3f
+    592c:	25 97       	sbiw	r28, 0x05	; 5
+    592e:	3a 01       	movw	r6, r20
+    5930:	88 24       	eor	r8, r8
+    5932:	99 24       	eor	r9, r9
+    5934:	40 70       	andi	r20, 0x00	; 0
+    5936:	50 70       	andi	r21, 0x00	; 0
+    5938:	a5 96       	adiw	r28, 0x25	; 37
+    593a:	2c af       	std	Y+60, r18	; 0x3c
+    593c:	3d af       	std	Y+61, r19	; 0x3d
+    593e:	4e af       	std	Y+62, r20	; 0x3e
+    5940:	5f af       	std	Y+63, r21	; 0x3f
+    5942:	a5 97       	sbiw	r28, 0x25	; 37
+    5944:	c6 01       	movw	r24, r12
+    5946:	b5 01       	movw	r22, r10
+    5948:	a4 01       	movw	r20, r8
+    594a:	93 01       	movw	r18, r6
+    594c:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    5950:	7b 01       	movw	r14, r22
+    5952:	8c 01       	movw	r16, r24
+    5954:	c6 01       	movw	r24, r12
+    5956:	b5 01       	movw	r22, r10
+    5958:	a4 01       	movw	r20, r8
+    595a:	93 01       	movw	r18, r6
+    595c:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    5960:	c9 01       	movw	r24, r18
+    5962:	da 01       	movw	r26, r20
+    5964:	1c 01       	movw	r2, r24
+    5966:	2d 01       	movw	r4, r26
+    5968:	c2 01       	movw	r24, r4
+    596a:	b1 01       	movw	r22, r2
+    596c:	a5 96       	adiw	r28, 0x25	; 37
+    596e:	2c ad       	ldd	r18, Y+60	; 0x3c
+    5970:	3d ad       	ldd	r19, Y+61	; 0x3d
+    5972:	4e ad       	ldd	r20, Y+62	; 0x3e
+    5974:	5f ad       	ldd	r21, Y+63	; 0x3f
+    5976:	a5 97       	sbiw	r28, 0x25	; 37
+    5978:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    597c:	9b 01       	movw	r18, r22
+    597e:	ac 01       	movw	r20, r24
+    5980:	87 01       	movw	r16, r14
+    5982:	ff 24       	eor	r15, r15
+    5984:	ee 24       	eor	r14, r14
+    5986:	a9 ac       	ldd	r10, Y+57	; 0x39
+    5988:	ba ac       	ldd	r11, Y+58	; 0x3a
+    598a:	cb ac       	ldd	r12, Y+59	; 0x3b
+    598c:	dc ac       	ldd	r13, Y+60	; 0x3c
+    598e:	c6 01       	movw	r24, r12
+    5990:	aa 27       	eor	r26, r26
+    5992:	bb 27       	eor	r27, r27
+    5994:	57 01       	movw	r10, r14
+    5996:	68 01       	movw	r12, r16
+    5998:	a8 2a       	or	r10, r24
+    599a:	b9 2a       	or	r11, r25
+    599c:	ca 2a       	or	r12, r26
+    599e:	db 2a       	or	r13, r27
+    59a0:	a2 16       	cp	r10, r18
+    59a2:	b3 06       	cpc	r11, r19
+    59a4:	c4 06       	cpc	r12, r20
+    59a6:	d5 06       	cpc	r13, r21
+    59a8:	10 f5       	brcc	.+68     	; 0x59ee <__moddi3+0xc3a>
+    59aa:	08 94       	sec
+    59ac:	21 08       	sbc	r2, r1
+    59ae:	31 08       	sbc	r3, r1
+    59b0:	41 08       	sbc	r4, r1
+    59b2:	51 08       	sbc	r5, r1
+    59b4:	25 96       	adiw	r28, 0x05	; 5
+    59b6:	ec ac       	ldd	r14, Y+60	; 0x3c
+    59b8:	fd ac       	ldd	r15, Y+61	; 0x3d
+    59ba:	0e ad       	ldd	r16, Y+62	; 0x3e
+    59bc:	1f ad       	ldd	r17, Y+63	; 0x3f
+    59be:	25 97       	sbiw	r28, 0x05	; 5
+    59c0:	ae 0c       	add	r10, r14
+    59c2:	bf 1c       	adc	r11, r15
+    59c4:	c0 1e       	adc	r12, r16
+    59c6:	d1 1e       	adc	r13, r17
+    59c8:	ae 14       	cp	r10, r14
+    59ca:	bf 04       	cpc	r11, r15
+    59cc:	c0 06       	cpc	r12, r16
+    59ce:	d1 06       	cpc	r13, r17
+    59d0:	70 f0       	brcs	.+28     	; 0x59ee <__moddi3+0xc3a>
+    59d2:	a2 16       	cp	r10, r18
+    59d4:	b3 06       	cpc	r11, r19
+    59d6:	c4 06       	cpc	r12, r20
+    59d8:	d5 06       	cpc	r13, r21
+    59da:	48 f4       	brcc	.+18     	; 0x59ee <__moddi3+0xc3a>
+    59dc:	08 94       	sec
+    59de:	21 08       	sbc	r2, r1
+    59e0:	31 08       	sbc	r3, r1
+    59e2:	41 08       	sbc	r4, r1
+    59e4:	51 08       	sbc	r5, r1
+    59e6:	ae 0c       	add	r10, r14
+    59e8:	bf 1c       	adc	r11, r15
+    59ea:	c0 1e       	adc	r12, r16
+    59ec:	d1 1e       	adc	r13, r17
+    59ee:	a2 1a       	sub	r10, r18
+    59f0:	b3 0a       	sbc	r11, r19
+    59f2:	c4 0a       	sbc	r12, r20
+    59f4:	d5 0a       	sbc	r13, r21
+    59f6:	c6 01       	movw	r24, r12
+    59f8:	b5 01       	movw	r22, r10
+    59fa:	a4 01       	movw	r20, r8
+    59fc:	93 01       	movw	r18, r6
+    59fe:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    5a02:	7b 01       	movw	r14, r22
+    5a04:	8c 01       	movw	r16, r24
+    5a06:	c6 01       	movw	r24, r12
+    5a08:	b5 01       	movw	r22, r10
+    5a0a:	a4 01       	movw	r20, r8
+    5a0c:	93 01       	movw	r18, r6
+    5a0e:	0e 94 74 32 	call	0x64e8	; 0x64e8 <__udivmodsi4>
+    5a12:	c9 01       	movw	r24, r18
+    5a14:	da 01       	movw	r26, r20
+    5a16:	3c 01       	movw	r6, r24
+    5a18:	4d 01       	movw	r8, r26
+    5a1a:	c4 01       	movw	r24, r8
+    5a1c:	b3 01       	movw	r22, r6
+    5a1e:	a5 96       	adiw	r28, 0x25	; 37
+    5a20:	2c ad       	ldd	r18, Y+60	; 0x3c
+    5a22:	3d ad       	ldd	r19, Y+61	; 0x3d
+    5a24:	4e ad       	ldd	r20, Y+62	; 0x3e
+    5a26:	5f ad       	ldd	r21, Y+63	; 0x3f
+    5a28:	a5 97       	sbiw	r28, 0x25	; 37
+    5a2a:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    5a2e:	9b 01       	movw	r18, r22
+    5a30:	ac 01       	movw	r20, r24
+    5a32:	87 01       	movw	r16, r14
+    5a34:	ff 24       	eor	r15, r15
+    5a36:	ee 24       	eor	r14, r14
+    5a38:	89 ad       	ldd	r24, Y+57	; 0x39
+    5a3a:	9a ad       	ldd	r25, Y+58	; 0x3a
+    5a3c:	ab ad       	ldd	r26, Y+59	; 0x3b
+    5a3e:	bc ad       	ldd	r27, Y+60	; 0x3c
+    5a40:	a0 70       	andi	r26, 0x00	; 0
+    5a42:	b0 70       	andi	r27, 0x00	; 0
+    5a44:	57 01       	movw	r10, r14
+    5a46:	68 01       	movw	r12, r16
+    5a48:	a8 2a       	or	r10, r24
+    5a4a:	b9 2a       	or	r11, r25
+    5a4c:	ca 2a       	or	r12, r26
+    5a4e:	db 2a       	or	r13, r27
+    5a50:	a2 16       	cp	r10, r18
+    5a52:	b3 06       	cpc	r11, r19
+    5a54:	c4 06       	cpc	r12, r20
+    5a56:	d5 06       	cpc	r13, r21
+    5a58:	10 f5       	brcc	.+68     	; 0x5a9e <__moddi3+0xcea>
+    5a5a:	08 94       	sec
+    5a5c:	61 08       	sbc	r6, r1
+    5a5e:	71 08       	sbc	r7, r1
+    5a60:	81 08       	sbc	r8, r1
+    5a62:	91 08       	sbc	r9, r1
+    5a64:	25 96       	adiw	r28, 0x05	; 5
+    5a66:	6c ad       	ldd	r22, Y+60	; 0x3c
+    5a68:	7d ad       	ldd	r23, Y+61	; 0x3d
+    5a6a:	8e ad       	ldd	r24, Y+62	; 0x3e
+    5a6c:	9f ad       	ldd	r25, Y+63	; 0x3f
+    5a6e:	25 97       	sbiw	r28, 0x05	; 5
+    5a70:	a6 0e       	add	r10, r22
+    5a72:	b7 1e       	adc	r11, r23
+    5a74:	c8 1e       	adc	r12, r24
+    5a76:	d9 1e       	adc	r13, r25
+    5a78:	a6 16       	cp	r10, r22
+    5a7a:	b7 06       	cpc	r11, r23
+    5a7c:	c8 06       	cpc	r12, r24
+    5a7e:	d9 06       	cpc	r13, r25
+    5a80:	70 f0       	brcs	.+28     	; 0x5a9e <__moddi3+0xcea>
+    5a82:	a2 16       	cp	r10, r18
+    5a84:	b3 06       	cpc	r11, r19
+    5a86:	c4 06       	cpc	r12, r20
+    5a88:	d5 06       	cpc	r13, r21
+    5a8a:	48 f4       	brcc	.+18     	; 0x5a9e <__moddi3+0xcea>
+    5a8c:	08 94       	sec
+    5a8e:	61 08       	sbc	r6, r1
+    5a90:	71 08       	sbc	r7, r1
+    5a92:	81 08       	sbc	r8, r1
+    5a94:	91 08       	sbc	r9, r1
+    5a96:	a6 0e       	add	r10, r22
+    5a98:	b7 1e       	adc	r11, r23
+    5a9a:	c8 1e       	adc	r12, r24
+    5a9c:	d9 1e       	adc	r13, r25
+    5a9e:	d6 01       	movw	r26, r12
+    5aa0:	c5 01       	movw	r24, r10
+    5aa2:	82 1b       	sub	r24, r18
+    5aa4:	93 0b       	sbc	r25, r19
+    5aa6:	a4 0b       	sbc	r26, r20
+    5aa8:	b5 0b       	sbc	r27, r21
+    5aaa:	89 ab       	std	Y+49, r24	; 0x31
+    5aac:	9a ab       	std	Y+50, r25	; 0x32
+    5aae:	ab ab       	std	Y+51, r26	; 0x33
+    5ab0:	bc ab       	std	Y+52, r27	; 0x34
+    5ab2:	d1 01       	movw	r26, r2
+    5ab4:	99 27       	eor	r25, r25
+    5ab6:	88 27       	eor	r24, r24
+    5ab8:	84 01       	movw	r16, r8
+    5aba:	73 01       	movw	r14, r6
+    5abc:	e8 2a       	or	r14, r24
+    5abe:	f9 2a       	or	r15, r25
+    5ac0:	0a 2b       	or	r16, r26
+    5ac2:	1b 2b       	or	r17, r27
+    5ac4:	8f ef       	ldi	r24, 0xFF	; 255
+    5ac6:	a8 2e       	mov	r10, r24
+    5ac8:	8f ef       	ldi	r24, 0xFF	; 255
+    5aca:	b8 2e       	mov	r11, r24
+    5acc:	c1 2c       	mov	r12, r1
+    5ace:	d1 2c       	mov	r13, r1
+    5ad0:	ae 20       	and	r10, r14
+    5ad2:	bf 20       	and	r11, r15
+    5ad4:	c0 22       	and	r12, r16
+    5ad6:	d1 22       	and	r13, r17
+    5ad8:	78 01       	movw	r14, r16
+    5ada:	00 27       	eor	r16, r16
+    5adc:	11 27       	eor	r17, r17
+    5ade:	21 96       	adiw	r28, 0x01	; 1
+    5ae0:	6c ac       	ldd	r6, Y+60	; 0x3c
+    5ae2:	7d ac       	ldd	r7, Y+61	; 0x3d
+    5ae4:	8e ac       	ldd	r8, Y+62	; 0x3e
+    5ae6:	9f ac       	ldd	r9, Y+63	; 0x3f
+    5ae8:	21 97       	sbiw	r28, 0x01	; 1
+    5aea:	2f ef       	ldi	r18, 0xFF	; 255
+    5aec:	3f ef       	ldi	r19, 0xFF	; 255
+    5aee:	40 e0       	ldi	r20, 0x00	; 0
+    5af0:	50 e0       	ldi	r21, 0x00	; 0
+    5af2:	62 22       	and	r6, r18
+    5af4:	73 22       	and	r7, r19
+    5af6:	84 22       	and	r8, r20
+    5af8:	95 22       	and	r9, r21
+    5afa:	21 96       	adiw	r28, 0x01	; 1
+    5afc:	6c ad       	ldd	r22, Y+60	; 0x3c
+    5afe:	7d ad       	ldd	r23, Y+61	; 0x3d
+    5b00:	8e ad       	ldd	r24, Y+62	; 0x3e
+    5b02:	9f ad       	ldd	r25, Y+63	; 0x3f
+    5b04:	21 97       	sbiw	r28, 0x01	; 1
+    5b06:	ac 01       	movw	r20, r24
+    5b08:	66 27       	eor	r22, r22
+    5b0a:	77 27       	eor	r23, r23
+    5b0c:	ad 96       	adiw	r28, 0x2d	; 45
+    5b0e:	4c af       	std	Y+60, r20	; 0x3c
+    5b10:	5d af       	std	Y+61, r21	; 0x3d
+    5b12:	6e af       	std	Y+62, r22	; 0x3e
+    5b14:	7f af       	std	Y+63, r23	; 0x3f
+    5b16:	ad 97       	sbiw	r28, 0x2d	; 45
+    5b18:	c6 01       	movw	r24, r12
+    5b1a:	b5 01       	movw	r22, r10
+    5b1c:	a4 01       	movw	r20, r8
+    5b1e:	93 01       	movw	r18, r6
+    5b20:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    5b24:	a9 96       	adiw	r28, 0x29	; 41
+    5b26:	6c af       	std	Y+60, r22	; 0x3c
+    5b28:	7d af       	std	Y+61, r23	; 0x3d
+    5b2a:	8e af       	std	Y+62, r24	; 0x3e
+    5b2c:	9f af       	std	Y+63, r25	; 0x3f
+    5b2e:	a9 97       	sbiw	r28, 0x29	; 41
+    5b30:	c6 01       	movw	r24, r12
+    5b32:	b5 01       	movw	r22, r10
+    5b34:	ad 96       	adiw	r28, 0x2d	; 45
+    5b36:	2c ad       	ldd	r18, Y+60	; 0x3c
+    5b38:	3d ad       	ldd	r19, Y+61	; 0x3d
+    5b3a:	4e ad       	ldd	r20, Y+62	; 0x3e
+    5b3c:	5f ad       	ldd	r21, Y+63	; 0x3f
+    5b3e:	ad 97       	sbiw	r28, 0x2d	; 45
+    5b40:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    5b44:	1b 01       	movw	r2, r22
+    5b46:	2c 01       	movw	r4, r24
+    5b48:	c8 01       	movw	r24, r16
+    5b4a:	b7 01       	movw	r22, r14
+    5b4c:	a4 01       	movw	r20, r8
+    5b4e:	93 01       	movw	r18, r6
+    5b50:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    5b54:	5b 01       	movw	r10, r22
+    5b56:	6c 01       	movw	r12, r24
+    5b58:	c8 01       	movw	r24, r16
+    5b5a:	b7 01       	movw	r22, r14
+    5b5c:	ad 96       	adiw	r28, 0x2d	; 45
+    5b5e:	2c ad       	ldd	r18, Y+60	; 0x3c
+    5b60:	3d ad       	ldd	r19, Y+61	; 0x3d
+    5b62:	4e ad       	ldd	r20, Y+62	; 0x3e
+    5b64:	5f ad       	ldd	r21, Y+63	; 0x3f
+    5b66:	ad 97       	sbiw	r28, 0x2d	; 45
+    5b68:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    5b6c:	7b 01       	movw	r14, r22
+    5b6e:	8c 01       	movw	r16, r24
+    5b70:	a6 01       	movw	r20, r12
+    5b72:	95 01       	movw	r18, r10
+    5b74:	22 0d       	add	r18, r2
+    5b76:	33 1d       	adc	r19, r3
+    5b78:	44 1d       	adc	r20, r4
+    5b7a:	55 1d       	adc	r21, r5
+    5b7c:	a9 96       	adiw	r28, 0x29	; 41
+    5b7e:	6c ac       	ldd	r6, Y+60	; 0x3c
+    5b80:	7d ac       	ldd	r7, Y+61	; 0x3d
+    5b82:	8e ac       	ldd	r8, Y+62	; 0x3e
+    5b84:	9f ac       	ldd	r9, Y+63	; 0x3f
+    5b86:	a9 97       	sbiw	r28, 0x29	; 41
+    5b88:	c4 01       	movw	r24, r8
+    5b8a:	aa 27       	eor	r26, r26
+    5b8c:	bb 27       	eor	r27, r27
+    5b8e:	28 0f       	add	r18, r24
+    5b90:	39 1f       	adc	r19, r25
+    5b92:	4a 1f       	adc	r20, r26
+    5b94:	5b 1f       	adc	r21, r27
+    5b96:	2a 15       	cp	r18, r10
+    5b98:	3b 05       	cpc	r19, r11
+    5b9a:	4c 05       	cpc	r20, r12
+    5b9c:	5d 05       	cpc	r21, r13
+    5b9e:	48 f4       	brcc	.+18     	; 0x5bb2 <__moddi3+0xdfe>
+    5ba0:	81 2c       	mov	r8, r1
+    5ba2:	91 2c       	mov	r9, r1
+    5ba4:	e1 e0       	ldi	r30, 0x01	; 1
+    5ba6:	ae 2e       	mov	r10, r30
+    5ba8:	b1 2c       	mov	r11, r1
+    5baa:	e8 0c       	add	r14, r8
+    5bac:	f9 1c       	adc	r15, r9
+    5bae:	0a 1d       	adc	r16, r10
+    5bb0:	1b 1d       	adc	r17, r11
+    5bb2:	ca 01       	movw	r24, r20
+    5bb4:	aa 27       	eor	r26, r26
+    5bb6:	bb 27       	eor	r27, r27
+    5bb8:	57 01       	movw	r10, r14
+    5bba:	68 01       	movw	r12, r16
+    5bbc:	a8 0e       	add	r10, r24
+    5bbe:	b9 1e       	adc	r11, r25
+    5bc0:	ca 1e       	adc	r12, r26
+    5bc2:	db 1e       	adc	r13, r27
+    5bc4:	a9 01       	movw	r20, r18
+    5bc6:	33 27       	eor	r19, r19
+    5bc8:	22 27       	eor	r18, r18
+    5bca:	a9 96       	adiw	r28, 0x29	; 41
+    5bcc:	8c ad       	ldd	r24, Y+60	; 0x3c
+    5bce:	9d ad       	ldd	r25, Y+61	; 0x3d
+    5bd0:	ae ad       	ldd	r26, Y+62	; 0x3e
+    5bd2:	bf ad       	ldd	r27, Y+63	; 0x3f
+    5bd4:	a9 97       	sbiw	r28, 0x29	; 41
+    5bd6:	a0 70       	andi	r26, 0x00	; 0
+    5bd8:	b0 70       	andi	r27, 0x00	; 0
+    5bda:	28 0f       	add	r18, r24
+    5bdc:	39 1f       	adc	r19, r25
+    5bde:	4a 1f       	adc	r20, r26
+    5be0:	5b 1f       	adc	r21, r27
+    5be2:	e9 a8       	ldd	r14, Y+49	; 0x31
+    5be4:	fa a8       	ldd	r15, Y+50	; 0x32
+    5be6:	0b a9       	ldd	r16, Y+51	; 0x33
+    5be8:	1c a9       	ldd	r17, Y+52	; 0x34
+    5bea:	ea 14       	cp	r14, r10
+    5bec:	fb 04       	cpc	r15, r11
+    5bee:	0c 05       	cpc	r16, r12
+    5bf0:	1d 05       	cpc	r17, r13
+    5bf2:	70 f0       	brcs	.+28     	; 0x5c10 <__moddi3+0xe5c>
+    5bf4:	ae 14       	cp	r10, r14
+    5bf6:	bf 04       	cpc	r11, r15
+    5bf8:	c0 06       	cpc	r12, r16
+    5bfa:	d1 06       	cpc	r13, r17
+    5bfc:	89 f5       	brne	.+98     	; 0x5c60 <__moddi3+0xeac>
+    5bfe:	6d a9       	ldd	r22, Y+53	; 0x35
+    5c00:	7e a9       	ldd	r23, Y+54	; 0x36
+    5c02:	8f a9       	ldd	r24, Y+55	; 0x37
+    5c04:	98 ad       	ldd	r25, Y+56	; 0x38
+    5c06:	62 17       	cp	r22, r18
+    5c08:	73 07       	cpc	r23, r19
+    5c0a:	84 07       	cpc	r24, r20
+    5c0c:	95 07       	cpc	r25, r21
+    5c0e:	40 f5       	brcc	.+80     	; 0x5c60 <__moddi3+0xeac>
+    5c10:	da 01       	movw	r26, r20
+    5c12:	c9 01       	movw	r24, r18
+    5c14:	21 96       	adiw	r28, 0x01	; 1
+    5c16:	6c ac       	ldd	r6, Y+60	; 0x3c
+    5c18:	7d ac       	ldd	r7, Y+61	; 0x3d
+    5c1a:	8e ac       	ldd	r8, Y+62	; 0x3e
+    5c1c:	9f ac       	ldd	r9, Y+63	; 0x3f
+    5c1e:	21 97       	sbiw	r28, 0x01	; 1
+    5c20:	86 19       	sub	r24, r6
+    5c22:	97 09       	sbc	r25, r7
+    5c24:	a8 09       	sbc	r26, r8
+    5c26:	b9 09       	sbc	r27, r9
+    5c28:	25 96       	adiw	r28, 0x05	; 5
+    5c2a:	ec ac       	ldd	r14, Y+60	; 0x3c
+    5c2c:	fd ac       	ldd	r15, Y+61	; 0x3d
+    5c2e:	0e ad       	ldd	r16, Y+62	; 0x3e
+    5c30:	1f ad       	ldd	r17, Y+63	; 0x3f
+    5c32:	25 97       	sbiw	r28, 0x05	; 5
+    5c34:	ae 18       	sub	r10, r14
+    5c36:	bf 08       	sbc	r11, r15
+    5c38:	c0 0a       	sbc	r12, r16
+    5c3a:	d1 0a       	sbc	r13, r17
+    5c3c:	ee 24       	eor	r14, r14
+    5c3e:	ff 24       	eor	r15, r15
+    5c40:	87 01       	movw	r16, r14
+    5c42:	28 17       	cp	r18, r24
+    5c44:	39 07       	cpc	r19, r25
+    5c46:	4a 07       	cpc	r20, r26
+    5c48:	5b 07       	cpc	r21, r27
+    5c4a:	28 f4       	brcc	.+10     	; 0x5c56 <__moddi3+0xea2>
+    5c4c:	21 e0       	ldi	r18, 0x01	; 1
+    5c4e:	e2 2e       	mov	r14, r18
+    5c50:	f1 2c       	mov	r15, r1
+    5c52:	01 2d       	mov	r16, r1
+    5c54:	11 2d       	mov	r17, r1
+    5c56:	ae 18       	sub	r10, r14
+    5c58:	bf 08       	sbc	r11, r15
+    5c5a:	c0 0a       	sbc	r12, r16
+    5c5c:	d1 0a       	sbc	r13, r17
+    5c5e:	02 c0       	rjmp	.+4      	; 0x5c64 <__moddi3+0xeb0>
+    5c60:	da 01       	movw	r26, r20
+    5c62:	c9 01       	movw	r24, r18
+    5c64:	6d a8       	ldd	r6, Y+53	; 0x35
+    5c66:	7e a8       	ldd	r7, Y+54	; 0x36
+    5c68:	8f a8       	ldd	r8, Y+55	; 0x37
+    5c6a:	98 ac       	ldd	r9, Y+56	; 0x38
+    5c6c:	68 1a       	sub	r6, r24
+    5c6e:	79 0a       	sbc	r7, r25
+    5c70:	8a 0a       	sbc	r8, r26
+    5c72:	9b 0a       	sbc	r9, r27
+    5c74:	09 a9       	ldd	r16, Y+49	; 0x31
+    5c76:	1a a9       	ldd	r17, Y+50	; 0x32
+    5c78:	2b a9       	ldd	r18, Y+51	; 0x33
+    5c7a:	3c a9       	ldd	r19, Y+52	; 0x34
+    5c7c:	0a 19       	sub	r16, r10
+    5c7e:	1b 09       	sbc	r17, r11
+    5c80:	2c 09       	sbc	r18, r12
+    5c82:	3d 09       	sbc	r19, r13
+    5c84:	58 01       	movw	r10, r16
+    5c86:	69 01       	movw	r12, r18
+    5c88:	22 24       	eor	r2, r2
+    5c8a:	33 24       	eor	r3, r3
+    5c8c:	21 01       	movw	r4, r2
+    5c8e:	2d a9       	ldd	r18, Y+53	; 0x35
+    5c90:	3e a9       	ldd	r19, Y+54	; 0x36
+    5c92:	4f a9       	ldd	r20, Y+55	; 0x37
+    5c94:	58 ad       	ldd	r21, Y+56	; 0x38
+    5c96:	26 15       	cp	r18, r6
+    5c98:	37 05       	cpc	r19, r7
+    5c9a:	48 05       	cpc	r20, r8
+    5c9c:	59 05       	cpc	r21, r9
+    5c9e:	28 f4       	brcc	.+10     	; 0x5caa <__moddi3+0xef6>
+    5ca0:	81 e0       	ldi	r24, 0x01	; 1
+    5ca2:	28 2e       	mov	r2, r24
+    5ca4:	31 2c       	mov	r3, r1
+    5ca6:	41 2c       	mov	r4, r1
+    5ca8:	51 2c       	mov	r5, r1
+    5caa:	86 01       	movw	r16, r12
+    5cac:	75 01       	movw	r14, r10
+    5cae:	e2 18       	sub	r14, r2
+    5cb0:	f3 08       	sbc	r15, r3
+    5cb2:	04 09       	sbc	r16, r4
+    5cb4:	15 09       	sbc	r17, r5
+    5cb6:	a8 01       	movw	r20, r16
+    5cb8:	97 01       	movw	r18, r14
+    5cba:	e2 96       	adiw	r28, 0x32	; 50
+    5cbc:	0f ac       	ldd	r0, Y+63	; 0x3f
+    5cbe:	e2 97       	sbiw	r28, 0x32	; 50
+    5cc0:	04 c0       	rjmp	.+8      	; 0x5cca <__moddi3+0xf16>
+    5cc2:	22 0f       	add	r18, r18
+    5cc4:	33 1f       	adc	r19, r19
+    5cc6:	44 1f       	adc	r20, r20
+    5cc8:	55 1f       	adc	r21, r21
+    5cca:	0a 94       	dec	r0
+    5ccc:	d2 f7       	brpl	.-12     	; 0x5cc2 <__moddi3+0xf0e>
+    5cce:	d4 01       	movw	r26, r8
+    5cd0:	c3 01       	movw	r24, r6
+    5cd2:	e3 96       	adiw	r28, 0x33	; 51
+    5cd4:	0f ac       	ldd	r0, Y+63	; 0x3f
+    5cd6:	e3 97       	sbiw	r28, 0x33	; 51
+    5cd8:	04 c0       	rjmp	.+8      	; 0x5ce2 <__moddi3+0xf2e>
+    5cda:	b6 95       	lsr	r27
+    5cdc:	a7 95       	ror	r26
+    5cde:	97 95       	ror	r25
+    5ce0:	87 95       	ror	r24
+    5ce2:	0a 94       	dec	r0
+    5ce4:	d2 f7       	brpl	.-12     	; 0x5cda <__moddi3+0xf26>
+    5ce6:	28 2b       	or	r18, r24
+    5ce8:	39 2b       	or	r19, r25
+    5cea:	4a 2b       	or	r20, r26
+    5cec:	5b 2b       	or	r21, r27
+    5cee:	29 a7       	std	Y+41, r18	; 0x29
+    5cf0:	3a a7       	std	Y+42, r19	; 0x2a
+    5cf2:	4b a7       	std	Y+43, r20	; 0x2b
+    5cf4:	5c a7       	std	Y+44, r21	; 0x2c
+    5cf6:	e3 96       	adiw	r28, 0x33	; 51
+    5cf8:	0f ac       	ldd	r0, Y+63	; 0x3f
+    5cfa:	e3 97       	sbiw	r28, 0x33	; 51
+    5cfc:	04 c0       	rjmp	.+8      	; 0x5d06 <__moddi3+0xf52>
+    5cfe:	16 95       	lsr	r17
+    5d00:	07 95       	ror	r16
+    5d02:	f7 94       	ror	r15
+    5d04:	e7 94       	ror	r14
+    5d06:	0a 94       	dec	r0
+    5d08:	d2 f7       	brpl	.-12     	; 0x5cfe <__moddi3+0xf4a>
+    5d0a:	ed a6       	std	Y+45, r14	; 0x2d
+    5d0c:	fe a6       	std	Y+46, r15	; 0x2e
+    5d0e:	0f a7       	std	Y+47, r16	; 0x2f
+    5d10:	18 ab       	std	Y+48, r17	; 0x30
+    5d12:	29 8b       	std	Y+17, r18	; 0x11
+    5d14:	8a a5       	ldd	r24, Y+42	; 0x2a
+    5d16:	8a 8b       	std	Y+18, r24	; 0x12
+    5d18:	8b a5       	ldd	r24, Y+43	; 0x2b
+    5d1a:	8b 8b       	std	Y+19, r24	; 0x13
+    5d1c:	8c a5       	ldd	r24, Y+44	; 0x2c
+    5d1e:	8c 8b       	std	Y+20, r24	; 0x14
+    5d20:	ed 8a       	std	Y+21, r14	; 0x15
+    5d22:	8e a5       	ldd	r24, Y+46	; 0x2e
+    5d24:	8e 8b       	std	Y+22, r24	; 0x16
+    5d26:	8f a5       	ldd	r24, Y+47	; 0x2f
+    5d28:	8f 8b       	std	Y+23, r24	; 0x17
+    5d2a:	88 a9       	ldd	r24, Y+48	; 0x30
+    5d2c:	88 8f       	std	Y+24, r24	; 0x18
+    5d2e:	e1 96       	adiw	r28, 0x31	; 49
+    5d30:	4c ad       	ldd	r20, Y+60	; 0x3c
+    5d32:	5d ad       	ldd	r21, Y+61	; 0x3d
+    5d34:	6e ad       	ldd	r22, Y+62	; 0x3e
+    5d36:	7f ad       	ldd	r23, Y+63	; 0x3f
+    5d38:	e1 97       	sbiw	r28, 0x31	; 49
+    5d3a:	41 15       	cp	r20, r1
+    5d3c:	51 05       	cpc	r21, r1
+    5d3e:	61 05       	cpc	r22, r1
+    5d40:	71 05       	cpc	r23, r1
+    5d42:	09 f4       	brne	.+2      	; 0x5d46 <__moddi3+0xf92>
+    5d44:	67 c0       	rjmp	.+206    	; 0x5e14 <__moddi3+0x1060>
+    5d46:	89 89       	ldd	r24, Y+17	; 0x11
+    5d48:	2a 89       	ldd	r18, Y+18	; 0x12
+    5d4a:	3b 89       	ldd	r19, Y+19	; 0x13
+    5d4c:	4c 89       	ldd	r20, Y+20	; 0x14
+    5d4e:	5d 89       	ldd	r21, Y+21	; 0x15
+    5d50:	ae 89       	ldd	r26, Y+22	; 0x16
+    5d52:	bf 89       	ldd	r27, Y+23	; 0x17
+    5d54:	18 8d       	ldd	r17, Y+24	; 0x18
+    5d56:	f8 2f       	mov	r31, r24
+    5d58:	f1 95       	neg	r31
+    5d5a:	91 e0       	ldi	r25, 0x01	; 1
+    5d5c:	1f 16       	cp	r1, r31
+    5d5e:	08 f0       	brcs	.+2      	; 0x5d62 <__moddi3+0xfae>
+    5d60:	90 e0       	ldi	r25, 0x00	; 0
+    5d62:	82 2f       	mov	r24, r18
+    5d64:	81 95       	neg	r24
+    5d66:	21 e0       	ldi	r18, 0x01	; 1
+    5d68:	18 16       	cp	r1, r24
+    5d6a:	08 f0       	brcs	.+2      	; 0x5d6e <__moddi3+0xfba>
+    5d6c:	20 e0       	ldi	r18, 0x00	; 0
+    5d6e:	e8 2f       	mov	r30, r24
+    5d70:	e9 1b       	sub	r30, r25
+    5d72:	91 e0       	ldi	r25, 0x01	; 1
+    5d74:	8e 17       	cp	r24, r30
+    5d76:	08 f0       	brcs	.+2      	; 0x5d7a <__moddi3+0xfc6>
+    5d78:	90 e0       	ldi	r25, 0x00	; 0
+    5d7a:	29 2b       	or	r18, r25
+    5d7c:	83 2f       	mov	r24, r19
+    5d7e:	81 95       	neg	r24
+    5d80:	31 e0       	ldi	r19, 0x01	; 1
+    5d82:	18 16       	cp	r1, r24
+    5d84:	08 f0       	brcs	.+2      	; 0x5d88 <__moddi3+0xfd4>
+    5d86:	30 e0       	ldi	r19, 0x00	; 0
+    5d88:	78 2f       	mov	r23, r24
+    5d8a:	72 1b       	sub	r23, r18
+    5d8c:	91 e0       	ldi	r25, 0x01	; 1
+    5d8e:	87 17       	cp	r24, r23
+    5d90:	08 f0       	brcs	.+2      	; 0x5d94 <__moddi3+0xfe0>
+    5d92:	90 e0       	ldi	r25, 0x00	; 0
+    5d94:	39 2b       	or	r19, r25
+    5d96:	84 2f       	mov	r24, r20
+    5d98:	81 95       	neg	r24
+    5d9a:	21 e0       	ldi	r18, 0x01	; 1
+    5d9c:	18 16       	cp	r1, r24
+    5d9e:	08 f0       	brcs	.+2      	; 0x5da2 <__moddi3+0xfee>
+    5da0:	20 e0       	ldi	r18, 0x00	; 0
+    5da2:	68 2f       	mov	r22, r24
+    5da4:	63 1b       	sub	r22, r19
+    5da6:	91 e0       	ldi	r25, 0x01	; 1
+    5da8:	86 17       	cp	r24, r22
+    5daa:	08 f0       	brcs	.+2      	; 0x5dae <__moddi3+0xffa>
+    5dac:	90 e0       	ldi	r25, 0x00	; 0
+    5dae:	29 2b       	or	r18, r25
+    5db0:	85 2f       	mov	r24, r21
+    5db2:	81 95       	neg	r24
+    5db4:	31 e0       	ldi	r19, 0x01	; 1
+    5db6:	18 16       	cp	r1, r24
+    5db8:	08 f0       	brcs	.+2      	; 0x5dbc <__moddi3+0x1008>
+    5dba:	30 e0       	ldi	r19, 0x00	; 0
+    5dbc:	58 2f       	mov	r21, r24
+    5dbe:	52 1b       	sub	r21, r18
+    5dc0:	91 e0       	ldi	r25, 0x01	; 1
+    5dc2:	85 17       	cp	r24, r21
+    5dc4:	08 f0       	brcs	.+2      	; 0x5dc8 <__moddi3+0x1014>
+    5dc6:	90 e0       	ldi	r25, 0x00	; 0
+    5dc8:	39 2b       	or	r19, r25
+    5dca:	8a 2f       	mov	r24, r26
+    5dcc:	81 95       	neg	r24
+    5dce:	21 e0       	ldi	r18, 0x01	; 1
+    5dd0:	18 16       	cp	r1, r24
+    5dd2:	08 f0       	brcs	.+2      	; 0x5dd6 <__moddi3+0x1022>
+    5dd4:	20 e0       	ldi	r18, 0x00	; 0
+    5dd6:	48 2f       	mov	r20, r24
+    5dd8:	43 1b       	sub	r20, r19
+    5dda:	91 e0       	ldi	r25, 0x01	; 1
+    5ddc:	84 17       	cp	r24, r20
+    5dde:	08 f0       	brcs	.+2      	; 0x5de2 <__moddi3+0x102e>
+    5de0:	90 e0       	ldi	r25, 0x00	; 0
+    5de2:	29 2b       	or	r18, r25
+    5de4:	8b 2f       	mov	r24, r27
+    5de6:	81 95       	neg	r24
+    5de8:	91 e0       	ldi	r25, 0x01	; 1
+    5dea:	18 16       	cp	r1, r24
+    5dec:	08 f0       	brcs	.+2      	; 0x5df0 <__moddi3+0x103c>
+    5dee:	90 e0       	ldi	r25, 0x00	; 0
+    5df0:	38 2f       	mov	r19, r24
+    5df2:	32 1b       	sub	r19, r18
+    5df4:	21 e0       	ldi	r18, 0x01	; 1
+    5df6:	83 17       	cp	r24, r19
+    5df8:	08 f0       	brcs	.+2      	; 0x5dfc <__moddi3+0x1048>
+    5dfa:	20 e0       	ldi	r18, 0x00	; 0
+    5dfc:	92 2b       	or	r25, r18
+    5dfe:	81 2f       	mov	r24, r17
+    5e00:	81 95       	neg	r24
+    5e02:	89 1b       	sub	r24, r25
+    5e04:	f9 8b       	std	Y+17, r31	; 0x11
+    5e06:	ea 8b       	std	Y+18, r30	; 0x12
+    5e08:	7b 8b       	std	Y+19, r23	; 0x13
+    5e0a:	6c 8b       	std	Y+20, r22	; 0x14
+    5e0c:	5d 8b       	std	Y+21, r21	; 0x15
+    5e0e:	4e 8b       	std	Y+22, r20	; 0x16
+    5e10:	3f 8b       	std	Y+23, r19	; 0x17
+    5e12:	88 8f       	std	Y+24, r24	; 0x18
+    5e14:	29 89       	ldd	r18, Y+17	; 0x11
+    5e16:	3a 89       	ldd	r19, Y+18	; 0x12
+    5e18:	4b 89       	ldd	r20, Y+19	; 0x13
+    5e1a:	5c 89       	ldd	r21, Y+20	; 0x14
+    5e1c:	6d 89       	ldd	r22, Y+21	; 0x15
+    5e1e:	7e 89       	ldd	r23, Y+22	; 0x16
+    5e20:	8f 89       	ldd	r24, Y+23	; 0x17
+    5e22:	98 8d       	ldd	r25, Y+24	; 0x18
+    5e24:	c9 58       	subi	r28, 0x89	; 137
+    5e26:	df 4f       	sbci	r29, 0xFF	; 255
+    5e28:	e2 e1       	ldi	r30, 0x12	; 18
+    5e2a:	0c 94 b2 32 	jmp	0x6564	; 0x6564 <__epilogue_restores__>
+
+00005e2e <do_rand>:
+        /*packet[16] = num;
+        wl_send_global_packet(SWARM_PACKET_GROUP_ID, 0, packet, length, 0);
+        usb_puts("sent ");
+        usb_puti(num);
+        usb_puts("\r\n");
+        num++;
+    5e2e:	a0 e0       	ldi	r26, 0x00	; 0
+    5e30:	b0 e0       	ldi	r27, 0x00	; 0
+    5e32:	ed e1       	ldi	r30, 0x1D	; 29
+    5e34:	ff e2       	ldi	r31, 0x2F	; 47
+    5e36:	0c 94 9e 32 	jmp	0x653c	; 0x653c <__prologue_saves__+0x10>
+    5e3a:	ec 01       	movw	r28, r24
+    usb_puts("\r\n");
+}*/
+
+    5e3c:	a8 80       	ld	r10, Y
+    5e3e:	b9 80       	ldd	r11, Y+1	; 0x01
+    5e40:	ca 80       	ldd	r12, Y+2	; 0x02
+    5e42:	db 80       	ldd	r13, Y+3	; 0x03
+    5e44:	a1 14       	cp	r10, r1
+    5e46:	b1 04       	cpc	r11, r1
+    5e48:	c1 04       	cpc	r12, r1
+    5e4a:	d1 04       	cpc	r13, r1
+    5e4c:	41 f4       	brne	.+16     	; 0x5e5e <do_rand+0x30>
+    5e4e:	84 e2       	ldi	r24, 0x24	; 36
+    5e50:	a8 2e       	mov	r10, r24
+    5e52:	89 ed       	ldi	r24, 0xD9	; 217
+    5e54:	b8 2e       	mov	r11, r24
+    5e56:	8b e5       	ldi	r24, 0x5B	; 91
+    5e58:	c8 2e       	mov	r12, r24
+    5e5a:	87 e0       	ldi	r24, 0x07	; 7
+    5e5c:	d8 2e       	mov	r13, r24
+    5e5e:	c6 01       	movw	r24, r12
+    5e60:	b5 01       	movw	r22, r10
+    5e62:	2d e1       	ldi	r18, 0x1D	; 29
+    5e64:	33 ef       	ldi	r19, 0xF3	; 243
+    5e66:	41 e0       	ldi	r20, 0x01	; 1
+    5e68:	50 e0       	ldi	r21, 0x00	; 0
+    5e6a:	0e 94 26 32 	call	0x644c	; 0x644c <__divmodsi4>
+    5e6e:	27 ea       	ldi	r18, 0xA7	; 167
+    5e70:	31 e4       	ldi	r19, 0x41	; 65
+    5e72:	40 e0       	ldi	r20, 0x00	; 0
+    5e74:	50 e0       	ldi	r21, 0x00	; 0
+    5e76:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    5e7a:	7b 01       	movw	r14, r22
+    5e7c:	8c 01       	movw	r16, r24
+    5e7e:	c6 01       	movw	r24, r12
+    5e80:	b5 01       	movw	r22, r10
+    5e82:	2d e1       	ldi	r18, 0x1D	; 29
+    5e84:	33 ef       	ldi	r19, 0xF3	; 243
+    5e86:	41 e0       	ldi	r20, 0x01	; 1
+    5e88:	50 e0       	ldi	r21, 0x00	; 0
+    5e8a:	0e 94 26 32 	call	0x644c	; 0x644c <__divmodsi4>
+    5e8e:	ca 01       	movw	r24, r20
+    5e90:	b9 01       	movw	r22, r18
+    5e92:	2c ee       	ldi	r18, 0xEC	; 236
+    5e94:	34 ef       	ldi	r19, 0xF4	; 244
+    5e96:	4f ef       	ldi	r20, 0xFF	; 255
+    5e98:	5f ef       	ldi	r21, 0xFF	; 255
+    5e9a:	0e 94 41 32 	call	0x6482	; 0x6482 <__mulsi3>
+    5e9e:	6e 0d       	add	r22, r14
+    5ea0:	7f 1d       	adc	r23, r15
+    5ea2:	80 1f       	adc	r24, r16
+    5ea4:	91 1f       	adc	r25, r17
+    5ea6:	97 ff       	sbrs	r25, 7
+    5ea8:	04 c0       	rjmp	.+8      	; 0x5eb2 <do_rand+0x84>
+    5eaa:	61 50       	subi	r22, 0x01	; 1
+    5eac:	70 40       	sbci	r23, 0x00	; 0
+    5eae:	80 40       	sbci	r24, 0x00	; 0
+    5eb0:	90 48       	sbci	r25, 0x80	; 128
+    5eb2:	68 83       	st	Y, r22
+    5eb4:	79 83       	std	Y+1, r23	; 0x01
+    5eb6:	8a 83       	std	Y+2, r24	; 0x02
+    5eb8:	9b 83       	std	Y+3, r25	; 0x03
+    5eba:	9b 01       	movw	r18, r22
+    5ebc:	3f 77       	andi	r19, 0x7F	; 127
+    5ebe:	c9 01       	movw	r24, r18
+    5ec0:	cd b7       	in	r28, 0x3d	; 61
+    5ec2:	de b7       	in	r29, 0x3e	; 62
+    5ec4:	ea e0       	ldi	r30, 0x0A	; 10
+    5ec6:	0c 94 ba 32 	jmp	0x6574	; 0x6574 <__epilogue_restores__+0x10>
+
+00005eca <rand_r>:
+    5eca:	0e 94 17 2f 	call	0x5e2e	; 0x5e2e <do_rand>
+    5ece:	08 95       	ret
+
+00005ed0 <rand>:
+    5ed0:	87 e6       	ldi	r24, 0x67	; 103
+    5ed2:	95 e0       	ldi	r25, 0x05	; 5
+    5ed4:	0e 94 17 2f 	call	0x5e2e	; 0x5e2e <do_rand>
+    5ed8:	08 95       	ret
+
+00005eda <srand>:
+    5eda:	a0 e0       	ldi	r26, 0x00	; 0
+    5edc:	b0 e0       	ldi	r27, 0x00	; 0
+    5ede:	80 93 67 05 	sts	0x0567, r24
+    5ee2:	90 93 68 05 	sts	0x0568, r25
+    5ee6:	a0 93 69 05 	sts	0x0569, r26
+    5eea:	b0 93 6a 05 	sts	0x056A, r27
+    5eee:	08 95       	ret
+
+00005ef0 <memcpy_P>:
+    5ef0:	fb 01       	movw	r30, r22
+    5ef2:	dc 01       	movw	r26, r24
+    5ef4:	02 c0       	rjmp	.+4      	; 0x5efa <memcpy_P+0xa>
+    5ef6:	05 90       	lpm	r0, Z+
+    5ef8:	0d 92       	st	X+, r0
+    5efa:	41 50       	subi	r20, 0x01	; 1
+    5efc:	50 40       	sbci	r21, 0x00	; 0
+    5efe:	d8 f7       	brcc	.-10     	; 0x5ef6 <memcpy_P+0x6>
+    5f00:	08 95       	ret
+
+00005f02 <printf>:
+
+    int num = 0;*/
+
+    while (1)
+    {
+	    wl_do();
+    5f02:	a0 e0       	ldi	r26, 0x00	; 0
+    5f04:	b0 e0       	ldi	r27, 0x00	; 0
+    5f06:	e7 e8       	ldi	r30, 0x87	; 135
+    5f08:	ff e2       	ldi	r31, 0x2F	; 47
+    5f0a:	0c 94 a6 32 	jmp	0x654c	; 0x654c <__prologue_saves__+0x20>
+    5f0e:	fe 01       	movw	r30, r28
+    5f10:	35 96       	adiw	r30, 0x05	; 5
+    5f12:	61 91       	ld	r22, Z+
+    5f14:	71 91       	ld	r23, Z+
+        /*packet[16] = num;
+        wl_send_global_packet(SWARM_PACKET_GROUP_ID, 0, packet, length, 0);
+        usb_puts("sent ");
+        usb_puti(num);
+        usb_puts("\r\n");
+    5f16:	80 91 80 0a 	lds	r24, 0x0A80
+    5f1a:	90 91 81 0a 	lds	r25, 0x0A81
+    5f1e:	af 01       	movw	r20, r30
+    5f20:	0e 94 96 2f 	call	0x5f2c	; 0x5f2c <vfprintf>
+        num++;
+        delay_ms(50);*/
+    }
+}
+    5f24:	20 96       	adiw	r28, 0x00	; 0
+    5f26:	e2 e0       	ldi	r30, 0x02	; 2
+    5f28:	0c 94 c2 32 	jmp	0x6584	; 0x6584 <__epilogue_restores__+0x20>
+
+00005f2c <vfprintf>:
+    5f2c:	ab e0       	ldi	r26, 0x0B	; 11
+    5f2e:	b0 e0       	ldi	r27, 0x00	; 0
+    5f30:	ec e9       	ldi	r30, 0x9C	; 156
+    5f32:	ff e2       	ldi	r31, 0x2F	; 47
+    5f34:	0c 94 96 32 	jmp	0x652c	; 0x652c <__prologue_saves__>
+    5f38:	3c 01       	movw	r6, r24
+    5f3a:	2b 01       	movw	r4, r22
+    5f3c:	5a 01       	movw	r10, r20
+    5f3e:	fc 01       	movw	r30, r24
+    5f40:	17 82       	std	Z+7, r1	; 0x07
+    5f42:	16 82       	std	Z+6, r1	; 0x06
+    5f44:	83 81       	ldd	r24, Z+3	; 0x03
+    5f46:	81 fd       	sbrc	r24, 1
+    5f48:	03 c0       	rjmp	.+6      	; 0x5f50 <vfprintf+0x24>
+    5f4a:	6f ef       	ldi	r22, 0xFF	; 255
+    5f4c:	7f ef       	ldi	r23, 0xFF	; 255
+    5f4e:	c6 c1       	rjmp	.+908    	; 0x62dc <vfprintf+0x3b0>
+    5f50:	9a e0       	ldi	r25, 0x0A	; 10
+    5f52:	89 2e       	mov	r8, r25
+    5f54:	1e 01       	movw	r2, r28
+    5f56:	08 94       	sec
+    5f58:	21 1c       	adc	r2, r1
+    5f5a:	31 1c       	adc	r3, r1
+    5f5c:	f3 01       	movw	r30, r6
+    5f5e:	23 81       	ldd	r18, Z+3	; 0x03
+    5f60:	f2 01       	movw	r30, r4
+    5f62:	23 fd       	sbrc	r18, 3
+    5f64:	85 91       	lpm	r24, Z+
+    5f66:	23 ff       	sbrs	r18, 3
+    5f68:	81 91       	ld	r24, Z+
+    5f6a:	2f 01       	movw	r4, r30
+    5f6c:	88 23       	and	r24, r24
+    5f6e:	09 f4       	brne	.+2      	; 0x5f72 <vfprintf+0x46>
+    5f70:	b2 c1       	rjmp	.+868    	; 0x62d6 <vfprintf+0x3aa>
+    5f72:	85 32       	cpi	r24, 0x25	; 37
+    5f74:	39 f4       	brne	.+14     	; 0x5f84 <vfprintf+0x58>
+    5f76:	23 fd       	sbrc	r18, 3
+    5f78:	85 91       	lpm	r24, Z+
+    5f7a:	23 ff       	sbrs	r18, 3
+    5f7c:	81 91       	ld	r24, Z+
+    5f7e:	2f 01       	movw	r4, r30
+    5f80:	85 32       	cpi	r24, 0x25	; 37
+    5f82:	29 f4       	brne	.+10     	; 0x5f8e <vfprintf+0x62>
+    5f84:	90 e0       	ldi	r25, 0x00	; 0
+    5f86:	b3 01       	movw	r22, r6
+    5f88:	0e 94 89 31 	call	0x6312	; 0x6312 <fputc>
+    5f8c:	e7 cf       	rjmp	.-50     	; 0x5f5c <vfprintf+0x30>
+    5f8e:	98 2f       	mov	r25, r24
+    5f90:	ff 24       	eor	r15, r15
+    5f92:	ee 24       	eor	r14, r14
+    5f94:	99 24       	eor	r9, r9
+    5f96:	ff e1       	ldi	r31, 0x1F	; 31
+    5f98:	ff 15       	cp	r31, r15
+    5f9a:	d0 f0       	brcs	.+52     	; 0x5fd0 <vfprintf+0xa4>
+    5f9c:	9b 32       	cpi	r25, 0x2B	; 43
+    5f9e:	69 f0       	breq	.+26     	; 0x5fba <vfprintf+0x8e>
+    5fa0:	9c 32       	cpi	r25, 0x2C	; 44
+    5fa2:	28 f4       	brcc	.+10     	; 0x5fae <vfprintf+0x82>
+    5fa4:	90 32       	cpi	r25, 0x20	; 32
+    5fa6:	59 f0       	breq	.+22     	; 0x5fbe <vfprintf+0x92>
+    5fa8:	93 32       	cpi	r25, 0x23	; 35
+    5faa:	91 f4       	brne	.+36     	; 0x5fd0 <vfprintf+0xa4>
+    5fac:	0e c0       	rjmp	.+28     	; 0x5fca <vfprintf+0x9e>
+    5fae:	9d 32       	cpi	r25, 0x2D	; 45
+    5fb0:	49 f0       	breq	.+18     	; 0x5fc4 <vfprintf+0x98>
+    5fb2:	90 33       	cpi	r25, 0x30	; 48
+    5fb4:	69 f4       	brne	.+26     	; 0x5fd0 <vfprintf+0xa4>
+    5fb6:	41 e0       	ldi	r20, 0x01	; 1
+    5fb8:	24 c0       	rjmp	.+72     	; 0x6002 <vfprintf+0xd6>
+    5fba:	52 e0       	ldi	r21, 0x02	; 2
+    5fbc:	f5 2a       	or	r15, r21
+    5fbe:	84 e0       	ldi	r24, 0x04	; 4
+    5fc0:	f8 2a       	or	r15, r24
+    5fc2:	28 c0       	rjmp	.+80     	; 0x6014 <vfprintf+0xe8>
+    5fc4:	98 e0       	ldi	r25, 0x08	; 8
+    5fc6:	f9 2a       	or	r15, r25
+    5fc8:	25 c0       	rjmp	.+74     	; 0x6014 <vfprintf+0xe8>
+    5fca:	e0 e1       	ldi	r30, 0x10	; 16
+    5fcc:	fe 2a       	or	r15, r30
+    5fce:	22 c0       	rjmp	.+68     	; 0x6014 <vfprintf+0xe8>
+    5fd0:	f7 fc       	sbrc	r15, 7
+    5fd2:	29 c0       	rjmp	.+82     	; 0x6026 <vfprintf+0xfa>
+    5fd4:	89 2f       	mov	r24, r25
+    5fd6:	80 53       	subi	r24, 0x30	; 48
+    5fd8:	8a 30       	cpi	r24, 0x0A	; 10
+    5fda:	70 f4       	brcc	.+28     	; 0x5ff8 <vfprintf+0xcc>
+    5fdc:	f6 fe       	sbrs	r15, 6
+    5fde:	05 c0       	rjmp	.+10     	; 0x5fea <vfprintf+0xbe>
+    5fe0:	98 9c       	mul	r9, r8
+    5fe2:	90 2c       	mov	r9, r0
+    5fe4:	11 24       	eor	r1, r1
+    5fe6:	98 0e       	add	r9, r24
+    5fe8:	15 c0       	rjmp	.+42     	; 0x6014 <vfprintf+0xe8>
+    5fea:	e8 9c       	mul	r14, r8
+    5fec:	e0 2c       	mov	r14, r0
+    5fee:	11 24       	eor	r1, r1
+    5ff0:	e8 0e       	add	r14, r24
+    5ff2:	f0 e2       	ldi	r31, 0x20	; 32
+    5ff4:	ff 2a       	or	r15, r31
+    5ff6:	0e c0       	rjmp	.+28     	; 0x6014 <vfprintf+0xe8>
+    5ff8:	9e 32       	cpi	r25, 0x2E	; 46
+    5ffa:	29 f4       	brne	.+10     	; 0x6006 <vfprintf+0xda>
+    5ffc:	f6 fc       	sbrc	r15, 6
+    5ffe:	6b c1       	rjmp	.+726    	; 0x62d6 <vfprintf+0x3aa>
+    6000:	40 e4       	ldi	r20, 0x40	; 64
+    6002:	f4 2a       	or	r15, r20
+    6004:	07 c0       	rjmp	.+14     	; 0x6014 <vfprintf+0xe8>
+    6006:	9c 36       	cpi	r25, 0x6C	; 108
+    6008:	19 f4       	brne	.+6      	; 0x6010 <vfprintf+0xe4>
+    600a:	50 e8       	ldi	r21, 0x80	; 128
+    600c:	f5 2a       	or	r15, r21
+    600e:	02 c0       	rjmp	.+4      	; 0x6014 <vfprintf+0xe8>
+    6010:	98 36       	cpi	r25, 0x68	; 104
+    6012:	49 f4       	brne	.+18     	; 0x6026 <vfprintf+0xfa>
+    6014:	f2 01       	movw	r30, r4
+    6016:	23 fd       	sbrc	r18, 3
+    6018:	95 91       	lpm	r25, Z+
+    601a:	23 ff       	sbrs	r18, 3
+    601c:	91 91       	ld	r25, Z+
+    601e:	2f 01       	movw	r4, r30
+    6020:	99 23       	and	r25, r25
+    6022:	09 f0       	breq	.+2      	; 0x6026 <vfprintf+0xfa>
+    6024:	b8 cf       	rjmp	.-144    	; 0x5f96 <vfprintf+0x6a>
+    6026:	89 2f       	mov	r24, r25
+    6028:	85 54       	subi	r24, 0x45	; 69
+    602a:	83 30       	cpi	r24, 0x03	; 3
+    602c:	18 f0       	brcs	.+6      	; 0x6034 <vfprintf+0x108>
+    602e:	80 52       	subi	r24, 0x20	; 32
+    6030:	83 30       	cpi	r24, 0x03	; 3
+    6032:	38 f4       	brcc	.+14     	; 0x6042 <vfprintf+0x116>
+    6034:	44 e0       	ldi	r20, 0x04	; 4
+    6036:	50 e0       	ldi	r21, 0x00	; 0
+    6038:	a4 0e       	add	r10, r20
+    603a:	b5 1e       	adc	r11, r21
+    603c:	5f e3       	ldi	r21, 0x3F	; 63
+    603e:	59 83       	std	Y+1, r21	; 0x01
+    6040:	0f c0       	rjmp	.+30     	; 0x6060 <vfprintf+0x134>
+    6042:	93 36       	cpi	r25, 0x63	; 99
+    6044:	31 f0       	breq	.+12     	; 0x6052 <vfprintf+0x126>
+    6046:	93 37       	cpi	r25, 0x73	; 115
+    6048:	79 f0       	breq	.+30     	; 0x6068 <vfprintf+0x13c>
+    604a:	93 35       	cpi	r25, 0x53	; 83
+    604c:	09 f0       	breq	.+2      	; 0x6050 <vfprintf+0x124>
+    604e:	56 c0       	rjmp	.+172    	; 0x60fc <vfprintf+0x1d0>
+    6050:	20 c0       	rjmp	.+64     	; 0x6092 <vfprintf+0x166>
+    6052:	f5 01       	movw	r30, r10
+    6054:	80 81       	ld	r24, Z
+    6056:	89 83       	std	Y+1, r24	; 0x01
+    6058:	42 e0       	ldi	r20, 0x02	; 2
+    605a:	50 e0       	ldi	r21, 0x00	; 0
+    605c:	a4 0e       	add	r10, r20
+    605e:	b5 1e       	adc	r11, r21
+    6060:	61 01       	movw	r12, r2
+    6062:	01 e0       	ldi	r16, 0x01	; 1
+    6064:	10 e0       	ldi	r17, 0x00	; 0
+    6066:	12 c0       	rjmp	.+36     	; 0x608c <vfprintf+0x160>
+    6068:	f5 01       	movw	r30, r10
+    606a:	c0 80       	ld	r12, Z
+    606c:	d1 80       	ldd	r13, Z+1	; 0x01
+    606e:	f6 fc       	sbrc	r15, 6
+    6070:	03 c0       	rjmp	.+6      	; 0x6078 <vfprintf+0x14c>
+    6072:	6f ef       	ldi	r22, 0xFF	; 255
+    6074:	7f ef       	ldi	r23, 0xFF	; 255
+    6076:	02 c0       	rjmp	.+4      	; 0x607c <vfprintf+0x150>
+    6078:	69 2d       	mov	r22, r9
+    607a:	70 e0       	ldi	r23, 0x00	; 0
+    607c:	42 e0       	ldi	r20, 0x02	; 2
+    607e:	50 e0       	ldi	r21, 0x00	; 0
+    6080:	a4 0e       	add	r10, r20
+    6082:	b5 1e       	adc	r11, r21
+    6084:	c6 01       	movw	r24, r12
+    6086:	0e 94 7e 31 	call	0x62fc	; 0x62fc <strnlen>
+    608a:	8c 01       	movw	r16, r24
+    608c:	5f e7       	ldi	r21, 0x7F	; 127
+    608e:	f5 22       	and	r15, r21
+    6090:	14 c0       	rjmp	.+40     	; 0x60ba <vfprintf+0x18e>
+    6092:	f5 01       	movw	r30, r10
+    6094:	c0 80       	ld	r12, Z
+    6096:	d1 80       	ldd	r13, Z+1	; 0x01
+    6098:	f6 fc       	sbrc	r15, 6
+    609a:	03 c0       	rjmp	.+6      	; 0x60a2 <vfprintf+0x176>
+    609c:	6f ef       	ldi	r22, 0xFF	; 255
+    609e:	7f ef       	ldi	r23, 0xFF	; 255
+    60a0:	02 c0       	rjmp	.+4      	; 0x60a6 <vfprintf+0x17a>
+    60a2:	69 2d       	mov	r22, r9
+    60a4:	70 e0       	ldi	r23, 0x00	; 0
+    60a6:	42 e0       	ldi	r20, 0x02	; 2
+    60a8:	50 e0       	ldi	r21, 0x00	; 0
+    60aa:	a4 0e       	add	r10, r20
+    60ac:	b5 1e       	adc	r11, r21
+    60ae:	c6 01       	movw	r24, r12
+    60b0:	0e 94 73 31 	call	0x62e6	; 0x62e6 <strnlen_P>
+    60b4:	8c 01       	movw	r16, r24
+    60b6:	50 e8       	ldi	r21, 0x80	; 128
+    60b8:	f5 2a       	or	r15, r21
+    60ba:	f3 fe       	sbrs	r15, 3
+    60bc:	07 c0       	rjmp	.+14     	; 0x60cc <vfprintf+0x1a0>
+    60be:	1a c0       	rjmp	.+52     	; 0x60f4 <vfprintf+0x1c8>
+    60c0:	80 e2       	ldi	r24, 0x20	; 32
+    60c2:	90 e0       	ldi	r25, 0x00	; 0
+    60c4:	b3 01       	movw	r22, r6
+    60c6:	0e 94 89 31 	call	0x6312	; 0x6312 <fputc>
+    60ca:	ea 94       	dec	r14
+    60cc:	8e 2d       	mov	r24, r14
+    60ce:	90 e0       	ldi	r25, 0x00	; 0
+    60d0:	08 17       	cp	r16, r24
+    60d2:	19 07       	cpc	r17, r25
+    60d4:	a8 f3       	brcs	.-22     	; 0x60c0 <vfprintf+0x194>
+    60d6:	0e c0       	rjmp	.+28     	; 0x60f4 <vfprintf+0x1c8>
+    60d8:	f6 01       	movw	r30, r12
+    60da:	f7 fc       	sbrc	r15, 7
+    60dc:	85 91       	lpm	r24, Z+
+    60de:	f7 fe       	sbrs	r15, 7
+    60e0:	81 91       	ld	r24, Z+
+    60e2:	6f 01       	movw	r12, r30
+    60e4:	90 e0       	ldi	r25, 0x00	; 0
+    60e6:	b3 01       	movw	r22, r6
+    60e8:	0e 94 89 31 	call	0x6312	; 0x6312 <fputc>
+    60ec:	e1 10       	cpse	r14, r1
+    60ee:	ea 94       	dec	r14
+    60f0:	01 50       	subi	r16, 0x01	; 1
+    60f2:	10 40       	sbci	r17, 0x00	; 0
+    60f4:	01 15       	cp	r16, r1
+    60f6:	11 05       	cpc	r17, r1
+    60f8:	79 f7       	brne	.-34     	; 0x60d8 <vfprintf+0x1ac>
+    60fa:	ea c0       	rjmp	.+468    	; 0x62d0 <vfprintf+0x3a4>
+    60fc:	94 36       	cpi	r25, 0x64	; 100
+    60fe:	11 f0       	breq	.+4      	; 0x6104 <vfprintf+0x1d8>
+    6100:	99 36       	cpi	r25, 0x69	; 105
+    6102:	69 f5       	brne	.+90     	; 0x615e <vfprintf+0x232>
+    6104:	f7 fe       	sbrs	r15, 7
+    6106:	08 c0       	rjmp	.+16     	; 0x6118 <vfprintf+0x1ec>
+    6108:	f5 01       	movw	r30, r10
+    610a:	20 81       	ld	r18, Z
+    610c:	31 81       	ldd	r19, Z+1	; 0x01
+    610e:	42 81       	ldd	r20, Z+2	; 0x02
+    6110:	53 81       	ldd	r21, Z+3	; 0x03
+    6112:	84 e0       	ldi	r24, 0x04	; 4
+    6114:	90 e0       	ldi	r25, 0x00	; 0
+    6116:	0a c0       	rjmp	.+20     	; 0x612c <vfprintf+0x200>
+    6118:	f5 01       	movw	r30, r10
+    611a:	80 81       	ld	r24, Z
+    611c:	91 81       	ldd	r25, Z+1	; 0x01
+    611e:	9c 01       	movw	r18, r24
+    6120:	44 27       	eor	r20, r20
+    6122:	37 fd       	sbrc	r19, 7
+    6124:	40 95       	com	r20
+    6126:	54 2f       	mov	r21, r20
+    6128:	82 e0       	ldi	r24, 0x02	; 2
+    612a:	90 e0       	ldi	r25, 0x00	; 0
+    612c:	a8 0e       	add	r10, r24
+    612e:	b9 1e       	adc	r11, r25
+    6130:	9f e6       	ldi	r25, 0x6F	; 111
+    6132:	f9 22       	and	r15, r25
+    6134:	57 ff       	sbrs	r21, 7
+    6136:	09 c0       	rjmp	.+18     	; 0x614a <vfprintf+0x21e>
+    6138:	50 95       	com	r21
+    613a:	40 95       	com	r20
+    613c:	30 95       	com	r19
+    613e:	21 95       	neg	r18
+    6140:	3f 4f       	sbci	r19, 0xFF	; 255
+    6142:	4f 4f       	sbci	r20, 0xFF	; 255
+    6144:	5f 4f       	sbci	r21, 0xFF	; 255
+    6146:	e0 e8       	ldi	r30, 0x80	; 128
+    6148:	fe 2a       	or	r15, r30
+    614a:	ca 01       	movw	r24, r20
+    614c:	b9 01       	movw	r22, r18
+    614e:	a1 01       	movw	r20, r2
+    6150:	2a e0       	ldi	r18, 0x0A	; 10
+    6152:	30 e0       	ldi	r19, 0x00	; 0
+    6154:	0e 94 b5 31 	call	0x636a	; 0x636a <__ultoa_invert>
+    6158:	d8 2e       	mov	r13, r24
+    615a:	d2 18       	sub	r13, r2
+    615c:	40 c0       	rjmp	.+128    	; 0x61de <vfprintf+0x2b2>
+    615e:	95 37       	cpi	r25, 0x75	; 117
+    6160:	29 f4       	brne	.+10     	; 0x616c <vfprintf+0x240>
+    6162:	1f 2d       	mov	r17, r15
+    6164:	1f 7e       	andi	r17, 0xEF	; 239
+    6166:	2a e0       	ldi	r18, 0x0A	; 10
+    6168:	30 e0       	ldi	r19, 0x00	; 0
+    616a:	1d c0       	rjmp	.+58     	; 0x61a6 <vfprintf+0x27a>
+    616c:	1f 2d       	mov	r17, r15
+    616e:	19 7f       	andi	r17, 0xF9	; 249
+    6170:	9f 36       	cpi	r25, 0x6F	; 111
+    6172:	61 f0       	breq	.+24     	; 0x618c <vfprintf+0x260>
+    6174:	90 37       	cpi	r25, 0x70	; 112
+    6176:	20 f4       	brcc	.+8      	; 0x6180 <vfprintf+0x254>
+    6178:	98 35       	cpi	r25, 0x58	; 88
+    617a:	09 f0       	breq	.+2      	; 0x617e <vfprintf+0x252>
+    617c:	ac c0       	rjmp	.+344    	; 0x62d6 <vfprintf+0x3aa>
+    617e:	0f c0       	rjmp	.+30     	; 0x619e <vfprintf+0x272>
+    6180:	90 37       	cpi	r25, 0x70	; 112
+    6182:	39 f0       	breq	.+14     	; 0x6192 <vfprintf+0x266>
+    6184:	98 37       	cpi	r25, 0x78	; 120
+    6186:	09 f0       	breq	.+2      	; 0x618a <vfprintf+0x25e>
+    6188:	a6 c0       	rjmp	.+332    	; 0x62d6 <vfprintf+0x3aa>
+    618a:	04 c0       	rjmp	.+8      	; 0x6194 <vfprintf+0x268>
+    618c:	28 e0       	ldi	r18, 0x08	; 8
+    618e:	30 e0       	ldi	r19, 0x00	; 0
+    6190:	0a c0       	rjmp	.+20     	; 0x61a6 <vfprintf+0x27a>
+    6192:	10 61       	ori	r17, 0x10	; 16
+    6194:	14 fd       	sbrc	r17, 4
+    6196:	14 60       	ori	r17, 0x04	; 4
+    6198:	20 e1       	ldi	r18, 0x10	; 16
+    619a:	30 e0       	ldi	r19, 0x00	; 0
+    619c:	04 c0       	rjmp	.+8      	; 0x61a6 <vfprintf+0x27a>
+    619e:	14 fd       	sbrc	r17, 4
+    61a0:	16 60       	ori	r17, 0x06	; 6
+    61a2:	20 e1       	ldi	r18, 0x10	; 16
+    61a4:	32 e0       	ldi	r19, 0x02	; 2
+    61a6:	17 ff       	sbrs	r17, 7
+    61a8:	08 c0       	rjmp	.+16     	; 0x61ba <vfprintf+0x28e>
+    61aa:	f5 01       	movw	r30, r10
+    61ac:	60 81       	ld	r22, Z
+    61ae:	71 81       	ldd	r23, Z+1	; 0x01
+    61b0:	82 81       	ldd	r24, Z+2	; 0x02
+    61b2:	93 81       	ldd	r25, Z+3	; 0x03
+    61b4:	44 e0       	ldi	r20, 0x04	; 4
+    61b6:	50 e0       	ldi	r21, 0x00	; 0
+    61b8:	08 c0       	rjmp	.+16     	; 0x61ca <vfprintf+0x29e>
+    61ba:	f5 01       	movw	r30, r10
+    61bc:	80 81       	ld	r24, Z
+    61be:	91 81       	ldd	r25, Z+1	; 0x01
+    61c0:	bc 01       	movw	r22, r24
+    61c2:	80 e0       	ldi	r24, 0x00	; 0
+    61c4:	90 e0       	ldi	r25, 0x00	; 0
+    61c6:	42 e0       	ldi	r20, 0x02	; 2
+    61c8:	50 e0       	ldi	r21, 0x00	; 0
+    61ca:	a4 0e       	add	r10, r20
+    61cc:	b5 1e       	adc	r11, r21
+    61ce:	a1 01       	movw	r20, r2
+    61d0:	0e 94 b5 31 	call	0x636a	; 0x636a <__ultoa_invert>
+    61d4:	d8 2e       	mov	r13, r24
+    61d6:	d2 18       	sub	r13, r2
+    61d8:	8f e7       	ldi	r24, 0x7F	; 127
+    61da:	f8 2e       	mov	r15, r24
+    61dc:	f1 22       	and	r15, r17
+    61de:	f6 fe       	sbrs	r15, 6
+    61e0:	0b c0       	rjmp	.+22     	; 0x61f8 <vfprintf+0x2cc>
+    61e2:	5e ef       	ldi	r21, 0xFE	; 254
+    61e4:	f5 22       	and	r15, r21
+    61e6:	d9 14       	cp	r13, r9
+    61e8:	38 f4       	brcc	.+14     	; 0x61f8 <vfprintf+0x2cc>
+    61ea:	f4 fe       	sbrs	r15, 4
+    61ec:	07 c0       	rjmp	.+14     	; 0x61fc <vfprintf+0x2d0>
+    61ee:	f2 fc       	sbrc	r15, 2
+    61f0:	05 c0       	rjmp	.+10     	; 0x61fc <vfprintf+0x2d0>
+    61f2:	8f ee       	ldi	r24, 0xEF	; 239
+    61f4:	f8 22       	and	r15, r24
+    61f6:	02 c0       	rjmp	.+4      	; 0x61fc <vfprintf+0x2d0>
+    61f8:	1d 2d       	mov	r17, r13
+    61fa:	01 c0       	rjmp	.+2      	; 0x61fe <vfprintf+0x2d2>
+    61fc:	19 2d       	mov	r17, r9
+    61fe:	f4 fe       	sbrs	r15, 4
+    6200:	0d c0       	rjmp	.+26     	; 0x621c <vfprintf+0x2f0>
+    6202:	fe 01       	movw	r30, r28
+    6204:	ed 0d       	add	r30, r13
+    6206:	f1 1d       	adc	r31, r1
+    6208:	80 81       	ld	r24, Z
+    620a:	80 33       	cpi	r24, 0x30	; 48
+    620c:	19 f4       	brne	.+6      	; 0x6214 <vfprintf+0x2e8>
+    620e:	99 ee       	ldi	r25, 0xE9	; 233
+    6210:	f9 22       	and	r15, r25
+    6212:	08 c0       	rjmp	.+16     	; 0x6224 <vfprintf+0x2f8>
+    6214:	1f 5f       	subi	r17, 0xFF	; 255
+    6216:	f2 fe       	sbrs	r15, 2
+    6218:	05 c0       	rjmp	.+10     	; 0x6224 <vfprintf+0x2f8>
+    621a:	03 c0       	rjmp	.+6      	; 0x6222 <vfprintf+0x2f6>
+    621c:	8f 2d       	mov	r24, r15
+    621e:	86 78       	andi	r24, 0x86	; 134
+    6220:	09 f0       	breq	.+2      	; 0x6224 <vfprintf+0x2f8>
+    6222:	1f 5f       	subi	r17, 0xFF	; 255
+    6224:	0f 2d       	mov	r16, r15
+    6226:	f3 fc       	sbrc	r15, 3
+    6228:	14 c0       	rjmp	.+40     	; 0x6252 <vfprintf+0x326>
+    622a:	f0 fe       	sbrs	r15, 0
+    622c:	0f c0       	rjmp	.+30     	; 0x624c <vfprintf+0x320>
+    622e:	1e 15       	cp	r17, r14
+    6230:	10 f0       	brcs	.+4      	; 0x6236 <vfprintf+0x30a>
+    6232:	9d 2c       	mov	r9, r13
+    6234:	0b c0       	rjmp	.+22     	; 0x624c <vfprintf+0x320>
+    6236:	9d 2c       	mov	r9, r13
+    6238:	9e 0c       	add	r9, r14
+    623a:	91 1a       	sub	r9, r17
+    623c:	1e 2d       	mov	r17, r14
+    623e:	06 c0       	rjmp	.+12     	; 0x624c <vfprintf+0x320>
+    6240:	80 e2       	ldi	r24, 0x20	; 32
+    6242:	90 e0       	ldi	r25, 0x00	; 0
+    6244:	b3 01       	movw	r22, r6
+    6246:	0e 94 89 31 	call	0x6312	; 0x6312 <fputc>
+    624a:	1f 5f       	subi	r17, 0xFF	; 255
+    624c:	1e 15       	cp	r17, r14
+    624e:	c0 f3       	brcs	.-16     	; 0x6240 <vfprintf+0x314>
+    6250:	04 c0       	rjmp	.+8      	; 0x625a <vfprintf+0x32e>
+    6252:	1e 15       	cp	r17, r14
+    6254:	10 f4       	brcc	.+4      	; 0x625a <vfprintf+0x32e>
+    6256:	e1 1a       	sub	r14, r17
+    6258:	01 c0       	rjmp	.+2      	; 0x625c <vfprintf+0x330>
+    625a:	ee 24       	eor	r14, r14
+    625c:	04 ff       	sbrs	r16, 4
+    625e:	0f c0       	rjmp	.+30     	; 0x627e <vfprintf+0x352>
+    6260:	80 e3       	ldi	r24, 0x30	; 48
+    6262:	90 e0       	ldi	r25, 0x00	; 0
+    6264:	b3 01       	movw	r22, r6
+    6266:	0e 94 89 31 	call	0x6312	; 0x6312 <fputc>
+    626a:	02 ff       	sbrs	r16, 2
+    626c:	1d c0       	rjmp	.+58     	; 0x62a8 <vfprintf+0x37c>
+    626e:	01 fd       	sbrc	r16, 1
+    6270:	03 c0       	rjmp	.+6      	; 0x6278 <vfprintf+0x34c>
+    6272:	88 e7       	ldi	r24, 0x78	; 120
+    6274:	90 e0       	ldi	r25, 0x00	; 0
+    6276:	0e c0       	rjmp	.+28     	; 0x6294 <vfprintf+0x368>
+    6278:	88 e5       	ldi	r24, 0x58	; 88
+    627a:	90 e0       	ldi	r25, 0x00	; 0
+    627c:	0b c0       	rjmp	.+22     	; 0x6294 <vfprintf+0x368>
+    627e:	80 2f       	mov	r24, r16
+    6280:	86 78       	andi	r24, 0x86	; 134
+    6282:	91 f0       	breq	.+36     	; 0x62a8 <vfprintf+0x37c>
+    6284:	01 ff       	sbrs	r16, 1
+    6286:	02 c0       	rjmp	.+4      	; 0x628c <vfprintf+0x360>
+    6288:	8b e2       	ldi	r24, 0x2B	; 43
+    628a:	01 c0       	rjmp	.+2      	; 0x628e <vfprintf+0x362>
+    628c:	80 e2       	ldi	r24, 0x20	; 32
+    628e:	f7 fc       	sbrc	r15, 7
+    6290:	8d e2       	ldi	r24, 0x2D	; 45
+    6292:	90 e0       	ldi	r25, 0x00	; 0
+    6294:	b3 01       	movw	r22, r6
+    6296:	0e 94 89 31 	call	0x6312	; 0x6312 <fputc>
+    629a:	06 c0       	rjmp	.+12     	; 0x62a8 <vfprintf+0x37c>
+    629c:	80 e3       	ldi	r24, 0x30	; 48
+    629e:	90 e0       	ldi	r25, 0x00	; 0
+    62a0:	b3 01       	movw	r22, r6
+    62a2:	0e 94 89 31 	call	0x6312	; 0x6312 <fputc>
+    62a6:	9a 94       	dec	r9
+    62a8:	d9 14       	cp	r13, r9
+    62aa:	c0 f3       	brcs	.-16     	; 0x629c <vfprintf+0x370>
+    62ac:	da 94       	dec	r13
+    62ae:	f1 01       	movw	r30, r2
+    62b0:	ed 0d       	add	r30, r13
+    62b2:	f1 1d       	adc	r31, r1
+    62b4:	80 81       	ld	r24, Z
+    62b6:	90 e0       	ldi	r25, 0x00	; 0
+    62b8:	b3 01       	movw	r22, r6
+    62ba:	0e 94 89 31 	call	0x6312	; 0x6312 <fputc>
+    62be:	dd 20       	and	r13, r13
+    62c0:	a9 f7       	brne	.-22     	; 0x62ac <vfprintf+0x380>
+    62c2:	06 c0       	rjmp	.+12     	; 0x62d0 <vfprintf+0x3a4>
+    62c4:	80 e2       	ldi	r24, 0x20	; 32
+    62c6:	90 e0       	ldi	r25, 0x00	; 0
+    62c8:	b3 01       	movw	r22, r6
+    62ca:	0e 94 89 31 	call	0x6312	; 0x6312 <fputc>
+    62ce:	ea 94       	dec	r14
+    62d0:	ee 20       	and	r14, r14
+    62d2:	c1 f7       	brne	.-16     	; 0x62c4 <vfprintf+0x398>
+    62d4:	43 ce       	rjmp	.-890    	; 0x5f5c <vfprintf+0x30>
+    62d6:	f3 01       	movw	r30, r6
+    62d8:	66 81       	ldd	r22, Z+6	; 0x06
+    62da:	77 81       	ldd	r23, Z+7	; 0x07
+    62dc:	cb 01       	movw	r24, r22
+    62de:	2b 96       	adiw	r28, 0x0b	; 11
+    62e0:	e2 e1       	ldi	r30, 0x12	; 18
+    62e2:	0c 94 b2 32 	jmp	0x6564	; 0x6564 <__epilogue_restores__>
+
+000062e6 <strnlen_P>:
+    62e6:	fc 01       	movw	r30, r24
+    62e8:	05 90       	lpm	r0, Z+
+    62ea:	61 50       	subi	r22, 0x01	; 1
+    62ec:	70 40       	sbci	r23, 0x00	; 0
+    62ee:	01 10       	cpse	r0, r1
+    62f0:	d8 f7       	brcc	.-10     	; 0x62e8 <strnlen_P+0x2>
+    62f2:	80 95       	com	r24
+    62f4:	90 95       	com	r25
+    62f6:	8e 0f       	add	r24, r30
+    62f8:	9f 1f       	adc	r25, r31
+    62fa:	08 95       	ret
+
+000062fc <strnlen>:
+    62fc:	fc 01       	movw	r30, r24
+    62fe:	61 50       	subi	r22, 0x01	; 1
+    6300:	70 40       	sbci	r23, 0x00	; 0
+    6302:	01 90       	ld	r0, Z+
+    6304:	01 10       	cpse	r0, r1
+    6306:	d8 f7       	brcc	.-10     	; 0x62fe <strnlen+0x2>
+    6308:	80 95       	com	r24
+    630a:	90 95       	com	r25
+    630c:	8e 0f       	add	r24, r30
+    630e:	9f 1f       	adc	r25, r31
+    6310:	08 95       	ret
+
+00006312 <fputc>:
+    while (1)
+    {
+	    wl_do();
+        /*packet[16] = num;
+        wl_send_global_packet(SWARM_PACKET_GROUP_ID, 0, packet, length, 0);
+        usb_puts("sent ");
+    6312:	0f 93       	push	r16
+    6314:	1f 93       	push	r17
+    6316:	cf 93       	push	r28
+    6318:	df 93       	push	r29
+    631a:	8c 01       	movw	r16, r24
+    631c:	eb 01       	movw	r28, r22
+    631e:	8b 81       	ldd	r24, Y+3	; 0x03
+    6320:	81 ff       	sbrs	r24, 1
+    6322:	1b c0       	rjmp	.+54     	; 0x635a <fputc+0x48>
+        usb_puti(num);
+        usb_puts("\r\n");
+        num++;
+    6324:	82 ff       	sbrs	r24, 2
+    6326:	0d c0       	rjmp	.+26     	; 0x6342 <fputc+0x30>
+        delay_ms(50);*/
+    6328:	2e 81       	ldd	r18, Y+6	; 0x06
+    632a:	3f 81       	ldd	r19, Y+7	; 0x07
+    632c:	8c 81       	ldd	r24, Y+4	; 0x04
+    632e:	9d 81       	ldd	r25, Y+5	; 0x05
+    6330:	28 17       	cp	r18, r24
+    6332:	39 07       	cpc	r19, r25
+    6334:	64 f4       	brge	.+24     	; 0x634e <fputc+0x3c>
+    }
+    6336:	e8 81       	ld	r30, Y
+    6338:	f9 81       	ldd	r31, Y+1	; 0x01
+    633a:	01 93       	st	Z+, r16
+    633c:	f9 83       	std	Y+1, r31	; 0x01
+    633e:	e8 83       	st	Y, r30
+    6340:	06 c0       	rjmp	.+12     	; 0x634e <fputc+0x3c>
+}
+
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    6342:	e8 85       	ldd	r30, Y+8	; 0x08
+    6344:	f9 85       	ldd	r31, Y+9	; 0x09
+    6346:	80 2f       	mov	r24, r16
+    6348:	09 95       	icall
+    634a:	89 2b       	or	r24, r25
+    634c:	31 f4       	brne	.+12     	; 0x635a <fputc+0x48>
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+    634e:	8e 81       	ldd	r24, Y+6	; 0x06
+    6350:	9f 81       	ldd	r25, Y+7	; 0x07
+    6352:	01 96       	adiw	r24, 0x01	; 1
+    6354:	9f 83       	std	Y+7, r25	; 0x07
+    6356:	8e 83       	std	Y+6, r24	; 0x06
+    6358:	02 c0       	rjmp	.+4      	; 0x635e <fputc+0x4c>
+
+    635a:	0f ef       	ldi	r16, 0xFF	; 255
+    635c:	1f ef       	ldi	r17, 0xFF	; 255
+    char buf[40];
+    int i;
+    for (i = 0; i < length; i++) {
+        sprintf(buf, "%d: %d ", i, packet[i]);
+    635e:	c8 01       	movw	r24, r16
+    6360:	df 91       	pop	r29
+    6362:	cf 91       	pop	r28
+    6364:	1f 91       	pop	r17
+    6366:	0f 91       	pop	r16
+    6368:	08 95       	ret
+
+0000636a <__ultoa_invert>:
+    636a:	fa 01       	movw	r30, r20
+    636c:	aa 27       	eor	r26, r26
+    636e:	28 30       	cpi	r18, 0x08	; 8
+    6370:	51 f1       	breq	.+84     	; 0x63c6 <__ultoa_invert+0x5c>
+    6372:	20 31       	cpi	r18, 0x10	; 16
+    6374:	81 f1       	breq	.+96     	; 0x63d6 <__ultoa_invert+0x6c>
+    6376:	e8 94       	clt
+    6378:	6f 93       	push	r22
+    637a:	6e 7f       	andi	r22, 0xFE	; 254
+    637c:	6e 5f       	subi	r22, 0xFE	; 254
+    637e:	7f 4f       	sbci	r23, 0xFF	; 255
+    6380:	8f 4f       	sbci	r24, 0xFF	; 255
+    6382:	9f 4f       	sbci	r25, 0xFF	; 255
+    6384:	af 4f       	sbci	r26, 0xFF	; 255
+    6386:	b1 e0       	ldi	r27, 0x01	; 1
+    6388:	3e d0       	rcall	.+124    	; 0x6406 <__ultoa_invert+0x9c>
+    638a:	b4 e0       	ldi	r27, 0x04	; 4
+    638c:	3c d0       	rcall	.+120    	; 0x6406 <__ultoa_invert+0x9c>
+    638e:	67 0f       	add	r22, r23
+    6390:	78 1f       	adc	r23, r24
+    6392:	89 1f       	adc	r24, r25
+    6394:	9a 1f       	adc	r25, r26
+    6396:	a1 1d       	adc	r26, r1
+    6398:	68 0f       	add	r22, r24
+    639a:	79 1f       	adc	r23, r25
+    639c:	8a 1f       	adc	r24, r26
+    639e:	91 1d       	adc	r25, r1
+    63a0:	a1 1d       	adc	r26, r1
+    63a2:	6a 0f       	add	r22, r26
+    63a4:	71 1d       	adc	r23, r1
+    63a6:	81 1d       	adc	r24, r1
+    63a8:	91 1d       	adc	r25, r1
+    63aa:	a1 1d       	adc	r26, r1
+    63ac:	20 d0       	rcall	.+64     	; 0x63ee <__ultoa_invert+0x84>
+    63ae:	09 f4       	brne	.+2      	; 0x63b2 <__ultoa_invert+0x48>
+    63b0:	68 94       	set
+    63b2:	3f 91       	pop	r19
+    63b4:	2a e0       	ldi	r18, 0x0A	; 10
+    63b6:	26 9f       	mul	r18, r22
+    63b8:	11 24       	eor	r1, r1
+    63ba:	30 19       	sub	r19, r0
+    63bc:	30 5d       	subi	r19, 0xD0	; 208
+    63be:	31 93       	st	Z+, r19
+    63c0:	de f6       	brtc	.-74     	; 0x6378 <__ultoa_invert+0xe>
+    63c2:	cf 01       	movw	r24, r30
+    63c4:	08 95       	ret
+    63c6:	46 2f       	mov	r20, r22
+    63c8:	47 70       	andi	r20, 0x07	; 7
+    63ca:	40 5d       	subi	r20, 0xD0	; 208
+    63cc:	41 93       	st	Z+, r20
+    63ce:	b3 e0       	ldi	r27, 0x03	; 3
+    63d0:	0f d0       	rcall	.+30     	; 0x63f0 <__ultoa_invert+0x86>
+    63d2:	c9 f7       	brne	.-14     	; 0x63c6 <__ultoa_invert+0x5c>
+    63d4:	f6 cf       	rjmp	.-20     	; 0x63c2 <__ultoa_invert+0x58>
+    63d6:	46 2f       	mov	r20, r22
+    63d8:	4f 70       	andi	r20, 0x0F	; 15
+    63da:	40 5d       	subi	r20, 0xD0	; 208
+    63dc:	4a 33       	cpi	r20, 0x3A	; 58
+    63de:	18 f0       	brcs	.+6      	; 0x63e6 <__ultoa_invert+0x7c>
+    63e0:	49 5d       	subi	r20, 0xD9	; 217
+    63e2:	31 fd       	sbrc	r19, 1
+    63e4:	40 52       	subi	r20, 0x20	; 32
+    63e6:	41 93       	st	Z+, r20
+    63e8:	02 d0       	rcall	.+4      	; 0x63ee <__ultoa_invert+0x84>
+    63ea:	a9 f7       	brne	.-22     	; 0x63d6 <__ultoa_invert+0x6c>
+    63ec:	ea cf       	rjmp	.-44     	; 0x63c2 <__ultoa_invert+0x58>
+    63ee:	b4 e0       	ldi	r27, 0x04	; 4
+    63f0:	a6 95       	lsr	r26
+    63f2:	97 95       	ror	r25
+    63f4:	87 95       	ror	r24
+    63f6:	77 95       	ror	r23
+    63f8:	67 95       	ror	r22
+    63fa:	ba 95       	dec	r27
+    63fc:	c9 f7       	brne	.-14     	; 0x63f0 <__ultoa_invert+0x86>
+    63fe:	00 97       	sbiw	r24, 0x00	; 0
+    6400:	61 05       	cpc	r22, r1
+    6402:	71 05       	cpc	r23, r1
+    6404:	08 95       	ret
+    6406:	9b 01       	movw	r18, r22
+    6408:	ac 01       	movw	r20, r24
+    640a:	0a 2e       	mov	r0, r26
+    640c:	06 94       	lsr	r0
+    640e:	57 95       	ror	r21
+    6410:	47 95       	ror	r20
+    6412:	37 95       	ror	r19
+    6414:	27 95       	ror	r18
+    6416:	ba 95       	dec	r27
+    6418:	c9 f7       	brne	.-14     	; 0x640c <__ultoa_invert+0xa2>
+    641a:	62 0f       	add	r22, r18
+    641c:	73 1f       	adc	r23, r19
+    641e:	84 1f       	adc	r24, r20
+    6420:	95 1f       	adc	r25, r21
+    6422:	a0 1d       	adc	r26, r0
+    6424:	08 95       	ret
+
+00006426 <__divmodhi4>:
+    6426:	97 fb       	bst	r25, 7
+    6428:	09 2e       	mov	r0, r25
+    642a:	07 26       	eor	r0, r23
+    642c:	0a d0       	rcall	.+20     	; 0x6442 <__divmodhi4_neg1>
+    642e:	77 fd       	sbrc	r23, 7
+    6430:	04 d0       	rcall	.+8      	; 0x643a <__divmodhi4_neg2>
+    6432:	46 d0       	rcall	.+140    	; 0x64c0 <__udivmodhi4>
+    6434:	06 d0       	rcall	.+12     	; 0x6442 <__divmodhi4_neg1>
+    6436:	00 20       	and	r0, r0
+    6438:	1a f4       	brpl	.+6      	; 0x6440 <__divmodhi4_exit>
+
+0000643a <__divmodhi4_neg2>:
+    643a:	70 95       	com	r23
+    643c:	61 95       	neg	r22
+    643e:	7f 4f       	sbci	r23, 0xFF	; 255
+
+00006440 <__divmodhi4_exit>:
+    6440:	08 95       	ret
+
+00006442 <__divmodhi4_neg1>:
+    6442:	f6 f7       	brtc	.-4      	; 0x6440 <__divmodhi4_exit>
+    6444:	90 95       	com	r25
+    6446:	81 95       	neg	r24
+    6448:	9f 4f       	sbci	r25, 0xFF	; 255
+    644a:	08 95       	ret
+
+0000644c <__divmodsi4>:
+    644c:	97 fb       	bst	r25, 7
+    644e:	09 2e       	mov	r0, r25
+    6450:	05 26       	eor	r0, r21
+    6452:	0e d0       	rcall	.+28     	; 0x6470 <__divmodsi4_neg1>
+    6454:	57 fd       	sbrc	r21, 7
+    6456:	04 d0       	rcall	.+8      	; 0x6460 <__divmodsi4_neg2>
+    6458:	47 d0       	rcall	.+142    	; 0x64e8 <__udivmodsi4>
+    645a:	0a d0       	rcall	.+20     	; 0x6470 <__divmodsi4_neg1>
+    645c:	00 1c       	adc	r0, r0
+    645e:	38 f4       	brcc	.+14     	; 0x646e <__divmodsi4_exit>
+
+00006460 <__divmodsi4_neg2>:
+    6460:	50 95       	com	r21
+    6462:	40 95       	com	r20
+    6464:	30 95       	com	r19
+    6466:	21 95       	neg	r18
+    6468:	3f 4f       	sbci	r19, 0xFF	; 255
+    646a:	4f 4f       	sbci	r20, 0xFF	; 255
+    646c:	5f 4f       	sbci	r21, 0xFF	; 255
+
+0000646e <__divmodsi4_exit>:
+    646e:	08 95       	ret
+
+00006470 <__divmodsi4_neg1>:
+    6470:	f6 f7       	brtc	.-4      	; 0x646e <__divmodsi4_exit>
+    6472:	90 95       	com	r25
+    6474:	80 95       	com	r24
+    6476:	70 95       	com	r23
+    6478:	61 95       	neg	r22
+    647a:	7f 4f       	sbci	r23, 0xFF	; 255
+    647c:	8f 4f       	sbci	r24, 0xFF	; 255
+    647e:	9f 4f       	sbci	r25, 0xFF	; 255
+    6480:	08 95       	ret
+
+00006482 <__mulsi3>:
+    6482:	62 9f       	mul	r22, r18
+    6484:	d0 01       	movw	r26, r0
+    6486:	73 9f       	mul	r23, r19
+    6488:	f0 01       	movw	r30, r0
+    648a:	82 9f       	mul	r24, r18
+    648c:	e0 0d       	add	r30, r0
+    648e:	f1 1d       	adc	r31, r1
+    6490:	64 9f       	mul	r22, r20
+    6492:	e0 0d       	add	r30, r0
+    6494:	f1 1d       	adc	r31, r1
+    6496:	92 9f       	mul	r25, r18
+    6498:	f0 0d       	add	r31, r0
+    649a:	83 9f       	mul	r24, r19
+    649c:	f0 0d       	add	r31, r0
+    649e:	74 9f       	mul	r23, r20
+    64a0:	f0 0d       	add	r31, r0
+    64a2:	65 9f       	mul	r22, r21
+    64a4:	f0 0d       	add	r31, r0
+    64a6:	99 27       	eor	r25, r25
+    64a8:	72 9f       	mul	r23, r18
+    64aa:	b0 0d       	add	r27, r0
+    64ac:	e1 1d       	adc	r30, r1
+    64ae:	f9 1f       	adc	r31, r25
+    64b0:	63 9f       	mul	r22, r19
+    64b2:	b0 0d       	add	r27, r0
+    64b4:	e1 1d       	adc	r30, r1
+    64b6:	f9 1f       	adc	r31, r25
+    64b8:	bd 01       	movw	r22, r26
+    64ba:	cf 01       	movw	r24, r30
+    64bc:	11 24       	eor	r1, r1
+    64be:	08 95       	ret
+
+000064c0 <__udivmodhi4>:
+    64c0:	aa 1b       	sub	r26, r26
+    64c2:	bb 1b       	sub	r27, r27
+    64c4:	51 e1       	ldi	r21, 0x11	; 17
+    64c6:	07 c0       	rjmp	.+14     	; 0x64d6 <__udivmodhi4_ep>
+
+000064c8 <__udivmodhi4_loop>:
+    64c8:	aa 1f       	adc	r26, r26
+    64ca:	bb 1f       	adc	r27, r27
+    64cc:	a6 17       	cp	r26, r22
+    64ce:	b7 07       	cpc	r27, r23
+    64d0:	10 f0       	brcs	.+4      	; 0x64d6 <__udivmodhi4_ep>
+    64d2:	a6 1b       	sub	r26, r22
+    64d4:	b7 0b       	sbc	r27, r23
+
+000064d6 <__udivmodhi4_ep>:
+    64d6:	88 1f       	adc	r24, r24
+    64d8:	99 1f       	adc	r25, r25
+    64da:	5a 95       	dec	r21
+    64dc:	a9 f7       	brne	.-22     	; 0x64c8 <__udivmodhi4_loop>
+    64de:	80 95       	com	r24
+    64e0:	90 95       	com	r25
+    64e2:	bc 01       	movw	r22, r24
+    64e4:	cd 01       	movw	r24, r26
+    64e6:	08 95       	ret
+
+000064e8 <__udivmodsi4>:
+    64e8:	a1 e2       	ldi	r26, 0x21	; 33
+    64ea:	1a 2e       	mov	r1, r26
+    64ec:	aa 1b       	sub	r26, r26
+    64ee:	bb 1b       	sub	r27, r27
+    64f0:	fd 01       	movw	r30, r26
+    64f2:	0d c0       	rjmp	.+26     	; 0x650e <__udivmodsi4_ep>
+
+000064f4 <__udivmodsi4_loop>:
+    64f4:	aa 1f       	adc	r26, r26
+    64f6:	bb 1f       	adc	r27, r27
+    64f8:	ee 1f       	adc	r30, r30
+    64fa:	ff 1f       	adc	r31, r31
+    64fc:	a2 17       	cp	r26, r18
+    64fe:	b3 07       	cpc	r27, r19
+    6500:	e4 07       	cpc	r30, r20
+    6502:	f5 07       	cpc	r31, r21
+    6504:	20 f0       	brcs	.+8      	; 0x650e <__udivmodsi4_ep>
+    6506:	a2 1b       	sub	r26, r18
+    6508:	b3 0b       	sbc	r27, r19
+    650a:	e4 0b       	sbc	r30, r20
+    650c:	f5 0b       	sbc	r31, r21
+
+0000650e <__udivmodsi4_ep>:
+    650e:	66 1f       	adc	r22, r22
+    6510:	77 1f       	adc	r23, r23
+    6512:	88 1f       	adc	r24, r24
+    6514:	99 1f       	adc	r25, r25
+    6516:	1a 94       	dec	r1
+    6518:	69 f7       	brne	.-38     	; 0x64f4 <__udivmodsi4_loop>
+    651a:	60 95       	com	r22
+    651c:	70 95       	com	r23
+    651e:	80 95       	com	r24
+    6520:	90 95       	com	r25
+    6522:	9b 01       	movw	r18, r22
+    6524:	ac 01       	movw	r20, r24
+    6526:	bd 01       	movw	r22, r26
+    6528:	cf 01       	movw	r24, r30
+    652a:	08 95       	ret
+
+0000652c <__prologue_saves__>:
+    652c:	2f 92       	push	r2
+    652e:	3f 92       	push	r3
+    6530:	4f 92       	push	r4
+    6532:	5f 92       	push	r5
+    6534:	6f 92       	push	r6
+    6536:	7f 92       	push	r7
+    6538:	8f 92       	push	r8
+    653a:	9f 92       	push	r9
+    653c:	af 92       	push	r10
+    653e:	bf 92       	push	r11
+    6540:	cf 92       	push	r12
+    6542:	df 92       	push	r13
+    6544:	ef 92       	push	r14
+    6546:	ff 92       	push	r15
+    6548:	0f 93       	push	r16
+    654a:	1f 93       	push	r17
+    654c:	cf 93       	push	r28
+    654e:	df 93       	push	r29
+    6550:	cd b7       	in	r28, 0x3d	; 61
+    6552:	de b7       	in	r29, 0x3e	; 62
+    6554:	ca 1b       	sub	r28, r26
+    6556:	db 0b       	sbc	r29, r27
+    6558:	0f b6       	in	r0, 0x3f	; 63
+    655a:	f8 94       	cli
+    655c:	de bf       	out	0x3e, r29	; 62
+    655e:	0f be       	out	0x3f, r0	; 63
+    6560:	cd bf       	out	0x3d, r28	; 61
+    6562:	09 94       	ijmp
+
+00006564 <__epilogue_restores__>:
+    6564:	2a 88       	ldd	r2, Y+18	; 0x12
+    6566:	39 88       	ldd	r3, Y+17	; 0x11
+    6568:	48 88       	ldd	r4, Y+16	; 0x10
+    656a:	5f 84       	ldd	r5, Y+15	; 0x0f
+    656c:	6e 84       	ldd	r6, Y+14	; 0x0e
+    656e:	7d 84       	ldd	r7, Y+13	; 0x0d
+    6570:	8c 84       	ldd	r8, Y+12	; 0x0c
+    6572:	9b 84       	ldd	r9, Y+11	; 0x0b
+    6574:	aa 84       	ldd	r10, Y+10	; 0x0a
+    6576:	b9 84       	ldd	r11, Y+9	; 0x09
+    6578:	c8 84       	ldd	r12, Y+8	; 0x08
+    657a:	df 80       	ldd	r13, Y+7	; 0x07
+    657c:	ee 80       	ldd	r14, Y+6	; 0x06
+    657e:	fd 80       	ldd	r15, Y+5	; 0x05
+    6580:	0c 81       	ldd	r16, Y+4	; 0x04
+    6582:	1b 81       	ldd	r17, Y+3	; 0x03
+    6584:	aa 81       	ldd	r26, Y+2	; 0x02
+    6586:	b9 81       	ldd	r27, Y+1	; 0x01
+    6588:	ce 0f       	add	r28, r30
+    658a:	d1 1d       	adc	r29, r1
+    658c:	0f b6       	in	r0, 0x3f	; 63
+    658e:	f8 94       	cli
+    6590:	de bf       	out	0x3e, r29	; 62
+    6592:	0f be       	out	0x3f, r0	; 63
+    6594:	cd bf       	out	0x3d, r28	; 61
+    6596:	ed 01       	movw	r28, r26
+    6598:	08 95       	ret
+
+0000659a <_exit>:
+    659a:	f8 94       	cli
+
+0000659c <__stop_program>:
+    659c:	ff cf       	rjmp	.-2      	; 0x659c <__stop_program>
Index: branches/colonetmk2/code/projects/swarm/robot/main.c
===================================================================
--- branches/colonetmk2/code/projects/swarm/robot/main.c	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/robot/main.c	(revision 1456)
@@ -0,0 +1,60 @@
+#include <dragonfly_lib.h>
+#include <wireless.h>
+#include <wl_token_ring.h>
+//#include <xbee.h>
+
+//#define SWARM_PACKET_GROUP_ID 0x8
+
+//static PacketGroupHandler swarm_pgh;
+//static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length);
+
+int main(void)
+{
+    dragonfly_init(ALL_ON);
+
+    wl_init();
+    wl_set_channel(0xF);
+
+    /*swarm_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+    swarm_pgh.timeout_handler = NULL;
+    swarm_pgh.handle_response = NULL;
+    swarm_pgh.handle_receive = swarm_handle_receive;
+    swarm_pgh.unregister = NULL;
+    wl_register_packet_group(&swarm_pgh);*/
+
+    wl_token_ring_register();
+    wl_token_ring_join();
+
+    usb_puts("initialized\r\n");
+
+    /*char packet[] = { 0x0, 0x1, 0x0, 0x3, 0x4, 0x0, 0x6, 0x7, 0x8, 0x0, 0xa, 0xb, 0xc, 0xd, 0x0, 0xf, 0x0 };
+    int length = 17;
+
+    int num = 0;*/
+
+    while (1)
+    {
+	    wl_do();
+        /*packet[16] = num;
+        wl_send_global_packet(SWARM_PACKET_GROUP_ID, 0, packet, length, 0);
+        usb_puts("sent ");
+        usb_puti(num);
+        usb_puts("\r\n");
+        num++;
+        delay_ms(50);*/
+    }
+}
+
+/*static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length)
+{
+    //wl_send_robot_to_robot_packet(SWARM_PACKET_GROUP_ID, type, packet, length, wl_source, 0);
+
+    char buf[40];
+    int i;
+    for (i = 0; i < length; i++) {
+        sprintf(buf, "%d: %d ", i, packet[i]);
+        usb_puts(buf);
+    }
+    usb_puts("\r\n");
+}*/
+

Property changes on: branches/colonetmk2/code/projects/swarm/robot/main.c
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/robot/main.lst
===================================================================
--- branches/colonetmk2/code/projects/swarm/robot/main.lst	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/robot/main.lst	(revision 1456)
@@ -0,0 +1,107 @@
+   1               		.file	"main.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
+  12               		.text
+  13               	.Ltext0:
+ 119               		.data
+ 120               	.LC0:
+ 121 0000 696E 6974 		.string	"initialized\r\n"
+ 121      6961 6C69 
+ 121      7A65 640D 
+ 121      0A00 
+ 122               		.text
+ 124               	.global	main
+ 126               	main:
+ 127               		.stabd	46,0,0
+   1:main.c        **** #include <dragonfly_lib.h>
+   2:main.c        **** #include <wireless.h>
+   3:main.c        **** #include <wl_token_ring.h>
+   4:main.c        **** //#include <xbee.h>
+   5:main.c        **** 
+   6:main.c        **** //#define SWARM_PACKET_GROUP_ID 0x8
+   7:main.c        **** 
+   8:main.c        **** //static PacketGroupHandler swarm_pgh;
+   9:main.c        **** //static void swarm_handle_receive(char type, int wl_source, unsigned char* packet, int length);
+  10:main.c        **** 
+  11:main.c        **** int main(void)
+  12:main.c        **** {
+ 129               	.LM0:
+ 130               	.LFBB1:
+ 131               	/* prologue: function */
+ 132               	/* frame size = 0 */
+  13:main.c        ****     dragonfly_init(ALL_ON);
+ 134               	.LM1:
+ 135 0000 8FEF      		ldi r24,lo8(2047)
+ 136 0002 97E0      		ldi r25,hi8(2047)
+ 137 0004 0E94 0000 		call dragonfly_init
+  14:main.c        **** 
+  15:main.c        ****     wl_init();
+ 139               	.LM2:
+ 140 0008 0E94 0000 		call wl_init
+  16:main.c        ****     wl_set_channel(0xF);
+ 142               	.LM3:
+ 143 000c 8FE0      		ldi r24,lo8(15)
+ 144 000e 90E0      		ldi r25,hi8(15)
+ 145 0010 0E94 0000 		call wl_set_channel
+  17:main.c        **** 
+  18:main.c        ****     /*swarm_pgh.groupCode = SWARM_PACKET_GROUP_ID;
+  19:main.c        ****     swarm_pgh.timeout_handler = NULL;
+  20:main.c        ****     swarm_pgh.handle_response = NULL;
+  21:main.c        ****     swarm_pgh.handle_receive = swarm_handle_receive;
+  22:main.c        ****     swarm_pgh.unregister = NULL;
+  23:main.c        ****     wl_register_packet_group(&swarm_pgh);*/
+  24:main.c        **** 
+  25:main.c        ****     wl_token_ring_register();
+ 147               	.LM4:
+ 148 0014 0E94 0000 		call wl_token_ring_register
+  26:main.c        ****     wl_token_ring_join();
+ 150               	.LM5:
+ 151 0018 0E94 0000 		call wl_token_ring_join
+  27:main.c        **** 
+  28:main.c        ****     usb_puts("initialized\r\n");
+ 153               	.LM6:
+ 154 001c 80E0      		ldi r24,lo8(.LC0)
+ 155 001e 90E0      		ldi r25,hi8(.LC0)
+ 156 0020 0E94 0000 		call usb_puts
+ 157               	.L2:
+  29:main.c        **** 
+  30:main.c        ****     /*char packet[] = { 0x0, 0x1, 0x0, 0x3, 0x4, 0x0, 0x6, 0x7, 0x8, 0x0, 0xa, 0xb, 0xc, 0xd, 0x0, 
+  31:main.c        ****     int length = 17;
+  32:main.c        **** 
+  33:main.c        ****     int num = 0;*/
+  34:main.c        **** 
+  35:main.c        ****     while (1)
+  36:main.c        ****     {
+  37:main.c        **** 	    wl_do();
+ 159               	.LM7:
+ 160 0024 0E94 0000 		call wl_do
+ 161 0028 00C0      		rjmp .L2
+ 163               	.Lscope1:
+ 165               		.stabd	78,0,0
+ 167               	.Letext0:
+DEFINED SYMBOLS
+                            *ABS*:0000000000000000 main.c
+     /tmp/cclr52J4.s:2      *ABS*:000000000000003f __SREG__
+     /tmp/cclr52J4.s:3      *ABS*:000000000000003e __SP_H__
+     /tmp/cclr52J4.s:4      *ABS*:000000000000003d __SP_L__
+     /tmp/cclr52J4.s:5      *ABS*:0000000000000034 __CCP__
+     /tmp/cclr52J4.s:6      *ABS*:0000000000000000 __tmp_reg__
+     /tmp/cclr52J4.s:7      *ABS*:0000000000000001 __zero_reg__
+     /tmp/cclr52J4.s:126    .text:0000000000000000 main
+
+UNDEFINED SYMBOLS
+__do_copy_data
+__do_clear_bss
+dragonfly_init
+wl_init
+wl_set_channel
+wl_token_ring_register
+wl_token_ring_join
+usb_puts
+wl_do
Index: branches/colonetmk2/code/projects/swarm/robot/.dep/main.o.d
===================================================================
--- branches/colonetmk2/code/projects/swarm/robot/.dep/main.o.d	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/robot/.dep/main.o.d	(revision 1456)
@@ -0,0 +1,120 @@
+main.o: main.c ../../../../code/projects/libdragonfly/dragonfly_lib.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/inttypes.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/stdint.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/stdio.h \
+  /usr/lib/gcc/avr/4.3.2/include/stdarg.h \
+  /usr/lib/gcc/avr/4.3.2/include/stddef.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/stdlib.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/io.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/sfr_defs.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/iom128.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/portpins.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/common.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/version.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/fuse.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/lock.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/interrupt.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/util/delay.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/util/delay_basic.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/util/twi.h \
+  ../../../../code/projects/libdragonfly/atomic.h \
+  ../../../../code/projects/libdragonfly/analog.h \
+  ../../../../code/projects/libdragonfly/dio.h \
+  ../../../../code/projects/libdragonfly/time.h \
+  ../../../../code/projects/libdragonfly/lcd.h \
+  ../../../../code/projects/libdragonfly/lights.h \
+  ../../../../code/projects/libdragonfly/motor.h \
+  ../../../../code/projects/libdragonfly/serial.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/pgmspace.h \
+  ../../../../code/projects/libdragonfly/buzzer.h \
+  ../../../../code/projects/libdragonfly/rangefinder.h \
+  ../../../../code/projects/libdragonfly/bom.h \
+  ../../../../code/projects/libdragonfly/encoders.h \
+  ../../../../code/projects/libdragonfly/move.h \
+  ../../../../code/projects/libdragonfly/reset.h \
+  /usr/lib/gcc/avr/4.3.2/../../../avr/include/math.h \
+  ../../../../code/projects/libdragonfly/eeprom.h \
+  /usr/lib/gcc/avr/4.3.2/include/stdbool.h \
+  ../../../../code/projects/libwireless/lib/wireless.h \
+  ../../../../code/projects/libwireless/lib/wl_token_ring.h \
+  ../../../../code/projects/libwireless/lib/sensor_matrix.h
+
+../../../../code/projects/libdragonfly/dragonfly_lib.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/inttypes.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/stdint.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/stdio.h:
+
+/usr/lib/gcc/avr/4.3.2/include/stdarg.h:
+
+/usr/lib/gcc/avr/4.3.2/include/stddef.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/stdlib.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/io.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/sfr_defs.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/iom128.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/portpins.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/common.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/version.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/fuse.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/lock.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/interrupt.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/util/delay.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/util/delay_basic.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/util/twi.h:
+
+../../../../code/projects/libdragonfly/atomic.h:
+
+../../../../code/projects/libdragonfly/analog.h:
+
+../../../../code/projects/libdragonfly/dio.h:
+
+../../../../code/projects/libdragonfly/time.h:
+
+../../../../code/projects/libdragonfly/lcd.h:
+
+../../../../code/projects/libdragonfly/lights.h:
+
+../../../../code/projects/libdragonfly/motor.h:
+
+../../../../code/projects/libdragonfly/serial.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/avr/pgmspace.h:
+
+../../../../code/projects/libdragonfly/buzzer.h:
+
+../../../../code/projects/libdragonfly/rangefinder.h:
+
+../../../../code/projects/libdragonfly/bom.h:
+
+../../../../code/projects/libdragonfly/encoders.h:
+
+../../../../code/projects/libdragonfly/move.h:
+
+../../../../code/projects/libdragonfly/reset.h:
+
+/usr/lib/gcc/avr/4.3.2/../../../avr/include/math.h:
+
+../../../../code/projects/libdragonfly/eeprom.h:
+
+/usr/lib/gcc/avr/4.3.2/include/stdbool.h:
+
+../../../../code/projects/libwireless/lib/wireless.h:
+
+../../../../code/projects/libwireless/lib/wl_token_ring.h:
+
+../../../../code/projects/libwireless/lib/sensor_matrix.h:
Index: branches/colonetmk2/code/projects/swarm/robot/main.hex
===================================================================
--- branches/colonetmk2/code/projects/swarm/robot/main.hex	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/robot/main.hex	(revision 1456)
@@ -0,0 +1,1698 @@
+:100000000C9446000C9465000C9465000C946500FB
+:100010000C9465000C9465000C9465000C946500CC
+:100020000C9465000C9465000C9465000C946500BC
+:100030000C9465000C9465000C9465000C943B16C0
+:100040000C94CE150C949F1B0C9465000C946500C9
+:100050000C9465000C944A1D0C9465000C9465008A
+:100060000C9465000C9465000C94191C0C946500AC
+:100070000C9465000C9465000C9459060C94650072
+:100080000C9465000C9465000C94650011241FBE4F
+:10009000CFEFD0E1DEBFCDBF15E0A0E0B1E0EEE9EB
+:1000A000F5E600E00BBF02C007900D92AC36B10739
+:1000B000D9F71AE0ACE6B5E001C01D92A438B1074B
+:1000C000E1F70E9467000C94CD320C9400008FEF92
+:1000D00097E00E946C110E940B028FE090E00E945A
+:1000E000EA010E9440060E94F80280E091E00E942E
+:1000F0008F1A0E94B400FDCF81E090E090936D05CF
+:1001000080936C050895DC018D919C91119780314D
+:10011000910558F4FC01EE0FFF1FE251FA4F808168
+:100120009181892B11F4B183A0830895CF93DF933C
+:10013000FC01C081D181FE01EE0FFF1FE251FA4F99
+:100140000190F081E02D309731F00084F185E02DB1
+:10015000309709F00995CC0FDD1FC251DA4F198293
+:100160001882DF91CF910895CF93DF9380916C0532
+:1001700090916D05892BA9F0CEEED5E0E881F9814B
+:10018000309731F00280F381E02D309709F0099526
+:10019000229686E0CE30D80789F710926D0510922E
+:1001A0006C058EE695E00E948E069C0197FD87C047
+:1001B00040916E05493839F58330910509F07FC0CB
+:1001C00080916F0520917005E82FE295EF70F0E0C7
+:1001D000EE0FFF1FE251FA4F0190F081E02D3097B2
+:1001E00009F46DC00480F581E02D309709F467C0F3
+:1001F00090E08F70907060E070E0222311F461E075
+:1002000070E009955CC0413831F5873091050CF4F8
+:1002100056C090916F054091700580917405E091F2
+:100220007305F0E0EE0FFF1FE251FA4F0190F081ED
+:10023000E02D309709F443C00680F781E02D309718
+:10024000F1F1792F60E0640F711D2750304045E7D0
+:1002500055E0099534C000D000D0EDB7FEB7319617
+:100260008EE091E0ADB7BEB712969C938E93119736
+:10027000428313820E94812F00D000D0EDB7FEB7D9
+:10028000319685E191E0ADB7BEB712969C938E93FF
+:100290001197809170058283138280917105848308
+:1002A000158280917205868317820E94812F8DB7F7
+:1002B0009EB708960FB6F8949EBF0FBE8DBFDF9114
+:1002C000CF910895AF92BF92CF92EF920F931F9369
+:1002D000DF93CF93CDB7DEB7C058D0400FB6F894B8
+:1002E000DEBF0FBECDBF982F58010C2DCC2031F0B2
+:1002F0008C2D8F70092F0295007F082B99836A83BC
+:10030000BE016D5F7F4FA0E0B0E008C0FA01EA0FC8
+:10031000FB1F8081FB018193BF011196A217B307D8
+:10032000ACF32E5F3F4FCE010196B901A5012E2DF2
+:100330000E94B508C058DF4F0FB6F894DEBF0FBE5D
+:10034000CDBFCF91DF911F910F91EF90CF90BF90D4
+:10035000AF900895CF92EF920F931F93C02E0FEF9F
+:100360001FEFEE240E9462011F910F91EF90CF903A
+:100370000895CF92EF920F931F93C02E0FEF1FEFB0
+:1003800074E0E72E0E9462011F910F91EF90CF90D1
+:100390000895CF92EF920F931F93CE2CEE240E94DC
+:1003A00062011F910F91EF90CF900895CF92EF923D
+:1003B0000F931F93CE2CE4E0EE2E0E9462011F915A
+:1003C0000F91EF90CF9008950E94CA0708950E9460
+:1003D000C50708950E945A0808950E94C00708950D
+:1003E0000E947C080895CF93DF93CEEED5E0E8819C
+:1003F000F981309731F00084F185E02D309709F0D4
+:100400000995229686E0CE30D80789F70E94AE087B
+:10041000DF91CF910895EEEEF5E01192119226E072
+:10042000EE30F207D1F70E945D098F5F9F4F19F4FC
+:100430002FEF3FEF08C088E090E06CE770E00E948B
+:10044000EE1B20E030E0C901089584E090E0909335
+:10045000130680931206089590931E0180931D0148
+:100460007093200160931F0150932201409321015A
+:1004700008950895089520E030E080910E0690914F
+:100480000F068F5F9F4F11F021E030E0C901089502
+:100490000E94B00A08950E94AB0A08950E94AB0A18
+:1004A00008950F931F93CF93DF93C0910E06D091C1
+:1004B0000F06D7FD30C02196D0930F06C0930E06CD
+:1004C000219709C080910E0690910F060196909396
+:1004D0000F0680930E0680910E0690910F060E94E3
+:1004E0009D0A892B49F400910E0610910F060E9477
+:1004F000B00A0817190734F300910E0610910F0681
+:100500000E94B00A0817190731F48FEF9FEF9093FC
+:100510000F0680930E06CE01DF91CF911F910F91B0
+:100520000895CF93DF93C0E0D0E001C02196CE01C3
+:100530000E949D0A892B29F40E94B00AC817D90786
+:10054000ACF30E94B00AC817D90711F4CFEFDFEF60
+:10055000D0930F06C0930E06DF91CF9108950E94AD
+:100560009D0A08950F931F93CF93DF93EC018B01A6
+:10057000CB010E949D0A892B81F00E94E401C817DB
+:10058000D90729F0CE010E949D0A892B31F0CE01B6
+:10059000B8010E945C0A9C0102C020E030E0C90161
+:1005A000DF91CF911F910F9108950F931F938C01AD
+:1005B0000E94E401B8010E94B2021F910F910895B8
+:1005C000DF93CF9300D0CDB7DEB78FEF9FEF0E94C0
+:1005D000C60DCE0101960E94D70A99810F900F9007
+:1005E000CF91DF91089583E291E00E9496000895F3
+:1005F0000F9382E090E0909313068093120688E0B8
+:1006000090E0909332018093310182E064E040E019
+:1006100050E020E030E000E00E94B901892B19F49D
+:1006200020E030E002C02FEF3FEFC9010F910895A5
+:100630008F929F92AF92BF92DF92EF92FF920F93B1
+:100640001F93DF93CF93CDB7DEB78DB69EB60E94D2
+:10065000E4018C010E94B00A9C01220F331F280F75
+:10066000391F8DB79EB7821B930B0FB6F8949EBFB0
+:100670000FBE8DBFADB6BEB60894A11CB11C809153
+:100680003301909134012FEF8F3F920781F40F5F78
+:100690001F4F0E94B00A0817190711F400E010E07C
+:1006A000C8010E949D0A892B91F3D02E0CC061E0F5
+:1006B00070E00E94730AD09033018FEF9FEF909308
+:1006C00034018093330100E010E0EE24FF2422C0C7
+:1006D000C8010E949D0A892BD9F00E94E4010817E5
+:1006E0001907B1F00E94E401B8010E945C0ADC0124
+:1006F000F701EE0FFF1FEE0DFF1DEA0DFB1D00833E
+:100700008C91818311968C9182830894E11CF11C59
+:100710000F5F1F4F0E94B00A08171907CCF297010C
+:10072000220F331F2E0D3F1D82E062E0A50100E085
+:100730000E94B901892BD9F482E061E040E050E0E9
+:1007400020E030E00D2D10E092E0E92E0E94D6016D
+:10075000892B69F4D0922D0110922E0184E090E053
+:100760009093300180932F0120E030E002C02FEF02
+:100770003FEFC9010FB6F8949EBE0FBE8DBECF915C
+:10078000DF911F910F91FF90EF90DF90BF90AF909E
+:100790009F908F9008956F927F928F929F92AF92C9
+:1007A000BF92CF92DF92EF92FF920F931F93CF935E
+:1007B000DF937B014A01E901833009F460C1843091
+:1007C00030F4813059F0823009F0C9C176C08430EC
+:1007D00009F468C1853009F0C2C1ABC180912D0117
+:1007E00090912E0168177907B1F00E94E4012091E1
+:1007F0002D0130912E018217930769F08091100628
+:100800009091110603973CF4809112069091130683
+:10081000039709F0A4C1CFEFDFEFD0931106C09387
+:100820001006D0933001C0932F01C70161E070E042
+:100830000E94730A8091120690911306039781F427
+:100840000E94E40161E070E00E94730A81E090E0A0
+:100850009093130680931206D0933201C093310116
+:1008600080911206909113068430910511F0892B26
+:1008700029F40E94E40160E070E06FC182E063E06F
+:1008800040E050E020E030E000E00E94B901E0915B
+:100890001D01F0911E01099584E690E00E94E31B82
+:1008A000E0911F01F091200109950E94E4010E944E
+:1008B0009D0A892B09F453C139C18FEF9FEF9093A3
+:1008C0001106809310069093300180932F01CB0185
+:1008D00061E070E00E94730ACE0162E070E00E9465
+:1008E00013325B01CC24DD2400E010E066246A941E
+:1008F000762C69C00E151F0509F463C0CA14DB0409
+:1009000074F59601220F331F2C0D3D1DF401E20FEB
+:10091000F31F8081C82FD0E0C017D10701F5809167
+:100920003301909134018017910721F470923401C2
+:1009300060923301F901E80DF91D41815281C7012F
+:10094000BE010E94430ACE010E949D0ACE0161E0D1
+:1009500070E00E94730A0894C11CD11C32C0C80107
+:100960000E949D0A892B29F0C80160E070E00E9476
+:10097000730A0E94E4010817190761F480911206B6
+:1009800090911306019731F41092130610921206FB
+:100990000E94F802809135019091360108171907DD
+:1009A00081F40E94E40160E070E00E94730A1092FA
+:1009B00013061092120670923601609235010E9461
+:1009C000F8020F5F1F4F0E94B00A081719070CF4B6
+:1009D00091CF87010F5F1F4F0E94B00A08171907B8
+:1009E00011F400E010E0C8010E949D0A892B19F45F
+:1009F0000E151F0579F7E02EFF240E94E401E8168A
+:100A0000F90621F0F0922E01E0922D010E94E401FE
+:100A10008C010F5F1F4FC1E0D0E00E94B00A0817A1
+:100A2000190711F400E010E00E151F0549F0C80188
+:100A30000E949D0A892B09F021960F5F1F4FEDCF71
+:100A4000CC0FDD1FCC0FDD1FD0933001C0932F01E1
+:100A50000E94AB0A892B09F082C080911206909106
+:100A60001306029709F07BC082E061E040E050E0AD
+:100A700020E030E072E0E72E0E94D60170C01092B4
+:100A8000110610921006E0912101F09122010995C2
+:100A9000182F092F0E94E401B701412F502F0E9407
+:100AA000430A5DC08091120690911306019709F0E8
+:100AB00056C080913301909134018617970731F425
+:100AC0008FEF9FEF90933401809333018091330136
+:100AD000909134018F5F9F4F09F041C08701015011
+:100AE000104017FF05C00E94B00A8C010150104051
+:100AF0000E94E4010817190731F0C8010E949D0AFD
+:100B0000892B69F32CC0F0923401E092330182E02A
+:100B100065E040E050E020E030E08701EE24E3941F
+:100B20000E94D6010E94AB0A0197C9F40E941803E3
+:100B300016C088E090E0909332018093310183E009
+:100B400090E09093130680931206709336016093A1
+:100B500035010E94E40161E070E00E94730ADF91B8
+:100B6000CF911F910F91FF90EF90DF90CF90BF90AA
+:100B7000AF909F908F907F906F9008950F931F93E9
+:100B800080912F0190913001892B29F500912D0141
+:100B900010912E010E94E40108171907A1F080911D
+:100BA0002D0190912E0160E070E00E94730A8FEF9A
+:100BB0009FEF90932E0180932D0184E090E090931D
+:100BC000300180932F0180911206909113060197B6
+:100BD00011F40E9418038091310190913201892B08
+:100BE00059F50E94AB0A892BC9F40E94E40161E027
+:100BF00070E00E94730A81E090E090931306809366
+:100C0000120684E090E09093300180932F010E94BF
+:100C1000E40190932E0180932D010EC00E94F802F2
+:100C20000E94682F6FEF7FE00E9413326F5F7F4F4B
+:100C3000709332016093310180912F0190913001C6
+:100C400097FD05C001979093300180932F0180910B
+:100C500031019091320197FD05C0019790933201C7
+:100C600080933101809110069091110697FD05C087
+:100C7000019690931106809310061F910F9108958D
+:100C80000E94E4018F3F910521F01CF02FEF3FEF10
+:100C90000EC00E94220A0E94E40160E070E00E94FF
+:100CA000730A83E291E00E94830020E030E0C901F2
+:100CB00008951F920F920FB60F920BB60F92112448
+:100CC0002F933F938F939F93EF93FF9380919C007B
+:100CD000E0911406F0911506E553F94F8083809159
+:100CE00014069091150601968038910511F480E064
+:100CF00090E0209116063091170690931506809388
+:100D00001406FF91EF919F918F913F912F910F903A
+:100D10000BBE0F900FBE0F901F9018950F931F934F
+:100D2000CF93DF938C0180911E0690911F06892B33
+:100D3000D1F580911606909117068038910521F41F
+:100D4000109217061092160620911606309117067B
+:100D500080911406909115062817390709F405C1EA
+:100D60008091160690911706FC01E553F94F2081FA
+:100D7000019690931706809316062E37D1F6809130
+:100D80001606909117068038910521F410921706E7
+:100D9000109216068EE78093200681E090E09093F3
+:100DA0001F0680931E0660911E0670911F06633019
+:100DB00071051CF44FEF5FEF08C09091210680E0B1
+:100DC00020912206AC01420F511DEB01C05ED94FAC
+:100DD0003FC06330710581F4B0912106A0E080919D
+:100DE0002206AD01480F511D493751052CF01092D4
+:100DF0001F0610921E06B9C02091160630911706E4
+:100E000080911406909115062817390729F47093DC
+:100E10001F0660931E06A9C08091160690911706C2
+:100E2000FC01E553F94F208128836F5F7F4F0196C6
+:100E300090931706809316068091160690911706D8
+:100E40008038910521F4109217061092160621960B
+:100E50008FEF4F3F580709F4BCCFCA01039686179E
+:100E600097070CF0B6CF10921F0610921E06BA011B
+:100E70006C5F7F4F23E030E090E007C0F901E05E57
+:100E8000F94F8081980F2F5F3F4F26173707B4F334
+:100E90009F3F09F06AC0141615060CF051C08091EE
+:100EA0002306883821F08A3809F04AC061C0809151
+:100EB000250690912606893461F4943409F058C0CF
+:100EC0008091650190916601909364018093630124
+:100ED0004FC0833461F4983409F04AC080911C06F5
+:100EE00090911D0690931B0680931A0641C08D3485
+:100EF00009F03EC09935E1F5BA0165507040C1F185
+:100F00001092190610921806E8E2F6E040E050E070
+:100F10000FC080911806909119062191982F88276B
+:100F2000820F911D90931906809318064F5F5F4FB3
+:100F30004617570774F3809118069091190618C048
+:100F40000115110591F0D80123E030E0BA016E5F80
+:100F50007F4F07C0F901E05EF94F80818D932F5FCD
+:100F60003F4F62177307B4F705C04FEF5FEF02C042
+:100F700043E050E0CA01DF91CF911F910F91089596
+:100F80008091630190916401089580911A06909177
+:100F90001B0608952091180630911906C90108957D
+:100FA000CF92DF92EF92FF920F931F93DF93CF9335
+:100FB000CDB7DEB764970FB6F894DEBF0FBECDBFD6
+:100FC000FC0188E08D8381E08E8380818F83818125
+:100FD00088876115710519F4A0E0B0E01FC0DB013E
+:100FE0000D900020E9F71197A61BB70BA930B105AA
+:100FF0001CF02FEF3FEF4EC0AE01475F5F4F20E088
+:1010000030E009C0FB01E20FF31F8081FA018193F8
+:10101000AF012F5F3F4F2A173B07A4F354E0E52EA3
+:10102000F12CEA0EFB1E20E030E090E0AE014B5FB9
+:101030005F4F07C0FA01E20FF31F8081980F2F5F07
+:101040003F4F2E153F05B4F38EE78A83FB82EC8277
+:10105000909599830E94851A8B810E94851A8C81B4
+:101060000E94851A00E010E045E0C42ED12CCC0E81
+:10107000DD1E08C0F601E00FF11F80810E94851A75
+:101080000F5F1F4F0E151F05ACF389810E94851A53
+:1010900020E030E0C90164960FB6F894DEBF0FBEC1
+:1010A000CDBFCF91DF911F910F91FF90EF90DF9017
+:1010B000CF900895DF93CF9300D00F92CDB7DEB7D6
+:1010C0009C010B97409718F02FEF3FEF0EC029833C
+:1010D0001A8230931D0620931C0687E391E0BE011F
+:1010E0006F5F7F4F0E94D0079C01C9010F900F9046
+:1010F0000F90CF91DF910895DF93CF9300D00F929F
+:10110000CDB7DEB799838A831B8280936501909364
+:1011100066018AE391E0BE016F5F7F4F0E94D007B6
+:101120000F900F900F90CF91DF9108958DE391E094
+:1011300060E471E00E94D00782E491E060E070E03A
+:101140000E94D0078CED95E020E931E0F90131975C
+:10115000F1F70197D9F780E090E0089585E491E0F8
+:1011600068E471E00E94D0070895AF92BF92CF92D9
+:10117000DF92EF92FF920F931F93DF93CF93CDB740
+:10118000DEB729970FB6F894DEBF0FBECDBF5C0166
+:101190007B01653671051CF02FEF3FEF56C081E0F3
+:1011A0008D830E835F83488729878EE78A83E5E0F6
+:1011B000F0E0EE0EFF1EFB828BEF9FEFE80EF91EB4
+:1011C0008E2D8B5F8C830F5F050F040F020F098339
+:1011D00020E030E008C0F501E20FF31F8081980F96
+:1011E00099832F5F3F4F99812E153F05A4F390956A
+:1011F00099838EE70E94851A8B810E94851A8C81C3
+:101200000E94851A8E010B5F1F4F6AE0C62ED12CFB
+:10121000CC0EDD1EF80181918F010E94851A0C15FC
+:101220001D05C1F700E010E008C0F501E00FF11F57
+:1012300080810E94851A0F5F1F4F0E151F05ACF3AA
+:1012400089810E94851A20E030E0C90129960FB6F5
+:10125000F894DEBF0FBECDBFCF91DF911F910F91EC
+:10126000FF90EF90DF90CF90BF90AF900895EF92F6
+:10127000FF920F931F93CF93DF937C01DC010D90BE
+:101280000020E9F78D0101501040081B190BC0E048
+:10129000D0E007C0F701EC0FFD1F80810E94851A86
+:1012A0002196C017D107B4F380E090E0DF91CF9191
+:1012B0001F910F91FF90EF90089580919A008068A0
+:1012C00080939A0078948AE491E00E943709892BF0
+:1012D00009F099C026C0209114063091150680911E
+:1012E00016069091170628173907F9F0809116060F
+:1012F00090911706FC01E553F94FE0810196909318
+:10130000170680931606809116069091170680386E
+:10131000910521F410921706109216068C91E81789
+:1013200019F0AEE4B1E001C01196CD018E549140A8
+:1013300003978CF26CC020911406309115068091B1
+:1013400016069091170628173907E9F080911606BE
+:1013500090911706FC01E553F94FE08101969093B7
+:10136000170680931606809116069091170680380E
+:10137000910521F410921706109216068C91E81729
+:1013800009F04BC01196CD018E54914003979CF209
+:1013900047C0209114063091150680911606909151
+:1013A000170628173907E1F0809116069091170665
+:1013B000FC01E553F94FE081019690931706809365
+:1013C000160680911606909117068038910521F433
+:1013D00010921706109216068C91E81739F511969F
+:1013E000CD018E5491400397A4F223C080E090E099
+:1013F0000E948E068091180690911906892BB1F3F0
+:1014000020E030E002C02FEF3FEFC901089582E5F0
+:1014100091E00E943709892BB1F7AEE4B1E0B3CF78
+:101420008AE591E00E943709892B69F7AEE4B1E0C3
+:10143000D7CF80E691E060E070E00E94D007892B72
+:10144000C9F2E1CF10924C0710924B07ADE4B7E020
+:1014500020E030E04FEF1C92F90185E0EE0FFF1F16
+:101460008A95E1F7E35AF84F80E090E040830196D7
+:10147000329680319105D1F72F5F3F4F1196203181
+:10148000310549F7089560317105ACF4803191055B
+:1014900094F4FC0134E0EE0FFF1F3A95E1F7E60FFC
+:1014A000F71FEE0FFF1FDF01A55BB84F53965C934C
+:1014B000E35AF84F408308958031910584F46031F8
+:1014C00071056CF49C0154E0220F331F5A95E1F72B
+:1014D000260F371F220F331F235A384F02C020E038
+:1014E00030E0C9010895DC01803191052CF56130AF
+:1014F000710561F4FC01E55BF84F82818823C1F43A
+:1015000080914B0790914C0701960EC061157105B3
+:1015100079F4FC01E55BF84F8281882349F08091E2
+:101520004B0790914C07019790934C0780934B0782
+:10153000A55BB84F12966C930895FC01803191051C
+:101540001CF02FEF3FEF05C0E55BF84F8281282F9D
+:1015500030E0C901089580914B0790914C070895A0
+:1015600080E190E00895FC01EE0FFF1FE357F94F73
+:10157000808191810895EDE8F6E020E030E08FEF82
+:1015800090E06FEF7FEF408151814817590710F4C9
+:10159000CA01B9012F5F3F4F32962031310599F7CB
+:1015A0008639910514F06FEF7FEFCB0108952F92EC
+:1015B0003F924F925F926F927F928F929F92AF92E3
+:1015C000BF92CF92DF92EF92FF920F931F93DF9320
+:1015D000CF93CDB7DEB767970FB6F894DEBF0FBED7
+:1015E000CDBF2C012DE836E03D8B2C8BF90120E09E
+:1015F00030E06FEF70E08FEF9FEF40815181461731
+:10160000570710F4BA01C9012F5F3F4F32962031BE
+:10161000310599F76639710524F43FEF8F3F930741
+:1016200059F44114510429F08FEF9FEFD2018D93AB
+:101630009C932FEF3FEFEAC1E8E1F0E0E81BF90BE4
+:101640009924882477246624332422241A8A1B8A26
+:1016500010E000E0EE24DD24CC2419861A86FF2455
+:101660009C0128503040398B288BAC89BD898D91E5
+:101670009C912FEFA22EB12CA81AB90ACF0160E1DC
+:1016800070E00E94133228893989820F931F8A9D46
+:1016900090018B9D300D9A9D300D1124C901990F39
+:1016A000880B982F682F782F8F8B8B878C87982F9C
+:1016B000492D420F4D8751E0491508F050E0282D83
+:1016C000230F41E0281508F040E0520F598331E024
+:1016D000521708F030E0432B872D860F31E0871535
+:1016E00008F030E0480F4E8B21E0481708F020E06A
+:1016F000322B862D870F41E0861508F040E0732FCE
+:10170000780F21E0781708F020E0422B8F89830DB5
+:1017100031E0831508F030E0642F680F21E068178E
+:1017200008F020E0322B8B85820D41E0821508F015
+:1017300040E0532F580F21E0581708F020E0422BCB
+:101740008A89AC858A0F31E0BA898B1708F030E0BE
+:10175000480F21E0481708F020E0322B2B89920F28
+:101760009D8489807E88672E362E252E4A8B390FE0
+:101770003B8BC501990F880B982F2B2D982F682F25
+:10178000782F8E8B8F8B8E87312F3A0D3F8731E0EC
+:101790004F85411708F030E0200F41E0201708F096
+:1017A00040E0320F3A8331E08A81821708F030E05E
+:1017B000432B8E2D890F51E08E1508F050E0480F15
+:1017C0004B8321E0481708F020E0522B8D2D860F27
+:1017D00061E08D1508F060E0580F5C8321E0581738
+:1017E00008F020E0622B8C2D870F71E08C1508F03B
+:1017F00070E0680F6D8321E0681708F020E0722B1D
+:1018000089859E89890F01E0A9858A1708F000E083
+:10181000780F7E8321E0781708F020E0022B8A857C
+:10182000BF898B0F21E03A85831708F020E0080F6D
+:101830000F8311E0081708F010E0212B4E85F40EFD
+:101840002F0D28871F850A81EB80DC80CD808E815B
+:1018500089879F819A87F22E3196AC89BD8912962D
+:10186000BD8BAC8BAD5AB64009F0FFCE411451048C
+:1018700001F1212F302F4E2D5D2D6C2D782F892FCA
+:101880009F2DE0EDAE2EBB24BA94CC24CA94DD2467
+:10189000DA94EE24EA94FF24FA940FEF1FEF0E94EB
+:1018A000B21E590182E390E0A80EB91ED201AD929A
+:1018B000BC92292D382D472D562D632D722D8A89E6
+:1018C0009B8901E00E94331E122FF32EE42ED52EA9
+:1018D000C62EB72EA82E892E02E00E94331EB92FE5
+:1018E000210FE1E0211708F0E0E03F0DF1E03F15A6
+:1018F00008F0F0E09E2E930EE1E0931608F0E0E091
+:10190000FE2B4E0DA1E04E1508F0A0E0FF2EF40EC8
+:10191000E1E0F41608F0E0E0AE2B5D0DF1E05D15BE
+:1019200008F0F0E00A2F050FE1E0051708F0E0E00D
+:10193000FE2B6C0DA1E06C1508F0A0E01F2F160F18
+:10194000E1E0161708F0E0E0AE2B7B0DF1E07B152F
+:1019500008F0F0E0A70FE1E0A71708F0E0E0FE2BA9
+:101960008A0D91E08A1508F090E0F80FE1E0F81791
+:1019700008F0E0E09E2BB80D392D4F2D502F612F30
+:101980007A2F8F2F9B0FAF84BA80CB80DC80ED80C5
+:10199000FE800F8118850E94B21EE32FF42FA52F21
+:1019A000B62F172F082FE92E80EAF82EF20E31E01D
+:1019B000F21608F030E03E0F41E03E1708F040E03C
+:1019C0004F0F51E04F1708F050E05A0F61E05A17DF
+:1019D00008F060E06B0F71E06B1708F070E0710FBA
+:1019E00081E0711708F080E0800F91E0801708F027
+:1019F00090E02F2D9E0DE0EAAE2EBB24CC24DD24FA
+:101A0000EE24FF2400E010E00E94DA26C901679668
+:101A10000FB6F894DEBF0FBECDBFCF91DF911F91FF
+:101A20000F91FF90EF90DF90CF90BF90AF909F907D
+:101A30008F907F906F905F904F903F902F90089580
+:101A400080918C06882319F0813071F407C08AE2F6
+:101A500090E060E070E00E948A0F08958BE290E0D1
+:101A600060E070E00E948A0F089580918C068823C0
+:101A700019F0813071F407C08AE290E061E070E013
+:101A80000E948A0F08958BE290E061E070E00E946E
+:101A90008A0F0895EF92FF920F931F93CF93DF93D6
+:101AA0007C0180918C068130E1F400E110E0C0E01F
+:101AB000D0E8BE016E217F2188E090E00E948A0F6D
+:101AC00089E090E061E070E00E948A0F89E090E098
+:101AD00060E070E00E948A0FD695C79501501040D3
+:101AE00041F7DF91CF911F910F91FF90EF900895F3
+:101AF00080938C0680918C06882321F0813009F038
+:101B000044C01DC08CE290E09093AE068093AD0679
+:101B10008BE290E09093B0068093AF068FE290E066
+:101B20009093B2068093B1068EE290E09093B40653
+:101B30008093B3061092B6061092B50608958AE215
+:101B400090E060E070E00E948A0F8DE290E0909358
+:101B5000AE068093AD068CE290E09093B006809341
+:101B6000AF068FE290E09093B2068093B1068EE2CA
+:101B700090E09093B4068093B3068FEF9FEF0E949E
+:101B80004A0D1092B6061092B5060895AF92BF9214
+:101B9000CF92DF92EF92FF921F93CF93DF936C016E
+:101BA0000E94D91C019719F0AA24BB2405C00E94E9
+:101BB000D21C61E0A62EB12C5DE8E52E56E0F52E94
+:101BC000C0E0D0E0C0FE57C0EC2F80918C06882387
+:101BD00021F4FE01E959FE4FE0811E2FE3FF07C00B
+:101BE0008091B3069091B40661E070E006C08091E8
+:101BF000B3069091B40660E070E00E948A0F12FF75
+:101C000007C08091B1069091B20661E070E006C015
+:101C10008091B1069091B20660E070E00E948A0F58
+:101C200011FF07C08091AF069091B00661E070E0AF
+:101C300006C08091AF069091B00660E070E00E940F
+:101C40008A0F10FF07C08091AD069091AE0661E04B
+:101C500070E006C08091AD069091AE0660E070E045
+:101C60000E948A0F8091B5069091B6060E94DF1CF3
+:101C7000F70191838083219682E090E0E80EF91EBF
+:101C8000C031D10519F0D594C7949CCFAB2811F081
+:101C90000E94C31CDF91CF911F91FF90EF90DF90C6
+:101CA000CF90BF90AF9008958FEF9FEF0E94C60D29
+:101CB000EDE8F6E020E030E08FEF90E06FEF7FEFAF
+:101CC000408151814817590710F4CA01B9012F5FAB
+:101CD0003F4F32962031310599F78639910514F03E
+:101CE0006FEF7FEFCB010895AC01477050709C01FE
+:101CF00083E0359527958A95E1F72430310509F47D
+:101D000044C02530310554F42230310511F123301F
+:101D100031056CF52130310561F40EC026303105F6
+:101D200009F44FC026303105F4F12730310509F4AC
+:101D300061C02FEF3FEF77C08AB3042E02C0220F9D
+:101D4000331F0A94E2F7922F909598239ABB89B398
+:101D500061C087B321E030E0042E02C0220F331FA0
+:101D60000A94E2F72095282327BB86B353C084B397
+:101D700021E030E0042E02C0220F331F0A94E2F764
+:101D80002095282324BB83B345C081B321E030E0F4
+:101D9000042E02C0220F331F0A94E2F72095282355
+:101DA00021BB80B337C082B121E030E0042E02C0F5
+:101DB000220F331F0A94E2F72095282322B981B11C
+:101DC00029C04430510534F084B7806884BF84B79B
+:101DD000806884BF8091610021E030E0042E02C061
+:101DE000220F331F0A94E2F72095282320936100E5
+:101DF00080B110C08091640021E030E0042E02C068
+:101E0000220F331F0A94E2F72095282320936400C1
+:101E100080916300282F30E002C0359527954A95C0
+:101E2000E2F721703070C9010895AC01477050701D
+:101E30009C0193E0359527959A95E1F7243031057B
+:101E4000C9F1253031055CF422303105E9F0233049
+:101E500031052CF52130310509F05BC00CC026306E
+:101E6000310509F43DC0263031057CF127303105BC
+:101E700009F04FC042C08BB302C0220F331F4A95F6
+:101E8000E2F7822B8BBB089528B381E090E002C07B
+:101E9000880F991F4A95E2F7282B28BB089525B390
+:101EA00081E090E002C0880F991F4A95E2F7282B45
+:101EB00025BB089522B381E090E002C0880F991FEE
+:101EC0004A95E2F7282B22BB089523B181E090E0E8
+:101ED00002C0880F991F4A95E2F7282B23B908956D
+:101EE0002091620081E090E002C0880F991F4A951E
+:101EF000E2F7282B2093620008952091650081E08D
+:101F000090E002C0880F991F4A95E2F7282B209392
+:101F100065000895AC01477050709C0153E0359501
+:101F200027955A95E1F7672B09F088C024303105D1
+:101F300009F444C0253031055CF42230310511F13B
+:101F4000233031056CF52130310509F0FEC00DC09C
+:101F50002630310509F44EC0263031050CF43CC062
+:101F60002730310509F0F1C056C08AB302C0220FF4
+:101F7000331F4A95E2F7822B8ABB8BB32095282327
+:101F80002BBB089587B321E030E002C0220F331F3E
+:101F90004A95E2F7822B87BB88B32095282386C019
+:101FA00084B321E030E002C0220F331F4A95E2F7EC
+:101FB000822B84BB85B32095282386C081B321E082
+:101FC00030E002C0220F331F4A95E2F7822B81BB1B
+:101FD00082B32095282386C082B121E030E002C080
+:101FE000220F331F4A95E2F7822B82B983B12095E5
+:101FF000282386C08091610021E030E002C0220FDA
+:10200000331F4A95E2F7822B809361008091620032
+:102010002095282386C08091640021E030E002C032
+:10202000220F331F4A95E2F7822B80936400809140
+:1020300065002095282320936500089524303105FC
+:1020400009F444C0253031055CF42230310511F12A
+:10205000233031056CF52130310509F076C00DC013
+:102060002630310509F44EC0263031050CF43CC051
+:102070002730310509F069C057C08AB302C0220F6A
+:10208000331F4A95E2F7922F822B8ABB8BB3982B92
+:102090009BBB089587B321E030E002C0220F331FBD
+:1020A0004A95E2F7822B87BB88B3282B28BB08957B
+:1020B00084B321E030E002C0220F331F4A95E2F7DB
+:1020C000822B84BB85B3282B25BB089581B321E0E7
+:1020D00030E002C0220F331F4A95E2F7822B81BB0A
+:1020E00082B3282B22BB089582B121E030E002C0E8
+:1020F000220F331F4A95E2F7822B82B983B1282B36
+:1021000023B908958091610021E030E002C0220FE0
+:10211000331F4A95E2F7822B809361008091620021
+:10212000282B2093620008958091640021E030E024
+:1021300002C0220F331F4A95E2F7822B809364007E
+:1021400080916500282B209365000895E4E6F0E077
+:1021500080818E7F8083E5E6F0E0808181608083EE
+:102160002091630030E02095309521703070C901D6
+:102170000895809164008E7F809364008091650053
+:102180008160809365008091630080FF03C020E040
+:1021900030E010C0809164008E7F80936400809155
+:1021A00065008160809365008091630080FFF2CFBD
+:1021B00021E030E0C9010895E4E6F0E080818D7F00
+:1021C0008083E5E6F0E08081826080832091630077
+:1021D00030E0369527952095309521703070C901F3
+:1021E0000895809164008D7F8093640080916500E4
+:1021F0008260809365008091630081FF03C020E0CE
+:1022000030E010C0809164008D7F809364008091E5
+:1022100065008260809365008091630081FFF2CF4A
+:1022200021E030E0C901089504C08FE090E00E94F1
+:10223000E31B809164008D7F809364008091650032
+:102240008260809365008091630081FDEECF0895E8
+:1022500004C08FE090E00E94E31B809164008E7FB9
+:102260008093640080916500816080936500809117
+:10227000630080FDEECF0895EF92FF920F931F93BE
+:10228000F894F4B2E5B217E714BB15BB8CE291E009
+:102290000E94E31B06E605BB8CE291E00E94E31B73
+:1022A00015BB8CE291E00E94E31B05BB8CE291E040
+:1022B0000E94E31B15BB8CE291E00E94E31B05BB6F
+:1022C0008CE291E00E94E31BF4BAE5BA78941F9186
+:1022D0000F91FF90EF900895CF93DF93EC017894E6
+:1022E000809164008C7F809364008091650083609E
+:1022F00080936500C0FF04C081E090E00E94671CED
+:10230000C1FF04C00E945C1A0E946A1AC6FF03C083
+:1023100078940E94FE1DC2FF03C078940E94E119C8
+:10232000C3FF02C00E94E419C7FF02C00E949915B2
+:10233000D0FF02C00E94551AD1FF09C00E94E511CA
+:102340008F3F19F40E943C1102C00E94780DD2FF09
+:1023500002C00E94751480EA9FE00197F1F7DF91B7
+:10236000CF910895E199FECF9FBB8EBB6DBBE29AE2
+:10237000E19A80E090E00895FB01E199FECF9FBBD8
+:102380008EBBE09A8DB3808380E090E00895E19960
+:10239000FECF80E190E09FBB8EBBE09A3DB3E19918
+:1023A000FECF81E190E09FBB8EBBE09A2DB3E19917
+:1023B000FECF82E190E09FBB8EBBE09A8DB33934B3
+:1023C00011F4243409F08FEF0895E199FECF84E1F0
+:1023D00090E09FBB8EBBE09A4DB3E199FECF85E1C3
+:1023E00090E09FBB8EBBE09A3DB3E199FECF86E1C2
+:1023F00090E09FBB8EBBE09A2DB3E199FECF87E1C1
+:1024000090E09FBB8EBBE09A8DB3423421F43F3401
+:1024100011F42D3409F08FEF0895882329F42091C9
+:102420002A0A30912B0A09C0813019F02FEF3FEFB3
+:1024300004C020915F0930916009C9010895882383
+:1024400029F42091240A3091250A09C0813019F01D
+:102450002FEF3FEF04C02091C1093091C209C9019B
+:102460000895882329F42091240A3091250A09C06F
+:10247000813019F02FEF3FEF04C02091C109309156
+:10248000C209C9010895882329F41092250A1092DF
+:10249000240A0895813021F41092C2091092C109D2
+:1024A00008958091C3099091C40908951092C309B9
+:1024B0001092C4091092C5091092C60908959C0192
+:1024C00080915D0990915E0982179307CCF3109279
+:1024D0005E0910925D0908954091C7094230E1F00C
+:1024E000433028F4442341F0413071F508C04330B3
+:1024F000B9F0443049F519C0382F20E002C0282F28
+:1025000030E08091280A9091290A822B932B909396
+:10251000290A8093280A18C0382F330F20E00AC0F8
+:10252000282F30E0220F331F05C0881F8827881FFF
+:10253000282F30E08091610990916209822B932BC2
+:102540009093620980936109842F90E0019665E081
+:1025500070E00E9413328093C709882309F004C1F8
+:102560002091610930916209C9018C709070892BAA
+:1025700019F083E094E006C021FF09C020FF07C0E6
+:1025800081E094E090932B0A80932A0A0AC075E0B8
+:10259000369527957A95E1F7337030932B0A20937F
+:1025A0002A0A2091280A3091290AC9018C7090705A
+:1025B000892B19F083E094E006C021FF09C020FFB9
+:1025C00007C081E094E09093600980935F090AC09E
+:1025D00065E0369527956A95E1F733703093600989
+:1025E00020935F0910926209109261091092290AE2
+:1025F0001092280A80912A0A90912B0A24E08030B8
+:10260000920708F057C02FEF33E0281B390B3093A7
+:102610002B0A20932A0A8091BF099091C0098D321C
+:10262000910529F41092C0091092BF0905C00196C6
+:102630009093C0098093BF09A091BF09B091C009D0
+:10264000FD01EE0FFF1FED59F64F318320831097E8
+:1026500029F4E091BD09F091BE0906C0AA0FBB1F85
+:10266000AF59B64FED91FC913097C1F02E1B3F0B47
+:1026700082E0213038073CF08091240A9091250AAD
+:102680008F5F934011C09EEF203039074CF480914A
+:10269000240A9091250A81509C4F06C020E030E02A
+:1026A0008091240A9091250A820F931F9093250A06
+:1026B0008093240A20915F093091600984E02030E2
+:1026C000380708F051C08091260A9091270A8D3270
+:1026D000910529F41092270A1092260A05C0019646
+:1026E0009093270A8093260AA091260AB091270A80
+:1026F000FD01EE0FFF1FE853F64F31832083109743
+:1027000029F4E091220AF091230A06C0AA0FBB1F08
+:10271000AA53B64FED91FC913097D1F0C9018E1BB1
+:102720009F0BFC0192E0E130F9073CF08091C10978
+:102730009091C2098F5F934011C02EEFE030F207F5
+:102740004CF48091C1099091C20981509C4F06C000
+:10275000E0E0F0E08091C1099091C2098E0F9F1FC7
+:102760009093C2098093C1098091C3099091C409D3
+:10277000A091C509B091C6090196A11DB11D809314
+:10278000C3099093C409A093C509B093C6090895DD
+:10279000E091BF09F091C009E81BF90BF7FDBE9667
+:1027A000EE0FFF1FED59F64F808191810895E09162
+:1027B000260AF091270AE81BF90BF7FDBE96EE0FEB
+:1027C000FF1FE853F64F808191810895FF920F9388
+:1027D0001F93CF93DF93F82E8091BF099091C0098A
+:1027E0002091260A3091270A86978C01061B170B29
+:1027F000DC019696A61BB70B26523040E901C61B9A
+:10280000D70B2A5D3F4F261B370B60E070E0FF209F
+:1028100099F4FD01B7FDBE96EE0FFF1FED59F64F7F
+:1028200040815181F80117FF02C0FD013896EE0F7B
+:10283000FF1FED59F64F12C0F90137FDBE96EE0F9E
+:10284000FF1FE853F64F40815181FE01D7FF02C0C0
+:10285000F9013896EE0FFF1FE853F64F8081918102
+:10286000481B590BCA014E96CD9768F06F5F7F4F9A
+:10287000015010401197219721503040633071056D
+:1028800031F640E054E0CA01DF91CF911F910F91E2
+:10289000FF9008951F93CF93DF93182F60E070E0AF
+:1028A0000E94E613EC01812F61E070E00E94E613C4
+:1028B00024E0C030D20739F424E08030920749F494
+:1028C00020E038E00DC024E08030920731F49E0112
+:1028D00001C09C01220F331F03C09C012C0F3D1F20
+:1028E000C901DF91CF911F91089510925E09109256
+:1028F0005D098CE692E16FEA74E10E94851B1092FB
+:10290000C70910926209109261091092290A109267
+:10291000280A8FEF9FEF90932B0A80932A0A9093B7
+:10292000600980935F091092C0091092BF0910924C
+:10293000270A1092260AE3E6F9E01192119289E043
+:10294000EF3BF807D1F7E8ECF9E0119211928AE039
+:10295000E432F807D1F785E00E94991B08951092A0
+:10296000C70980915D0990915E09019690935E0977
+:1029700080935D0985E00E94991B089580E090E0B6
+:102980001FB8779BFECF019621E0883F9207C1F7E1
+:10299000959880E48FB9779BFECF80E88FB9779BBD
+:1029A000FECF959A0895282F30E020523040F9014B
+:1029B000EE0FFF1FEE0FFF1FE20FF31FE358FE4F56
+:1029C00095E0899F900111242E513F4F80818FB94E
+:1029D000779BFECF3196E217F307C1F71FB8779BBD
+:1029E000FECF0895DC0145E00CC080818FB9779B54
+:1029F000FECF3196E217F307C1F71FB8779BFECFE2
+:102A000011962C91222391F0822F90E08097FC0167
+:102A1000EE0FFF1FEE0FFF1FE80FF91FE358FE4FE9
+:102A2000249F900111242E513F4FDFCF0895959898
+:102A3000677060646FB9779BFECF80688FB9779BB2
+:102A4000FECF959A08950F931F93DF93CF9300D0F5
+:102A500000D000D0CDB7DEB79C01DE011196E7E7CC
+:102A6000F1E086E001900D928150E1F737FF11C04F
+:102A7000EEEBF1E080818FB9779BFECF319681E05C
+:102A8000E33CF807B9F71FB8779BFECF3095219547
+:102A90003F4F46E08E010F5F1F4F4150F801E40F9A
+:102AA000F11DC9016AE070E00E941332805D8083ED
+:102AB000C9016AE070E00E9413329B016115710543
+:102AC00061F722C0FB01E40FF11D2081822F90E00D
+:102AD0008097FC01EE0FFF1FEE0FFF1FE80FF91F9D
+:102AE000E358FE4F259F900111242E513F4F8081C6
+:102AF0008FB9779BFECF3196E217F307C1F71FB866
+:102B0000779BFECF4F5F04C0BE016F5F7F4F55E0E4
+:102B10004630C0F226960FB6F894DEBF0FBECDBF8A
+:102B2000CF91DF911F910F9108958FB9779BFECFC1
+:102B3000089587B3876087BB81B3806381BB88B307
+:102B4000887F88BB95988DB180658DB9709A949A6D
+:102B50008AE090E00E94E31B949884E690E00E9453
+:102B6000E31B949A81E28FB9779BFECF88EC8FB9F3
+:102B7000779BFECF86E08FB9779BFECF83E18FB93D
+:102B8000779BFECF80E28FB9779BFECF8CE08FB929
+:102B9000779BFECF959A0E94BE1408951F920F92C4
+:102BA0000FB60F920BB60F9211242F933F938F9372
+:102BB0009F93AF93BF93CF93DF93EF93FF93809156
+:102BC000B706882391F020916403309165038091CA
+:102BD0006803909169039093650380936403309335
+:102BE0006903209368031092B70685B3876785BB96
+:102BF00085B3C0916403D09165039881892385BB17
+:102C00001092B806898181BF20E0A22FB0E082B780
+:102C1000FD01EE0FFF1FEC0FFD1F91819F5F8917D4
+:102C2000B8F095B31196AA0FBB1FAC0FBD1F8C91C6
+:102C3000982B95BB253061F02F5FE22FF0E0EE0F6F
+:102C4000FF1FEC0FFD1F81818F3FF9F281BFDDCFA8
+:102C50002093B806FF91EF91DF91CF91BF91AF9193
+:102C60009F918F913F912F910F900BBE0F900FBEB0
+:102C70000F901F9018951F920F920FB60F920BB6E0
+:102C80000F9211242F934F935F938F939F93AF9342
+:102C9000BF93EF93FF93409164035091650320919C
+:102CA000B806A22FB0E082B7FD01EE0FFF1FE40FC0
+:102CB000F51F91819F5F8917B8F095B31196AA0F00
+:102CC000BB1FA40FB51F8C91982B95BB253061F0CD
+:102CD0002F5FE22FF0E0EE0FFF1FE40FF51F818161
+:102CE0008F3FF9F281BFDDCF2093B806FF91EF91BE
+:102CF000BF91AF919F918F915F914F912F910F90C5
+:102D00000BBE0F900FBE0F901F9018950F931F933F
+:102D1000CF93DF9380916303882309F462C1E0912C
+:102D20006603F09167038FEF80838091530A81508F
+:102D300081838F5F91E09283882311F08EEF8083EF
+:102D40008091540A815083838F5F92E0948388231B
+:102D500019F080818D7F80838091550A8150858311
+:102D60008F5F94E09683882319F080818B7F808326
+:102D70008091560A815087838F5F90E190878823E6
+:102D800019F080818F7E80838091570A81508187DE
+:102D90008F5F90E29287882319F080818F7D8083F6
+:102DA0008091580A815083878F5F90E494878823AD
+:102DB00019F080818F7B808391818381891710F046
+:102DC00061E007C0818393839281848182839483AD
+:102DD00060E0DF01159693818581891758F483831C
+:102DE0009583948111968C911197848311969C936D
+:102DF000119760E08D010E5F1F4F958112968C91A7
+:102E00001297891770F4858312969C9312971196E6
+:102E10009C911197E801898111968C931197998360
+:102E200060E098012E5F3F4F12969C911297E80147
+:102E30008A81891760F412968C9312979A839981EC
+:102E4000E9018981E8018983E901998360E0A901A9
+:102E50004E5F5F4FE8019A81E9018A81891760F42A
+:102E6000E8018A83E9019A839981EA018981E9016C
+:102E70008983EA01998303C0662309F09FC0918189
+:102E80008381891710F091E007C081839383928139
+:102E900084818283948390E043818581841758F4F0
+:102EA00083834583948111968C9111978483119625
+:102EB0009C93119790E0458112968C9112978417FC
+:102EC00070F4858312964C93129711969C911197EA
+:102ED000E801898111968C931197998390E012965D
+:102EE0004C911297E8018A81841760F412968C93B2
+:102EF00012974A839981E9018981E8018983E9016F
+:102F0000998303C0992309F059C09181838189175E
+:102F100010F091E007C08183938392818481828342
+:102F2000948390E023818581821758F483832583DD
+:102F3000948111968C911197848311969C9311978B
+:102F400090E0258112968C911297821770F48583F8
+:102F500012962C93129711969C911197E8018981F2
+:102F600011968C931197998302C0992339F5918119
+:102F70008381891710F021E007C0818393839281B8
+:102F800084818283948320E093818581891750F422
+:102F900083839583948111968C91119784831196E4
+:102FA0009C9302C0222351F491818381891730F4CC
+:102FB0008183938392818481828394838FB7F894F1
+:102FC000209168033091690330936703209366036F
+:102FD000F0936903E09368038FBF81E08093B706A5
+:102FE00021C08091530A811181E0282F8091540AD9
+:102FF000811122608091550A811124608091560AC6
+:10300000811120618091570A811120628091580AB4
+:10301000811120649FB7F89485B320958767822338
+:1030200085BB9FBFDF91CF911F910F910895982F7E
+:103030003FB7F8948091B9068823A9F481E0809382
+:10304000B9063FBF892F90E0FC01EE0FFF1FE80F8C
+:10305000F91FED5AF54F6083418322830E94861643
+:103060001092B90608953FBF0895282F9FB7F8948E
+:103070008091B906882379F481E08093B9069FBFD7
+:103080002093530A6093540A4093550A0E9486166F
+:103090001092B90608959FBF0895282F9FB7F894FE
+:1030A0008091B906882379F481E08093B9069FBFA7
+:1030B0002093560A6093570A4093580A0E94861636
+:1030C0001092B90608959FBF0895282F9FB7F894CE
+:1030D0008091B9068823A9F481E08093B9069FBF47
+:1030E0002093530A6093540A4093550A2093560A3A
+:1030F0006093570A4093580A0E9486161092B906A8
+:1031000008959FBF0895EF920F93382F9FB7F894BB
+:103110008091B9068823A9F481E08093B9069FBF06
+:103120003093530A6093540A4093550A2093560AE9
+:103130000093570AE092580A0E9486161092B90628
+:1031400001C09FBF0F91EF900895E62FF0E06295C8
+:103150006695677070E044E250E09B01249FB001E7
+:10316000259F700D349F700D11249F012C713070BC
+:103170003595279535952795DA012A9FA0012B9F34
+:10318000500D3A9F500D1124E370F07025E530E0AA
+:10319000D901EA9F9001EB9F300DFA9F300D112469
+:1031A0000E9417180895482F50E0829586958770E1
+:1031B000E4E2F0E09A012C71307035952795359551
+:1031C00027952E9FB0012F9F700D3E9F700D1124EB
+:1031D0004370507025E530E0DA01A29FA001A39F63
+:1031E000500DB29F500D11248E9F802D11240E94EE
+:1031F00035180895482F50E0829586958770E4E24F
+:10320000F0E09A012C71307035952795359527950A
+:103210002E9FB0012F9F700D3E9F700D11244370A3
+:10322000507025E530E0DA01A29FA001A39F500D68
+:10323000B29F500D11248E9F802D11240E944D1895
+:103240000895482F50E0829586958770E4E2F0E07B
+:103250009A012C71307035952795359527952E9FBD
+:10326000B0012F9F700D3E9F700D11244370507060
+:1032700025E530E0DA01A29FA001A39F500DB29F87
+:10328000500D11248E9F802D11240E9465180895E1
+:10329000AF92BF92DF92EF92FF920F931F93D82EBF
+:1032A000482F50E0E62FF0E0D294D694A7E0DA223F
+:1032B00084E290E09A012C71307035952795359510
+:1032C0002795289F5001299FB00C389FB00C1124DE
+:1032D00043705070A5E5B0E09A012A9FA0012B9F92
+:1032E000500D3A9F500D112462956695677070E0FD
+:1032F000689F9001699F300D789F300D1124BF01A8
+:103300006C7170707595679575956795689F80016C
+:10331000699F100D789F100D1124E370F070EA9FE3
+:103320007001EB9FF00CFA9FF00C1124D89E802DB9
+:1033300011246A2D0E9483181F910F91FF90EF9026
+:10334000DF90BF90AF90089586E083BF87B783601A
+:1033500087BF089587B78C7F87BF0895813041F478
+:1033600087B78C7F87BF109263030E9486160895EB
+:1033700081E0809363030E94861686E083BF87B74F
+:10338000836087BF089585B3876785BB84B38767EC
+:1033900084BB80E060E040E00E94651881E00E940C
+:1033A000AE19089585B3876785BB84B3876784BBEF
+:1033B00080E060E040E00E94651880E00E94AE1965
+:1033C00008950E94D21908958BB38F708BBB8AB376
+:1033D000806F8ABB87B3806687BB81EA8FBD89E037
+:1033E0008EBD1BBC1ABC19BC18BC0895892B51F4A6
+:1033F0008BB38073803111F01BBC1ABC8BB38F7CF4
+:10340000806109C08BB38073803211F01BBC1ABC81
+:103410008BB38F7C80628BBB6ABD0895892B51F47E
+:103420008BB3807C803811F019BC18BC8BB38F73C0
+:10343000806809C08BB3807C803411F019BC18BC43
+:103440008BB38F7380648BBB68BD08950E94F6199F
+:1034500008950E940E1A08951ABC18BC0895FC0124
+:103460008431910554F0863891053CF4EE0FFF1F2E
+:10347000EE5BFC4F2081318102C02FEF3FEFC9018D
+:1034800008950E94A01CFC018431910554F08638F7
+:1034900091053CF4EE0FFF1FEE5BFC4F2081318164
+:1034A00002C02FEF3FEFC901089584E190E060E092
+:1034B00070E00E948A0F08951092900088E089B908
+:1034C000599A8AB188618AB9E5E9F0E0808186601D
+:1034D000808308951092980087E680939900EBE925
+:1034E000F0E0808182608083EAE9F0E08081886199
+:1034F0008083EDE9F0E080818660808308955D9BA4
+:10350000FECF8CB980E090E00895982F80919B00C9
+:1035100085FFFCCF90939C0080E090E00895FC0133
+:1035200004C05D9BFECF8CB9319680818823C9F79A
+:1035300080E090E008955F9BFECF8CB190E008950D
+:1035400080919B0087FFFCCF80919C0090E00895C4
+:10355000FC015F9903C02FEF3FEF04C08CB1808363
+:1035600020E030E0C9010895FC0180919B0087FDB7
+:1035700003C02FEF3FEF05C080919C00808320E0C7
+:1035800030E0C90108950F931F93DF93CF9300D0CC
+:1035900000D000D0CDB7DEB79C01DE011196EFE57B
+:1035A000F4E086E001900D928150E1F737FF07C00B
+:1035B0005D9BFECF8DE28CB9309521953F4F46E063
+:1035C0008E010F5F1F4F4150F801E40FF11DC9013B
+:1035D0006AE070E00E941332805D8083C9016AE076
+:1035E00070E00E9413329B016115710561F709C0FB
+:1035F000FC01E40FF11DE0815D9BFECFECB94F5F54
+:1036000002C0CE010196463098F380E090E0269605
+:103610000FB6F894DEBF0FBECDBFCF91DF911F91E3
+:103620000F910895803110F08FE30895E82FF0E0B6
+:10363000E25BFB4F808108959C01E32FE295EF70E0
+:10364000F0E0E25BFB4FE0815D9BFECFECB95D9B60
+:10365000FECFE32FF0E0EF70F070E25BFB4F808174
+:103660008CB95D9BFECFF90184E0F695E7958A95CC
+:10367000E1F7F0E0EF70F070E25BFB4F80818CB916
+:103680005D9BFECFE22FF0E0EF70F070E25BFB4F4E
+:1036900080818CB90895E82FE295EF70F0E0E25B4D
+:1036A000FB4FE0815D9BFECFECB95D9BFECFE82F29
+:1036B000F0E0EF70F070E25BFB4F80818CB9089511
+:1036C000EF92FF920F931F93DF93CF930F92CDB79B
+:1036D000DEB78C017E010894E11CF11C05C05D9BE6
+:1036E000FECF8CB90F5F1F4FC701B80141E050E01A
+:1036F0000E94782F8981882391F70F90CF91DF91D5
+:103700001F910F91FF90EF90089523ED2DB921E0C7
+:103710002EB927B3276027BBBB98C09A9093BC06ED
+:103720008093BB067093BE066093BD061092BA06E6
+:1037300008958093BA06C0988FEF8FB908951F92AD
+:103740000F920FB60F920BB60F9211242F933F9347
+:103750004F935F936F937F938F939F93AF93BF9399
+:10376000EF93FF938091BA068823D1F08FB1E09157
+:10377000BB06F091BC0609958091BA0681508093F2
+:10378000BA068091BA06882349F4C09AE091BD0632
+:10379000F091BE06309721F0099502C08FEF8FB9E6
+:1037A000FF91EF91BF91AF919F918F917F916F9119
+:1037B0005F914F913F912F910F900BBE0F900FBED5
+:1037C0000F901F90189520E436E004C0F90131975E
+:1037D000F1F7019718161906CCF308951092890095
+:1037E00010928800EAE8F0E02081286020832081A0
+:1037F0002260208324E234EF3093870020938600F8
+:10380000EDE7F0E02081206120837093C40660938F
+:10381000C306909366048093650408952091C106C1
+:103820003091C206C90108951092C2061092C106D5
+:1038300008951F920F920FB60F920BB60F9211249C
+:103840002F933F934F935F936F937F938F939F93A8
+:10385000AF93BF93EF93FF932091BF063091C006C3
+:10386000809165049091660428173907A1F480912E
+:10387000C1069091C20601969093C2068093C1063C
+:10388000E091C306F091C406309709F009951092B3
+:10389000C0061092BF068091BF069091C0060196A7
+:1038A0009093C0068093BF06FF91EF91BF91AF91B7
+:1038B0009F918F917F916F915F914F913F912F9148
+:1038C0000F900BBE0F900FBE0F901F901895AC017C
+:1038D00020E030E0F901EE0FFF1FE20FF31FE35A83
+:1038E000F54F1282118210822F5F3F4F2B3031052E
+:1038F00089F717B887B1816687B916B886B1876826
+:1039000086B9809164008C61809364008091650029
+:10391000837E8093650021E030E03093CA062093D7
+:10392000C906452B61F08091C5069091C6060197A6
+:1039300031F0339A369A3093C6062093C50608951F
+:10394000009719F420E030E00BC00197FC01EE0F66
+:10395000FF1FE80FF91FE35AF54F8081282F30E051
+:10396000C9010895009719F420E030E00AC00197DA
+:10397000FC01EE0FFF1FE80FF91FE35AF54F2181FD
+:103980003281C90108958091C5069091C6060197BC
+:1039900041F0339A369A81E090E09093C606809386
+:1039A000C506089581E090E09093C8068093C7060D
+:1039B00008952091C5063091C606C90108959C015D
+:1039C0003699FECF2730310524F4822F805A87B9EB
+:1039D00014C087E687B9C901089720916500382F80
+:1039E0003470237E322B8370907043E0880F991FD0
+:1039F0004A95E1F7382B30936500369A3699FECF19
+:103A000085B190E008959C013699FECF27303105AD
+:103A100024F4822F805A87B914C087E687B9C90178
+:103A2000089720916500382F3470237E322B8370E5
+:103A3000907073E0880F991F7A95E1F7382B3093D7
+:103A40006500369A3699FECF24B185B130E066E044
+:103A5000359527956A95E1F790E0880F991F880FB3
+:103A6000991F282B392BC90108958091780A90E07D
+:103A70000895E5E6F0E02081382F3470237E322B64
+:103A800083709070A3E0880F991FAA95E1F7382BF7
+:103A9000308308951F920F920FB60F920BB60F92BC
+:103AA00011242F933F934F935F936F938F939F9323
+:103AB000EF93FF938091C5069091C606019709F098
+:103AC0008DC087B1882361F124B165B14091C906E9
+:103AD0005091CA064150504030E0F6E035952795A8
+:103AE000FA95E1F7862F90E0880F991F880F991FAC
+:103AF000282B392BFA01EE0FFF1FE40FF51FE35AB5
+:103B0000F54F328321838091C9069091CA060197AF
+:103B1000FC01EE0FFF1FE80FF91FE35AF54F60831A
+:103B20008091C9069091CA06069771F487E687B915
+:103B300080916500837E8093650088E090E090939B
+:103B4000CA068093C9063AC08091C9069091CA06F8
+:103B50000B9739F481E090E09093CA068093C906F0
+:103B60000FC08091C9069091CA0601969093CA062B
+:103B70008093C9068091C9069091CA0607973CF4C4
+:103B80008091C9069091CA06806687B917C087E6FA
+:103B900087B98091C9069091CA060897209165005F
+:103BA000382F3470237E322B8370907023E0880F7F
+:103BB000991F2A95E1F7382B309365008091C7064D
+:103BC0009091C806892B49F01092C8061092C7063A
+:103BD0001092C6061092C50601C0369AFF91EF9169
+:103BE0009F918F916F915F914F913F912F910F9086
+:103BF0000BBE0F900FBE0F901F90189508959CE17B
+:103C000095BDBF9A83BD08959C0140E050E064E2F9
+:103C100074EF80E090E00E9426322150304037FF60
+:103C200002C020E030E08CE185BDBF9A2F3F310516
+:103C300019F014F02FEF30E023BD089585B5887F8B
+:103C400085BDC69808950F931F938C01CB010E94E8
+:103C5000041EC8010E94E31B85B5887F85BDC698F8
+:103C60001F910F910895EF92FF920F93DF93CF93DF
+:103C7000CDB7DEB760970FB6F894DEBF0FBECDBFED
+:103C8000A82F002309F461C07E010894E11CF11CF7
+:103C900088E0F70111928A95E9F729833A834B83EB
+:103CA0005C836D837E83AF83988780E2801BE82FDF
+:103CB000FF27E7FDF09549815A816B817C811816B9
+:103CC00084F019861A861B861C86882799278E1BE6
+:103CD0009F0B04C0440F551F661F771F8A95D2F7AC
+:103CE00028C0202F332727FD3095DB01CA01022E83
+:103CF00004C0880F991FAA1FBB1F0A94D2F7898797
+:103D00009A87AB87BC8704C076956795579547958A
+:103D1000EA95D2F78D819E81AF81B88504C0880F66
+:103D2000991FAA1FBB1F2A95D2F7482B592B6A2B24
+:103D30007B2B4D875E876F87788B29853A854B85EE
+:103D40005C856D857E85AF8598898A2F60960FB6D4
+:103D5000F894DEBF0FBECDBFCF91DF910F91FF90E2
+:103D6000EF900895A2E7B0E0E8EBFEE10C94963204
+:103D7000982E892E712E88E0FE013196DF01682E83
+:103D80001D926A94E9F729833A834B835C836D83A0
+:103D90007E839F829887FE013996DF011D928A9566
+:103DA000E9F7A986BA86CB86DC86ED86FE860F8784
+:103DB000188B8D819E81AF81B885B7FD07C0E196D4
+:103DC0001CAE1DAE1EAE1FAEE19764C0219581E012
+:103DD000121608F080E0319591E0131608F090E09B
+:103DE000B32FB81B81E03B1708F080E0982B41957A
+:103DF00031E0141608F030E0A42FA91B81E04A1727
+:103E000008F080E0382B519591E0151608F090E00D
+:103E1000F52FF31B81E05F1708F080E0982B619588
+:103E200031E0161608F030E0E62FE91B81E06E174E
+:103E300008F080E0382B719541E0171608F040E05B
+:103E4000572F531B81E0751708F080E0482B892D10
+:103E5000819591E0181608F090E0682E641A462DBE
+:103E600031E0861508F030E0932B882D8195891B71
+:103E70002983BA83AB83FC83ED835E834F8388877A
+:103E80002FEF3FEF4FEF5FEFE1962CAF3DAF4EAF1F
+:103E90005FAFE1978D859E85AF85B889B7FF6AC012
+:103EA000E1964CAD5DAD6EAD7FADE197409550951F
+:103EB00060957095E1964CAF5DAF6EAF7FAFE197C7
+:103EC000A19481E01A1408F080E0B19491E01B14F1
+:103ED00008F090E06B2D681B81E0B61608F080E0DA
+:103EE000982BC19421E01C1408F020E05C2D591B94
+:103EF00081E0C51608F080E0282BD19491E01D14D4
+:103F000008F090E04D2D421B81E0D41608F080E0CF
+:103F1000982BE19421E01E1408F020E03E2D391B7F
+:103F200081E0E31608F080E0282BF19491E01F1463
+:103F300008F090E07F2D721B272F81E0F71608F024
+:103F400080E0982B019511E0101608F010E0802F0A
+:103F5000891B982F81E0091708F080E0182B872D26
+:103F60008195811BA9866A875B874C873D872E8751
+:103F70009F87888B99812A813B814C815D816E81ED
+:103F80007F81A885B9851A850B85FC84ED84DE8444
+:103F9000CF84B88888E0E1E18E2E912C8C0E9D1E96
+:103FA000F401682E11926A94E9F7998B2A8B3B8B66
+:103FB0004C8B5D8B6E8B7F8BA88F9E01275E3F4F56
+:103FC000F90111928A95E9F7B98F1A8F0B8FFC8E40
+:103FD000ED8EDE8ECF8EB8A2298C3A8C4B8C5C8C09
+:103FE000ED8CFE8C0F8D18A169887A888B889C884F
+:103FF00021966CAE7DAE8EAE9FAE21976D887E8889
+:104000008F88988CE114F1040105110509F0D9C3DA
+:10401000621473048404950408F057C100E020166C
+:1040200000E0300601E0400600E0500688F41FEF93
+:10403000211631044104510439F030F048E0E42EF7
+:10404000F12C012D112D18C0EE24FF24870114C07E
+:1040500020E0221620E0320620E0420621E052064F
+:1040600030F038E1E32EF12C012D112D05C020E1B7
+:10407000E22EF12C012D112DD201C1010E2C04C014
+:10408000B695A795979587950A94D2F789599B4F2E
+:10409000DC012C9180E290E0A0E0B0E08E199F0955
+:1040A000A00BB10B7C018D01E21AF1080109110985
+:1040B000E114F10401051105D1F10E2C04C0220C0C
+:1040C000331C441C551C0A94D2F7A40193010E2CF6
+:1040D00004C0220F331F441F551F0A94D2F780E2F9
+:1040E00090E08E199F0921966CAC7DAC8EAC9FAC94
+:1040F000219704C096948794779467948A95D2F711
+:10410000622A732A842A952A2196ACACBDACCEAC27
+:10411000DFAC219704C0AA0CBB1CCC1CDD1CEA94AC
+:10412000D2F72196ACAEBDAECEAEDFAE2197620126
+:10413000EE24FF242996CCAEDDAEEEAEFFAE29977D
+:1041400092018101207030702D960CAF1DAF2EAF03
+:104150003FAF2D97C401B301A70196010E947432AD
+:104160007B018C01C401B30129962CAD3DAD4EAD50
+:104170005FAD29970E947432C901DA013C014D01FB
+:10418000C401B3012D962CAD3DAD4EAD5FAD2D9765
+:104190000E9441329B01AC018701FF24EE2421964D
+:1041A000ACACBDACCEACDFAC2197C601AA27BB2717
+:1041B00057016801A82AB92ACA2ADB2AA216B3061F
+:1041C000C406D506E0F408946108710881089108D6
+:1041D000A20CB31CC41CD51CA214B304C404D50483
+:1041E00070F0A216B306C406D50648F40894610818
+:1041F000710881089108A20CB31CC41CD51CA21A1A
+:10420000B30AC40AD50AC601B50129962CAD3DAD45
+:104210004EAD5FAD29970E9474327B018C01C601BF
+:10422000B50129962CAD3DAD4EAD5FAD29970E94ED
+:104230007432C901DA015C016D01C601B5012D9628
+:104240002CAD3DAD4EAD5FAD2D970E9441329B012F
+:10425000AC018701FF24EE2421968CAD9DADAEAD5F
+:10426000BFAD2197A070B070E82AF92A0A2B1B2B4A
+:10427000E216F30604071507C0F40894A108B10874
+:10428000C108D108E20CF31C041D151DE214F3044F
+:104290000405150550F0E216F3060407150728F487
+:1042A0000894A108B108C108D108D301992788272B
+:1042B00086017501E82AF92A0A2B1B2B2596ECAEFC
+:1042C000FDAE0EAF1FAF2597EBC42114310441049E
+:1042D000510471F461E070E080E090E020E030E0B3
+:1042E00040E050E00E947432C901DA011C012D0146
+:1042F00000E0201600E0300601E0400600E0500635
+:1043000088F41FEF211631044104510431F028F0E4
+:1043100048E050E060E070E017C040E050E060E04E
+:1043200070E012C020E0221620E0320620E04206B3
+:1043300021E0520628F048E150E060E070E004C05F
+:1043400040E150E060E070E0D201C101042E04C001
+:10435000B695A795979587950A94D2F789599B4F5B
+:10436000DC012C91E0E2EE2EF12C012D112DD80173
+:10437000C701841B950BA60BB70B821B9109A109E2
+:10438000B1090097A105B10561F464015301A218B8
+:10439000B308C408D50831E0632E712C812C912C10
+:1043A00024C1E3968FAFE397082E04C0220C331C80
+:1043B000441C551C0A94D2F7EE2DE81B64015301EE
+:1043C0000E2E04C0D694C794B794A7940A94D2F73B
+:1043D000A4019301E3960FACE39704C0220F331FAF
+:1043E000441F551F0A94D2F721966CAC7DAC8EAC5D
+:1043F0009FAC21970E2E04C096948794779467946F
+:104400000A94D2F784017301E22AF32A042B152BB4
+:10441000E9AEFAAE0BAF1CAF3201882499249201A9
+:1044200081012070307061960CAF1DAF2EAF3FAF91
+:104430006197C601B501A40193010E9474327B010A
+:104440008C01C601B501A40193010E947432C90117
+:10445000DA0165968CAF9DAFAEAFBFAF6597BC017B
+:10446000CD0161962CAD3DAD4EAD5FAD61970E9423
+:1044700041329B01AC018701FF24EE24A9ACBAAC08
+:10448000CBACDCACC601AA27BB275C016D01AE2812
+:10449000BF28C02AD12AA216B306C406D50660F5E5
+:1044A00065966CAD7DAD8EAD9FAD659761507040EA
+:1044B0008040904065966CAF7DAF8EAF9FAF6597A3
+:1044C000A20CB31CC41CD51CA214B304C404D50490
+:1044D00098F0A216B306C406D50670F46150704079
+:1044E0008040904065966CAF7DAF8EAF9FAF659773
+:1044F000A20CB31CC41CD51CA21AB30AC40AD50A48
+:10450000C601B501A40193010E9474327B018C01A4
+:10451000C601B501A40193010E947432C901DA01F8
+:104520003C014D01C401B30161962CAD3DAD4EADD2
+:104530005FAD61970E9441329B01AC018701FF246E
+:10454000EE2489AD9AADABADBCADA070B070570193
+:104550006801A82AB92ACA2ADB2AA216B306C40609
+:10456000D506E0F408946108710881089108A20C4E
+:10457000B31CC41CD51CA214B304C404D50470F02D
+:10458000A216B306C406D50648F40894610871085B
+:1045900081089108A20CB31CC41CD51C21968CADBB
+:1045A0009DADAEADBFAD2197E3960FACE39704C0D0
+:1045B000880F991FAA1FBB1F0A94D2F721968CAFB0
+:1045C0009DAFAEAFBFAF2197A21AB30AC40AD50AF6
+:1045D0006596ECACFDAC0EAD1FAD6597D701992784
+:1045E0008827682A792A8A2A9B2A82012227332748
+:1045F00069960CAF1DAF2EAF3FAF6997A201910135
+:10460000407050706D962CAF3DAF4EAF5FAF6D9761
+:10461000C601B50169962CAD3DAD4EAD5FAD699754
+:104620000E9474327B018C01C601B50169962CADE4
+:104630003DAD4EAD5FAD69970E947432C901DA019C
+:10464000A1968CAF9DAFAEAFBFAFA197BC01CD011E
+:104650006D962CAD3DAD4EAD5FAD6D970E94413274
+:104660009B01AC018701FF24EE242196ACACBDACCC
+:10467000CEACDFAC2197C601AA27BB275701680142
+:10468000A82AB92ACA2ADB2AA216B306C406D50666
+:1046900060F5A1966CAD7DAD8EAD9FADA1976150DB
+:1046A000704080409040A1966CAF7DAF8EAF9FAFC1
+:1046B000A197A20CB31CC41CD51CA214B304C4043F
+:1046C000D50498F0A216B306C406D50670F461505E
+:1046D000704080409040A1966CAF7DAF8EAF9FAF91
+:1046E000A197A20CB31CC41CD51CA21AB30AC40AFD
+:1046F000D50AC601B50169962CAD3DAD4EAD5FAD95
+:1047000069970E9474327B018C01C601B5016996DC
+:104710002CAD3DAD4EAD5FAD69970E947432C901BD
+:10472000DA015C016D01C601B5016D962CAD3DADA0
+:104730004EAD5FAD6D970E9441329B01AC01870188
+:10474000FF24EE2421968CAD9DADAEADBFAD21977B
+:10475000A070B070E82AF92A0A2B1B2BE216F30688
+:1047600004071507C0F40894A108B108C108D108CE
+:10477000E20CF31C041D151DE214F30404051505D9
+:1047800050F0E216F3060407150728F40894A10870
+:10479000B108C108D108A196ECACFDAC0EAD1FADBF
+:1047A000A197D7019927882796018501082B192BF6
+:1047B0002A2B3B2B25960CAF1DAF2EAF3FAF259775
+:1047C00072C26E147F048006910608F45FC220E076
+:1047D000E21620E0F20621E0020720E0120788F44A
+:1047E0003FEFE316F1040105110531F028F048E030
+:1047F00050E060E070E017C040E050E060E070E042
+:1048000012C040E0E41640E0F40640E0040741E056
+:10481000140728F048E150E060E070E004C040E197
+:1048200050E060E070E0D801C701042E04C0B695E6
+:10483000A795979587950A94D2F789599B4FDC01E4
+:104840002C9130E2A32EB12CC12CD12CD601C50164
+:10485000841B950BA60BB70B821B9109A109B1090B
+:104860000097A105B10599F4E614F70408051905A8
+:1048700008F4FEC121966CAC7DAC8EAC9FAC219748
+:10488000621473048404950408F0F2C1FFC1E29637
+:104890008FAFE297082E04C0EE0CFF1C001F111F03
+:1048A0000A94D2F76A2D681BD201C101062E04C0FA
+:1048B000B695A795979587950A94D2F75C016D01F7
+:1048C000AE28BF28C02AD12AADAABEAACFAAD8AE88
+:1048D00072016101E2960FACE29704C0CC0CDD1CC2
+:1048E000EE1CFF1C0A94D2F7C9AADAAAEBAAFCAA0A
+:1048F00064015301062E04C0D694C794B794A794BC
+:104900000A94D2F7D401C301E2960FACE29704C037
+:10491000880F991FAA1FBB1F0A94D2F72196ECACEF
+:10492000FDAC0EAD1FAD219704C016950795F79409
+:10493000E7946A95D2F737014801682A792A8A2ACA
+:104940009B2A6DA67EA68FA698AAEDA8FEA80FA901
+:1049500018AD38018824992498018701207030709F
+:10496000A5960CAF1DAF2EAF3FAFA597C601B50101
+:10497000A40193010E9474327B018C01C601B50130
+:10498000A40193010E947432C901DA011C012D01B6
+:10499000C201B101A5962CAD3DAD4EAD5FADA59761
+:1049A0000E9441329B01AC018701FF24EE24ADA49B
+:1049B000BEA4CFA4D8A8C601AA27BB275701680167
+:1049C000A82AB92ACA2ADB2AA216B306C406D50623
+:1049D00000F508942108310841085108EDA8FEA807
+:1049E0000FA918ADAE0CBF1CC01ED11EAE14BF0463
+:1049F000C006D10670F0A216B306C406D50648F468
+:104A000008942108310841085108AE0CBF1CC01E93
+:104A1000D11EA21AB30AC40AD50AC601B501A4015F
+:104A200093010E9474327B018C01C601B501A4017F
+:104A300093010E947432C901DA013C014D01C401A5
+:104A4000B301A5962CAD3DAD4EAD5FADA5970E94CF
+:104A500041329B01AC018701FF24EE248DA59EA568
+:104A6000AFA5B8A9A070B07057016801A82AB92AEB
+:104A7000CA2ADB2AA216B306C406D50600F5089496
+:104A800061087108810891086DA97EA98FA998AD68
+:104A9000A60EB71EC81ED91EA616B706C806D9068A
+:104AA00070F0A216B306C406D50648F4089461084F
+:104AB000710881089108A60EB71EC81ED91ED6011E
+:104AC000C501821B930BA40BB50B89A79AA7ABA7B3
+:104AD000BCA7D1019927882764015301A82AB92AC4
+:104AE000CA2ADB2A2596ACAEBDAECEAEDFAE259788
+:104AF000860175012FEF3FEF40E050E0E222F32204
+:104B000004231523A60166277727AD964CAF5DAF2A
+:104B10006EAF7FAFAD97A9A8BAA8CBA8DCA86FEFFE
+:104B20007FEF80E090E0A622B722C822D92289A98F
+:104B30009AA9ABA9BCA91D0144245524C801B701F9
+:104B4000A60195010E944132A9966CAF7DAF8EAF50
+:104B50009FAFA997C801B701A20191010E944132FC
+:104B60003B014C01AD966CAD7DAD8EAD9FADAD976B
+:104B7000A60195010E9441327B018C01AD966CAD7E
+:104B80007DAD8EAD9FADAD97A20191010E944132E6
+:104B90005B016C01A8019701260D371D481D591DA9
+:104BA000A9966CAC7DAC8EAC9FACA997C401AA272A
+:104BB000BB27280F391F4A1F5B1F2E153F054007D3
+:104BC000510748F4E12CF12C61E0062F112DAE0CB9
+:104BD000BF1CC01ED11ECA01AA27BB27BC01CD0124
+:104BE0006A0D7B1D8C1D9D1D69A47AA48BA49CA4B9
+:104BF000661677068806990650F1661577058805CA
+:104C0000990509F04DC0D90199278827A9962CAD9F
+:104C10003DAD4EAD5FADA99740705070820F931FB0
+:104C2000A41FB51F21962CAD3DAD4EAD5FAD2197B4
+:104C3000E2960FACE29704C0220F331F441F551FAA
+:104C40000A94D2F7281739074A075B0748F52596D3
+:104C50000CAD1DAD2EAD3FAD25970150104020404D
+:104C6000304025960CAF1DAF2EAF3FAF259718C033
+:104C700066247724430121E030E040E050E02596AF
+:104C80002CAF3DAF4EAF5FAF25970DC066247724A4
+:104C9000430125961CAE1DAE1EAE1FAE259703C068
+:104CA000662477244301FE01B19688E0DF011D925E
+:104CB0008A95E9F72596ACACBDACCEACDFAC2597B8
+:104CC000A9A2BAA2CBA2DCA26DA27EA28FA298A6B4
+:104CD00022962FAD22973AA14BA15CA1662D7EA111
+:104CE000DFA098A5E196ECACFDAC0EAD1FADE19751
+:104CF000E114F1040105110509F456C0219581E084
+:104D0000121608F080E03195E1E0131608F0E0E0BB
+:104D1000932E981A81E0391508F080E0E82B419530
+:104D2000F1E0141608F0F0E0A42EAE1A81E04A1566
+:104D300008F080E0F82B5195E1E0151608F0E0E06E
+:104D4000B52EBF1A81E05B1508F080E0E82B619575
+:104D5000F1E0161608F0F0E0A62FAE1B81E06A170E
+:104D600008F080E0F82B7195E1E0171608F0E0E01C
+:104D7000C72ECF1A81E07C1508F080E0E82B8D2D3E
+:104D80008195F1E0181608F0F0E0D82EDE1AE1E087
+:104D90008D1508F0E0E0FE2B892F8195392DA501B6
+:104DA0006A2F7C2D982F9F1B8D2DCE58DF4FE2E16F
+:104DB0000C94B232A7E7B0E0E0EEF6E20C94963243
+:104DC000982E892E712E88E0FE013196DF01682E23
+:104DD0001D926A94E9F729833A834B835C836D8340
+:104DE0007E839F829887FE013996DF011D928A9506
+:104DF000E9F7A986BA86CB86DC86ED86FE860F8724
+:104E0000188B8D819E81AF81B885B7FD07C0E19673
+:104E10001CAE1DAE1EAE1FAEE19764C0219581E0B1
+:104E2000121608F080E0319591E0131608F090E03A
+:104E3000B32FB81B81E03B1708F080E0982B419519
+:104E400031E0141608F030E0A42FA91B81E04A17C6
+:104E500008F080E0382B519591E0151608F090E0AD
+:104E6000F52FF31B81E05F1708F080E0982B619528
+:104E700031E0161608F030E0E62FE91B81E06E17EE
+:104E800008F080E0382B719541E0171608F040E0FB
+:104E9000572F531B81E0751708F080E0482B892DB0
+:104EA000819591E0181608F090E0682E641A462D5E
+:104EB00031E0861508F030E0932B882D8195891B11
+:104EC0002983BA83AB83FC83ED835E834F8388871A
+:104ED0002FEF3FEF4FEF5FEFE1962CAF3DAF4EAFBF
+:104EE0005FAFE1978D859E85AF85B889B7FF5AC0C2
+:104EF000A19481E01A1408F080E0B19491E01B14B1
+:104F000008F090E06B2D681B81E0B61608F080E099
+:104F1000982BC19421E01C1408F020E05C2D591B53
+:104F200081E0C51608F080E0282BD19491E01D1493
+:104F300008F090E04D2D421B81E0D41608F080E08F
+:104F4000982BE19421E01E1408F020E03E2D391B3F
+:104F500081E0E31608F080E0282BF19491E01F1423
+:104F600008F090E07F2D721B272F81E0F71608F0E4
+:104F700080E0982B019511E0101608F010E0802FCA
+:104F8000891B982F81E0091708F080E0182B872DE6
+:104F90008195811BA9866A875B874C873D872E8711
+:104FA0009F87888B99812A813B814C815D816E81AD
+:104FB0007F81A885B9851A850B85FC84ED84DE8404
+:104FC000CF84B88888E0E9E18E2E912C8C0E9D1E4E
+:104FD000F401682E11926A94E9F7998F2A8F3B8F1A
+:104FE0004C8F5D8F6E8F7F8FA8A39E012F5D3F4FEB
+:104FF000F90111928A95E9F7B9A31AA30BA3FCA2B0
+:10500000EDA2DEA2CFA2B8A629A03AA04BA05CA038
+:10501000ADA0BEA0CFA0D8A4498D5A8D6B8D7C8D3C
+:10502000E5964FAFE597E6965FAFE697E7966FAFE9
+:10503000E797E8967FAFE897E8966CAC7DAC8EACCE
+:105040009FACE8972D966CAE7DAE8EAE9FAE2D9741
+:105050008D8D9E8D2F8D38A13C01490161966CAEDE
+:105060007DAE8EAE9FAE6197A114B104C104D10490
+:1050700009F028C3621473048404950408F00EC177
+:1050800000E0201600E0300601E0400600E0500697
+:1050900088F41FEF211631044104510439F030F037
+:1050A00018E0E12EF12C012D112D18C0EE24FF2463
+:1050B000870114C020E0221620E0320620E04206DC
+:1050C00021E0520630F0B8E1EB2EF12C012D112D2C
+:1050D00005C0A0E1EA2EF12C012D112DD201C10154
+:1050E0000E2C04C0B695A795979587950A94D2F78C
+:1050F00089599B4FDC012C9180E290E0A0E0B0E068
+:105100008E199F09A00BB10B5C016D01A21AB108A9
+:10511000C108D1086596ACAEBDAECEAEDFAE659728
+:10512000A114B104C104D10409F445C062966FAD65
+:105130006297062E04C0220C331C441C551C0A9492
+:10514000D2F7A4019301062E04C0220F331F441F7F
+:10515000551F0A94D2F780E290E08A199B09E896DD
+:10516000CCACDDACEEACFFACE89704C0F694E794B1
+:10517000D794C7948A95D2F787017601E22AF32A59
+:10518000042B152B6196ECAEFDAE0EAF1FAF6197F1
+:10519000E8960CAD1DAD2EAD3FADE89704C0000FF5
+:1051A000111F221F331F6A95D2F72D960CAF1DAF2A
+:1051B0002EAF3FAF2D97320188249924A20191018F
+:1051C0004070507069962CAF3DAF4EAF5FAF69979E
+:1051D00061966CAD7DAD8EAD9FAD6197A4019301DD
+:1051E0000E9474327B018C0161966CAD7DAD8EADF9
+:1051F0009FAD6197A40193010E947432CA01B90165
+:1052000069962CAD3DAD4EAD5FAD69970E944132C0
+:105210009B01AC018701FF24EE242D96ACACBDAC04
+:10522000CEACDFAC2D97C601AA27BB27570168017A
+:10523000A82AB92ACA2ADB2AA216B306C406D506AA
+:1052400090F4A20CB31CC41CD51CA214B304C40457
+:10525000D50448F0A216B306C406D50620F4A20C65
+:10526000B31CC41CD51CA21AB30AC40AD50AC601B1
+:10527000B501A40193010E9474327B018C01C60127
+:10528000B501A40193010E947432CA01B901699663
+:105290002CAD3DAD4EAD5FAD6997C8C12114310451
+:1052A0004104510471F461E070E080E090E020E09E
+:1052B00030E040E050E00E947432C901DA011C0184
+:1052C0002D0100E0201600E0300601E0400600E07D
+:1052D000500688F41FEF211631044104510439F0BF
+:1052E00030F068E0E62EF12C012D112D18C0EE24CF
+:1052F000FF24870114C020E0221620E0320620E0BF
+:10530000420621E0520630F058E1E52EF12C012D45
+:10531000112D05C040E1E42EF12C012D112DD201FB
+:10532000C1010E2C04C0B695A795979587950A9450
+:10533000D2F789599B4FDC012C9130E2A32EB12C7E
+:10534000C12CD12CD601C5018E199F09A00BB10B20
+:105350007C018D01E21AF108010911096596ECAE94
+:10536000FDAE0EAF1FAF6597E114F1040105110505
+:1053700039F464015301A218B308C408D508ECC07D
+:105380006296FFAC6297E496FFAEE4970F2C04C0E0
+:10539000220C331C441C551C0A94D2F78A2D8F19F9
+:1053A00064015301082E04C0D694C794B794A794FF
+:1053B0000A94D2F7A401930104C0220F331F441FA3
+:1053C000551FFA94D2F7E8966CAC7DAC8EAC9FACCE
+:1053D000E89704C096948794779467948A95D2F757
+:1053E00084017301E22AF32A042B152B2996ECAED3
+:1053F000FDAE0EAF1FAF2997320188249924920188
+:105400008101207030706D960CAF1DAF2EAF3FAF95
+:105410006D97C601B501A40193010E9474327B010E
+:105420008C01C601B501A40193010E947432CA0126
+:10543000B9016D962CAD3DAD4EAD5FAD6D970E943F
+:1054400041329B01AC018701FF24EE242996ACACCC
+:10545000BDACCEACDFAC2997C601AA27BB275C0147
+:105460006D01AE28BF28C02AD12AA216B306C406F1
+:10547000D50690F4A20CB31CC41CD51CA214B30412
+:10548000C404D50448F0A216B306C406D50620F419
+:10549000A20CB31CC41CD51CA21AB30AC40AD50A98
+:1054A000C601B501A40193010E9474327B018C01F5
+:1054B000C601B501A40193010E947432CA01B90169
+:1054C0006D962CAD3DAD4EAD5FAD6D970E944132F6
+:1054D0009B01AC018701FF24EE2429968CAD9DAD84
+:1054E000AEADBFAD2997A070B07057016801A82A72
+:1054F000B92ACA2ADB2AA216B306C406D50690F436
+:10550000A20CB31CC41CD51CA214B304C404D5043F
+:1055100048F0A216B306C406D50620F4A20CB31CAC
+:10552000C41CD51CE896ECACFDAC0EAD1FADE897E5
+:10553000E4960FACE49704C0EE0CFF1C001F111F93
+:105540000A94D2F72D96ECAEFDAE0EAF1FAF2D979D
+:10555000A21AB30AC40AD50A3201882499249201F6
+:10556000810120703070A1960CAF1DAF2EAF3FAF00
+:10557000A197C601B501A40193010E9474327B0179
+:105580008C01C601B501A40193010E947432CA01C5
+:10559000B901A1962CAD3DAD4EAD5FADA1970E9476
+:1055A00041329B01AC018701FF24EE242D96ACAC67
+:1055B000BDACCEACDFAC2D97C601AA27BB275701E7
+:1055C0006801A82AB92ACA2ADB2AA216B306C40689
+:1055D000D50690F4A20CB31CC41CD51CA214B304B1
+:1055E000C404D50448F0A216B306C406D50620F4B8
+:1055F000A20CB31CC41CD51CA21AB30AC40AD50A37
+:10560000C601B501A40193010E9474327B018C0193
+:10561000C601B501A40193010E947432CA01B90107
+:10562000A1962CAD3DAD4EAD5FADA1970E9441322C
+:105630009B01AC018701FF24EE242D968CAD9DAD1E
+:10564000AEADBFAD2D97A070B070E82AF92A0A2B35
+:105650001B2BE216F3060407150790F4E20CF31C6B
+:10566000041D151DE214F3040405150548F0E216A7
+:10567000F3060407150720F4E20CF31C041D151DA6
+:10568000E21AF30A040B150BD801C70162960FAC9E
+:10569000629704C0B695A795979587950A94D2F717
+:1056A00089A79AA7ABA7BCA71DA61EA61FA618AAC6
+:1056B000898B8AA58A8B8BA58B8B8CA58C8B8DA5D2
+:1056C0008D8B2FC36A147B048C049D0448F4498B92
+:1056D0005A8B6B8B7C8B8D8B9E8B2F8B388F27C33C
+:1056E00000E0A01600E0B00601E0C00600E0D00631
+:1056F00088F41FEFA116B104C104D10439F030F0D1
+:1057000098E0E92EF12C012D112D18C0EE24FF2474
+:10571000870114C020E0A21620E0B20620E0C206F5
+:1057200021E0D20630F088E1E82EF12C012D112D78
+:1057300005C000E1E02EF12C012D112DD601C5018F
+:105740000E2C04C0B695A795979587950A94D2F725
+:1057500089599B4FDC012C9180E290E0A0E0B0E001
+:105760008E199F09A00BB10B821B9109A109B109E8
+:105770000097A105B10509F059C0A614B704C804E3
+:10578000D90470F0E896ECACFDAC0EAD1FADE89717
+:10579000E214F3040405150518F4D801C7012FC05D
+:1057A000E8968CAD9DADAEADBFADE897821993097B
+:1057B000A409B509A40193012A193B094C095D0903
+:1057C000AA24BB246501E8966CAC7DAC8EAC9FAC82
+:1057D000E897681679068A069B0628F411E0A12E40
+:1057E000B12CC12CD12C79018A01EA18FB080C09D3
+:1057F0001D096196ECAEFDAE0EAF1FAF619789A794
+:105800009AA7ABA7BCA761960CAD1DAD2EAD3FAD61
+:1058100061970DA71EA72FA738AB898B8AA58A8B06
+:105820008BA58B8B8CA58C8B0D8B7BC2E3968FAF5E
+:10583000E397A6019501082E04C0220F331F441FD1
+:10584000551F0A94D2F710E2181BE2961FAFE29799
+:10585000D201C101012E04C0B695A79597958795F1
+:105860000A94D2F75C016D01A22AB32AC42AD52A70
+:105870002596ACAEBDAECEAEDFAE2597720161010E
+:10588000E3960FACE39704C0CC0CDD1CEE1CFF1CB0
+:105890000A94D2F72196CCAEDDAEEEAEFFAE2197E4
+:1058A00064015301012E04C0D694C794B794A79401
+:1058B0000A94D2F7A4019301E3960FACE39704C0D6
+:1058C000220F331F441F551F0A94D2F7E8968CAD60
+:1058D0009DADAEADBFADE89704C0B695A7959795C1
+:1058E00087951A95D2F77C018D01E22AF32A042BC1
+:1058F000152BE9AEFAAE0BAF1CAFE8960CAD1DADA3
+:105900002EAD3FADE897E3960FACE39704C0000FD0
+:10591000111F221F331F0A94D2F70DAB1EAB2FAB02
+:1059200038AF25962CAD3DAD4EAD5FAD25973A0114
+:105930008824992440705070A5962CAF3DAF4EAF8F
+:105940005FAFA597C601B501A40193010E9474320F
+:105950007B018C01C601B501A40193010E94743240
+:10596000C901DA011C012D01C201B101A5962CADBE
+:105970003DAD4EAD5FADA5970E9441329B01AC019C
+:105980008701FF24EE24A9ACBAACCBACDCACC601D9
+:10599000AA27BB2757016801A82AB92ACA2ADB2AE5
+:1059A000A216B306C406D50610F5089421083108DE
+:1059B000410851082596ECACFDAC0EAD1FAD259706
+:1059C000AE0CBF1CC01ED11EAE14BF04C006D10653
+:1059D00070F0A216B306C406D50648F40894210850
+:1059E000310841085108AE0CBF1CC01ED11EA21ABE
+:1059F000B30AC40AD50AC601B501A40193010E94E5
+:105A000074327B018C01C601B501A40193010E948F
+:105A10007432C901DA013C014D01C401B301A596FC
+:105A20002CAD3DAD4EAD5FADA5970E9441329B01BF
+:105A3000AC018701FF24EE2489AD9AADABADBCADBE
+:105A4000A070B07057016801A82AB92ACA2ADB2AB7
+:105A5000A216B306C406D50610F5089461087108AD
+:105A60008108910825966CAD7DAD8EAD9FAD2597D3
+:105A7000A60EB71EC81ED91EA616B706C806D9069A
+:105A800070F0A216B306C406D50648F4089461085F
+:105A9000710881089108A60EB71EC81ED91ED6012E
+:105AA000C501821B930BA40BB50B89AB9AABABABB7
+:105AB000BCABD1019927882784017301E82AF92A10
+:105AC0000A2B1B2B8FEFA82E8FEFB82EC12CD12CB9
+:105AD000AE20BF20C022D1227801002711272196B5
+:105AE0006CAC7DAC8EAC9FAC21972FEF3FEF40E0CC
+:105AF00050E0622273228422952221966CAD7DAD06
+:105B00008EAD9FAD2197AC0166277727AD964CAF40
+:105B10005DAF6EAF7FAFAD97C601B501A401930134
+:105B20000E944132A9966CAF7DAF8EAF9FAFA9970F
+:105B3000C601B501AD962CAD3DAD4EAD5FADAD9797
+:105B40000E9441321B012C01C801B701A40193013D
+:105B50000E9441325B016C01C801B701AD962CADCA
+:105B60003DAD4EAD5FADAD970E9441327B018C01E2
+:105B7000A6019501220D331D441D551DA9966CAC3F
+:105B80007DAC8EAC9FACA997C401AA27BB27280F78
+:105B9000391F4A1F5B1F2A153B054C055D0548F45C
+:105BA000812C912CE1E0AE2EB12CE80CF91C0A1DE1
+:105BB0001B1DCA01AA27BB2757016801A80EB91EE1
+:105BC000CA1EDB1EA90133272227A9968CAD9DADE5
+:105BD000AEADBFADA997A070B070280F391F4A1F96
+:105BE0005B1FE9A8FAA80BA91CA9EA14FB040C0581
+:105BF0001D0570F0AE14BF04C006D10689F56DA96D
+:105C00007EA98FA998AD621773078407950740F5A1
+:105C1000DA01C90121966CAC7DAC8EAC9FAC2197AA
+:105C200086199709A809B9092596ECACFDAC0EAD0B
+:105C30001FAD2597AE18BF08C00AD10AEE24FF2475
+:105C40008701281739074A075B0728F421E0E22E6D
+:105C5000F12C012D112DAE18BF08C00AD10A02C0C7
+:105C6000DA01C9016DA87EA88FA898AC681A790AD4
+:105C70008A0A9B0A09A91AA92BA93CA90A191B0976
+:105C80002C093D09580169012224332421012DA941
+:105C90003EA94FA958AD261537054805590528F4E2
+:105CA00081E0282E312C412C512C86017501E218FF
+:105CB000F30804091509A8019701E2960FACE297D1
+:105CC00004C0220F331F441F551F0A94D2F7D4017A
+:105CD000C301E3960FACE39704C0B695A7959795DB
+:105CE00087950A94D2F7282B392B4A2B5B2B29A7AF
+:105CF0003AA74BA75CA7E3960FACE39704C01695B1
+:105D00000795F794E7940A94D2F7EDA6FEA60FA79D
+:105D100018AB298B8AA58A8B8BA58B8B8CA58C8B3A
+:105D2000ED8A8EA58E8B8FA58F8B88A9888FE196A3
+:105D30004CAD5DAD6EAD7FADE1974115510561058F
+:105D4000710509F467C089892A893B894C895D8975
+:105D5000AE89BF89188DF82FF19591E01F1608F0D4
+:105D600090E0822F819521E0181608F020E0E82FBE
+:105D7000E91B91E08E1708F090E0292B832F819585
+:105D800031E0181608F030E0782F721B91E0871789
+:105D900008F090E0392B842F819521E0181608F047
+:105DA00020E0682F631B91E0861708F090E0292B14
+:105DB000852F819531E0181608F030E0582F521BDE
+:105DC00091E0851708F090E0392B8A2F819521E02A
+:105DD000181608F020E0482F431B91E0841708F0C4
+:105DE00090E0292B8B2F819591E0181608F090E018
+:105DF000382F321B21E0831708F020E0922B812FEF
+:105E00008195891BF98BEA8B7B8B6C8B5D8B4E8B21
+:105E10003F8B888F29893A894B895C896D897E8976
+:105E20008F89988DC958DF4FE2E10C94B232A0E01F
+:105E3000B0E0EDE1FFE20C949E32EC01A880B98065
+:105E4000CA80DB80A114B104C104D10441F484E20E
+:105E5000A82E89EDB82E8BE5C82E87E0D82EC60176
+:105E6000B5012DE133EF41E050E00E94263227EAF0
+:105E700031E440E050E00E9441327B018C01C601D8
+:105E8000B5012DE133EF41E050E00E942632CA0116
+:105E9000B9012CEE34EF4FEF5FEF0E9441326E0DEF
+:105EA0007F1D801F911F97FF04C06150704080408C
+:105EB0009048688379838A839B839B013F77C901DC
+:105EC000CDB7DEB7EAE00C94BA320E94172F0895DE
+:105ED00087E695E00E94172F0895A0E0B0E0809338
+:105EE000670590936805A0936905B0936A050895C6
+:105EF000FB01DC0102C005900D9241505040D8F7E3
+:105F00000895A0E0B0E0E7E8FFE20C94A632FE01BD
+:105F10003596619171918091800A9091810AAF01CB
+:105F20000E94962F2096E2E00C94C232ABE0B0E0E3
+:105F3000ECE9FFE20C9496323C012B015A01FC0182
+:105F400017821682838181FD03C06FEF7FEFC6C188
+:105F50009AE0892E1E010894211C311CF301238133
+:105F6000F20123FD859123FF81912F01882309F4FC
+:105F7000B2C1853239F423FD859123FF81912F0130
+:105F8000853229F490E0B3010E948931E7CF982F40
+:105F9000FF24EE249924FFE1FF15D0F09B3269F035
+:105FA0009C3228F4903259F0933291F40EC09D3215
+:105FB00049F0903369F441E024C052E0F52A84E0CE
+:105FC000F82A28C098E0F92A25C0E0E1FE2A22C07C
+:105FD000F7FC29C0892F80538A3070F4F6FE05C083
+:105FE000989C902C1124980E15C0E89CE02C11244C
+:105FF000E80EF0E2FF2A0EC09E3229F4F6FC6BC1D7
+:1060000040E4F42A07C09C3619F450E8F52A02C08F
+:10601000983649F4F20123FD959123FF91912F01C8
+:10602000992309F0B8CF892F8554833018F0805216
+:10603000833038F444E050E0A40EB51E5FE359838A
+:106040000FC0933631F0933779F0933509F056C08D
+:1060500020C0F5018081898342E050E0A40EB51E86
+:10606000610101E010E012C0F501C080D180F6FCB2
+:1060700003C06FEF7FEF02C0692D70E042E050E097
+:10608000A40EB51EC6010E947E318C015FE7F52289
+:1060900014C0F501C080D180F6FC03C06FEF7FEF24
+:1060A00002C0692D70E042E050E0A40EB51EC601AA
+:1060B0000E9473318C0150E8F52AF3FE07C01AC024
+:1060C00080E290E0B3010E948931EA948E2D90E045
+:1060D00008171907A8F30EC0F601F7FC8591F7FE23
+:1060E00081916F0190E0B3010E948931E110EA943F
+:1060F000015010400115110579F7EAC0943611F0EE
+:10610000993669F5F7FE08C0F50120813181428199
+:10611000538184E090E00AC0F501808191819C0167
+:10612000442737FD4095542F82E090E0A80EB91E19
+:106130009FE6F92257FF09C050954095309521956B
+:106140003F4F4F4F5F4FE0E8FE2ACA01B901A1015E
+:106150002AE030E00E94B531D82ED21840C09537E1
+:1061600029F41F2D1F7E2AE030E01DC01F2D197F4E
+:106170009F3661F0903720F4983509F0ACC00FC01D
+:10618000903739F0983709F0A6C004C028E030E015
+:106190000AC0106114FD146020E130E004C014FD59
+:1061A000166020E132E017FF08C0F50160817181BF
+:1061B0008281938144E050E008C0F50180819181A3
+:1061C000BC0180E090E042E050E0A40EB51EA101C9
+:1061D0000E94B531D82ED2188FE7F82EF122F6FEA4
+:1061E0000BC05EEFF522D91438F4F4FE07C0F2FCC0
+:1061F00005C08FEEF82202C01D2D01C0192DF4FE3E
+:106200000DC0FE01ED0DF11D8081803319F499EE72
+:10621000F92208C01F5FF2FE05C003C08F2D8678EB
+:1062200009F01F5F0F2DF3FC14C0F0FE0FC01E1508
+:1062300010F09D2C0BC09D2C9E0C911A1E2D06C09B
+:1062400080E290E0B3010E9489311F5F1E15C0F308
+:1062500004C01E1510F4E11A01C0EE2404FF0FC0A3
+:1062600080E390E0B3010E94893102FF1DC001FD6F
+:1062700003C088E790E00EC088E590E00BC0802F57
+:10628000867891F001FF02C08BE201C080E2F7FC4A
+:106290008DE290E0B3010E94893106C080E390E076
+:1062A000B3010E9489319A94D914C0F3DA94F101B0
+:1062B000ED0DF11D808190E0B3010E948931DD2058
+:1062C000A9F706C080E290E0B3010E948931EA9408
+:1062D000EE20C1F743CEF30166817781CB012B9687
+:1062E000E2E10C94B232FC01059061507040011063
+:1062F000D8F7809590958E0F9F1F0895FC016150EF
+:10630000704001900110D8F7809590958E0F9F1FD7
+:1063100008950F931F93CF93DF938C01EB018B8133
+:1063200081FF1BC082FF0DC02E813F818C819D812A
+:106330002817390764F4E881F9810193F983E88328
+:1063400006C0E885F985802F0995892B31F48E8167
+:106350009F8101969F838E8302C00FEF1FEFC801BC
+:10636000DF91CF911F910F910895FA01AA2728304C
+:1063700051F1203181F1E8946F936E7F6E5F7F4F12
+:106380008F4F9F4FAF4FB1E03ED0B4E03CD0670F8E
+:10639000781F891F9A1FA11D680F791F8A1F911DE1
+:1063A000A11D6A0F711D811D911DA11D20D009F431
+:1063B00068943F912AE0269F11243019305D319373
+:1063C000DEF6CF010895462F4770405D4193B3E05C
+:1063D0000FD0C9F7F6CF462F4F70405D4A3318F003
+:1063E000495D31FD4052419302D0A9F7EACFB4E0B4
+:1063F000A6959795879577956795BA95C9F700976C
+:106400006105710508959B01AC010A2E069457950C
+:10641000479537952795BA95C9F7620F731F841F63
+:10642000951FA01D089597FB092E07260AD077FD1A
+:1064300004D046D006D000201AF4709561957F4FA5
+:106440000895F6F7909581959F4F089597FB092E33
+:1064500005260ED057FD04D047D00AD0001C38F4D2
+:1064600050954095309521953F4F4F4F5F4F089580
+:10647000F6F790958095709561957F4F8F4F9F4F60
+:106480000895629FD001739FF001829FE00DF11D7E
+:10649000649FE00DF11D929FF00D839FF00D749F9E
+:1064A000F00D659FF00D9927729FB00DE11DF91F4A
+:1064B000639FB00DE11DF91FBD01CF0111240895A7
+:1064C000AA1BBB1B51E107C0AA1FBB1FA617B7071A
+:1064D00010F0A61BB70B881F991F5A95A9F7809536
+:1064E0009095BC01CD010895A1E21A2EAA1BBB1BF9
+:1064F000FD010DC0AA1FBB1FEE1FFF1FA217B30790
+:10650000E407F50720F0A21BB30BE40BF50B661FA5
+:10651000771F881F991F1A9469F760957095809569
+:1065200090959B01AC01BD01CF0108952F923F9240
+:106530004F925F926F927F928F929F92AF92BF9293
+:10654000CF92DF92EF92FF920F931F93CF93DF933F
+:10655000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBE9C
+:10656000CDBF09942A88398848885F846E847D84E9
+:106570008C849B84AA84B984C884DF80EE80FD80EB
+:106580000C811B81AA81B981CE0FD11D0FB6F89461
+:0E659000DEBF0FBECDBFED010895F894FFCF22
+:10659E00696E697469616C697A65640D0A00307898
+:1065AE002532580A002563256325640A00350D201F
+:1065BE000DE0020200BE053A02CB033902FFFFFFD7
+:1065CE00FFFFFFFFFFFFFF43480049440042440026
+:1065DE00330046520041500030002B2B2B004F4B06
+:1065EE000D004154415020310D004154434E0D00D9
+:1065FE004D5900FFFFFFFF0706050E010403020FB2
+:10660E00000D080C0B090A3030303030300000001D
+:10661E00000000005F00000007000700147F147FD9
+:10662E0014242A7F2A1223130864623649552250F5
+:10663E000005030000001C2241000041221C001432
+:10664E00083E081408083E080800005030001010DC
+:10665E00101010006060000020100804023E514926
+:10666E00453E00427F400042615149462141454B23
+:10667E00311814127F1027454545393C4A49493097
+:10668E0001710905033649494936064949291E0053
+:10669E00363600000056360000081422410014144D
+:1066AE0014141400412214080201510906324959EA
+:1066BE00513E7E1111117E7F494949363E4141417D
+:1066CE00227F4141221C7F494949417F0909090125
+:1066DE003E4149497A7F0808087F00417F410020EA
+:1066EE0040413F017F081422417F404040407F02DD
+:1066FE000C027F7F0408107F3E4141413E7F090915
+:10670E0009063E4151215E7F0919294646494949EC
+:10671E003101017F01013F4040403F1F2040201FBB
+:10672E003F4038403F631408146307087008076140
+:10673E0051494543007F41410002040810200041A9
+:10674E00417F00040201020440404040400001022B
+:10675E00040020545454787F484444383844444408
+:10676E0020384444487F3854545418087E09010296
+:10677E000C5252523E7F0804047800447D400020A3
+:10678E0040443D007F1028440000417F40007C04BF
+:10679E001804787C0804047838444444387C141473
+:1067AE001408081414187C7C080404084854545423
+:1067BE0020043F4440203C4040207C1C2040201CB4
+:1067CE003C4030403C44281028440C5050503C442F
+:1067DE0064544C44000836414100007F00004141A2
+:1067EE003608000201010201552A552A55010204FC
+:1067FE00102040012C0A390A460A20031703EF0223
+:10680E00CA02A9028B026F0255023E02280213022F
+:10681E000002EE01DE01CE01BF01B201A501980119
+:10682E008D01820177016D0164015B0152014A0104
+:10683E0042013B0133012D01260120011A011401F1
+:10684E000E0109010401FF00FA00F500F100ED0050
+:10685E00E800E400E000DD00D900D500D200CF0052
+:10686E00CB00C800C500C200BF00BD00BA00B70013
+:10687E00B500B200B000AD00AB00A900A600A400A8
+:10688E00A200A0009E009C009A0098009700950020
+:10689E009300910090008E008C008B008900880080
+:1068AE00860085008300820081007F007E007D00CF
+:1068BE007C007A007900780077007600750073000E
+:1068CE007200710070006F006E006D006C006B0046
+:1068DE006A00690069006800670066006500303173
+:1068EE003233343536373839414243444546003029
+:1068FE003030303030200000010202030303030465
+:10690E000404040404040405050505050505050530
+:10691E000505050505050506060606060606060610
+:10692E0006060606060606060606060606060606F9
+:10693E0006060606060606070707070707070707E0
+:10694E0007070707070707070707070707070707C9
+:10695E0007070707070707070707070707070707B9
+:10696E0007070707070707070707070707070707A9
+:10697E000707070707070708080808080808080890
+:10698E000808080808080808080808080808080879
+:10699E000808080808080808080808080808080869
+:1069AE000808080808080808080808080808080859
+:1069BE000808080808080808080808080808080849
+:1069CE000808080808080808080808080808080839
+:1069DE000808080808080808080808080808080829
+:1069EE000808080808080808080808080808080819
+:0C69FE0008080808080808010000000054
+:00000001FF
Index: branches/colonetmk2/code/projects/swarm/robot/main.elf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: branches/colonetmk2/code/projects/swarm/robot/main.elf
===================================================================
--- branches/colonetmk2/code/projects/swarm/robot/main.elf	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/robot/main.elf	(revision 1456)

Property changes on: branches/colonetmk2/code/projects/swarm/robot/main.elf
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/robot/main.sym
===================================================================
--- branches/colonetmk2/code/projects/swarm/robot/main.sym	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/robot/main.sym	(revision 1456)
@@ -0,0 +1,499 @@
+00000000 W __heap_end
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 W __vector_default
+00000000 T __vectors
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000008c T __ctors_end
+0000008c T __ctors_start
+0000008c T __dtors_end
+0000008c T __dtors_start
+0000008c W __init
+0000008c T __trampolines_end
+0000008c T __trampolines_start
+00000098 T __do_copy_data
+000000b2 T __do_clear_bss
+000000ba t .do_clear_bss_loop
+000000bc t .do_clear_bss_start
+000000ca T __bad_interrupt
+000000ca W __vector_1
+000000ca W __vector_10
+000000ca W __vector_11
+000000ca W __vector_12
+000000ca W __vector_13
+000000ca W __vector_14
+000000ca W __vector_18
+000000ca W __vector_19
+000000ca W __vector_2
+000000ca W __vector_20
+000000ca W __vector_22
+000000ca W __vector_23
+000000ca W __vector_24
+000000ca W __vector_25
+000000ca W __vector_27
+000000ca W __vector_28
+000000ca W __vector_29
+000000ca W __vector_3
+000000ca W __vector_31
+000000ca W __vector_32
+000000ca W __vector_33
+000000ca W __vector_34
+000000ca W __vector_4
+000000ca W __vector_5
+000000ca W __vector_6
+000000ca W __vector_7
+000000ca W __vector_8
+000000ca W __vector_9
+000000ce T main
+000000f8 t timer_handler
+00000106 T wl_register_packet_group
+0000012c T wl_unregister_packet_group
+00000168 T wl_do
+000002c4 t wl_send_packet
+00000354 T wl_send_pan_packet
+00000372 T wl_send_global_packet
+00000392 T wl_send_robot_to_robot_packet
+000003ac T wl_send_robot_to_robot_global_packet
+000003c8 T wl_get_xbee_id
+000003ce T wl_get_channel
+000003d4 T wl_set_channel
+000003da T wl_get_pan
+000003e0 T wl_set_pan
+000003e6 T wl_terminate
+00000416 T wl_init
+0000044a T wl_token_ring_leave
+00000458 T wl_token_ring_set_bom_functions
+00000472 t wl_token_ring_cleanup
+00000474 t wl_token_ring_response_handler
+00000476 T wl_token_iterator_has_next
+00000490 T wl_token_get_matrix_size
+00000496 T wl_token_get_num_robots
+0000049c T wl_token_get_robots_in_ring
+000004a2 T wl_token_iterator_next
+00000522 T wl_token_iterator_begin
+0000055e T wl_token_is_robot_in_ring
+00000564 T wl_token_get_sensor_reading
+000005aa T wl_token_get_my_sensor_reading
+000005c0 t default_get_bom
+000005e6 T wl_token_ring_unregister
+000005f0 T wl_token_ring_join
+00000630 t wl_token_pass_token
+00000796 t wl_token_ring_receive_handler
+00000b7c t wl_token_ring_timeout_handler
+00000c80 T wl_token_ring_register
+00000cb2 T __vector_30
+00000d1c T xbee_get_packet
+00000f80 T xbee_get_pan_id
+00000f8a T xbee_get_channel
+00000f94 T xbee_get_address
+00000fa0 t xbee_send_modify_at_command
+000010b4 T xbee_set_channel
+000010f8 T xbee_set_pan_id
+000010ff W __stack
+0000112c T xbee_reset
+0000115c T xbee_terminate
+0000116a T xbee_send_packet
+0000126e t xbee_send_string
+000012ba T xbee_lib_init
+00001444 T sensor_matrix_create
+00001486 T sensor_matrix_set_reading
+000014b8 T sensor_matrix_get_reading
+000014e6 T sensor_matrix_set_in_ring
+0000153a T sensor_matrix_get_in_ring
+00001556 T sensor_matrix_get_joined
+00001560 T sensor_matrix_get_size
+00001566 T bom_get
+00001576 T bom_get_max
+000015ae T bom_get_max10
+00001a40 T bom_off
+00001a6a T bom_on
+00001a94 T bom_set_leds
+00001af0 T bom_init
+00001b8c T bom_refresh
+00001ca8 T get_max_bom
+00001ce8 T digital_input
+00001e2a T digital_pull_up
+00001f14 T digital_output
+0000214c T button1_read
+00002172 T button1_click
+000021b8 T button2_read
+000021e2 T button2_click
+00002228 T button2_wait
+00002250 T button1_wait
+00002278 T flash_red
+000022d8 T dragonfly_init
+00002364 T eeprom_put_byte
+00002378 T eeprom_get_byte
+0000238e T get_robotid
+000023ca T get_bom_type
+0000241a T encoder_read
+0000243e T encoder_get_x
+00002462 T encoder_get_dx
+00002486 T encoder_rst_dx
+000024a2 T encoder_get_tc
+000024ac T encoder_rst_tc
+000024be T encoder_wait
+000024d8 T encoder_recv
+00002790 T left_data_at
+000027ae T right_data_at
+000027cc T get_dx
+00002894 T encoder_get_v
+000028ea T encoders_init
+0000295e T encoder_recv_complete
+0000297c T lcd_clear_screen
+000029a6 T lcd_putc
+000029e4 T lcd_puts
+00002a2e T lcd_gotoxy
+00002a46 T lcd_puti
+00002b2a T lcd_putbyte
+00002b32 T lcd_init
+00002b9c T __vector_16
+00002c76 T __vector_15
+00002d0c t apply_orbs
+0000302e T orb_n_set
+0000306a T orb1_set
+0000309a T orb2_set
+000030ca T orb_set
+00003106 T orbs_set
+0000314a T orb_n_set_color
+000031a6 T orb1_set_color
+000031f4 T orb2_set_color
+00003242 T orb_set_color
+00003290 T orbs_set_color
+00003348 T orb_enable_timer
+00003354 T orb_disable_timer
+0000335c T orb_set_mode
+00003386 T orb_init_binary
+000033a4 T orb_init_pwm
+000033c2 T orb_init
+000033c8 T motors_init
+000033ec T motor_l_set
+0000341c T motor_r_set
+0000344c T motor1_set
+00003452 T motor2_set
+00003458 T motors_off
+0000345e T linearize_distance
+00003482 T range_read_distance
+000034aa T range_init
+000034b8 T usb_init
+000034d4 T xbee_init
+000034fe T usb_putc
+0000350a T xbee_putc
+0000351e T usb_puts
+00003536 T usb_getc
+00003540 T xbee_getc
+00003550 T usb_getc_nb
+00003568 T xbee_getc_nb
+00003586 T usb_puti
+00003624 T hex_digit
+00003638 T usb_puth16
+00003696 T usb_puth8
+000036c0 T usb_puts_P
+0000370a T spi_init
+00003732 T spi_transfer
+0000373e T __vector_17
+000037c6 T delay_ms
+000037dc T rtc_init
+0000381c T rtc_get
+00003828 T rtc_reset
+00003832 T __vector_26
+000038ce T analog_init
+00003940 T analog8
+00003964 T analog10
+00003986 T analog_start_loop
+000039a4 T analog_stop_loop
+000039b2 T analog_loop_status
+000039be T analog_get8
+00003a06 T analog_get10
+00003a6a T wheel
+00003a72 T set_adc_mux
+00003a94 T __vector_21
+00003bfc T buzzer_init
+00003bfe T buzzer_set_val
+00003c08 T buzzer_set_freq
+00003c3c T buzzer_off
+00003c46 T buzzer_chirp
+00003c66 T __ashldi3
+00003d64 T __divdi3
+00004db4 T __moddi3
+00005e2e t do_rand
+00005eca T rand_r
+00005ed0 T rand
+00005eda T srand
+00005ef0 T memcpy_P
+00005f02 T printf
+00005f2c T vfprintf
+000062e6 T strnlen_P
+000062fc T strnlen
+00006312 T fputc
+0000636a T __ultoa_invert
+00006426 T __divmodhi4
+00006426 T _div
+0000643a t __divmodhi4_neg2
+00006440 t __divmodhi4_exit
+00006442 t __divmodhi4_neg1
+0000644c T __divmodsi4
+00006460 t __divmodsi4_neg2
+0000646e t __divmodsi4_exit
+00006470 t __divmodsi4_neg1
+00006482 T __mulsi3
+000064c0 T __udivmodhi4
+000064c8 t __udivmodhi4_loop
+000064d6 t __udivmodhi4_ep
+000064e8 T __udivmodsi4
+000064f4 t __udivmodsi4_loop
+0000650e t __udivmodsi4_ep
+0000652c T __prologue_saves__
+00006564 T __epilogue_restores__
+0000659a T _exit
+0000659a W exit
+0000659c t __stop_program
+0000659e A __data_load_start
+0000659e T _etext
+00006a0a A __data_load_end
+00800100 D __data_start
+0080011d d bom_on_function
+0080011f d bom_off_function
+00800121 d get_max_bom_function
+00800123 d wl_token_ring_handler
+0080012d d wl_token_next_robot
+0080012f d deathDelay
+00800131 d joinDelay
+00800133 d accepted
+00800135 d acceptor
+00800163 d xbee_panID
+00800165 d xbee_pending_panID
+00800167 d lookup
+00800177 d C.1.1327
+0080017d d FontLookup
+0080035d D orb_mask
+00800363 D enable_orb_pwm
+00800364 D pwm_read_buffer
+00800366 D pwm_write_buffer
+00800368 D pwm_free_buffer
+0080036a d IR_dist_conversion
+0080045f d C.1.1625
+00800465 d _rtc_scale
+00800467 D __clz_tab
+00800567 d next
+0080056c B __bss_start
+0080056c D __data_end
+0080056c D _edata
+0080056c b wl_timeout
+0080056e b wl_buf
+008005ee b wl_packet_groups
+0080060e b iteratorCount
+00800610 b bom_on_count
+00800612 b ringState
+00800614 B buffer_last
+00800616 B buffer_first
+00800618 b xbee_address
+0080061a b xbee_channel
+0080061c b xbee_pending_channel
+0080061e b currentBufPos
+00800620 b xbee_buf
+0080068c b bom_type
+0080068d b bom_val
+008006ad b select_pins
+008006b5 b analog_pin
+008006b7 B pwm_page_flip
+008006b8 B current_pwm_channel
+008006b9 B orb_lock
+008006ba b spi_bytes
+008006bb b spi_recv_func
+008006bd b spi_recv_complete_func
+008006bf b _rtc_pulse
+008006c1 b _rtc_val
+008006c3 b _rtc_f
+008006c5 B adc_loop_status
+008006c7 B adc_sig_stop_loop
+008006c9 B adc_current_port
+008006cb B arrival_buf
+0080074b B m
+0080095d B data_ready
+0080095f B right_data
+00800961 B left_data_buf
+00800963 B left_data_array
+008009bf B left_data_idx
+008009c1 B right_dx
+008009c3 B timecount
+008009c7 B encoder_buf_index
+008009c8 B right_data_array
+00800a24 B left_dx
+00800a26 B right_data_idx
+00800a28 B right_data_buf
+00800a2a B left_data
+00800a2c B pwm_buffer
+00800a53 B orb_values
+00800a59 B usb_fd
+00800a5b B xbee_fd
+00800a5d B an_val
+00800a7e B __iob
+00800a84 B __bss_end
+00800a84 N _end
+00810000 N __eeprom_end
Index: branches/colonetmk2/code/projects/swarm/robot/main.eep
===================================================================
--- branches/colonetmk2/code/projects/swarm/robot/main.eep	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/robot/main.eep	(revision 1456)
@@ -0,0 +1 @@
+:00000001FF
Index: branches/colonetmk2/code/projects/swarm/robot/Makefile
===================================================================
--- branches/colonetmk2/code/projects/swarm/robot/Makefile	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/robot/Makefile	(revision 1456)
@@ -0,0 +1,523 @@
+# Hey Emacs, this is a -*- makefile -*-
+#----------------------------------------------------------------------------
+# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
+#
+# Released to the Public Domain
+#
+# Additional material for this makefile was written by:
+# Peter Fleury
+# Tim Henigan
+# Colin O'Flynn
+# Reiner Patommel
+# Markus Pfaff
+# Sander Pool
+# Frederik Rouleau
+#
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device, using avrdude.
+#                Please customize the avrdude settings below first!
+#
+# make debug = Start either simulavr or avarice as specified for debugging, 
+#              with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+#                   bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+#if you want your code to work on the Firefly++ and not Firefly+
+#then add the -DFFPP line to CDEFS
+COLONYROOT = ../../../..
+CDEFS = 
+#-DFFPP
+
+# MCU name
+MCU = atmega128
+
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the 
+#     processor frequency. You can then use this symbol in your source code to 
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+F_CPU = 8000000
+
+
+# Output format. (can be srec, ihex, binary)
+FORMAT = ihex
+
+
+# Target file name (without extension).
+TARGET = main
+
+
+# List C source files here. (C dependencies are automatically generated.)
+SRC = $(wildcard *.c)
+#$(TARGET).c 
+
+
+# List Assembler source files here.
+#     Make them always end in a capital .S.  Files ending in a lowercase .s
+#     will not be considered source files but generated files (assembler
+#     output from the compiler), and will be deleted upon "make clean"!
+#     Even though the DOS/Win* filesystem matches both .s and .S the same,
+#     it will preserve the spelling of the filenames, and gcc itself does
+#     care about how the name is spelled on its command-line.
+ASRC = 
+
+
+# Optimization level, can be [0, 1, 2, 3, s]. 
+#     0 = turn off optimization. s = optimize for size.
+#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
+OPT = s
+
+
+# Debugging format.
+#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
+#     AVR Studio 4.10 requires dwarf-2.
+#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
+DEBUG =
+
+
+# List any extra directories to look for include files here.
+#     Each directory must be seperated by a space.
+#     Use forward slashes for directory separators.
+#     For a directory that has spaces, enclose it in quotes.
+EXTRAINCDIRS = $(COLONYROOT)/code/firefly_plus_lib
+#C:\WinAVR\include\fwr
+
+
+# Compiler flag to set the C Standard level.
+#     c89   = "ANSI" C
+#     gnu89 = c89 plus GCC extensions
+#     c99   = ISO C99 standard (not yet fully implemented)
+#     gnu99 = c99 plus GCC extensions
+CSTANDARD = -std=gnu99
+
+
+# Place -D or -U options here
+CDEFS += -DF_CPU=$(F_CPU)UL 
+CDEFS += -DFFP
+
+
+# Place -I options here
+CINCS = -I../include -I../ -I$(COLONYROOT)/code/projects/libwireless/lib -I$(COLONYROOT)/code/projects/libdragonfly -L$(COLONYROOT)/code/projects/libwireless/lib -L$(COLONYROOT)/code/projects/libdragonfly
+
+
+
+#---------------- Compiler Options ----------------
+#  -g*:          generate debugging information
+#  -O*:          optimization level
+#  -f...:        tuning, see GCC manual and avr-libc documentation
+#  -Wall...:     warning level
+#  -Wa,...:      tell GCC to pass this to the assembler.
+#    -adhlns...: create assembler listing
+CFLAGS = -g$(DEBUG)
+CFLAGS += $(CDEFS) $(CINCS)
+CFLAGS += -O$(OPT)
+CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
+CFLAGS += -Wall -Wstrict-prototypes
+CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
+CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+CFLAGS += $(CSTANDARD)
+CFLAGS += -DROBOT
+
+
+#---------------- Assembler Options ----------------
+#  -Wa,...:   tell GCC to pass this to the assembler.
+#  -ahlms:    create listing
+#  -gstabs:   have the assembler create line number information; note that
+#             for use in COFF files, additional information about filenames
+#             and function names needs to be present in the assembler source
+#             files -- see avr-libc docs [FIXME: not yet described there]
+ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs 
+
+
+#---------------- Library Options ----------------
+# Minimalistic printf version
+PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
+
+# Floating point printf version (requires MATH_LIB = -lm below)
+PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
+
+# If this is left blank, then it will use the Standard printf version.
+PRINTF_LIB = 
+#PRINTF_LIB = $(PRINTF_LIB_MIN)
+#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
+
+
+# Minimalistic scanf version
+SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
+
+# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
+SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
+
+# If this is left blank, then it will use the Standard scanf version.
+SCANF_LIB = 
+#SCANF_LIB = $(SCANF_LIB_MIN)
+#SCANF_LIB = $(SCANF_LIB_FLOAT)
+
+
+MATH_LIB = -lm
+
+
+
+#---------------- External Memory Options ----------------
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# used for variables (.data/.bss) and heap (malloc()).
+#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# only used for heap (malloc()).
+#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
+
+EXTMEMOPTS =
+
+
+
+#---------------- Linker Options ----------------
+#  -Wl,...:     tell GCC to pass this to linker.
+#    -Map:      create map file
+#    --cref:    add cross reference to  map file
+LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
+LDFLAGS += $(EXTMEMOPTS)
+LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
+LDFLAGS += -lwireless -ldragonfly
+
+
+
+#---------------- Programming Options (avrdude) ----------------
+
+# Programming hardware: alf avr910 avrisp bascom bsd 
+# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
+#
+# Type: avrdude -c ?
+# to get a full listing.
+#
+AVRDUDE_PROGRAMMER = avrisp
+
+# com1 = serial port. Use lpt1 to connect to parallel port.
+PORT = /dev/ttyUSB0
+# programmer connected to serial device
+
+AVRDUDE_WRITE_FLASH = -b 57600 -U flash:w:$(TARGET).hex
+#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
+
+
+# Uncomment the following if you want avrdude's erase cycle counter.
+# Note that this counter needs to be initialized first using -Yn,
+# see avrdude manual.
+#AVRDUDE_ERASE_COUNTER = -y
+
+# Uncomment the following if you do /not/ wish a verification to be
+# performed after programming the device.
+#AVRDUDE_NO_VERIFY = -V
+
+# Increase verbosity level.  Please use this when submitting bug
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> 
+# to submit bug reports.
+#AVRDUDE_VERBOSE = -v -v
+
+AVRDUDE_FLAGS = -p $(MCU) -P $(PORT) -c $(AVRDUDE_PROGRAMMER)
+AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
+AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
+AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
+
+#don't check for device signature
+AVRDUDE_FLAGS += -F
+AVRDUDE_FLAGS += -D
+
+
+
+#---------------- Debugging Options ----------------
+
+# For simulavr only - target MCU frequency.
+DEBUG_MFREQ = $(F_CPU)
+
+# Set the DEBUG_UI to either gdb or insight.
+# DEBUG_UI = gdb
+DEBUG_UI = insight
+
+# Set the debugging back-end to either avarice, simulavr.
+DEBUG_BACKEND = avarice
+#DEBUG_BACKEND = simulavr
+
+# GDB Init Filename.
+GDBINIT_FILE = __avr_gdbinit
+
+# When using avarice settings for the JTAG
+JTAG_DEV = /dev/com1
+
+# Debugging port used to communicate between GDB / avarice / simulavr.
+DEBUG_PORT = 4242
+
+# Debugging host used to communicate between GDB / avarice / simulavr, normally
+#     just set to localhost unless doing some sort of crazy debugging when 
+#     avarice is running on a different computer.
+DEBUG_HOST = localhost
+
+
+
+#============================================================================
+
+
+# Define programs and commands.
+SHELL = sh
+CC = avr-gcc
+OBJCOPY = avr-objcopy
+OBJDUMP = avr-objdump
+SIZE = avr-size
+NM = avr-nm
+AVRDUDE = avrdude
+REMOVE = rm -f
+REMOVEDIR = rm -rf
+COPY = cp
+WINSHELL = cmd
+
+
+# Define Messages
+# English
+MSG_ERRORS_NONE = Errors: none
+MSG_BEGIN = -------- begin --------
+MSG_END = --------  end  --------
+MSG_SIZE_BEFORE = Size before: 
+MSG_SIZE_AFTER = Size after:
+MSG_COFF = Converting to AVR COFF:
+MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
+MSG_FLASH = Creating load file for Flash:
+MSG_EEPROM = Creating load file for EEPROM:
+MSG_EXTENDED_LISTING = Creating Extended Listing:
+MSG_SYMBOL_TABLE = Creating Symbol Table:
+MSG_LINKING = Linking:
+MSG_COMPILING = Compiling:
+MSG_ASSEMBLING = Assembling:
+MSG_CLEANING = Cleaning project:
+
+
+
+
+# Define all object files.
+OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) 
+
+# Define all listing files.
+LST = $(SRC:.c=.lst) $(ASRC:.S=.lst) 
+
+
+# Compiler flags to generate dependency files.
+GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
+
+
+# Combine all necessary flags and optional flags.
+# Add target processor to flags.
+ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
+ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
+
+
+
+
+
+# Default target.
+all: begin gccversion sizebefore build sizeafter end
+
+build: elf hex eep lss sym
+
+elf: $(TARGET).elf
+hex: $(TARGET).hex
+eep: $(TARGET).eep
+lss: $(TARGET).lss 
+sym: $(TARGET).sym
+
+
+
+# Eye candy.
+# AVR Studio 3.x does not check make's exit code but relies on
+# the following magic strings to be generated by the compile job.
+begin:
+	@echo
+	@echo $(MSG_BEGIN)
+
+end:
+	@echo $(MSG_END)
+	@echo
+
+
+# Display size of file.
+HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
+ELFSIZE = $(SIZE) -A $(TARGET).elf
+AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
+
+sizebefore:
+	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
+	$(AVRMEM) 2>/dev/null; echo; fi
+
+sizeafter:
+	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
+	$(AVRMEM) 2>/dev/null; echo; fi
+
+
+
+# Display compiler version information.
+gccversion : 
+	@$(CC) --version
+
+
+
+# Program the device.  
+program: $(TARGET).hex $(TARGET).eep
+	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
+
+
+# Generate avr-gdb config/init file which does the following:
+#     define the reset signal, load the target file, connect to target, and set 
+#     a breakpoint at main().
+gdb-config: 
+	@$(REMOVE) $(GDBINIT_FILE)
+	@echo define reset >> $(GDBINIT_FILE)
+	@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
+	@echo end >> $(GDBINIT_FILE)
+	@echo file $(TARGET).elf >> $(GDBINIT_FILE)
+	@echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
+ifeq ($(DEBUG_BACKEND),simulavr)
+	@echo load  >> $(GDBINIT_FILE)
+endif	
+	@echo break main >> $(GDBINIT_FILE)
+	
+debug: gdb-config $(TARGET).elf
+ifeq ($(DEBUG_BACKEND), avarice)
+	@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
+	@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
+	$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
+	@$(WINSHELL) /c pause
+	
+else
+	@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
+	$(DEBUG_MFREQ) --port $(DEBUG_PORT)
+endif
+	@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
+	
+
+
+
+# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
+COFFCONVERT=$(OBJCOPY) --debugging \
+--change-section-address .data-0x800000 \
+--change-section-address .bss-0x800000 \
+--change-section-address .noinit-0x800000 \
+--change-section-address .eeprom-0x810000 
+
+
+coff: $(TARGET).elf
+	@echo
+	@echo $(MSG_COFF) $(TARGET).cof
+	$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
+
+
+extcoff: $(TARGET).elf
+	@echo
+	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
+	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
+
+
+
+# Create final output files (.hex, .eep) from ELF output file.
+%.hex: %.elf
+	@echo
+	@echo $(MSG_FLASH) $@
+	$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
+
+%.eep: %.elf
+	@echo
+	@echo $(MSG_EEPROM) $@
+	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
+	--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
+
+# Create extended listing file from ELF output file.
+%.lss: %.elf
+	@echo
+	@echo $(MSG_EXTENDED_LISTING) $@
+	$(OBJDUMP) -h -S $< > $@
+
+# Create a symbol table from ELF output file.
+%.sym: %.elf
+	@echo
+	@echo $(MSG_SYMBOL_TABLE) $@
+	$(NM) -n $< > $@
+
+
+
+# Link: create ELF output file from object files.
+.SECONDARY : $(TARGET).elf
+.PRECIOUS : $(OBJ)
+%.elf: $(OBJ)
+	@echo
+	@echo $(MSG_LINKING) $@
+	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
+
+
+# Compile: create object files from C source files.
+%.o : %.c
+	@echo
+	@echo $(MSG_COMPILING) $<
+	$(CC) -c $(ALL_CFLAGS) $< -o $@ 
+
+
+# Compile: create assembler files from C source files.
+%.s : %.c
+	$(CC) -S $(ALL_CFLAGS) $< -o $@
+
+
+# Assemble: create object files from assembler source files.
+%.o : %.S
+	@echo
+	@echo $(MSG_ASSEMBLING) $<
+	$(CC) -c $(ALL_ASFLAGS) $< -o $@
+
+# Create preprocessed source for use in sending a bug report.
+%.i : %.c
+	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ 
+
+
+# Target: clean project.
+clean: begin clean_list end
+
+clean_list :
+	@echo
+	@echo $(MSG_CLEANING)
+	$(REMOVE) $(TARGET).hex
+	$(REMOVE) $(TARGET).eep
+	$(REMOVE) $(TARGET).cof
+	$(REMOVE) $(TARGET).elf
+	$(REMOVE) $(TARGET).map
+	$(REMOVE) $(TARGET).sym
+	$(REMOVE) $(TARGET).lss
+	$(REMOVE) $(OBJ)
+	$(REMOVE) $(LST)
+	$(REMOVE) $(SRC:.c=.s)
+	$(REMOVE) $(SRC:.c=.d)
+	$(REMOVEDIR) .dep
+
+
+
+# Include the dependency files.
+-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
+
+
+# Listing of phony targets.
+.PHONY : all begin finish end sizebefore sizeafter gccversion \
+build elf hex eep lss sym coff extcoff \
+clean clean_list program debug gdb-config
+

Property changes on: branches/colonetmk2/code/projects/swarm/robot/Makefile
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/includes/colonet_wireless.h
===================================================================
--- branches/colonetmk2/code/projects/swarm/includes/colonet_wireless.h	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/includes/colonet_wireless.h	(revision 1456)
@@ -0,0 +1,39 @@
+/** @file colonet_wireless.h
+ *
+ * @brief Wireless library for communicating with colony robots
+ *
+ * @author Eugene Marinelli
+ * @date 10/10/07
+ */
+
+#ifndef COLONET_WIRELESS_H_
+#define COLONET_WIRELESS_H_
+
+/** @brief Initializes colonet wireless library
+ *
+ * @param wl_port Either SERIAL_PORT or USB_PORT (as defined in COLONET_DEFS)
+ * @param msg_handler Function to be called when a packet is received.
+ * Must take a ColonetPacket as an argument (see defn of MsgHandlerFunction)
+ *
+ * @return new ColonetWireless object
+ */
+int colonet_wl_init(char* wl_port);
+
+/** @brief Spawns a thread which reads data from the hardware interface
+ * with the colony (either a dongle or a robot programmed to relay data)
+ * and runs msg_handler when a full packet is received
+ *
+ * @return pointer to the thread
+ */
+int colonet_wl_run_listener_thread(void);
+
+void colonet_wl_kill_listener_thread(void);
+
+void colonet_wl_join();
+
+int colonet_get_num_robots(void);
+
+void colonet_get_sensor_matrix(int* ids, int** matrix);
+void colonet_get_xbee_ids(int ids[]);
+
+#endif

Property changes on: branches/colonetmk2/code/projects/swarm/includes/colonet_wireless.h
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/colonetmk2/code/projects/swarm/Makefile
===================================================================
--- branches/colonetmk2/code/projects/swarm/Makefile	(nonexistent)
+++ branches/colonetmk2/code/projects/swarm/Makefile	(revision 1456)
@@ -0,0 +1,52 @@
+# ColonetServer makefile
+
+COLONYROOT = ../../..
+
+CC = g++
+CFLAGS = -Wall -Wshadow -Wextra -g 
+
+CPPFILES = main.c colonet_wireless.cpp
+CPPOBJECTS = $(CPPFILES:.cpp=.o)
+
+HEADERFILES = includes/*.h
+
+INCLUDE_DIRS = $(COLONYROOT)/code/projects/libwireless/lib includes
+LIBRARY_DIRS = $(COLONYROOT)/code/projects/libwireless/lib
+
+#this takes the include directory and puts a -I in front of each directory name before being used in a gcc statement
+INCLUDE_DIRS_FOR_GCC = $(patsubst %, -I %, $(INCLUDE_DIRS))
+#this takes the library directory and puts a -L in front of each directory name so it can be used in a gcc statement
+LIBRARY_DIRS_FOR_GCC = $(patsubst %,-L%, $(LIBRARY_DIRS))
+
+.PHONY : all clean run
+
+all: SwarmServer
+
+run:
+	cd ../../libwireless/lib; make colonet
+	make; ./SwarmServer
+
+$(COLONYROOT)/code/projects/libwireless/lib/libwireless_colonet.a: $(COLONYROOT)/code/projects/libwireless/lib/*.c $(COLONYROOT)/code/projects/libwireless/lib/*.h
+	@echo "---------------------------"
+	@echo "---compiling wireless library code---"
+	cd $(COLONYROOT)/code/projects/libwireless/lib; make colonet
+	@echo "---finish compiling wireless library code---"
+	@echo "----------------------------------"
+
+SwarmServer: $(COLONYROOT)/code/projects/libwireless/lib/libwireless_colonet.a $(COLONETCPPFILES) $(COLONETFILES) $(LOGGINGFILES) $(COLONETHEADERFILES) $(VISIONOBJECTS)
+	@echo "-----------------------"
+	@echo "---begin compiling server---"
+	@echo ""
+	@echo "-----creating object files-----"
+	$(CC) $(CFLAGS) -c $(CPPFILES) $(INCLUDE_DIRS_FOR_GCC)
+	@echo "-----finish creating object files-----"
+	@echo ""
+	@echo "-----linking files-----"
+	$(CC) $(CFLAGS) $(CPPOBJECTS) $(LIBRARY_DIRS_FOR_GCC) -lpthread -lwireless_colonet $(INCLUDE_DIRS_FOR_GCC) -o $@
+	@echo "-----finish linking files-----"
+	@echo ""
+	@echo "---finish compilation---"
+	@echo "-----------------------"
+
+clean:
+	rm -rf *.o SwarmServer *~

Property changes on: branches/colonetmk2/code/projects/swarm/Makefile
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/colonetmk2/code/projects/libdragonfly/dragonfly_lib.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/dragonfly_lib.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/dragonfly_lib.c	(revision 1456)
@@ -33,7 +33,7 @@
  * @author Colony Project, CMU Robotics Club
  **/
 
-#include <dragonfly_lib.h>
+#include "dragonfly_lib.h"
 
 /* init_dragonfly - Initializes functions based on configuration parameters
    examples:
Index: branches/colonetmk2/code/projects/libdragonfly/i2c.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/i2c.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/i2c.c	(revision 1456)
@@ -138,7 +138,7 @@
  *
  * @return zero for success, nonzero for failure
  **/
-int i2c_send(char dest, char *data, size_t bytes) {
+int i2c_send(char dest, char *data, unsigned int bytes) {
     int i;
 
     /* adding data to be sent to ring buffers is not atomic,
Index: branches/colonetmk2/code/projects/libdragonfly/serial.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/serial.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/serial.c	(revision 1456)
@@ -34,9 +34,12 @@
  **/
 
 #include <avr/io.h>
-#include <stdio.h>
 #include "serial.h"
 
+#ifdef USE_STDIO
+
+#include <stdio.h>
+
 /**
  * For use with fprintf() and related stdio functions
  **/
@@ -47,6 +50,8 @@
  **/
 FILE *xbee_fd;
 
+#endif
+
 /**
  * Initializes communication over the USB serial port.
  * This must be called before any other usb function
Index: branches/colonetmk2/code/projects/libdragonfly/dragonfly_lib.h
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/dragonfly_lib.h	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/dragonfly_lib.h	(revision 1456)
@@ -75,8 +75,6 @@
 /** @} **/ //end addtogroup
 
 #include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
 #include <avr/io.h>
 #include <avr/interrupt.h>
 #include <util/delay.h>
@@ -86,21 +84,23 @@
 // missing from the AVR libc distribution.
 #include "atomic.h"
 
-#include <analog.h>
-#include <dio.h>
-#include <time.h>
-#include <lcd.h>
-#include <lights.h>
-#include <motor.h>
-#include <serial.h>
-#include <buzzer.h>
-#include <rangefinder.h>
-#include <bom.h>
-#include <encoders.h>
-#include <move.h>
-#include <reset.h>
-#include <math.h>
-#include <eeprom.h>
+#include "analog.h"
+#include "dio.h"
+#include "time.h"
+#include "lcd.h"
+#include "lights.h"
+#include "motor.h"
+#include "serial.h"
+#include "buzzer.h"
+#include "rangefinder.h"
+#include "bom.h"
+#include "encoders.h"
+#include "move.h"
+#include "reset.h"
+#include "math.h"
+#include "eeprom.h"
+
+#include <stddef.h>
 #include <stdbool.h>
 
 /** @brief shortcut for ATOMIC_BLOCK(ATOMIC_RESTORESTATE) **/
Index: branches/colonetmk2/code/projects/libdragonfly/buzzer.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/buzzer.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/buzzer.c	(revision 1456)
@@ -36,8 +36,8 @@
  **/
 
 #include <avr/io.h>
-#include <buzzer.h>
-#include <time.h>
+#include "buzzer.h"
+#include "time.h"
 
 /**
  * @defgroup buzzer Buzzer
Index: branches/colonetmk2/code/projects/libdragonfly/i2c.h
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/i2c.h	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/i2c.h	(revision 1456)
@@ -36,8 +36,6 @@
 #ifndef _I2C_H_
 #define _I2C_H_
 
-#include <stddef.h>
-
 /** @brief Address of slave receive handler function **/
 typedef void (*fun_srecv_t)(char);
 
@@ -48,7 +46,7 @@
 typedef char (*fun_send_t)(void);
 
 int i2c_init(char addr, fun_mrecv_t master_recv, fun_srecv_t slave_recv, fun_send_t slave_send);
-int i2c_send(char dest, char* data, size_t bytes);
+int i2c_send(char dest, char* data, unsigned int bytes);
 int i2c_request(char dest);
 
 void i2c_packet_rec (char i2c_byte);
Index: branches/colonetmk2/code/projects/libdragonfly/spi.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/spi.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/spi.c	(revision 1456)
@@ -6,7 +6,6 @@
  **/
 
 #include <avr/interrupt.h>
-#include <dragonfly_lib.h>
 #include "spi.h"
 
 
Index: branches/colonetmk2/code/projects/libdragonfly/eeprom.h
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/eeprom.h	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/eeprom.h	(revision 1456)
@@ -10,8 +10,6 @@
  #ifndef _EEPROM_H_
  #define _EEPROM_H_
  
- #include <bom.h>
- 
  #define EEPROM_ROBOT_ID_ADDR 0x10
  #define EEPROM_BOM_TYPE_ADDR 0x14
  
Index: branches/colonetmk2/code/projects/libdragonfly/time.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/time.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/time.c	(revision 1456)
@@ -58,8 +58,8 @@
 */
 #include <avr/interrupt.h>
 #include <util/delay.h>
-#include <time.h>
-#include <serial.h>
+#include "time.h"
+
 
 /* Calculate how many cycles to delay for to get 1 ms. Based on F_CPU which should be defined by the makefile */
 #ifdef F_CPU
Index: branches/colonetmk2/code/projects/libdragonfly/encoders.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/encoders.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/encoders.c	(revision 1456)
@@ -1,7 +1,7 @@
 #include "encoders.h"
 #include "spi.h"
-#include "dragonfly_lib.h"
 #include "ring_buffer.h"
+#include <avr/io.h>
 
 unsigned int left_data_buf;
 unsigned int right_data_buf;
Index: branches/colonetmk2/code/projects/libdragonfly/lcd.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/lcd.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/lcd.c	(revision 1456)
@@ -33,8 +33,8 @@
  * @author Colony Project, CMU Robotics Club
  **/
 #include <avr/io.h>
-#include <lcd.h>
-#include <time.h>
+#include "lcd.h"
+#include "time.h"
 
 //LCD defines
 #define RST _BV(4)  // pd4 (GPIO)
Index: branches/colonetmk2/code/projects/libdragonfly/odometry.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/odometry.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/odometry.c	(revision 1456)
@@ -1,8 +1,9 @@
 #include "odometry.h"
-#include <encoders.h>
+#include "encoders.h"
 #include <math.h>
 #include <avr/interrupt.h>
-#include <dragonfly_lib.h>
+#include "time.h"
+#include "serial.h"
 
 long lround(double d);
 
@@ -79,7 +80,6 @@
 	//Angle swept through in a time step CCW-
 	double theta, rl, dc;
 	long dr,dl;
-	char buf[100];
 	
 	//Get the change in wheel positions
 	{	
@@ -111,8 +111,11 @@
 		diff_x += lround(dl*cos(angle)/1000.0); //mm
 		diff_y += lround(dl*sin(angle)/1000.0); //mm
 		velocity = lround((dl * 1000.0)/(ODOMETRY_CLK*TIME_SCALE)); //um / ms = mm/s
-		sprintf(buf,"dc: %ld, velocity: %ld\r\n mm/s",dl,velocity);
-		usb_puts(buf);
+    usb_puts("dc: ");
+    usb_puti(dl);
+    usb_puts("um, velocity: ");
+    usb_puti(velocity);
+		usb_puts("\r\n mm/s");
 		return;
 	}
 	
@@ -123,8 +126,11 @@
 	//Distance the center has traveled.
 	dc = (theta * (rl - ROBOT_WIDTH_UM)) / 2.0; //um
 	velocity = lround( dc * 1000 /(ODOMETRY_CLK*TIME_SCALE));
-	sprintf(buf,"dc: %lfum, velocity: %ld\r\n mm/s",dc,velocity);
-	usb_puts(buf);
+	usb_puts("dc: ");
+  usb_puti(dl);
+  usb_puts("um, velocity: ");
+  usb_puti(velocity);
+  usb_puts("\r\n mm/s");
 	
 	//angle is necessarily CCW+, so subtract.
 	angle -= ANGLE_SCALE * theta; 
Index: branches/colonetmk2/code/projects/libdragonfly/move.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/move.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/move.c	(revision 1456)
@@ -33,9 +33,8 @@
  * @author Colony Project, CMU Robotics Club
  **/
 
-#include "dragonfly_lib.h"
-
 #include "move.h"
+#include "motor.h"
 #include "rangefinder.h"
 
 
Index: branches/colonetmk2/code/projects/libdragonfly/dio.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/dio.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/dio.c	(revision 1456)
@@ -34,9 +34,9 @@
  **/
 
 #include <avr/interrupt.h>
-#include <dio.h>
-#include <time.h>
-#include <lights.h>
+#include "dio.h"
+#include "time.h"
+#include "lights.h"
 
 /**
  * @defgroup dio Digital Input / Output
Index: branches/colonetmk2/code/projects/libdragonfly/bom.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/bom.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/bom.c	(revision 1456)
@@ -33,7 +33,6 @@
  * @author Colony Project, CMU Robotics Club
  **/
 
-#include <dragonfly_lib.h>
 #include "bom.h"
 #include "dio.h"
 #include "serial.h"
@@ -114,7 +113,7 @@
  **/
 
 static unsigned int bom_val[NUM_BOM_LEDS];
-static volatile char bom_type = BOM;
+static volatile char bom_type = BOM10;
 static int select_pins[4];
 static int analog_pin;
 
@@ -238,7 +237,7 @@
  **/
 int bom_get_max10(int *dist) {
     int i, max;
-    long long mean, sum;
+    long long mean = 0, sum = 0;
 
     max = bom_get_max();
     if (max < 0)
Index: branches/colonetmk2/code/projects/libdragonfly/reset.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/reset.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/reset.c	(revision 1456)
@@ -34,7 +34,7 @@
  **/
 #include <avr/interrupt.h>
 #include <util/delay.h>
-#include <reset.h>
+#include "reset.h"
 
 /**
  * @defgroup reset Reset
Index: branches/colonetmk2/code/projects/libdragonfly/rangefinder.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/rangefinder.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/rangefinder.c	(revision 1456)
@@ -58,8 +58,9 @@
 
 */
 
-#include "dragonfly_lib.h"
 #include "rangefinder.h"
+#include "analog.h"
+#include "dio.h"
 
 /*
   read_distance returns the 8-bit reading from the rangefinder
Index: branches/colonetmk2/code/projects/libdragonfly/lights.c
===================================================================
--- branches/colonetmk2/code/projects/libdragonfly/lights.c	(revision 1455)
+++ branches/colonetmk2/code/projects/libdragonfly/lights.c	(revision 1456)
@@ -71,15 +71,9 @@
  * When code is changed, the performance measurements above should be redone.
  */
 
-
-
+#include "dragonfly_lib.h"
 #include "lights.h"
 
-#include <avr/interrupt.h>
-
-#include "dragonfly_lib.h"
-
-
 // ***************
 // ** Constants **
 // ***************
